Чому звичайні карти переважно сині замість випадкового кольору?
Я здогадуюсь, що звичайні вектори 3D-об’єкта можуть вказувати в будь-який бік, наприклад:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Чому звичайні карти переважно сині замість випадкового кольору?
Я здогадуюсь, що звичайні вектори 3D-об’єкта можуть вказувати в будь-який бік, наприклад:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Відповіді:
Існує два типи звичайних карт, які зазвичай використовуються при розробці ігор. Те, як ви думаєте, що вони повинні працювати, - це те, як працює один тип (звичайні карти-простір-карти), але більшість ігор використовують інший тип (звичайні карти дотичного простору), тому ви асоціюєте в основному сині текстури із звичайними картами.
З карти звичайних просторів моделей кожен канал кодує точне значення нормалі, використовуючи ту саму систему координат, що і вершини моделі, з якою він використовується. Це означає, що різні частини звичайної карти матимуть різні відтінки, але пікселі поруч один з одним зазвичай мають подібні кольори. Приклад нормальної карти моделі-простору відображається вище ( джерело ).
Нормальні карти дотичного простору зазвичай світло-синього кольору. Цей тип карти визначає нормалі в просторі координат, унікальному для положення кожного пікселя на поверхні сітки. Він використовує (інтерпольовану) вершину, нормальну як вісь Z, та два інші ортогональні вектори, звані дотичною та бітангенсними, як осі X та Y. По суті, ви можете вважати нормали на карті як "зміщення" від нормального для цього пікселя, обчисленого інтерполяцією вершинних нормалей. Дотичні та бітангенсні вектори також інтерполюються з вершинних даних і визначають, який напрямок на сітці відповідає «вгору» та «вліво» у звичайній карті. Зображення, подане у запитанні, є чудовим прикладом того, як виглядає типова карта дотичного простору, тому я не наводжу іншого прикладу.
Компоненти звичайного нормального (не призначеного для каламбуру) діапазону від [-1, 1]
. Але компоненти кольору в зображенні варіюються від [0, 1]
(або [0, 255]
зазвичай вони нормалізовані [0, 1]
). Тож норми масштабуються і компенсуються таким чином, що нормальний (0, 0, 1)
стає кольором (0.5, 0.5, 1)
. Це світло-синій колір, який ви бачите на звичайних картах, і він не вказує на відхилення від нормальної інтерпольованої вершини при використанні нормальних дотичних просторів.
Причина дотичних дотичних просторів є перевагою перед модельно-просторовими нормалами через те, що їх легше створити і їх можна використовувати для декількох сіток. Крім того, якщо використовується з анімованою сіткою, завжди використовуються нормали дотичних просторів, оскільки норма постійно змінюється.
bitangent
та binormal
правильним.
Звичайна карта в основному вказує назовні від поверхні. Якщо припустити, що звичайне відображення Z-компонента нормальних векторів XYZ є "глибинним" напрямом, а також відображення B-компонента кольорового простору RGB, ви отримаєте, що більшість звичайних векторів мають бути переважно синіми.
Якби текстура була, скажімо, червоною, то це означало б, що нормальна карта - це поверхня, яка в основному спрямована праворуч. Цю особливість ви можете бачити на зразковому зображенні, оскільки права частина краю шишки має до них червонуватий відтінок.
Повна поверхня червонуватого кольору не мала б сенсу. Це вказувало б на поверхню, яка повністю спрямована праворуч. Це було б просто за зразком геометрії, а не частиною звичайної карти.