Отображение волнового фронта .obj's vt в координаты текстуры OpenGL - PullRequest
4 голосов
/ 29 мая 2009

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

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

Спасибо!

Ответы [ 2 ]

8 голосов
/ 01 июня 2009

В статье есть раздел Что такое UVW Mapping? , который объясняет:

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

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

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

3 голосов
/ 31 мая 2009

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

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

...