论文部分内容阅读
随着移动设备的普及和性能的不断提高,其运行的应用程序日趋多样化。同时Java作为跨平台、面向对象的语言而受到青睐。开放式运行平台(ORP,Open Runtime Platform)是一个高性能的可控制运行环境软件,是用来研究垃圾收集(Garbage Collector)和动态编译技术(Just In Time)的开放资源研究平台,它支持执行类型安全字节码,能够运行Java程序。经过我们的改进,它已可以运行J2ME(Java 2 Micro Edition)程序。ORL就是Intel公司在改进的ORP(也就是XORP)之上,遵循了Clean Room的原则,严格按照Sun公司的J2ME规范,开发出的J2ME类库。而上述两项,即ORL和XORP,都是Intel公司基金项目“J2ME Class Libs with Small Footprint,Low Power and.High Performance onXScale Processor”的组成部分。
Java技术中关于移动和手持设备上的应用属于Java 2袖珍版(J2ME)。其底层是相对精简的虚拟机(VM,Virtual Machine),上一层根据设备情况分为有限连接设备配置(CLDC,Connected Limited Device Configuration)和连接设备配置(CDC,Connected Device Configuration),在配置之上的是更加细分的移动信息设备描述(MIDP,Mobile.Information Device Profile)。在本文讨论的是适用于移动设备的Java技术的移动三维图形类库(M3G,Mobile 3D Graphics),它是建立在MIDP和CLDC基础之上的。
虽然最终的应用程序是使用在手机这样的设备上的,但是得益于Java的平台无关性,应用程序的开发工作就可以在相对容易操作的PC上进行。本文的主要工作就是在Windows平台上设计并实现这样的一个三维图形类库。
本文做了大量的工作,主要解决了对M3G类库的具体设计和实现,包括了数据的存储、图形的变换、物体的建模以及对于动画的处理。
其中为了把图形的变换中最复杂的旋转变换和动画中对于插值计算的处理统一起来,本文引入了一个四元组(Quateraaion)类,同时这也降低了图形变换中所需要的计算量。
而对于用于描述物体的Mesh类及其子类SkinnedMesh类等,本文也详细介绍了这些类的功能,设计与具体实现,以及与之相关联的RayIntersection类的内容包括了其具体算法和代码的重构等。
同时也阐述了动画相关类之间的关系,动画的模式,插值计算,世界时间与序列时间的转化等问题。
完成以上的实现工作后,本文对M3G进行了相对完整的功能测试和性能测试。测试分两部分:一部分是运行公开的Benchmark,用测试数据与Sun公司的WTK(Wireless Tool Kit)进行比较;另一部分是运行多种多样的应用程序。同时本文也描述了在性能优化过程中所采取的一些技术,例如纹理的缓冲,数据结构的优化等等。
文章的最后,对全文的内容作了一个总结,然后讨论了现有实现的不足,并在此基础上结合最新的技术潮流对今后进一步的研究开发工作进行了展望。