亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

為基于J2ME的手機開發移動3D游戲

2019-11-18 15:37:12
字體:
來源:轉載
供稿:網友
一、簡述

  既然現在你已對3D API比較熟悉并了解了3D圖形是如何加入到移動java應用程序中的。下面將繼續告訴你怎樣使用3D造型軟件以使編碼和設計更為簡單。

  如今,3D圖形幾乎是任何一部游戲的要害部分,甚至一些應用程序也通過用3D形式來描述信息而獲得了成功。如前文中所述,以立即模式和手工編碼建立所有的3D對象的方式進行開發速度很慢且很復雜。應用程序中多邊形的所有角點必須在數組中獨立編碼。在JSR 184中,這稱為立即模式。

  另外一種更高級的模式稱為保留模式,它答應設計者使用諸如3D Max Studio等3D建模軟件來設計場景圖,然后把它們應用在程序中。

  二、3D編輯器

  現在,最流行的商業動畫制作軟件應是3D Studio Max,它支持輸出模型或場景圖到M3G格式(JSR 184中指定的文件格式)。該文件格式是專門制訂的,以適用于移動設備的特有需要。然而,3D Studio Max非常昂貴,即使它是一個很好的工具,也可能并不適合于任何一個人。
Superscape公司有他自己的Swerve產品家族(Swerve Studio,Swerve Client,Swerve Content),以幫助軟件開發者來開發基于3D Java的本機應用程序。遺憾的是,Swerve Studio僅適于有限數目的對Superscape非常熟悉的開發者。

  還有一個自由工具可以選擇使用:Blender。Blender是一個開源的3D造型工具,其實它的功能相當強大。你可以用Blender來進行任何3D設計-從簡單的造型到完整的動畫制作。盡管現在還沒有輸出工具來輸出Blender模型到M3G文件中,但是可能很快就出現一些可用的工具(因為Blender是開源的)。

  三、建模

  如何在MIDP應用程序中使用M3G 文件呢?首先,你需要一個已有某種3D模型的M3G文件。你可以用Google引擎快速查找一下,也可以使用和WirelessToolkit 2.2(在Demo3D 文件夾下)開發包一起發布的現成文件。在本文中,我們將對Sun的Pogoroo例程(編者注:Sun開發工具包自帶例程)作深度修改(簡化)。我們不讓它動起來或者做任何奇異的事情,而僅僅在屏幕上展示各個對象。

  四、加載World

  首先,要從M3D文件中加載World。在pogoroo.m3g文件中,你會看到一只袋鼠在一根彈簧單高蹺桿上跳躍,其身邊是一片綠茵。下面的列表1調用了加載器類的方法load()。

  列表1. 加載

try {
 //從M3D文件中加載World
 myWorld = (World)Loader.load("/pogoroo.m3g")[0];
 getObjects();
 setupaspectRatio();
}
catch(Exception e) {
 e.PRintStackTrace();
}

  五、從3D世界中取得對象

  3D世界已經被加載,現在你必須從中取得各個對象(見列表2)。這里,3D世界中有四個對象,其中之一是有關動畫(袋鼠在單腳跳)的信息。你可以使用World的find()方法來取得這些對象。

  列表2. 從3D World中取得對象

try {
 tRoo = (Group) myWorld.find(POGOROO);
 tCams = (Group) myWorld.find(CAMERA);
 acRoo = (Group) myWorld.find(TRANSFORM);
 animRoo = (AnimationController) myWorld.find(ROO);
 //取得動畫的長度
 AnimationTrack track = acRoo.getAnimationTrack(0);
 animLength = 1000; // 缺省長度為1秒
 if (track != null) {
  KeyframeSequence ks = track.getKeyframeSequence();
  if (ks != null) animLength = ks.getDuration();
 }

}
catch(Exception e) {
 e.printStackTrace();
}

  六、設置窗口寬高比例

  你必須設置窗口的寬高比例以使對象能夠正確著色。列表3中的代碼是未改動的-基本上同Sun的例子一樣。首先,檢查畫布的寬度和高度,然后根據相機的類型來計算寬高比例。

  列表3. 設置寬高比例

void setupAspectRatio() {
 viewport_x = 0;
 viewport_y = 0;
 viewport_width = myCanvas.getWidth();
 viewport_height = myCanvas.getHeight();
 Camera cam = myWorld.getActiveCamera();
 float[] params = new float[4];
 int type = cam.getProjection(params);
 if(type != Camera.GENERIC) {
  //計算窗口的寬高比
  float waspect=viewport_width/viewport_height;
  if (waspect   float height = viewport_width/params[1];
   viewport_height=(int)height;
   viewport_y=(myCanvas.getHeight()-viewport_height)/2;
  }
  else {
   float width = viewport_height*params[1];
   viewport_width=(int)width;
   viewport_x=(myCanvas.getWidth()-viewport_width)/2;
  }
 }
}

  七、刷新視圖

  為了刷新視圖,你可以用TimerTask來調用畫布的repaint()方法。另一種方法是直接使用線程,然后創建ExampleCanvas(畫布類的名字)來實現Runnable接口。

  列表4. 刷新視圖

private class RefreshTask extends TimerTask
{
 public void run(){
  if(myCanvas != null && myGraphics3D != null && myWorld != null) {
   int startTime = (int)System.currentTimeMillis();
   int validity = myWorld.animate(startTime);
   myCanvas.repaint(viewport_x, viewport_y, viewport_width, viewport_height);
  }
 }
}
八、完整的例程代碼分析

  在列表5中,你會看到應用程序的完整代碼。雖然長些,但是比Sun的例子要簡單許多。你可以通過給應用程序添加上一些動作和邏輯來練習你的MIDP技能。

  列表5. 完整的例程代碼

package com.kontio;



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜激情小视频| 韩国福利视频一区| 久久中文字幕在线| 日韩在线欧美在线国产在线| 欧美伊久线香蕉线新在线| 欧美日韩激情美女| 亚洲午夜国产成人av电影男同| 国产视频亚洲视频| 日韩在线播放av| 国产午夜精品一区理论片飘花| 搡老女人一区二区三区视频tv| 中文字幕精品—区二区| 亚洲色图美腿丝袜| 日韩av电影中文字幕| 成人在线观看视频网站| 不卡av在线网站| 亚洲女人被黑人巨大进入| 亚洲欧美www| 深夜福利一区二区| 精品亚洲一区二区三区四区五区| 国产精品国模在线| 国产精品视频99| 国产精品免费久久久| 日韩有码在线播放| 欧美专区在线观看| 日本成人黄色片| 亚洲最大的成人网| 国产裸体写真av一区二区| 欧美激情免费观看| 欧美大秀在线观看| 午夜精品久久久久久久男人的天堂| 国产精品欧美在线| 欧美成人网在线| 久久久亚洲欧洲日产国码aⅴ| 在线观看国产成人av片| 国产精品第一视频| 亚洲免费影视第一页| 欧美成人国产va精品日本一级| 欧美在线视频免费播放| 国产精品亚洲综合天堂夜夜| 91精品国产综合久久久久久蜜臀| 欧美日韩性视频在线| 亚洲欧美日韩成人| 欧美成人在线影院| 日韩欧美中文字幕在线播放| 96pao国产成视频永久免费| 欧美精品videossex88| 国产精品免费网站| 91精品国产91久久久久久久久| 日韩精品视频免费| 欧美专区第一页| 日韩黄色高清视频| 亚洲激情视频网站| 在线看片第一页欧美| 日韩成人av一区| 日韩男女性生活视频| 中文字幕国产亚洲2019| 黑人巨大精品欧美一区二区一视频| 亚洲网站在线播放| 国产精品久久久久久久久久久新郎| 国产精品国产三级国产专播精品人| 91精品国产综合久久久久久蜜臀| 欧美午夜激情在线| 日韩av免费看网站| 亚洲精品aⅴ中文字幕乱码| 91高清视频免费| 国产mv免费观看入口亚洲| 欧美激情一区二区三区在线视频观看| 欧美成人免费在线视频| 欧美xxxx14xxxxx性爽| 国产亚洲成av人片在线观看桃| 久久国产色av| 亚洲国产福利在线| 亚洲欧美中文日韩在线| 欧美黑人性猛交| 国产成人精品免费久久久久| 亚洲天堂第二页| 久久99国产精品自在自在app| 亚洲va国产va天堂va久久| 日韩人体视频一二区| 这里精品视频免费| 在线观看中文字幕亚洲| 国产精品久久久久福利| 亚洲第一二三四五区| 久久久噜噜噜久久中文字免| 97精品一区二区视频在线观看| 日韩在线观看免费高清| 精品亚洲一区二区| 日本a级片电影一区二区| 91免费欧美精品| 久热国产精品视频| 亚洲人成免费电影| 91精品视频观看| 97超视频免费观看| 亚洲级视频在线观看免费1级| 欧美黑人一区二区三区| 久久久久一本一区二区青青蜜月| 国产成人精品综合久久久| 久久欧美在线电影| 亚洲加勒比久久88色综合| 中文字幕国内精品| 麻豆成人在线看| 亚洲精品电影在线观看| 这里只有精品视频在线| 欧美激情视频免费观看| 亚洲老板91色精品久久| 亚洲国产欧美一区二区三区久久| 色综合久久88色综合天天看泰| 亚洲最大av网站| 91网站免费看| 亚洲欧洲日产国产网站| 日韩黄色在线免费观看| 少妇高潮 亚洲精品| 国产精品久久久久久久av电影| 国产日韩在线亚洲字幕中文| 亚洲第一网站免费视频| 日本精品一区二区三区在线| 91免费高清视频| 欧美xxxx14xxxxx性爽| 91精品国产综合久久香蕉| 午夜精品一区二区三区在线| 亚洲人成在线一二| 日韩黄色在线免费观看| 在线观看久久av| 日韩欧美精品中文字幕| 亚洲电影成人av99爱色| 国产男女猛烈无遮挡91| 成人精品一区二区三区电影黑人| 欧美激情中文网| 欧美电影院免费观看| 91久久久久久久久久| 亚洲色图狂野欧美| 久久精品国产一区| 亚洲国产成人久久综合一区| 国产一区二区美女视频| 久久理论片午夜琪琪电影网| 久久久电影免费观看完整版| 日韩av在线网页| 国产精品美女主播在线观看纯欲| 日韩欧美一区二区在线| 日本伊人精品一区二区三区介绍| 国产玖玖精品视频| 91成品人片a无限观看| 欧美日韩国产999| 成人网欧美在线视频| 色综合亚洲精品激情狠狠| 亚洲va欧美va在线观看| 国产精品久久久久久久久久久久久久| 成人性生交大片免费观看嘿嘿视频| 97视频在线观看免费高清完整版在线观看| 92看片淫黄大片欧美看国产片| 国产精品女主播| 欧美日韩在线视频首页| 日韩精品一区二区三区第95| 欧美国产一区二区三区| 亚洲精品自拍偷拍| 91国在线精品国内播放| 萌白酱国产一区二区| 91美女片黄在线观看游戏| 麻豆精品精华液| 亚洲国产日韩一区| 成人黄色激情网| 国产精品观看在线亚洲人成网| 久久香蕉精品香蕉|