libGDX中的模型加载错误

libGDX中的模型加载错误,libgdx,models,Libgdx,Models,我从以下位置下载了一个表格模型:,使用blender将.3ds模型转换为.fbx,并使用libGDX提供的fbx转换器将其转换为.g3db格式模型。 我将模型中的所有纹理都包含在资源文件夹中 这是我的密码: `@Override public void create() { camera = new PerspectiveCamera(75, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); camer

我从以下位置下载了一个表格模型:,使用blender将.3ds模型转换为.fbx,并使用libGDX提供的fbx转换器将其转换为.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();
    }

我只得到一个黑色的空白屏幕,没有错误。

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

接下来删除
环境
变量。如果没有灯光甚至无法渲染,则无需应用灯光

如果问题仍然存在,则遵循以下步骤。确保理解它,包括底部的
CameraInputController
部分。然后将CameraInputController添加到应用程序中,以便可以移动相机、放大和缩小等。还可以修复相机的近平面和远平面
0.1f
因为近平面太接近零,这可能会导致问题,请将其设置为至少
1f
。您的远平面设置为
300f
单位,因此,如果您的模型大于该值,您将看不到它(整个)。对于测试,请将其设置为
10000f
或其他值(不要忘了在之后减小它)

在大多数情况下,问题是由于模型太大或放错位置造成的。你们应该能够看到并修复搅拌机以及。对于测试,您还可以在代码中缩小模型的比例:

modelInstance.transform.scale(0.05f, 0.05f, 0.05f);
查看有关正确导出模型的更多提示。例如,您的纹理可能没有正确地应用于Blender,或者您的顶点缠绕可能不正确,从而导致错误的面剔除


如果所有这些都没有帮助,那么请验证您的代码是否与其他模型(例如或)一起工作。然后用文本编辑器打开它并检查它是否存在问题。

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

顶点太多。我认为使用有符号短int表示32k限制。您提供的链接所指向的模型非常大,因此,如果您只是转换模型而没有首先进行优化,它将变得太大。

只有在我没有加载模型的情况下更改颜色才有效,我已经尝试更改相机设置,但仍然没有任何效果。我使用了您建议的模型,如果我使用的是预格式化的.g3db模型,它们就可以工作,所以我猜libGDX提供的fbx conv存在一些问题。因为我是fbx conv的主要开发人员,我可以向您保证,您的猜测是不正确的。也许再看看我的答案,试试我的建议。
modelInstance.transform.scale(0.05f, 0.05f, 0.05f);