Я пишу свой собственный анализатор .obj в objc для OpenGL ES 2.0, чтобы лучше понять, как работает эта штука OpenGLES.Загрузка вершин и показ модели с цветами вершин на ней работает как шарм.Небольшое замечание: я использую индексный буфер.
Настоящая проблема - отображение текстур атм.Как вы увидите чуть ниже, моя текстура не отображается так, как должна быть.
Вот как я думаю, что формат .obj работает, пожалуйста, исправьте меня, если я ошибаюсь: строки "f" описывают лицо, где число перед косой чертой определяет индекс вершины и число послекосая черта определяет координату текстуры.
Рассмотрим следующий файл .obj (экспортированный Cinema 4D):
v -75 75 -50
v 75 75 -50
v -75 -75 -50
v 75 -75 -50
vt 0 0
vt 0 1
vt 1 1
vt 1 0
f 4/3 3/2 1/1
f 2/4 4/3 1/1
И следующую текстуру:
Теперь, когда я размещаю вершины в трехмерном пространстве OpenGL ES и пытаюсь отобразить координаты текстуры для каждой отдельной вершины, отображение идет неправильно.Я мог бы исправить это, перемещая некоторые значения координат текстуры, но я понимаю, что это не способ сделать это.Я также попытался отредактировать некоторые из моих настроек экспортера .obj, чтобы перевернуть оси и / или UV-отображение, но ни одно из них не привело к правильному отображению.Есть ли что-то, чего мне не хватает в моей теории относительно формата файла .obj?Я уже мог сказать одно: вчера я читал, что система координат в формате .obj определяет topleft как опорную точку текстуры.Итак, я исправил это уже в моем анализе.
Вот небольшая сводка с текущей ситуацией: Обновление: система координат текстуры - это фактическая система координат текстуры .obj, а НЕ система координат OpenGL.Я перевожу координаты в моем алгоритме синтаксического анализа, чтобы противостоять этому.