Модель Blender неправильно отображается в libGDX

У меня проблемы с рендерингом модели в libGdx.
Я создал простую модель автомобиля в блендере, но когда я рендерю ее в libGdx, она рендерится неправильно.
Вот как это выглядит в блендере (как это предполагается смотреть): введите здесь описание изображения

Вот как это выглядит в libGdx:

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

Как видите, все колеса указывают в неправильном направлении, что не имеет смысла, поскольку я их вообще не поворачиваю.

Это работает, когда в модели есть только 1 объект, но когда я добавляю больше объектов, таких как колеса, это происходит.

Вот мой метод create():

public void create () {
    camera=new PerspectiveCamera(67,800,480);
    camera.position.set(0f, 0f, 20f);
    camera.lookAt(0f, 0f, 0f);
    camera.near=1f;
    camera.far=100f;

    batch=new ModelBatch();
    builder=new ModelBuilder();

    UBJsonReader jsonreader=new UBJsonReader();
    G3dModelLoader modelloader=new G3dModelLoader(jsonreader);
    cubemodel=modelloader.loadModel(Gdx.files.getFileHandle("carmodel.g3db", Files.FileType.Internal));
    cube=new ModelInstance(cubemodel,0,0,0);


    environment=new Environment();
    environment.set(new ColorAttribute(ColorAttribute.AmbientLight,0.65f,0.65f,0.65f,1f));


}

Вот мой метод рендеринга():

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

    Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST);
    camera.update();
    batch.begin(camera);
    batch.render(cube, environment);
    batch.end();
    camera.rotateAround(new Vector3(0f, 0f, 0f), new Vector3(0f, 1f, 0f), 0.5f);
}

Вот моя модель: carmodel.g3db

Если вам нужно что-то еще, то спрашивайте, и я опубликую это.

Заранее спасибо!


person Paul    schedule 12.06.2016    source источник
comment
Соотношение дальнее/ближнее у вашей камеры составляет 10 000! Уменьшите это значение до чего-то менее подверженного ошибкам, например, до 100.   -  person Xoppa    schedule 12.06.2016
comment
@Xoppa уже пытался, и это не сработало. Я использовал около 10 и далеко 1000   -  person Paul    schedule 12.06.2016


Ответы (1)


Прошло некоторое время с тех пор, как я использовал Blender, но это настройки, которые я использовал, чтобы добиться соответствия ориентации модели в LibGDX. Это настраивает его таким образом, что если вы используете ту же ориентацию и положение для вашей камеры LibGDX, что и для камеры Blender, сцены будут идентичными.

  1. Создавайте свои модели как обычно. Сохраните файл Блендера.
  2. Поверните каждую модель вокруг ее центра на 90 градусов вокруг оси +X и примените преобразование.
  3. Экспортируйте модель (ы) -Z вперед и Y вверх.
  4. Не сохраняйте файл Blender, потому что вам может понадобиться изменить исходную ориентацию моделей.
person Tenfour04    schedule 12.06.2016
comment
Прошу прощения, если мой вопрос показался расплывчатым, проблема не в ориентации модели. Ориентация модели в порядке. Проблема в том, что модель не отображается должным образом. - person Paul; 13.06.2016
comment
Хорошо, тогда кажется, что нормали вашей модели перевернуты. - person Tenfour04; 13.06.2016
comment
ой, не могли бы вы подсказать, как их снова инвертировать, чтобы они были нормальными? Большое спасибо, мне было интересно, в чем проблема, уже больше дня. - person Paul; 13.06.2016
comment
В Blender вы можете выбрать все грани и найти кнопку в левом меню, чтобы отразить или инвертировать нормали. (Не помню, как они это называют.) Есть некоторая возможность просмотра нормалей, чтобы вы могли видеть, в какую сторону они указывают в Blender. Если они направлены внутрь, освещение будет неправильным. - person Tenfour04; 13.06.2016
comment
Это сработало! Большое спасибо! я уже давно с этим борюсь. - person Paul; 13.06.2016