Java – 加载.OBJ文件

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

谢谢 – 会的

几个月前我写了一个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许可下自由使用此代码,或者与我联系以使用其他许可。

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

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

以下是它支持的一些function:

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

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

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