7

我正在尝试使用 LibGDX 将 .obj 文件加载到 Android 项目中。这些文件没有纹理文件,但在 .mtl 文件中包含材质。我正在使用最新的官方每晚,并且渲染目标文件只会导致对象显示为白色。如何让 ObjLoader 使用 .mtl 文件?

@Override
public void create() {
    objLoader = new ObjLoader();
    model = objLoader.loadObj( Gdx.files.internal("data/obj.obj"), true);
}

@Override
public void render() {
    Gdx.gl.glClearColor(0, 0, 0, 0);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    batch.begin();

    model.render();

    batch.end();
}

这就是调用渲染对象的代码的方式。这是 ObjLoader 类的链接

https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g3d/loaders/wavefront/ObjLoader.java

我究竟做错了什么?为什么它不会加载 .mtl 文件?据我了解,它应该加载与 .obj 文件位于同一文件夹中且名称相同的 .mtl 文件。

编辑 我有点搞砸了,在 ObjLoader 类中添加了一些行来记录它是什么,没有加载。看起来它正在加载 mtl 文件,并将每个 mtl 分配给一个 Material 实例,而且看起来 obj 正在正确地请求这些材料。

我需要在 OpenGL 端启用或以其他方式执行某些操作以确保它正确使用这些材料吗?

4

2 回答 2

1

ObjLoader 尤其是它使用的 MtlLoader 非常有限。尝试将新的 3D api 与 fbx 一起使用。这里解释了如何加载模型:http ://blog.xoppa.com/loading-models-using-libgdx/ 。

于 2013-06-23T01:30:45.697 回答
0

我发现了同样的问题,这正是我都在这里报告的原因:

https://github.com/libgdx/libgdx/issues/2441

并在这里对其进行了修复:

https://github.com/libgdx/libgdx/commit/d7e716351d26ddfba19ce9e0b3bdfb449dbc81b7

,支持几乎所有的 MTL 参数。请注意,这是一个 WIP,并且(希望)一旦完成就会进入主干。

于 2014-12-01T18:23:13.463 回答