gpt4 book ai didi

java - Libgdx 奇怪的建模 - 深度错误?

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:43 25 4
gpt4 key购买 nike

当我使用 ObjLoader 加载任何 .obj 文件时,我得到这个:

enter image description here

实际情况:

enter image description here

我是如何加载它的:

ModelInstance instance = new ModelInstance(model);
instance.transform.setToTranslation(-4, 0, 0);
instance.transform.mul(transform.setToRotation(Axis.X,(float)(Math.random()*360)));

然后在 onCreate() 中:

Gdx.gl.glClearDepthf(1.0f);
Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);
Gdx.gl.glDepthFunc(GL20.GL_LESS);
Gdx.gl.glDepthRangef(0f, 1f);
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D);

在 render() 中:

Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClearColor(.1f, .1f, .1f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

shader.begin(camera, instances.get(i).transform);
modelBatch.begin(camera);

if (environment !=null) modelBatch.render(instances.get(i), environment, shader);
else modelBatch.render(instances.get(i), shader);

modelBatch.end();
shader.end();

在这里清理源代码:

source code

解决方案:

1, probleme was with the .mtl file, copy pasted from the ship.mtl and rewrite
2, probleme was with the camera near, and far plane (0.1 and 1000 is the good)
3, probleme was with the obj file texture, because it flipped on the obj file, solution was to convert g3db with -f

最佳答案

使用 libgdx 3D api(ModelBatch 和/或 Shader)时,不应在 Shader 类之外更改 opengl 状态。因此,启用/禁用深度测试等是无用的,可能会导致意外行为。

你不应该使用 obj 文件。而是使用 fbx-conv 并使用 g3db 或 g3dj 文件格式。另外,您的模型缺少 mtl 文件,导致无法应用 Material 。

您正在使用自己的着色器,您不必调用 shader.end(),modelbatch 会为您完成此操作。

我试过你的模型(显然没有 Material ),它使用默认着色器正确渲染。

关于java - Libgdx 奇怪的建模 - 深度错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com