作者:mingjava 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=761
索尼爱立信K700手机的Java 3D引擎提供了访问全新开发领域的可能性。K700同时支持JSR 184和Mascot Capsule 第三版的API,本文将主要关注使用Mascot Capsule第三版API的技巧。
通用3D建模技巧
Mascot Capsule引擎第三版只支持0%,5%和100%的多边形透明度,因此创建3D模型的时候确保只使用了上述数值。
将每个模型导出为一个BAC文件。虽然也可以把多个模型导出到一个BAC文件中,但是这样只能使得你的编程工作更加复杂。
导出模型的时候,让你的模型位于0,0,0。这样可以使得编程更简单。
Camera和Light不能被导出到BAC文件,因此不要在你的3D模型中浪费时间来设置这些内容。
骨架的重量值只能取100%或者0%,其他的任何值都无效。
3D显示技巧
使用下面的3种方法可以减小你的3D MIDlet的纹理失真的情况:
1、 在失真区域使用更多的多边形
2、 使用非常难辨认出来是否发生扭曲的帖图,如果可能的话,使用随机模式会使帖图更清楚
3、 尽量把这些区域隐藏在2D图形后面
Mascat Capsule使用Z排序算法来计算多边形的顺序。像所有的Z排序一样,这意味着有时候多边形的绘制顺序和眼睛看到的可能不一致。细分多边形可以解决这个问题。另一方面,如果顺序的问题出在模型之间,通过刷新不同模型之间的绘画缓存可以减小这个问题的影响程度。
程序性能技巧
绞尽脑汁多想一些办法来创建同样的效果,然后选择消耗处理器和内存最小的方式。
3D模型中多边形的数量是影响性能的关键因素。然而,这并非唯一的因素。在移动电话这种处理能力有限的设备上,你应该多计算绘画的像素数量而不光是多边形的数量。具有多个多边形的小模型绘画速度比多边形数目少的大模型快。
可能的话,创建3D模型的时候使用方形代替三角形。
纹理总是会保留足够的内存来填充8比特深,256*256像素的纹理区域,即使你的纹理文件比这个要小。因此使用一个256*256的纹理比使用4个128*128的纹理的效果更好。
由于内存有限,因此尽量复用你的纹理。例如,在使用脸部纹理的时候,你可以只创建一个耳朵,把它用在脸部的两边。
如果你已经定义了一组关键帧,那么可以通过程序自动创建3D动画。动画里的关键帧准确的创建了你的模型。这样程序可以在你的关键帧之间绘画所有的帧,可以节约很多工作量。然而,你不能用的帧太多,或者错误的帧。否则会影响性能。
向3D模型中添加骨架的时候应该当心,尽量使用少量的骨架。例如,如果手指在你的模型中并不是很重要的话,那么没有必要为其添加骨架。可以考虑把手和手腕直接连接来代替。
原文地址: http://developer.sonyericsson.com/site/global/tipstrickscode/java/p_java_0703.jsp