Java - 加载.OBJ文件

时间:2011-08-29 18:09:13

标签: java .obj

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

由于 - 将会

2 个答案:

答案 0 :(得分:7)

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

https://github.com/seanrowens/oObjLoader

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

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

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

我非常乐意听到任何反馈和建议。许可证非常自由;

  

这段代码是我自己写的,Sean R. Owens,sean at the guild dot net,   并发布到公共领域。分享和享受。一些   人们认为不可能向公众发布软件   域名,您也可以在任何版本下免费使用此代码   GPL,LPGL,Apache或BSD许可证,或与我联系以使用其他许可证   许可证。

答案 1 :(得分:4)

我编写了一个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,请不要担心,这应该不是问题。