是我需要导出到 .dae 的包 org.papervision3d.core.io 吗?
Posted
技术标签:
【中文标题】是我需要导出到 .dae 的包 org.papervision3d.core.io 吗?【英文标题】:Is it the package org.papervision3d.core.io what I need to export to .dae? 【发布时间】:2011-10-23 10:10:37 【问题描述】:我需要从一个 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?
谢谢
【问题讨论】:
我玩这个已经好几年了,但如果我没记错的话,DAE 文件只是包含 3D 数据的 xml 文件。将使用 3D 渲染程序创建 DAE 文件。 【参考方案1】:您可以使用ExportCollada的export()静态方法编写一个.DAE文件:
trace(ExportCollada.export(yourDisplayObject3D));
我整理了一个非常基本的例子here:
运行测试并双击舞台以将平面作为 .dae 文件保存到磁盘。
更新
嵌套对象也可以工作,如您所见here:
你提到了这一行:
mesh = scene.addChild(new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3));
这只是在一行中做多件事的一种懒惰方式:
-
创建一个新的 PaperPlane 对象
将其添加到场景中
将 PaperPlane 对象分配给网格变量
这样可能更有意义:
var mesh:DisplayObject3D = new PaperPlane(new FlatShadeMaterial(light,0xFFFF00,0xFF6600),3);
scene.addChild(mesh);
你修改后的sn-p:
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
【讨论】:
非常感谢您提供这些信息。这正是所需要的。我花了很多时间寻找这个。现在的问题是我无法实现它。我的 DisplayObject3D 无法识别。我会继续尝试。谢谢再见 “现在的问题是我没有设法实现它。” ?你是什么意思 ?你导入了课程吗?import org.papervision3d.core.io.exporters.ExportCollada
?
我不能简单地将“网格”更改为“容器”。
是的,当您将“容器”导出为 DAE 时,您可以而且应该这样做
你好。原谅迟到了。我仍然无法解决它。如果我尝试这个:trace(container);然后我得到这个: 4: x:0 y:0 z:0 如果我试试这个:trace(ExportCollada.export(contenedor_x));然后我收到这条错误消息:错误 1009:无法访问空对象引用的属性或方法我相信我会停止这样做:(谢谢@GeorgeProfenza以上是关于是我需要导出到 .dae 的包 org.papervision3d.core.io 吗?的主要内容,如果未能解决你的问题,请参考以下文章
SCNView 导出的 Collada (.dae) 文件看起来不同,无法导入到 Blender