LibGDX和ObjLoader没有显示.mtl?

时间:2013-04-19 17:40:25

标签: android opengl-es libgdx wavefront

我正在尝试使用LibGDX将.obj文件加载到Android项目中。这些文件具有 no 纹理文件,但包含.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文件?根据我的理解,它应该加载.mtl文件,该文件与.obj文件位于同一文件夹中。

修改 我搞砸了一下,把一些行放到ObjLoader类中来记录它是什么而不是加载。看起来它正在加载mtl文件,并将每个mtl分配给一个Material实例,而且看起来obj正确地要求这些材料。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

并在此处提交了修复程序:

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

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