在移动设备上使用M3G编程教程(转)
在開始前我建議你去了解一些關于M3G領域的一些網絡鏈接,這樣對我們的編程是有幫助的。
首先也是最重要的就是Sony Ericsson Developer World。第二個我們要經常去看的就是Sony Ericsson Mobile Java 3D forum。除此之外我們還可以使用Sony Ericsson Developer World portal,在這里你能夠發現你問題的答案或者更多。
既然你已經知道了如果出了問題我們將去那里找到答案,那么讓我們進行我們的教程。這個教程的目標就是教會每個人如何設置你自己的3D動畫和在屏幕上材質著色。對于著色模式,我們將展示如何載入他們并且告訴你那些創建M3G模型時使用的工具。然后我們將通過操作攝像機的一些參數使得我們可以在我們的場景中走動。我們只是想使你在開發第一個使用M3G的3D游戲中感到更直觀,所以這個教程將相當快和直接,而有很少的解釋,在這系列教程的其他部分將會對M3G的其他屬性進行詳細的討論。
既然這個程序代碼是針對教學目的的,它不是最佳的也不能覆蓋所有可能出現的錯誤。我們將在以后的部分中討論更多的深入的問題。
你需要知道什么
我們在開始閱讀這篇文章之前,你應當了解一個MIDlet類和一個Canvas類的基本部分。如果你感到迷糊,參考游戲代碼(這個教程中討論的)和查看M3GMIDlet和M3GConvas類,這并不是一個困難的問題。當然如果你有3D編程和數學的背景那將是一件很好的事情,但并不是必須的。
Convas畫板
當我們使用JSR184庫編程時,我們使用的時MIDP2.0的配置文件,這意味著我們可以自用的使用更多的功能。讓我們從設置我們的屏幕畫板開始。和我們在通常的2D游戲編程有著同樣的過程。你需要設置你的MIDlet類,并且啟動你的屏幕畫板和在Paint方法中進行繪畫。既然你已經知道如何作并且這是一個相當容易的過程,我們將跳過這個過程。首先讓我們看一下Canvas類的開頭,這里是一些導入文件和變量聲明。
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.M3G.Camera;
import javax.microedition.M3G.Graphics3D;
import javax.microedition.M3G.Light;
import javax.microedition.M3G.Loader;
import javax.microedition.M3G.Object3D;
import javax.microedition.M3G.Transform;
import javax.microedition.M3G.World;
/**
*
* @author Biovenger
* @version
*/
public class M3GCanvas
extends GameCanvas
implements Runnable {
// Thread-control
boolean running = false;
boolean done = true;
// If the game should end
public static boolean gameOver = false;
// Rendering hints
public static final int STRONG_RENDERING_HINTS = Graphics3D.ANTIALIAS | Graphics3D.TRUE_COLOR | Graphics3D.DITHER;
public static final int WEAK_RENDERING_HINTS = 0;
public static int RENDERING_HINTS = STRONG_RENDERING_HINTS;
// Key array
boolean[] key = new boolean[5];
// Key constants
public static final int FIRE = 0;
public static final int UP = FIRE + 1;
public static final int DOWN = UP + 1;
public static final int LEFT = DOWN + 1;
public static final int RIGHT = LEFT + 1;
這是相當基礎的部分,讓我們快速的查看這段是用來干什么的。事項我們看到的是一些導入文件,我們只導入了我們在教程中使用的所有的類和你在JSR184 API文檔中發現的其他的類文件。我們也看到了一些其他的例如running和done這樣的一些線程變量,不過這些都是一些自解釋型的。
現在,讓我們看一下“rendering hints”,這些“hits”是用來告訴我們當我們要著色的時候使用的是什么樣的質量。既然這些著色的質量是依賴于手機的,所以我們第一了兩個不同的“hits”:弱和強。正如你看到的一樣,弱的著色模式是使用雙消除混疊現象、真實的顏色、和抖動。弱的模式根本就沒有著色的效果,這是我們能夠得到的最快和最差的著色模式。當你查看代碼的時候,這些不同的效果可以通過使用簡單的邏輯OR來合并。在我們系列文章的后面章節中將會展示更多的特效效果。
接下來我們看到的實按鍵數組,我們使用了簡單的數組形式,在鍵盤操作進程中他們將被改變。如果你對按鍵是如何處理的感到好奇,你可以在例子代碼中找到相關的代碼。舉例說明一下,如果我們的UP鍵被按下那么if(key[UP])將是正確的。
M3G文件格式
JSR184有它自己的文件格式,叫做M3G。這是一個通用的3D文件格式,這里可以存儲例如模型、燈光、攝像機、蒙皮甚至動畫。注意,不但這個格式是好的,將模型載入你的應用程序也是相當容易的。我敢說M3G將是無止境的。我們怎樣來建立一個M3G文件呢?我在下面的部分將來解釋集中建立M3G的方法:
1. 首先,最新的Discreet's 3D Studio Max版本已經內建了一個M3G的導出器。我們只需要點擊導出按鈕,你就能導出你建立的場景、動畫、骨骼、材質等成為M3G文件。然而,很多人發現Discreet的導出器比較麻煩并且有一些錯誤,所以為了得到更好的效果,我們使用第二種方法。
2. HI公司是索尼愛立信公司的JSR184接口的提供者,他們制作了針對3個十分流行的3D建模軟件例如3D Studio Max, LightWave和 Maya的插件,你可以在here>>找到他們。
3. Blender,這是一個具有可用的M3G導出器的免費的3D建模工具,然而它在開發的比較早,并且有一些錯誤。
那么我們怎樣在我們的程序中調入這些非常有用的文件呢?非常簡單。在JSR184中包含一個類叫做Loader,它可以正確的做到這點。使用一個簡單的方法就能從一個M3G文件中載入所有的對象。一個可以是字符串類型的URL另一個方法是一個原始字節流中的偏移,下面是如何使用的例子:
Object3D[] objects = Loader.load("file.M3G");
Object3D[] objects2 = Loader.load(byteArray, offset);
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/10294527/viewspace-126634/,如需轉載,請注明出處,否則將追究法律責任。
轉載于:http://blog.itpub.net/10294527/viewspace-126634/
總結
以上是生活随笔為你收集整理的在移动设备上使用M3G编程教程(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享几个Ubuntu必装的软件
- 下一篇: 威海海燕计算机学校,与中成学校一起成长