为J2ME开发移动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例程作深度修改(简化)。我们不让它动起来或者做任何奇特的事情,而仅仅在屏幕上展示各个对象。

四、加载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();
}

时间: 2025-01-21 12:22:48

为J2ME开发移动3D游戏之保留模式的相关文章

为J2ME开发移动3D游戏之立即模式

一.简述 现在,移动游戏和移动应用开发极为热门!游戏中需要有时髦漂亮的图形,其设计标准比以前任何时候都要高.本文将告诉你怎样用酷毙的移动3D图形API为J2ME设备开发3D图形游戏. 如果你在用MIDP1.0进行用户接口编程,那么有两条路你可以选择:使用高级的UI类或者一切由你自己从头开始.作为游戏开发者,第一种选择往往是不可能的:这是为什么游戏开发者不得不为他们的高级游戏开发自己的3D引擎的原因.无疑,这需要付出大量的时间和努力,而缺乏浮点数支持的CLDC 1.0(MIDP 1.0正是建于其上

为基于J2ME的手机开发移动3D游戏

一.简述 既然现在你已对3D API比较熟悉并了解了3D图形是如何加入到移动Java应用程序中的.下面将继续告诉你怎样使用3D造型软件以使编码和设计更为简单. 如今,3D图形几乎是任何一部游戏的关键部分,甚至一些应用程序也通过用3D形式来描述信息而获得了成功.如前文中所述,以立即模式和手工编码建立所有的3D对象的方式进行开发速度很慢且很复杂.应用程序中多边形的所有角点必须在数组中独立编码.在JSR 184中,这称为立即模式. 另外一种更高级的模式称为保留模式,它允许设计者使用诸如3D Max S

利用J2ME开发移动3D游戏之3D图形API

简述 现在,移动游戏和移动应用开发极为热门!游戏中需要有时髦漂亮的图形,其设计标准比以前任何时候都要高.本文将告诉你怎样用酷毙的移动3D图形API为J2ME设备开发3D图形游戏. 如果你在用MIDP1.0进行用户接口编程,那么有两条路你可以选择:使用高级的UI类或者一切由你自己从头开始.作为游戏开发者,第一种选择往往是不可能的:这是为什么游戏开发者不得不为他们的高级游戏开发自己的3D引擎的原因.无疑,这需要付出大量的时间和努力,而缺乏浮点数支持的CLDC 1.0(MIDP 1.0正是建于其上)对

《Android 3D 游戏案例开发大全》——6.4节主控制类——TXZActivity类的开发

6.4 主控制类--TXZActivity类的开发 Android 3D 游戏案例开发大全 Android程序中,Activity是最重要的类之一.在本游戏中,TXZActivity继承自Activity类,为本游戏的主控制类,本节将具体介绍TXZActivity的开发,其具体步骤如下. (1)主控制类代码非常多,首先搭建主控制类的框架,以帮助读者理解,主控制类框架代码如下. 1 package com.bn.txz; //声明包 2 --//此处省略了本类中导入类的代码,读者可以自行查阅随书光

《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.4节Hello Android应用程序的开发

1.4 Hello Android应用程序的开发 Android 3D游戏开发技术宝典--OpenGL ES 2.0 本节首先将介绍如何在Eclipse中创建一个基于Android的Hello World应用程序,之后将简单介绍Android应用程序的调试,为读者以后学习高级开发铺平道路. 1.4.1 第一个Android应用程序 本小节将向读者介绍如何在Eclipse中创建一个基于Android的Hello World应用程序,基本步骤如下所列. (1)首先打开Eclipse,然后依次选择Fi

《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.5节2D动画的开发

2.5 2D动画的开发 Android 3D游戏开发技术宝典--OpenGL ES 2.0 虽然本书是着重介绍3D的开发技术,但在大部分的3D应用中也需要有不少的2D界面,如菜单.帮助等.本节将介绍一般用于开发游戏中2D界面的SurfaceView类的使用.其继承自View类,但与View的不同之处在于,View更新画面必须是在UI线程中(也可以理解为主线程中),而SurfaceView更新画面可以在自定义线程中进行,大大方便了开发. 提示 关于Android下的多线程问题,读者可以参考笔者在人

美剧《斯巴达克斯》开发成社交游戏今日测试

据外媒报道,红极一时的美剧<斯巴达克斯>已开发成社交游戏,并将在Facebook平台发行,游戏的测试版本将于今日开始. 美剧<斯巴达克斯>是由电视台StarZ于2010年播放,该剧拥有电影<斯巴达300勇士>的影子.<角斗士>的真实感和剧集<罗马>的裸露程度,电视剧还未播出,就已经受到广泛关注,而电视台更是一口气预订了两季的播放权. <斯巴达克斯>同名社交游戏今日进行测试,不过只有前一万名玩家才能拿到测试资格.第一季<斯巴达克斯

新京报:任天堂索尼决战E3展示3D游戏新技术

6月16日消息,据国外媒体报道,任天堂和索尼本周二在美国洛杉矶E3电子娱乐展上,都展示了他们最新的3D新技术.两家公司均认为,随着来自一流开发商的许多3D游戏的开发,3D产品将成为主流. 索尼致力于消费者居室的大屏幕电视,由于索尼在4月份进行了软件升级,该公司PlayStation 3游戏控制台能够在这类电视上播放3D游戏.任天堂重点是更小的显示屏,该公司计划推出一款能够播放3D游戏的全新DS手持产品3DS.两家公司3D新产品各有特色.索尼不要求消费者购买新游戏机,但消费者必须拥有一台3D功能新

Direct3D 开发之旅 3D 游戏基本概念的介绍2

   文接上篇,上节说到了3D的重要的几何知识.         这节首先我们补充一些其他重要的3D的几何知识.       通过所有的变换,将顶点从物体局部坐标系变换到视口坐标系系统.变换方法以下几种       1. 平移,旋转和缩放等变换操作通常使用矩阵来执行        2. 在投影之后,每个顶点都在投影平面上有一个新的x和y值用于描述它的位置,同时还有一个述深度的z值.        3.在管线处理的最后阶段,将纹理填入到各个三角形或者表面当中.纹理就是游戏背景出现的一些头案.