![]() |
|
|
一、简述 现在,移动游戏和移动应用开发极为热门!游戏中需要有时髦漂亮的图形,其设计标准比以前任何时候都要高。本文将告诉你怎样用酷毙的移动3D图形API为J2ME设备开发3D图形游戏。 如果你在用MIDP1.0进行用户接口编程,那么有两条路你可以选择:使用高级的UI类或者一切由你自己从头开始。作为游戏开发者,第一种选择往往是不可能的;这是为什么游戏开发者不得不为他们的高级游戏开发自己的3D引擎的原因。无疑,这需要付出大量的时间和努力,而缺乏浮点数支持的CLDC 1.0(MIDP 1.0正是建于其上)对问题的解决没有多大帮助。 在MIDP 2.0中,有一个可选的叫移动3D图形API的软件包,或者叫JSR 184。该API是第一个基于Java标准开发的移动设备上的三维图形软件包。该API既有高级又有低级图形特征;其中,高级特征称为保留模式,低级特征称为立即模式。保留模式使得开发者有可能使用场景图形并使场景中的物体根据虚拟相机和灯光的位置进行自身的着色。立即模式能够允许应用程序直接进行物体绘制。如果需要,可以在同一个应用程序中使用这两种模式。 本文着重介绍立即模式。 二、3D API 让我们以列举和解释该3D API中的类作为开始。除了这些API外,JSR 184还包含了一个场景图形结构和一个相应的文件格式以有效地管理和配置3D内容。该文件格式定义了一种m3g文件,这种文件典型地从3D建模文件应用程序中转换而来。 表1.3D API类 类 描述 Node 所有场景图形结点的抽象基类。其五个具体子类是:Camera,Mesh,Sprite3D,Light和Group。 Object3D 所有可以成为3D世界中组成部分的对象的抽象基类。 PolygonMode 封装了多边形级别属性。 RayIntersection 存储了对于分割的Mesh或Sprite3D的引用,以及有关分割点的信息。 SkinnedMesh 描述了一个框架动画的多边形网眼。 Sprite3D 用3D位置来描述一个2D图像。 Texture2D 封装了一个2D纹理图像和一个属性集合,这些属性指出该图像是如何应用到子网眼上的。 Transform 一个通用的4x4的浮点数矩阵,用来描述一个变换。 Transformable Node和Texture2D类的抽象基类。 TriangleStripArray 定义了一个三角形带数组。 VertexArray 一个整型矢量数组,描述了顶点位置,法线,颜色或者纹理坐标。 VertexBuffer 存储对于VertexArrays的引用,它包含了一个顶点集的位置,颜色,法线,以及纹理坐标。 World 一个特别的Group结点,它作为场景图最顶层的容器。
|