libgdx模型纹理错误

Jes*_*ing 3 java 3d libgdx

我遇到了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();
}
Run Code Online (Sandbox Code Playgroud)

Xop*_*ppa 6

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

您也可能想检查您的法线.将以下行添加到create方法中:DefaultShader.defaultCullFace = 0;并且不应用灯光.如果这样可以更好地渲染模型,则可能需要重新计算3ds max或blender中的法线.不要忘记之后删除defaultCullFace行.

最后,显然,确保加载了正确的纹理,并且不使用高多边形模型.