国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 名師教程 > J2ME 3D技術(shù)簡介

J2ME 3D技術(shù)簡介
2006-03-31 14:37:29  作者:木子摘錄  來源:

    3D技術(shù)對我們來說已經(jīng)非常熟悉了,最常用的3D API有OpenGL和Microsoft的Direct 3D,在桌面游戲中早已廣泛應(yīng)用。對于J2ME程序而言,Mobile 3D Graphics API(JSR184)的出現(xiàn),使得為手機(jī)應(yīng)用程序添加3D功能成為可能。

    JSR184標(biāo)準(zhǔn)(M3G:Mobile 3D Graphics)為Java移動應(yīng)用程序定義了一個簡潔的3D API接口,J2ME程序可以非常方便地使用M3G來實現(xiàn)3D應(yīng)用比如游戲等等。M3G被設(shè)計為非常輕量級的,整個API的完整實現(xiàn)不超過150kb。

    M3G是J2ME的一個可選包,以O(shè)penGL為基礎(chǔ)的精簡版,一共有30個類,運行在CLDC1.1/CLDC2.0上(必須支持浮點運算),可以在MIDP1.0和MIDP2.0中使用。目前,支持M3G的手機(jī)有Nokia 6230/3650/7650/6600、Siemens S65/CX65/S55/M55、Sony-Ericsson K700i/P800/P900、Moto 220/T720等。M3G只是一個Java接口,具體的底層3D引擎一般由C代碼實現(xiàn),比如許多手機(jī)廠商的3D引擎采用的便是SuperScape公司的Swerve引擎,這是一個專門為移動設(shè)備設(shè)計的高性能3D引擎。

    類似于Microsoft的D3D,M3G支持兩種3D模式:立即模式(immediate mode)和保留模式(retained mode)。在立即模式下,開發(fā)者必須手動渲染每一幀,從而獲得較快的速度,但代碼較繁瑣;在保留模式下,開發(fā)者只需設(shè)置好關(guān)鍵幀,剩下的動畫由M3G完成,代碼較簡單,但速度較慢。M3G也允許混合使用這兩種模式。

    3D模型可以在程序中創(chuàng)建,但是非常繁瑣。因此,M3G提供一個Loader類,允許直接從一個單一的.m3g文件中讀入全部3D場景。m3g文件可以通過3D Studio Max之類的軟件創(chuàng)建。

   如果熟悉OpenGL,那么M3G是非常容易理解的。在M3G中,Graphics3D是3D渲染的屏幕接口,World代表整個3D場景,包括Camera(用于設(shè)置觀察者視角)、Light(燈光)、Background(背景)和樹型結(jié)構(gòu)的任意數(shù)量的3D物體。3D對象在計算機(jī)中用點(Point, Pixel)、線(Line, Polyline, Spline)、面(Mesh)來描述,具體存儲和運算(如旋轉(zhuǎn)、投影)都是矩陣運算和變換。

     SUN的WTK2.2已經(jīng)內(nèi)置了M3G的實現(xiàn)包,如果安裝了WTK2.2,就可以在模擬器上運行3D MIDP程序。可以參考WTK2.2的示例demo3d。

    下面是一個最簡單的M3G程序,來自Sony-Ericsson的示例代碼,它創(chuàng)建一個旋轉(zhuǎn)的金字塔,可以從 此處下載完整代碼并在WTK2.2中運行。

    首先,我們要獲得唯一的Graphics3D實例,用于渲染3D場景。Graphics3D是一個Singleton實現(xiàn),可以在任何地方獲得:

g3d = Graphics3D.getInstance();

    然后,在Canvas中渲染:

public class MyCanvas extends Canvas
{
public void paint(Graphics g) {
try {
g3d.bindTarget(g);
... update the scene ...
... render the scene ...
} finally {
g3d.releaseTarget();
}
}

    接下來創(chuàng)建一個World并設(shè)置Camera:

world = new World();
camera = new Camera();
world.addChild(camera);
// The width and height of the canvas.
float w = getWidth();
float h = getHeight();
// Constructs a perspective projection matrix and sets that as the current projection matrix.
camera.setPerspective(60.0f, w / h, 0.1f, 50f);
world.setActiveCamera(camera);

    接著,在createPyramid()方法中創(chuàng)建一個Mesh,代表金字塔,并添加到World中:

private Mesh pyramidMesh; // the pyramid in the scene

pyramidMesh = createPyramid(); // create our pyramid.
pyramidMesh.setTranslation(0.0f, 0.0f, -3.0f); // move the pyramid 3 units into the screen.
world.addChild(pyramidMesh); // add the pyramid to the world

    最后,在一個線程中讓金字塔繞Y軸旋轉(zhuǎn)起來:

public void run() {
Graphics g = getGraphics();
while(true) {
// rotate the pyramid 1 degree around the Y-axis.
pyramidMesh.postRotate(3.0f, 0.0f, 1.0f, 0.0f);
draw3D(g);
flushGraphics();
}
}


安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 免费一看一级毛片 | 中文字幕一区二区三区在线播放 | 日韩精品中文字幕一区 | 91精品国产高清一区二区性色 | 亚洲综合在 | 色版视频 | 欧美黑人性xxx | 欧美精品a毛片免费观看 | 国产福利资源在线 | 九九热国产在线 | 亚洲一区二区黄色 | 91精品福利 | 日韩一区二区免费电影 | 国产一级精品视频 | 国产一级特黄aaa大片评分 | 久久久女| 成人一区二区三区视频 | 免费看成年人视频在线 | 91视频一区二区 | 欧美二区三区 | 欧洲亚洲综合 | 亚洲成人在线视频网站 | 国内美丰满少妇xxxx性ppx | 中国一级特黄毛片大片久久 | 美女视频免费黄 | 色妃网 | 国产一二三四视频 | 国产在线一 | 国产视频久久久久 | www.91精品视频| 亚洲国产精品网站 | 人人爽人人爽人人片av免费 | 中文字幕免费日韩 | 日韩欧美国产精品综合嫩v 日韩欧美国产三级 | 四虎永久网址 | 成人黄色电影免费观看 | 天天色天天射综合网 | 国产在线一区二区 | 亚洲欧美成人在线 | 亚洲最大黄色网址 | 91久久国产综合久久91精品网 |