1

我正在根据以下教程编写一些代码:

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 编译后可能不显示的任何原因?

我是否缺少任何命令行参数或类似的东西?

如果做不到这一点,还有其他方法可以嵌入这个模型吗?

4

1 回答 1

0

问题解决了!

编译器 mxmlc 要求我将 cowByteArray 定义为 XML:

//load cow model MXMLC
var cowByteArray:ByteArray = new CowModelClass ( ); 
cow = new Collada ( ) ;
cow.load ( new XML(cowByteArray), cowMaterialsList ) ;

使用第二个代码,使用 mxmlc 编译后,模型显示正常!

希望这对某人有帮助!

于 2013-03-11T23:38:30.913 回答