我们的小3D程序有一个图形数据结构,它只包含有关顶点和边缘的信息,没有填充等。我们只想获得有关点位置及其连接方式的信息。 (根据我的理解,这称为网格数据,是正确的术语吗?)
是否有一个可以做这样的事情的图书馆,或者去我想要达到的目标附近?例如,是否有一个库允许我只使用一个函数来接收该文件并实例化一个具有所有这些网格信息的新对象?
如果没有,那么完成这项工作的步骤是什么?
答案 0 :(得分:1)
我知道您需要解析COLLADA中的3D信息并将其转换为您的内部数据结构。您可以使用JAXB和COLLADA架构文件为COLLADA元素创建POJO。但这并不容易,因为架构中存在一些名称冲突问题。你需要做一些黑客来摆脱这个。这是一个链接,解释了如何做到这一点: http://shinoblogbyshiva.blogspot.de/2009/01/compiling-collada-15-schema-by-jaxb.html
根据此链接,您需要有3件事: 1)Collada XML-Schema 2)帮助的模式(http://interreality.org/bzroot/vos/supervos/colladajaxb/src/simpleMode.xsd) 3)和最新版本的JAXB。 然后使用JAXB中的xjc:
“xjc collada_schema_1_5.xsd -extension simpleMode.xml”
确保文件的路径正确。
获得POJO后,您可以解析COLLADA文件。但对于转换过程,你是孤身一人。您应该了解COLLADA中元素的定义,并将它们与您自己的结构进行比较。这有点复杂,我建议你阅读Remi Arnaud的书“Collada:从3D数字内容创作的海湾航行”。
答案 1 :(得分:0)
如果可以,请切换到wavefront .obj - 文件。这些可以在几行中解析,很可能是您想要的东西(例如,将您的collada导入到blender中并再次导出为obj)
如果你不能,你可以试试lwjgl。这个库让你可以访问assimp,它可以为你加载任何3d对象格式