Papervision3D Tips(持续更新)
why PV3D? 这个问题有些些纠结 – 。- Papervision3D(下面简称PV3D),是一款比较老牌的Flash 3D引擎。PV3D除了比较老牌之外,与其他引擎相比并没有太多出众的特点,甚至可以说缺点明显,它的渲染效率比较低,对于第三方模型文件的支持也不完善。但是PV3D是完全免费的,而且使用人数也比较多,尤其是在国内使用的人数相对别的引擎要多一些,参考资料也相对多一些。 对于刚刚入门Flash3D的童鞋来说,PV3D或者Away3D是比较合适的选择,因为它们都是免费的,这个优势是绝对的。而其他的优缺点都是相对的。- -||| 例如从效率上考虑,目前Flash runtime都不涉及GPU,在硬件层面并没有支持3D的机制,所以任何Flash 3D引擎的效率都不太好。你很可能常常为了飙升的CPU占用率而绞尽脑汁。在此基础上,一些后开发的,或者商业引擎效率较高。PV3D则很容易让你被主管念叨“拜托不要搞这么占CPU的东东”。 而从参考资料上考虑,Flash3D算是非主流应用,任何一款引擎的参考资料都不多。资料较多的PV3D,国外的参考书籍寥寥无几,国内就更不用说了(据我所知目前只有台湾有一本讲PV3D商业应用的书)。网络上的英文资料主要来自于开发团队的博客,国内主要是一些论坛(例如flash天地会,Flab3D),在个人博客上零零星星有一些针对具体问题的解决例子。总体来说,国内只有初步的介绍,并没有太涉及核心;国外的实例很丰富,也比较系统(很容易举一反三),但是真的涉及到核心问题还是得自己钻研。另外说说文档,嘛,开源的项目,文档嘛,不可不信,不可不信(点到为止)……出现诡异的问题时建议直接看引擎源码吧…… 那么究竟为什么还是选择了PV3D呢?没什么特别的,很多引擎都是在它基础上开发的,所以一通百通啦。什么引擎不重要,重要的是对三维世界的理解嘛。至于效率问题,相信会随着Flash runtime和引擎的更新换代得到解决滴~ 加载第三方模型文件 dae是xml的子集,很容易阅读。 将dae导入pv3d中需要注意UP_AXES的值,它指定了模型中竖直向上的坐标轴。在PV3D理解的三维世界中,采用的是左手坐标系,竖直向上的是Y轴,而用Sketchup建模导出的dae中,默认的UP_AXES值是Z_UP的(诡异吧,我YY了很久才了解到的诶)。如果直接导入,会发现原本模型中的Z轴变成了Y轴,整个模型相对于其原本pitch了-90度。因此需要手工滴将dae文件中的UP_AXES的值修改为Y_UP,与PV3D统一。 PS.不推荐保留UP_AXES值,而直接旋转模型文件。因为从PV3D的文档中能看到,引擎本应该读取UP_AXES值,如果不为Y_UP,则需要对模型的坐标进行转换。例如上面提到的,Z_UP的模型,在PV3D中会将其Z坐标转为Y坐标,Y坐标转为Z坐标,实际渲染的结果与建模软件中所见相同(不会出现pitch-90的情况)。注意这仅仅是文档中写的……而实际上不知道为什么,引擎在导入模型时并没有进行这个处理,我们就暂时猜测这是一个未完成的功能吧。为了向后兼容,令模型的UP_AXES和PV3D统一是比较妥当的做法。即使将来引擎实现了文档中提的功能,我们原来的模型也依然能够像以前一样被正确滴渲染出来。 (待续)