libGDX中的模型加载错误

时间:2015-08-20 10:41:42

标签: libgdx models

我从archive3d下载了一个表格模型,使用blender将 .3ds 模型转换为 .fbx 并使用 fbx-converter ,由 libGDX 提供给 .g3db 格式模型。 我在 资产 文件夹中包含了所有纹理模型

这是我的代码:

`@Override
    public void create() {
        camera = new PerspectiveCamera(75, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        camera.position.set(0f, 0f, 2f);
        camera.lookAt(0f, 0f, 0f);
        camera.near = 0.1f;
        camera.far = 300f;`

batch = new ModelBatch();

UBJsonReader jsonReader = new UBJsonReader();
G3dModelLoader modelLoader = new G3dModelLoader(jsonReader);
model = modelLoader.loadModel(Gdx.files.internal("table.g3db"));
modelInstance = new ModelInstance(model);

environment = new com.badlogic.gdx.graphics.g3d.Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.8f, 0.8f, 0.8f, 1f));

@Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

        camera.update();

        batch.begin(camera);
        batch.render(modelInstance, environment);
        batch.end();
    }

我只有一个黑色空白屏幕,没有没有错误

3 个答案:

答案 0 :(得分:1)

首先将您的清晰颜色更改为不同于黑色的颜色。因此,您可以验证您的模型是否未被渲染(例如,因为它不可见),或者您的模型是否有黑色材质(例如缺少纹理或不正常的法线)。

Gdx.gl.glClearColor(0.5, 0.2, 0.6, 1);

接下来删除environment变量。如果没有它们甚至无法应用灯光,则无需应用灯光。

如果问题仍然存在,请按this tutorial进行操作。请务必了解它,包括底部的CameraInputController部分。然后将CameraInputController添加到您的应用程序中,以便您可以移动相机,放大和缩小等。还可以修复相机的近处和远处平面。近平面的0.1f太接近零,这可能会导致问题,而是将其设置为至少1f。您的远程飞机设置为300f个单位,因此如果您的模型比您的模型大,那么您将完全看不到它。对于测试,请将其设置为10000f或其他内容(之后不要忘记减少它)。

在大多数情况下,问题是由太大或错位的模型引起的。你也应该能够在Blender中看到并修复它。对于测试,您还可以在代码中缩小模型:

modelInstance.transform.scale(0.05f, 0.05f, 0.05f);

检查this wiki page以获取有关正确导出模型的更多提示。例如。您的纹理可能无法在Blender中正确应用,或者您的顶点缠绕可能不正确导致错误的面部剔除。

如果所有这些都没有帮助,请验证您的代码是否适用于其他模型(例如the ones used in the libgdx testsin this tutorial)。然后convert your model to a g3dj file用文本编辑器打开它并检查它是否有问题。

答案 1 :(得分:0)

检查您何时使用fbx-conv检查是否有关于有太多顶点的警告。检查模型使用的所有材料文件和图像是否与libgx兼容。

答案 2 :(得分:0)

太多顶点。我相信使用签名的short int意味着32k的限制。你提供的链接的模型非常大,所以如果你在没有首先进行优化的情况下转换模型就会变得太大了。