J2ME 3D技术简介

3D技术对我们来说已经非常熟悉了,最常用的3D API有OpenGL和Microsoft的Direct 3D,在桌面游戏中早已广泛应用。对于J2ME程序而言,Mobile 3D Graphics API(JSR184)的出现,使得为手机应用程序添加3D功能成为可能。

JSR184标准(M3G:Mobile 3D Graphics)为Java移动应用程序定义了一个简洁的3D API接口,J2ME程序可以非常方便地使用M3G来实现3D应用比如游戏等等。M3G被设计为非常轻量级的,整个API的完整实现不超过150kb。

M3G是J2ME的一个可选包,以OpenGL为基础的精简版,一共有30个类,运行在CLDC1.1/CLDC2.0上(必须支持浮点运算),可以在MIDP1.0和MIDP2.0中使用。目前,支持M3G的手机有Nokia 6230/3650/7650/6600、Siemens S65/CX65/S55/M55、Sony-Ericsson K700i/P800/P900、Moto 220/T720等。M3G只是一个Java接口,具体的底层3D引擎一般由C代码实现,比如许多手机厂商的3D引擎采用的便是SuperScape公司的Swerve引擎,这是一个专门为移动设备设计的高性能3D引擎。

类似于Microsoft的D3D,M3G支持两种3D模式:立即模式(immediate mode)和保留模式(retained mode)。在立即模式下,开发者必须手动渲染每一帧,从而获得较快的速度,但代码较繁琐;在保留模式下,开发者只需设置好关键帧,剩下的动画由M3G完成,代码较简单,但速度较慢。M3G也允许混合使用这两种模式。

3D模型可以在程序中创建,但是非常繁琐。因此,M3G提供一个Loader类,允许直接从一个单一的.m3g文件中读入全部3D场景。m3g文件可以通过3D Studio Max之类的软件创建。

如果熟悉OpenGL,那么M3G是非常容易理解的。在M3G中,Graphics3D是3D渲染的屏幕接口,World代表整个3D场景,包括Camera(用于设置观察者视角)、Light(灯光)、Background(背景)和树型结构的任意数量的3D物体。3D对象在计算机中用点(Point, Pixel)、线(Line, Polyline, Spline)、面(Mesh)来描述,具体存储和运算(如旋转、投影)都是矩阵运算和变换。

SUN的WTK2.2已经内置了M3G的实现包,如果安装了WTK2.2,就可以在模拟器上运行3D MIDP程序。可以参考WTK2.2的示例demo3d。

下面是一个最简单的M3G程序,来自Sony-Ericsson的示例代码,它创建一个旋转的金字塔,可以从 此处下载完整代码并在WTK2.2中运行。

首先,我们要获得唯一的Graphics3D实例,用于渲染3D场景。Graphics3D是一个Singleton实现,可以在任何地方获得:

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();
}
}

接下来创建一个World并设置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()方法中创建一个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轴旋转起来:

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();
}
}

时间: 2024-10-30 18:46:07

J2ME 3D技术简介的相关文章

《AR与VR开发实战》 第1章 AR技术简介

第1章 AR技术简介增强现实(Augmented Reality,AR)是一种实时计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界中并进行互动.这种技术于20世纪90年代提出,随着随身电子产品运算能力的提升,其用途将会越来越广.目前对于增强现实有两种通用的定义.一种定义是北卡大学罗纳德·阿祖玛(Ronald Azuma)于1997年提出的,他认为增强现实包括三个方面的内容:将虚拟物与现实结合.即时互动.三维.另一种定义是保罗·米尔格拉姆(Paul M

《AR与VR开发实战》——第1章AR技术简介

本节书摘来自华章出版社<AR与VR开发实战>一书中的第1章,第1.1节,作者 张克发 赵兴 谢有龙,更多章节内容可以访问"华章计算机"公众号查看. 第1章 AR技术简介 增强现实(Augmented Reality,AR)是一种实时计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界中并进行互动.这种技术于20世纪90年代提出,随着随身电子产品运算能力的提升,其用途将会越来越广.目前对于增强现实有两种通用的定义.一种定义是北卡大学罗

二、三、四层交换的区别/四层交换技术简介

随着宽带的普及,各种网络应用的深入,我们的局域网络正在承担着繁重的业务流量.网络系统中的音频.视频.数据等信息的传输量充斥着占用带宽,我们不得不为这些数据流量提供差别化的服务,让时延敏感性的和重要的数据优先通过,这就不得不考虑第四层交换,以满足基于策略调度.QoS(Quality of Service:服务质量)以及安全服务的需求. 二.三.四层交换的区别 第二层交换实现局域网内主机间的快速信息交流,第三层交换可以说是交换技术与路由技术的完美结合,而第四层交换技术则可以为网络应用资源提供最优分配

J2ME 3D编程——第一个3D程序

编程|程序 J2ME 3D编程--第一个3D程序(附源代码) 更多文章请访问:http://blog.csdn.net/mailbomb 参考WTK2.2提供的demo,完成了第一个3D程序,虽然很简单,而且有些问题还不是很清楚,还是把代码共享出来和愿意学习J2ME 3D编程的朋友一起学习. 关于3D编程的资料,可以查阅我的blog. 关于代码的编译和运行说明如下: 1. 以下代码在J2ME WTK2.2下面编译通过. 2. 代码分为两个文件:First3DCanvas.java和First3D

Internet防火墙技术简介

1. 引言 防火墙技术是建立在现代通信网络技术和信息安全技术基础上的应用性安全技术,越来越多地应用于专用网络与公用网络的互连环境之中,尤以Internet网络为最甚.Internet的迅猛发展,使得防火墙产品在短短的几年内异军突起,很快形成了一个产业:1995年,刚刚面市的防火墙技术产品市场量还不到1万套;到1996年底,就猛增到10万套;据国际权威商业调查机构的预测,防火墙市场将以173%的复合增长率增长,今年底将达到150万套,市场营业额将从1995年的1.6亿美元上升到今年的9.8亿美

J2ME 3D编程——第一个3D程序(附源代码)

参考WTK2.2提供的demo,完成了第一个3D程序,虽然很简单,而且有些问题还不是很清楚,还是把代码共享出来和愿意学习J2ME 3D编程的朋友一起学习. 关于3D编程的资料,可以查阅我的blog. 关于代码的编译和运行说明如下: 1.以下代码在J2ME WTK2.2下面编译通过. 2.代码分为两个文件:First3DCanvas.java和First3DMIDlet.java. 3.使用J2ME WTK2.2建立新的工程,主MIDlet类为:first3d. First3DMIDlet 4.将

WindowsNT技术简介

  Windows NT 技术简介 NT:New Technoly(新技术,因比DOS.WIN9X采用了很多新技术而得名) Windows NT基本介绍 WindowsNT是Microsoft推出的面向工作站.网络服务器和大型计算机的网络操作系统,也可做PC操作系统. 它与通信服务紧密集成,提供文件和打印服务,能运行客户机/服务器应用程序,内置了Internet/Intranet功能,已逐渐成为企业组网的标准平台. Windows NT引入的新概念 1. NTFS(Windows NT File

[Qt教程] 第48篇 进阶(八) 3D绘图简介

[Qt教程] 第48篇 进阶(八) 3D绘图简介 楼主  发表于 2013-10-7 09:44:37 | 查看: 184| 回复: 0 3D绘图简介 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 OpenGL是一个跨平台的用来渲染3D图形的标准API.在Qt中提供了QtOpenGL模块,从而很轻松地实现了在Qt应用程序中使用OpenGL,这主要是在QGLWidget类中完成的.因为3D绘图涉及到了专业方面的内容,我们下面只是讲解最简单的使用,向大家演示在Qt中如何显示

FC总线技术简介

FC是由美国标准化委员会(ANSI)的X3T11小组于1988年提出的高速串行传输总线,解决了并行总线SCSI遇到的技术瓶颈,并在同一大的协议平台框架下可以映射更多FC-4上层协议.FC具备通道和网络双重优势,具备高带宽.高可靠性.高稳定性,抵抗电磁干扰等优点,能够提供非常稳定可靠的光纤连接,容易构建大型的数据传输和通信网络,目前支持1x.2x.4x和8x的带宽连接速率,随着技术的不断发展该带宽还在不断进行扩展,以满足更高带宽数据传输的技术性能要求.FC在航电上的应用主要包括:FC-AE.FC-