2013-07-12 57 views
3

我遇到了libgdx的问题,当我以任何格式加载模型时,纹理显示不正确。我不确定是什么导致了这个问题。使用libgdx模型纹理错误

例子:在3ds Max或搅拌机它看起来像这样

但是当我把它变成一个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(); 
} 

回答

6

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

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

最后,显然,请确保正确的纹理已加载,并且不要使用高聚模型。

+0

非常感谢你 –