Сопоставление vt Wavefront .obj с координатами текстуры OpenGL

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

  •  06-09-2019
  •  | 
  •  

Вопрос

друг-художник прислал мне obj-файл, экспортированный 3DS Max 2009, который содержит три координаты текстуры в качестве параметров для vt команда.И это правильно в соответствии со спецификацией .obj.Однако я не уверен, как отобразить координаты U-V-W, которые предоставлены для обычной текстуры 2D .jpg.

Это относительно важно для меня, поскольку я играл с 3DS Max, пытаясь выяснить, как заставить его экспортировать только U-V координаты, но, похоже, прямого способа нет.В данном случае это просто скайбокс, но в других случаях это может быть что-то более сложное и не поддающееся ремонту вручную.

Спасибо!

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

Решение

В этой статье есть соответствующий раздел Что такое UVW-картографирование? это объясняет:

Вы можете задаться вопросом, зачем вам нужна координата глубины, такая как W, для 2D плоскости.Одна из причин заключается в том, что иногда полезно иметь возможность изменять ориентацию карты относительно ее геометрии.Для этого вам понадобится третья координата.Координата W также имеет значение для трехмерных процедурных материалов.

В вашем случае вы можете просто проигнорировать координату W и прочитать только первые две строки с плавающей запятой, которые начинаются с vt.Это предполагает, что вы не очень беспокоитесь о дополнительном пространстве, занимаемом координатой W, поскольку .obj изначально является довольно неэффективным форматом файла.

Лично мне не нравится использовать .obj в OpenGL, потому что он предоставляет вершинные нормали для каждой грани, а не для каждой вершины.Чтобы правильно осветить объект, вы должны либо дублировать вершины, либо вычислять нормали путем усреднения окружающих вершину нормалей грани.Если вы хотите изучить более эффективные альтернативы, взгляните на двоичные форматы, такие как тщательно документированный формат .md2.Также рассмотрите возможность использования glDrawElements, если вы его еще не используете.

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

извините, если я неправильно понял ваш вопрос.Но не могли бы вы просто проигнорировать третий параметр, w?Насколько я понимаю, w - это просто координата в плоскости, перпендикулярной плоскости, описываемой u и v, поэтому она редко требуется для простого отображения 2d текстур.

надеюсь, это поможет.

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