Проблемы, разбор волнового фронта .OBJ Координаты текстуры
-
27-10-2019 - |
Вопрос
Я кодирую свой собственный анализатор. Загрузка вершин и показать модель с цветами вершины на ней работает как очарование. Просто небольшая нота: я использую индексный буфер.
Настоящая проблема - отображение текстурных банкоматов. Поскольку вы увидите немного больше внизу, моя текстура не сопоставлена, как должна быть.
Вот как я думаю, что формат .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
И следующая текстура:
Теперь, когда я позиционирую вершины в 3D -пространстве OpenGL и пытаюсь отобразить координаты текстуры по каждой отдельной вершине, отображение идет не так. Я мог бы исправить это, перемещая некоторые значения координат текстуры, но я понимаю, что это не способ сделать это. Я также попытался отредактировать некоторые из моих настройки экспортера. Есть ли что -то в своей теории, касающейся формата файла .obj? Одна вещь, которую я уже мог бы сказать: вчера я прочитал, что система координат формата .OBJ определяет Топлфта как точку якоря текстуры. Поэтому я уже исправил это в моем анализе.
Вот небольшое резюме с текущей ситуацией: Обновление: Система координат текстуры является фактической системой координат текстуры .OBJ, а не системой координат OpenGL. Я переводил координаты в своем алгоритме анализа, чтобы противостоять этому.
Решение 2
Я собираюсь ответить на свой собственный вопрос: проблема казалось, что я использовал индексный буфер для ускорения производительности, но мои координаты текстуры все еще были нанесены на карту с исходными вершинами.
Другие советы
Насколько я знаю, система координат, о которой вы сообщаете, не является правильной.
На самом деле это что -то вроде этого:
Я знаю, что это, вероятно, не является фактическим ответом на ваш вопрос, но я надеюсь, что он проливает некоторый свет на него.
Я нашел аналогичные файлы анализации. В моем случае кажется, что мои файлы .obj используют инвертированную V (2 -ю координату текстуры). Я решил проблему с этой строкой кода. v = 1,0F - v;
Маурицио верен в своем представлении о координатах OpenGL TextureTapping.
Глядя на ваши фотографии, я бы сказал, что вы должны лучше взглянуть на свой код OBJC. Предполагая, что .OBJ правильно экспортируется C4D, похоже, что у вас смешаны индексы текстуры.
Правдоподобное доказательство: переключите нижнюю левую вершину с нижней правой вершиной на изображении, которое вы разместили («Результат OpenGL»), и ваша текстура выйдет прямо.
РЕДАКТИРОВАТЬ: На самом деле, ошибка может быть в вашем коде загрузки текстуры, но это не объясняет результат, который вы получаете. Даже если бы ошибка была в загрузке текстуры, то текстура просто отображалась бы вверх дном (из-за левой системы координат OpenGL). Предложение: переключить VT0 и VT3 в вашем коде ...