0

我需要从一个 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?

谢谢

4

1 回答 1

0

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

trace(ExportCollada.export(yourDisplayObject3D));

我在这里整理了一个非常基本的示例:

PV3D DAE 导出

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

更新

嵌套对象也可以在这里看到:

PV3D DAE 导出多个嵌套对象

你提到了这一行:

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

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

  1. 创建一个新的 PaperPlane 对象
  2. 将其添加到场景中
  3. 将 PaperPlane 对象分配给网格变量

这样可能更有意义:

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
于 2011-08-10T23:30:26.477 回答