Java LibGDX三维模型纹理未正确渲染

Java LibGDX三维模型纹理未正确渲染,java,eclipse,libgdx,blender,fbx,Java,Eclipse,Libgdx,Blender,Fbx,只是提醒一下,我真的是个新手,如果我的问题不清楚,很抱歉: 我已经用Blender制作了一个3D模型,作为我模型的材质,我刚刚使用了一个带有光泽和漫反射纹理的混合着色器。我正试图让它在LibGDX中正确显示。当我在Blender中渲染模型时,它是这样的: 然后我将文件导出到fbx,然后使用fbx conv将其转换为.g3db文件,但当我尝试在代码中加载模型时(取自): public类Basic3DTest实现ApplicationListener{ 透视摄像机; 公共摄像机控制器; 公共环境;

只是提醒一下,我真的是个新手,如果我的问题不清楚,很抱歉:

我已经用Blender制作了一个3D模型,作为我模型的材质,我刚刚使用了一个带有光泽和漫反射纹理的混合着色器。我正试图让它在LibGDX中正确显示。当我在Blender中渲染模型时,它是这样的:

然后我将文件导出到fbx,然后使用fbx conv将其转换为.g3db文件,但当我尝试在代码中加载模型时(取自):

public类Basic3DTest实现ApplicationListener{
透视摄像机;
公共摄像机控制器;
公共环境;
公共模型实例;
公共模型批处理模型批处理;
公共资产管理者资产;
公共数组实例=新数组();
公共布尔加载;
@凌驾
公共void create(){
modelBatch=新modelBatch();
环境=新环境();
environment.set(新的ColorAttribute(ColorAttribute.AmbientLight,0.4f,
0.4f,0.4f,1f);;
添加(新的DirectionalLight().set(0.8f、0.8f、0.8f、.5f、,
-0.6f,-1f);
cam=新透视照相机(67,Gdx.graphics.getWidth(),
graphics.getHeight());
凸轮位置设定(10f、10f、10f);
凸轮注视(0,0,0);
cam.near=0.1f;
凸轮远=300f;
cam.update();
camController=新的CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
资产=新资产管理器();
加载(“数据/空间游戏/ModelData/blinky.g3db”,Model.class);
加载=真;
}
私有void doneLoading(){
模型船=assets.get(“data/spacegame/ModelData/blinky.g3db”,Model.class);
ModelInstance shipInstance=新的ModelInstance(ship);
实例。添加(shipInstance);
加载=假;
}
@凌驾
公共空间处置(){
modelBatch.dispose();
实例。清除();
资产。处置();
}
@凌驾
公共空间暂停(){
//TODO自动生成的方法存根
}
@凌驾
公共无效渲染(){
if(加载&assets.update())
doneLoading();
camController.update();
glViewport(0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
Gdx.gl.glClear(GL10.gl_颜色_缓冲_位| GL10.gl_深度_缓冲_位);
modelBatch.begin(cam);
render(实例、环境);
modelBatch.end();
}
@凌驾
公共空间大小调整(int arg0,int arg1){
//TODO自动生成的方法存根
}
@凌驾
公众简历(){
//TODO自动生成的方法存根
}
}

以下是显示的内容:


你知道会出什么问题吗?提前感谢大家。

在渲染时应该明确设置着色器。有关在libgdx中使用着色器的信息,请参阅

/*所有这些都必须在create方法中*/

public class Basic3DTest implements ApplicationListener {
PerspectiveCamera cam;
public CameraInputController camController;
public Environment environment;
public ModelInstance instance;
public ModelBatch modelBatch;
public AssetManager assets;
public Array<ModelInstance> instances = new Array<ModelInstance>();
public boolean loading;

@Override
public void create() {
    modelBatch = new ModelBatch();
    environment = new Environment();
    environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f,
            0.4f, 0.4f, 1f));
    environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -.5f,
            -0.6f, -1f));
    cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(),
            Gdx.graphics.getHeight());
    cam.position.set(10f, 10f, 10f);
    cam.lookAt(0, 0, 0);
    cam.near = 0.1f;
    cam.far = 300f;
    cam.update();
    camController = new CameraInputController(cam);
    Gdx.input.setInputProcessor(camController);
    assets = new AssetManager();
    assets.load("data/Space Game/ModelData/blinky.g3db", Model.class);
    loading = true;
}

  private void doneLoading() {
        Model ship = assets.get("data/Space Game/ModelData/blinky.g3db", Model.class);
        ModelInstance shipInstance = new ModelInstance(ship); 
        instances.add(shipInstance);
        loading = false;
    }

@Override
public void dispose() {
    modelBatch.dispose();
    instances.clear();
    assets.dispose();
}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
   public void render () {
    if (loading && assets.update())
        doneLoading();
    camController.update();

    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    modelBatch.begin(cam);
    modelBatch.render(instances, environment);
    modelBatch.end();
}

@Override
public void resize(int arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}
'AssetManager assets = new AssetManager();'
'assets.load("myFile.g3db", Model.class);'
'assets.finishLoading();'
'Model myModel = assets.get("myFile.g3db", Model.class);'

'ModelInstance myInstance = new ModelInstance(myModel);'
'Texture myTexture = new Texture(Gdx.files.internal("badlogic.png"));'
'Material myMaterial = new Material(TextureAttribute.createDiffuse(myTexture));'
'NodePart nodePart = myModel.nodes.get(0).parts.get(0);'
'nodePart.material.set(myMaterial);