【发布时间】:2015-08-24 08:40:15
【问题描述】:
我们的小 3D 程序有一个图形数据结构,其中仅包含有关顶点和边的信息,没有填充等。我们只想获取有关点位置以及它们如何连接在一起的信息。 (据我了解,这叫做 Mesh 数据,是正确的术语吗?)
是否有一个图书馆可以做这样的事情,或者去任何接近我想要实现的目标?例如,是否有一个库允许我使用一个函数来接收该文件并实例化一个具有所有这些网格信息的新对象?
如果没有,完成这项工作的步骤是什么?
【问题讨论】:
我们的小 3D 程序有一个图形数据结构,其中仅包含有关顶点和边的信息,没有填充等。我们只想获取有关点位置以及它们如何连接在一起的信息。 (据我了解,这叫做 Mesh 数据,是正确的术语吗?)
是否有一个图书馆可以做这样的事情,或者去任何接近我想要实现的目标?例如,是否有一个库允许我使用一个函数来接收该文件并实例化一个具有所有这些网格信息的新对象?
如果没有,完成这项工作的步骤是什么?
【问题讨论】:
我了解您需要在 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 -扩展simpleMode.xml”
确保文件路径正确。
获得 POJO 后,您可以解析 COLLADA 文件。但是对于转换过程,你是一个人。您应该了解 COLLADA 中元素的定义,并将它们与您自己的结构进行比较。这有点复杂,我可以推荐你阅读 Remi Arnaud 的《Collada: Sailing the Gulf of 3d Digital Content Creation》一书。
【讨论】:
如果可以,请切换到 wavefront .obj - 文件。这些可以在几行中解析,并且可能是您想要的东西(例如,只需将您的 collada 导入搅拌机并再次导出为 obj)
如果你不能,你可以试试 lwjgl。这个库让您可以访问 assimp,它可以为您加载任何 3d 对象格式
【讨论】: