使用libgdx进行模型纹理时出现错误

3
我在使用libgdx加载模型时遇到了问题,无论是哪种格式的模型,纹理都无法正确显示。我不确定是什么原因导致了这个问题。
例如:在3ds max或blender中,它看起来像这样: 但是当我将其放入libgdx项目中时,它看起来像这样: 我的代码基于http://blog.xoppa.com/loading-models-using-libgdx/,我已经尝试过有光源和没有光源的情况,但都没有成功。
代码:
//Loading the model
    assetManager = new AssetManager();
    assetManager.load("data/models/M4A1 SOPMOD/M4A1 SOPMOD.g3db", Model.class);
//..................................................
//Calling to an object and drawing it
public void create()
modelBatch = new ModelBatch();
    box = Assets.assetManager.get("data/models/M4A1 SOPMOD/M4A1 SOPMOD.g3db", Model.class);
    //box = Assets.getModelByName("M4");
    //box = modelBuilder.createBox(1f, 1f, 1f, new Material(ColorAttribute.createDiffuse(Color.WHITE), ColorAttribute.createSpecular(Color.WHITE), FloatAttribute.createShininess(64f)), Usage.Position | Usage.Normal);
    boxInstance = new ModelInstance(box);
    lights = new Lights();
    lights.ambientLight.set(1f, 1f, 1f, 1f);
    lights.add(new DirectionalLight().set(1f, 1f, 1f, -1f, -0.8f, -0.2f));
}

public void Update(float deltaTime)
{
    dotd.camera.rotateAround(Vector3.Zero, new Vector3(0, 1, 0), deltaTime* 50.0f);
    dotd.camera.update();
}

public void Render()
{
    modelBatch.begin(dotd.camera);
    modelBatch.render(boxInstance, lights);
    modelBatch.end();
}
1个回答

6
我的第一个猜测是纹理坐标需要翻转,尝试添加(或删除)fbx-conv的-f命令行选项(例如fbx-conv -f model.fbx)。

您还可能需要检查法线。在创建方法中添加以下行:DefaultShader.defaultCullFace = 0;不应用灯光。如果这使您的模型呈现得更好,则可能需要在3ds max或blender中重新计算法线。别忘了之后要删除defaultCullFace行。

最后,请确保加载正确的纹理并且不要使用高面数的模型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接