Карты нормалей и координаты нормалей - PullRequest
4 голосов
/ 10 июля 2010

В настоящее время я работаю с OpenGL ES 1.1 и использую соглашение DrawElements вместе с массивами Vertex, Normal, Texture Coordinate и Index.

Я недавно сталкивался с этим, исследуя идею использования нормального / рельефного отображения, которое ранее, хотя и было невозможно с OpenGL ES: http://iphone -3d-programming.labs.oreilly.com / ch08.html

Я могу сгенерировать карту нормалей объекта уже из моего 3D-моделиста, но я не совсем уверен в том, понадобится ли больше массив координат координат при реализации 2-го блока текстуры для отображения нормалей, или «Освещение + цветная текстура в сочетании с картой нормалей через опцию DOT3_RGB» - это все, что требуется?

РЕДАКТИРОВАТЬ - После более подробного изучения освещения DOT3 я не уверен, что ответ, данный Огнианом, является правильным. На этой странице http://www.3dkingdoms.com/tutorial.htm приведен пример ее использования, и если вы посмотрите на бит кода раздела «Рендеринг и окончательный результат», то нормального массива ClientState для обычных массивов никогда не будет.

Я также нашел этот пост здесь, Что такое освещение DOT3? , которое хорошо объясняет это ... но приводит меня к другому вопросу. В комментариях говорится, что вместо перевода нормалей вы переводите направление света. Я смущен этим, как будто у меня есть игра со стационарной стеной ... зачем мне перемещать свет только для одной модели? Надеясь, что кто-то может дать хорошее объяснение всего этого ...

1 Ответ

1 голос
/ 11 июля 2010

В то время как карты нормалей касательного пространства возмущают нормали, которые интерполируются из нормалей на вершину, карты нормалей объектного пространства уже содержат всю необходимую информацию об ориентации поверхности в карте.Поэтому, если вы просто делаете освещение DOT3 в OpenGL ES 1.1, вам не нужно снова передавать нормали.

Причина, по которой в другом посте упоминается перевод направления света, а не нормалей, заключается в том, что оба аргументаТочечное произведение (нормаль на пиксель и вектор света) должно находиться в одном и том же координатном пространстве, чтобы точечное произведение имело какой-либо смысл.Поскольку у вас есть карта нормалей в объектном пространстве, ваша нормаль на пиксель всегда будет находиться в локальном координатном пространстве вашего объекта, а текстурная среда не предоставляет никаких средств для применения дальнейших преобразований.Скорее всего, ваши световые векторы находятся в каком-то другом пространстве, поэтому упомянутое преобразование предназначено для преобразования из другого пространства обратно в локальное пространство вашего объекта.

...