是org.papervision3d.core.io包我需要导出到.dae吗?

时间:2011-08-09 17:09:32

标签: actionscript-3 export papervision3d collada

我需要从一个DisplayObject3D创建一个.DAE文件,但不知道该怎么做。只有我找到有关如何导入DAE的信息。从未如何出口它。

感谢。


我无法简单地为“容器”改变“网格”。

我不太了解这一行:

mesh = scene.addChild(new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3));

如果我这样做:

mesh = container.addChild(new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3));

然后它用纸板创建一个dae,但只创建纸板,而不是“容器”中存在的其他对象。

如何使用DisplayObject3D“容器”的对象创建dae?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用ExportColladaexport()静态方法编写.DAE文件:

trace(ExportCollada.export(yourDisplayObject3D));

我已经汇总了一个非常基本的例子here

PV3D DAE Export

运行测试并双击舞台将平面保存为.dae文件到磁盘。

<强>更新

嵌套对象也可以正常工作here

PV3D DAE Export multiple nested objects

你提到过这一行:

mesh = scene.addChild(new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3));

这只是在一行中做多件事的懒惰方式:

  1. 创建一个新的PaperPlane对象
  2. 将其添加到场景中
  3. 将PaperPlane对象分配给网格变量
  4. 这可能更有意义:

    var mesh:DisplayObject3D = new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3);
    scene.addChild(mesh);
    

    您修改过的代码段:

    mesh = container.addChild(new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3));
    

    表示网格等于通过将纸平面添加到容器(即纸平面)返回的DisplayObject3D,因此如果要导出网格,则只导出平面。 如果导出容器,则应该获取容器具有的所有子元素的dae。

    可能更容易更改此行:

    data.writeUTFBytes(ExportCollada.export(mesh));
    

    到此:

    data.writeUTFBytes(ExportCollada.export(container));//assuming container is visible here