Проблемы, разбор волнового фронта .OBJ Координаты текстуры

StackOverflow https://stackoverflow.com/questions/8837328

Вопрос

Я кодирую свой собственный анализатор. Загрузка вершин и показать модель с цветами вершины на ней работает как очарование. Просто небольшая нота: я использую индексный буфер.

Настоящая проблема - отображение текстурных банкоматов. Поскольку вы увидите немного больше внизу, моя текстура не сопоставлена, как должна быть.

Вот как я думаю, что формат .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

И следующая текстура:

512x512 Texture

Теперь, когда я позиционирую вершины в 3D -пространстве OpenGL и пытаюсь отобразить координаты текстуры по каждой отдельной вершине, отображение идет не так. Я мог бы исправить это, перемещая некоторые значения координат текстуры, но я понимаю, что это не способ сделать это. Я также попытался отредактировать некоторые из моих настройки экспортера. Есть ли что -то в своей теории, касающейся формата файла .obj? Одна вещь, которую я уже мог бы сказать: вчера я прочитал, что система координат формата .OBJ определяет Топлфта как точку якоря текстуры. Поэтому я уже исправил это в моем анализе.

Вот небольшое резюме с текущей ситуацией: Обновление: Система координат текстуры является фактической системой координат текстуры .OBJ, а не системой координат OpenGL. Я переводил координаты в своем алгоритме анализа, чтобы противостоять этому.

Summary

Это было полезно?

Решение 2

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

Другие советы

Насколько я знаю, система координат, о которой вы сообщаете, не является правильной.

На самом деле это что -то вроде этого:

Coordinate System

Я знаю, что это, вероятно, не является фактическим ответом на ваш вопрос, но я надеюсь, что он проливает некоторый свет на него.

Я нашел аналогичные файлы анализации. В моем случае кажется, что мои файлы .obj используют инвертированную V (2 -ю координату текстуры). Я решил проблему с этой строкой кода. v = 1,0F - v;

Маурицио верен в своем представлении о координатах OpenGL TextureTapping.

Глядя на ваши фотографии, я бы сказал, что вы должны лучше взглянуть на свой код OBJC. Предполагая, что .OBJ правильно экспортируется C4D, похоже, что у вас смешаны индексы текстуры.

Правдоподобное доказательство: переключите нижнюю левую вершину с нижней правой вершиной на изображении, которое вы разместили («Результат OpenGL»), и ваша текстура выйдет прямо.

РЕДАКТИРОВАТЬ: На самом деле, ошибка может быть в вашем коде загрузки текстуры, но это не объясняет результат, который вы получаете. Даже если бы ошибка была в загрузке текстуры, то текстура просто отображалась бы вверх дном (из-за левой системы координат OpenGL). Предложение: переключить VT0 и VT3 в вашем коде ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top