Pull to refresh

Comments 5

выходит, что если взять две модели с одинаковой формой геометрии и развёрткой, но разным шэйдингом и запечь их с одной и той же High Poly моделью, то их Tangent Space Normal Map окажутся разными, а World Space Normal Map — одинаковыми

Не совсем понял как так выходит?

только этот вектор показывает отклонение отражения лучей относительно нормали объекта, в точке падения луча.

Этот вектор показывает направление XY high-poly нормали при фиксированном, относительное low-poly нормали, Z.
О каком отражении лучей вы говорите?

Этот вектор показывает направление XY high-poly нормали при фиксированном, относительное low-poly нормали, Z.О каком отражении лучей вы говорите?

Если быть прям точным, то данные, которые хранятся в любом взятом текселе Tangent Space Normal Map - это 3д вектор в системе координат касательного простанства.

Касательное пространство объекта состоит из трёх векторов:

  1. Нормаль вершины - он же вектор Z. Если в Blender например включить отображение Split Normals - вы их увидите.

  2. Тангенс - он же вектор X или иногда его называют вектором U (т.к. что Тангенс, что Битангенс сонаправлены координатам U и V на развертке).

  3. Битагенс - он же вектор Y или V.

Впринципе, для того, чтбы посторить 3д вектор в этом пространстве, будет достаточно двух координат - X и Y, а третью - Z, можно будет вичислить из этих двух, при условии, что вектор будет нормализованым (единичной длины) и никогда не будет противонаправлен вектору Z (нормали вершины). На этом приницпе построены двухканальные карты нормалей касательного пространства, которые для экономии памяти, не хранят знаечние для z координаты вектора, он вычисляется шэйдером на освное координат x и y.

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

Но так как эта статья посвящена проблеме бэйкинга, а не тонкостям внутреннего устройства карт нормалей, я решил не усложнять материал и написал так, как написал. Ошибкой мне это не видится, ведь фактически, каждый вектор Tangent Space Normal Map показывает направление отражения лучей (которые будет проецировать шэйдер при рендеринге картинки) относительно нормали объекта (касательного пространства) в точке падения луча.

каждый вектор Tangent Space Normal Map показывает направление отражения лучей (которые будет проецировать шэйдер при рендеринге картинки) относительно нормали объекта (касательного пространства) в точке падения луча.

Но это же не так. Карта нормалей касательного пространства показывает направление нормали в касательном пространстве, а не направление отражения лучей. Как вы будете использовать нормаль, это уже дело десятое.

Но самый интересный вопрос вы пропустили. Почему у вас при смене шейдинга меняется tangent map, если модель не поменялась? TBN тот же, полигоны те же.

Я, кажется, понял в чем у меня непонимание, того, что вы делаете. Вы не программируете бейкинг (вычисление TBN, сборка всего в шейдере), а получаете его в редакторе. Все вопросы сразу отпадают, т.к. все это зависит от конкретной реализации в выбранном редакторе.

Но самый интересный вопрос вы пропустили. Почему у вас при смене шейдинга меняется tangent map, если модель не поменялась? TBN тот же, полигоны те же.

Я использую лексикон 3д художников, так как материал написан в первую очередь для них. В сообществе 3д художников, словесные выражения "изменить шэйдинг модели", "модель стала по другому шэйдиться" и т.д. означают не смену шэйдера, а измененение групп сглаживания модели. Изменение групп сглаживаний ведёт к изменению касательного пространства, а следственно и самой tangent space normal map .

Я использую лексикон 3д художников, так как материал написан в первую очередь для них. 

Я, кажется, понял в чем у меня непонимание, того, что вы делаете.

Вы artist, а не programmer ) Все вопросы снимаю, все ваши проблемы понимаю )

Sign up to leave a comment.

Articles