我正在根据以下教程编写一些代码:
http://active.tutsplus.com/tutorials/3d/quick-tip-displaying-a-3d-model-with-papervision3d/
我从示例中复制了代码,并将路径添加到我自己的资产中。
[Embed(source="/Models/daeModel/cow.dae", mimeType="application/octet-stream")]
private var CowModelClass:Class;
[Embed(source="/Models/daeModel/Cow.png")]
private var CowTextureClass:Class;
[Embed(source="/Models/SkyDome/images.jpg")]
private var SkyTextureClass:Class;
[Embed(source="/Textures/grass-texture.jpg")]
private var GrassTextureClass:Class;
上面显示的资产用于显示 Collada 奶牛模型站在天穹(球体)下的草地(平面)上,因此我的代码与教程略有不同,我加载的是 Collada 而不是 DAE。
import org.papervision3d.objects.parsers.Collada;
我在 Flash CS3 中发布它并且 .swf 完美运行。奶牛模型展示、草地飞机和天穹都出现了。
不幸的是,资产是在运行时加载的,因为 Flash CS3 没有嵌入。
要嵌入资产,我然后使用 mxmlc.exe 编译 .as,使用:
-static-link-runtime-shared-libraries=true
我没有编译错误。
但是,当我运行 .swf 文件时,草平面和天穹以嵌入的纹理正常显示,但不显示 collada 模型。
我自己的调试文本将模型的宽度显示为 0,因此看起来模型尚未加载。Collada 类仍然可以正常工作,因为我能够移动模型的 3D 坐标,从而移动一些以模型坐标为中心的 3D 文本。文本显示,但模型不可见。
通过进行简单的更改,我可以通过将模型的纹理“Cow.png”应用到草地平面来检查它,并且它显示得很好。因为纹理与模型在同一个文件夹中,所以我知道导航到模型位置的路径不是问题。
有谁知道 Collada 模型在使用 mxmlc 编译后可能不显示的任何原因?
我是否缺少任何命令行参数或类似的东西?
如果做不到这一点,还有其他方法可以嵌入这个模型吗?