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

Posted

技术标签:

【中文标题】使用 COLLADA DOM 将 COLLADA 文档输出为字符串【英文标题】:Output a COLLADA document as a string using COLLADA DOM 【发布时间】:2014-01-14 15:45:03 【问题描述】:

我正在开发一个项目,将 COLLADA 导出功能添加到现有程序 (PyMOL),并尝试使用 COLLADA DOM 库来帮助编写输出文件。我想遵循各种“保存”函数的现有结构,其中要导出的文本附加到可变长度数组,然后由父函数写入磁盘。

我遇到的问题是:我还没有找到将 COLLADA 文件输出为字符串的方法,因此我可以将其附加到 VLA。我发现的所有 DOM 示例都直接与文件一起工作,从文件中读取并保存到文件中,在花了几天时间梳理源代码后,我找不到返回 DAE (COLLADA) 对象的 XML 字符串的函数.

例如,可以使用 DOM 的 write()writeAll() 函数将文件写入磁盘,例如来自 DOM Guide 的示例:

#include <dae.h>

int main() 
    DAE dae;
    dae.add("simple.dae");
    dae.writeAll();
    return 0;

我想做的是这样的:

string generateXmlString() 
    DAE dae;
    dae.add("simple.dae");
    string output = dae.getXml("simple.dae");  // this function doesn't exist
    return output;

生成 XML 字符串的位置,而不是分配给变量或直接返回,而不是写入文件。

有没有办法使用 COLLADA DOM 做到这一点?如果是这样,我很乐意看到一个例子。

或者,是否有另一个库可以让我以更直接的方式完成此任务?

谢谢!

【问题讨论】:

你看过 pycollada 吗? @jterrace 是的,虽然我实际上并没有尝试在这个项目中使用它。我正在尝试遵循 PyMOL 的一些其他导出函数的形式,它们是基于 C 的,以与现有代码库保持一致。如果我不能让 Collada DOM 工作,我可能会切换到 pycollada。 祝你好运,对COLLADA-DOM不太了解,但发现它无法使用,这就是我接手pycollada dev的原因 【参考方案1】:

我尝试让 COLLADA DOM 工作了很长一段时间,但最终放弃并决定改用 libxml2。它有详细的文档并且易于使用,并且不会增加额外的依赖项,因为它已预安装在许多类 UNIX 系统上。

【讨论】:

以上是关于使用 COLLADA DOM 将 COLLADA 文档输出为字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用 MeshLab 结果将 .wrl (VRML) 转换为 .dae (COLLADA) 缺少颜色

带有 collada 文件的 Android vuforia

使用局部轴将 collada 导入到 meshlab

动态生成collada文件

有没有办法在 android studio/Java 上使用 .dae (collada) 文件?

Blender collada 导出多个动画