将 Collada 文件转换为 a3d (Android3d) 对象

Posted

技术标签:

【中文标题】将 Collada 文件转换为 a3d (Android3d) 对象【英文标题】:Converting Collada file to a a3d (Android3d) object 【发布时间】:2011-08-12 22:55:21 【问题描述】:

我正在研究 Renderscript 功能并坚持使用 A3D (android 3d) 文件格式。我找不到一种简单的方法将 Collada 文件转换为 A3D 格式来存储我的搅拌机模型。

我想知道你们是否有一个我可以尝试的想法?

有没有人有一个工作代码示例,以便可以看到我做错了什么?

更多信息:http://developer.android.com/reference/android/renderscript/FileA3D.html

编辑:不要误认为是 Asci3d 文件扩展名(也是 *.a3d )

【问题讨论】:

【参考方案1】:

从 Ice Cream Sandwich(可能更早)开始,Android 源代码中有一个工具可以在 Collada 和 A3D 之间进行转换。

这个工具叫做a3dconvert;您可以在此处(在 ICS 分支中)在线浏览源代码:https://github.com/android/platform_development/tree/ics-mr1-release/tools/a3dconvert

用法: a3dconvert input_file a3d_output_file 目前接受 .obj 和 .dae (collada) 输入文件。

该工具在较新的版本中已被删除(看起来像 Jelly Bean)。这可能是因为 Renderscript 的图形部分已被弃用。

【讨论】:

不幸的是,它没有随 Android SDK 一起安装,并且 AOSP 源代码不是在 Windows 上构建的。我仍然需要弄清楚是否可以在 Windows 上构建这个工具。 2 孩子。你的意思是,它正在其他平台上构建?你是如何管理 a3dconvert 来编译和工作的?【参考方案2】:

我不确定 A3D 是一种好的格式,但如果您必须编写转换器,这里是两种格式的描述:

http://scorpion.tordivel.no/help/UsersGuide/General/ImageOperations/ImageFormats/ImageFormats_a3d.htm

http://en.wikipedia.org/wiki/COLLADA

这里是一些阅读 Collada 的示例代码:

http://sourceforge.net/projects/colladaloader/

【讨论】:

我相信 ASCII 3D 格式(也具有相同的 .a3d 扩展名)与 Android3D 格式不同。至少 Android3D 中的数据以不同于纯文本的方式存储,如 ASCII 3D。【参考方案3】:

如果您要从 Blender 转到 A3D,我会考虑编写一个 Python 脚本直接从 Blender 转到 A3D 格式。 A3D 格式看起来相当简单,如果您只访问 Mesh 数据,Blender API 并不难理解。当然,如果您还不知道它,您将不得不学习一些 Python 语法。

当我第一次想自己从 Blender 中提取一些信息时,我对 Python 一无所知,并查看了现有的 .py 脚本(如 OBJ 导出)、Blender API 并学习了一些基本的 Python 语法,我能够编写我的第一个(相当简单的)脚本只需几个小时左右。

【讨论】:

似乎是一种合理的方法 :-) 您是否找到任何有关如何制作 a3d 文件的文档? (语法明智的全部) 如果,正如您在 cmets 中对 Ed 的回复所提到的......如果 A3D 格式不同于 ASCII 3D 格式......我不知道从哪里开始。谷歌搜索 FileA3D 并没有让我到任何地方......【参考方案4】:

http://colladablender.illusoft.com/cms/ 是一个为 Blender 制作插件以直接读取 Collada 的项目。

此外,Carrara 可用于将您的文件转换为 Blender 支持的文件。

【讨论】:

我认为这与将 Collada 文件以 .a3d 格式加载到 Android(renderscript)应用程序中没有任何关系

以上是关于将 Collada 文件转换为 a3d (Android3d) 对象的主要内容,如果未能解决你的问题,请参考以下文章

服务器端 COLLADA 转换器

如何计算 COLLADA 文件的父子联合变换?

Collada DAE 文件的 OS X QuickLook 实现?

使用 COLLADA DOM 将 COLLADA 文档输出为字符串

使用 ParaView 进行文件转换

有没有办法在 SceneKit 的 Collada 文件中存储动画数据或任意数据?