【问题标题】:Android OpenGL .OBJ file loader [closed]Android OpenGL .OBJ 文件加载器 [关闭]
【发布时间】:2010-07-02 01:05:49
【问题描述】:

似乎有相当多的 OBJ 网格文件加载器可供人们开发用于 Android 平台。我想知道是否有人对这些有任何经验,并且可以就哪一个似乎最适合他们提供建议。

这是我的标准:

  • 轻量级(文件小),
  • 针对速度进行了优化,
  • 易于实施,
  • 提供某种纹理映射支持(不确定我是否需要这个——在我的编码中还没有深入了解我是否需要一个库来执行此操作,或者 OpenGL ES 是否能够完成所有这些我需要在这里工作),以及
  • 可用于商业销售的 Android 应用。

这是我找到的一些库。

我也愿意听到其他未列入此列表的人。

【问题讨论】:

  • 非常感谢,你的问题很有帮助,我了解了Android的3D建模框架。我会选择“Android-GL”
  • github.com/javagl/Obj 这个简单易用的obj解析器真的很棒!!添加到构建 gradle: "implementation 'de.javagl:obj:0.3.0'" 使用如下: InputStream inputStream = context.getAssets().open("probe_logo_right_4c5.obj"); objR = ObjReader.read(inputStream); completeObj = ObjUtils.convertToRenderable(objR); IntBuffer faceVertexIndices = ObjData.getFaceVertexIndices(completeObj);

标签: android 3d opengl-es mesh


【解决方案1】:

您不久前问过这个问题,但如果您仍在寻找,我有一个很好的解决方案。

您可以轻松地将其转换为顶点、法线和纹理坐标的数组,而不是加载 obj 文件。有一个工具可以将 obj 文件转换为 c 头文件。之后您可以将输出转换为使用 java。应该不难。

http://www.heikobehrens.net/2009/08/27/obj2opengl/

这个解决方案很简单,头文件不会比obj文件在源代码中增加太多空间,编译时数据会更紧凑,速度非常快,因为你已经准备好立即渲染数据,它可以转换纹理坐标,您无需担心将其用于您的商业产品。

【讨论】:

  • 我知道这真的很老了,但我似乎找不到将 c 头文件转换为与 java 一起使用的方法。你是怎样做的?这篇博文是针对 iPhone 编写的。
  • 您需要自己转换它们。做什么应该是直截了当的。只需将 C 数组中的数据复制到 Java 数组中即可。
  • @Matthew Mitchell:正如你所提到的,我已经将 C 数组生成为 Java 数组。你能给我一些代码来加载这个java数组并在GLsurfaceview中显示obj文件吗?
  • 答案中的链接不再可用
【解决方案2】:

我知道这是一个老问题,但我遇到了一些问题来为 Android 寻找一个好的 OBJ 加载器。

我尝试了几乎所有提出的解决方案

  • Min3D 相当老了(最新版本是 2011 年)
  • Rajawali 似乎是 min3D 的一个分支
  • Libgdx 是一个游戏引擎
  • JPCT-AE 一个适用于安卓的 3d 引擎

唯一不太复杂且有效的方法是 JPCT-AE,可以在这里找到:http://www.jpct.net/jpct-ae/

它允许解析 OBJ 文件,并从相关的 MTL 文件加载纹理没有任何问题。此外,与其他文档相比,文档确实具有描述性,并且有一个回答了很多问题的论坛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-17
    • 2013-08-24
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2012-02-05
    • 2017-04-22
    • 2020-05-12
    相关资源
    最近更新 更多