Рельефное текстурирование: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
MBHbot (обсуждение | вклад) м орфо, replaced: путем → путём, removed stub tag |
Нет описания правки |
||
Строка 5: | Строка 5: | ||
== Bump mapping == |
== Bump mapping == |
||
Bump mapping — простой способ создания эффекта рельефной поверхности с детализацией большей, чем позволяет полигональная поверхность. Эффект главным образом достигается за |
Bump mapping — простой способ создания эффекта рельефной поверхности с детализацией большей, чем позволяет полигональная поверхность. Эффект главным образом достигается за счёт освещения поверхности источником света и чёрно-белой (одноканальной) карты высот, путём '''виртуального '''смещения пикселя (как при методе Displace mapping) как если бы там был вертекс (только без физического и визуального сдвига), за счёт чего таким же образом изменяется ориентация нормалей использующихся для расчёта освещённости пикселя ([[затенение по Фонгу]]), в результате получаются по-разному освещённые и затенённые участки. Как правило Bump mapping позволяет создать не очень сложные бугристые поверхности, плоские выступы или впадины, на этом его использование заканчивается. Для более детальных эффектов впоследствии был придуман Normal mapping.<ref name=":0">[http://gameindustry.about.com/od/game-development/a/3d-Modeling-Fundamentals-Part-2.htm 3D Modeling Fundamentals — Part 2<!-- Заголовок добавлен ботом -->]</ref> |
||
== Normal mapping == |
== Normal mapping == |
||
[[Файл:Normal map example with scene and result.png|мини|Результат работы технологии]] |
[[Файл:Normal map example with scene and result.png|мини|Результат работы технологии]] |
||
Normal mapping — техника, позволяющая изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения хранятся в виде текселя, цветовые составляющие которого ['''r''','''g''','''b'''] интерпретируются в оси вектора [x, y, z], на основе которого вычисляется нормаль, используемая для |
Normal mapping — техника, позволяющая изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения хранятся в виде текселя, цветовые составляющие которого ['''r''','''g''','''b'''] интерпретируются в оси вектора [x, y, z], на основе которого вычисляется нормаль, используемая для расчёта освещённости пикселя. Благодаря тому, что в карте нормалей задействуются 3 канала текстуры, этот метод даёт большую точность, чем Bump mapping, в котором используется только один канал и нормали, по сути, всего лишь интерпретируются в зависимости от «высоты». |
||
Карты нормалей обычно бывают двух типов: |
Карты нормалей обычно бывают двух типов: |
||
object-space — используется для |
object-space — используется для недеформирующихся объектов, таких как стены, двери, оружие и т. п.<ref name=":1">[http://tech-artists.org/wiki/Normal_Map#Tangent-Space_vs._Object-Space Normal Map — Tech Artists Wiki<!-- Заголовок добавлен ботом -->]</ref> |
||
tangent-space — применяется для возможности деформировать объекты, например персонажей .<ref name=":1" /> |
tangent-space — применяется для возможности деформировать объекты, например персонажей .<ref name=":1" /> |
||
Для создания карт нормалей обычно используется высокополигональная и низкополигональная модели, их сравнение |
Для создания карт нормалей обычно используется высокополигональная и низкополигональная модели, их сравнение даёт нужные отклонения нормалей для последней.<ref name=":0" /> |
||
== Parallax mapping == |
== Parallax mapping == |
Версия от 20:59, 6 марта 2017
Рельефное текстурирование — метод в компьютерной графике для придания более реалистичного и насыщенного вида поверхности объектов.
Bump mapping
Bump mapping — простой способ создания эффекта рельефной поверхности с детализацией большей, чем позволяет полигональная поверхность. Эффект главным образом достигается за счёт освещения поверхности источником света и чёрно-белой (одноканальной) карты высот, путём виртуального смещения пикселя (как при методе Displace mapping) как если бы там был вертекс (только без физического и визуального сдвига), за счёт чего таким же образом изменяется ориентация нормалей использующихся для расчёта освещённости пикселя (затенение по Фонгу), в результате получаются по-разному освещённые и затенённые участки. Как правило Bump mapping позволяет создать не очень сложные бугристые поверхности, плоские выступы или впадины, на этом его использование заканчивается. Для более детальных эффектов впоследствии был придуман Normal mapping.[1]
Normal mapping
Normal mapping — техника, позволяющая изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения хранятся в виде текселя, цветовые составляющие которого [r,g,b] интерпретируются в оси вектора [x, y, z], на основе которого вычисляется нормаль, используемая для расчёта освещённости пикселя. Благодаря тому, что в карте нормалей задействуются 3 канала текстуры, этот метод даёт большую точность, чем Bump mapping, в котором используется только один канал и нормали, по сути, всего лишь интерпретируются в зависимости от «высоты».
Карты нормалей обычно бывают двух типов:
object-space — используется для недеформирующихся объектов, таких как стены, двери, оружие и т. п.[2]
tangent-space — применяется для возможности деформировать объекты, например персонажей .[2]
Для создания карт нормалей обычно используется высокополигональная и низкополигональная модели, их сравнение даёт нужные отклонения нормалей для последней.[1]
Parallax mapping
Данная технология также использует карты нормалей, но, в отличие от normal mapping, она реализует не только освещение с учётом рельефа, но и сдвигает координаты диффузной текстуры. Этим достигается наиболее полный эффект рельефа, особенно при взгляде на поверхность под углом.
Parallax occlusion mapping
Parallax occlusion mapping является усовершенствованной и в то же время одной из наиболее вычислительно сложных разновидностей Parallax mapping. Фактически представляет собой форму локальной трассировки лучей в пиксельном шейдере. Трассировка лучей используется для определения высот и учёта видимости текселей. Иными словами, данный метод позволяет создавать ещё большую глубину рельефа при небольших затратах полигонов и применении сложной геометрии. Недостаток метода — невысокая детализация силуэтов и граней.
Реализовать Parallax occlusion mapping возможно в рамках функциональности API DirectX 9 Shader Model 3, однако для получения оптимальной производительности видеокарта должна обеспечивать надлежащий уровень скорости исполнения ветвлений в пиксельном шейдере. На данный момент Parallax occlusion mapping используется в некоторых компьютерных играх, например, S.T.A.L.K.E.R, Crysis, Metro 2033 и ArmA 2. Также эта технология используется в популярном бенчмарке 3DMark Vantage.
Displacement mapping
Эта техника, в отличие от описанных выше, изменяет геометрию поверхности по заданной карте высот, обычно передающегося в вершинный шейдер через текстуру. Преимущество в том, что освещение считается обычным способом (пиксельный шейдер может быть практически любым), но требует высокую детализацию модели.
См. также
- Особенности моделирования света: Рельефное текстурирование (Bump mapping)
- Современная терминология 3D-графики
Примечания
Литература
- Buss, S.R. V.2 Bump mapping // 3D Computer Graphics: A Mathematical Introduction with OpenGL. — Cambridge University Press, 2003. — 371 p. — ISBN 9780521821032.
- Birn, J. Digital Lighting and Rendering. — Pearson Education, 2013. — 464 p. — ISBN 9780133439175.
- Akenine-Möller, T. and Haines, E. and Hoffman, N. Real-Time Rendering, Third Edition. — CRC Press, 2008. — 1045 p. — ISBN 9781439865293.