Java - 加载.OBJ文件

wil*_*ill 4 java .obj

我希望能够从.obj文件中获取信息(如子组件的名称).那边有装载机吗?Java3D有一个ObjectFile,但是我看过的方法列表让我觉得它并不是我想要的.我自己解析文件会更好吗?

谢谢 - 会的

小智 7

几个月前我写了一个java obj文件格式加载器,应该可以轻松地完成你需要的工作.它位于git hub;

https://github.com/seanrowens/oObjLoader

请注意,README表示它是pre-alpha - 这主要是因为几乎没有其他人看到过它.

它解析大多数.obj格式以及.mtl格式.现在用它解析的内容做了什么...好吧,我试图采用类似SAX的方法.有一个Parser,它使用每个已解析的元素调用BuilderInterface上的方法.BuilderInterface有一个简单的示例实现,还有一个简单的LWJGL查看应用程序,将它们连接在一起.

它目前没有对更奇特的几何语句做任何有用的事情,即顶点和多边形以外的任何东西,换句话说它忽略除了顶点和多边形之外的任何几何.它解析并捕获.mtl文件,但实际的查看器除了非常非常简单的纹理外没有实现任何东西.

我非常乐意听到任何反馈和建议.许可证非常宽松;

这段代码由我自己,Sean R. Owens,guan dot net的肖恩编写,并发布到公共领域.分享和享受.由于有些人认为无法将软件发布到公共领域,因此您也可以在任何版本的GPL,LPGL,Apache或BSD许可下使用此代码,或者与我联系以使用其他许可.


Mom*_*sov 5

我编写了一个 Java 库,可以帮助您解析 OBJ 和 MTL 资源。

https://github.com/mokiat/java-data-front

以下是它支持的一些功能:

  • 所有顶点的列表 ( v)。
  • 所有法线的列表 ( vn)。
  • 所有纹理坐标的列表 ( vt)。
  • 所有材料库参考列表mtllib
  • 所有对象 ( o) 及其名称的列表。
    • 按材质对对象面进行分组 ( usemtl)
    • 材质组中所有面的列表。
      • 构成面的所有顶点、法线、纹理坐标索引的列表。
  • 所有材料清单 ( newmtl) 及其名称
    • 漫反射颜色 ( Kd)
    • 高光颜色 ( Ks)
    • 环境颜色 ( Ka)
    • 透明度 (d)
    • 漫反射纹理参考 ( map_Kd)
    • 其他的...
  • 能够对正在解析的 OBJ 和 MTL 资源的大小设置限制。
    有助于防止OutOfMemory异常情况。

该实施有足够数量的测试支持。该库没有运行时依赖项,因此它应该很容易集成到您的项目中。

它是通过 Maven 构建的,因此很容易集成到 Maven 项目中。(您需要在本地存储库中手动注册它)。如果您的项目不是 Maven 项目 - 不用担心,这应该不是问题。