Libgdx странное моделирование – ошибка глубины?

Я получаю это, когда загружаю любой .obj-файл с ObjLoader:

Введите описание изображения здесь

Как это выглядит в реальности:

Введите описание изображения здесь

Как я загружаю его:

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(); 

Чистый исходный код здесь:

исходный код

РЕШЕНИЕ:

 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 

Solutions Collecting From Web of "Libgdx странное моделирование – ошибка глубины?"

При использовании libgdx 3D api (ModelBatch и / или Shader) вы не должны изменять состояние opengl вне класса Shader. Таким образом, включение / отключение теста глубины и т. Д. Бесполезно и может привести к непредсказуемому поведению.

Вы не должны использовать obj-файлы. Вместо этого используйте fbx-conv и используйте формат файла g3db или g3dj. Кроме того, вашей модели не хватает файла mtl, в результате чего материал не будет применяться.

Вы используете свой собственный шейдер, вам не нужно вызывать shader.end (), modelbatch делает это для вас.

Я попробовал вашу модель (без материала явно), и он корректно отображает шейдер по умолчанию.

Похоже, что у вас есть некоторые проблемы с вашими нормалями. Я не думаю, что это проблема неправильной глубины. В зависимости от вашей программы моделирования, например blender3D, вы можете попытаться пересчитать свои возможности и экспортировать ее снова!

Вы можете выполнить следующие шаги в 3D Studio Max:

  1. Выберите весь свой дизайн с помощью CTRL + A (если вы используете Windows)
  2. Нажмите ALT + G, чтобы выбрать категорию группы рядом с пунктом «Редактировать» и «Инструменты».
  3. Сделайте всю свою работу группой
  4. Повторите попытку в приложении для Android.

Это нужно сделать.