当前位置: 首页 > 知识库问答 >
问题:

LibGDX三维模型纹理未正确呈现

狄英哲
2023-03-14

只是提醒一下,我对此很陌生,如果我的问题不清楚,我很抱歉:

然后我将文件导出到fbx,然后使用fbx-conv将其转换为.g3db文件,但当我尝试在代码中加载模型时(摘自http://blog.xoppa.com/loading-models-using-libgdx/):

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

}

}

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

共有2个答案

詹斌蔚
2023-03-14
'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);

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

车子平
2023-03-14

您应该在呈现时显式设置shader。有关在libgdx中使用着色器的信息,请参阅https://github.com/libgdx/libgdx/wiki/shaders

 类似资料:
  • 我用libgdx和box2d做卡车游戏。在我的游戏中,1米=100像素。我的2D地形是由我生成的,是由点制作的。 我所做的,是为整个多边形创建一个polygonregion并使用texturewrap.repeat。问题是,我的游戏大小被缩小了100倍,以适应box2d单位。 所以我的相机宽度是800/100,高度是480/100。(8x4.8像素)

  • 我正在尝试同时渲染背景和我的角色动画和我的角色工具。这件事看起来很琐碎,但我还是搞不懂。这里是我现在为我的呈现所提供的代码。 现在,当我运行以下代码时(将切换到底部): 这是结果 我就是找不到一个模式,总是一个凌驾于另一个之上。我会非常感激我的失落。谢谢!!

  • 如果我创建一个.png 1024 x 1024的纹理,并在中间画一个124 x 124的圆,它的周围将是空的,它使用的RAM是否与我在124x124空间上画一个124 x 124的圆相同?

  • 我面临一些渲染问题。试图建立一个2d平台游戏,我的计划是创建与搅拌机的演员。我是新手,搅拌机和libgdx,不知道错误在哪里。 在《搅拌机》中,演员看起来很好。由libgdx渲染,我只看到奇怪的形式,根本不像我的演员。 -----编辑好,我缩小了问题的范围。在blender中,我创建了一个简单的立方体。在我的libgdx应用程序中,如果只渲染多维数据集而不渲染其他内容,则可以很好地渲染此多维数据集

  • 我一直在做一个项目。在项目的一部分中,我需要使用JPanel。Graphics2D对象被传递给框架的模型部分,模型将在该实例中绘制它需要的任何内容。问题是JFrame未正确呈现。它看起来是半白色的阴影和不正确的绘画。它在我的笔记本电脑(索尼Vaio和Windows7)上运行良好,但在我测试的所有其他系统(2台戴尔笔记本电脑、windows8;1台Thoshiba和Windows7;1台三星和win

  • 我正在尝试在OpenGL/LWJGL中制作一个简单的按钮, 我可以正确地渲染我的2D四边形,但是当我实现纹理时,整个四边形只有大约3/4的部分得到了纹理,就像这样:https://dl.dropboxusercontent.com/u/60223805/glerror1.png 如果我删除纹理坐标,我得到这个:https://dl.dropboxusercontent.com/u/60223805