Рельефное текстурирование: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Normal mapping: фикс текселя(а)
 
(не показано 68 промежуточных версий 48 участников)
Строка 1: Строка 1:
{{другие значения термина|Рельеф}}
[[Image:Bump-map-demo-smooth.png|thumb|right|160px|Сфера без рельефной текстуры.]]
[[Файл:Bump-map-demo-full.png|thumb|right|300px|Сфера без рельефной текстуры; Рельефная текстура, наложенная на изображение ниже; Сфера геометрически идентичная первой, но с наложенной рельефной текстурой. Благодаря этому меняется реакция при затенении, в результате чего эффект бугристой поверхности делает сферу похожей на [[апельсин]].]]
[[Image:Orange-bumpmap.png|thumb|right below|160px|Рельефная текстура, наложенная на изображение ниже.]]

[[image:Bump-map-demo-bumpy.png|thumb|right below|160px|Сфера геометрически идентичная первой, но с наложенной рельефной текстурой. Благодаря этому меняется реакция при затенении, в результате чего эффект бугристой поверхности делает сферу похожей на [[Апельсин]].]]
'''Рельефное текстурирование''' — метод в [[компьютерная графика|компьютерной графике]] для придания более реалистичного и насыщенного вида поверхности объектов.
'''Рельефное текстурирование''' — метод в [[компьютерная графика|компьютерной графике]] для придания более реалистичного и насыщенного вида [[Поверхность|поверхности]] объектов.


== Bump mapping ==
== Bump mapping ==
Bump mapping — простой способ создания эффекта рельефной поверхности с детализацией большей, чем позволяет полигональная поверхность. Эффект главным образом достигается за счёт освещения поверхности источником света и чёрно-белой (одноканальной) [[поле высот|карты высот]], путём '''виртуального '''смещения пикселя (как при методе Displace mapping) как если бы там была [[Вершина (компьютерная графика)|вершина]] (только без физического и визуального сдвига), за счёт чего таким же образом изменяется ориентация [[Нормаль|нормалей]] использующихся для расчёта [[Освещённость|освещённости]] пикселя ([[затенение по Фонгу]]), в результате получаются по-разному освещённые и затенённые участки. Как правило, bump mapping позволяет создать не очень сложные бугристые поверхности, плоские выступы или впадины, на этом его использование заканчивается. Для более детальных эффектов впоследствии был придуман Normal mapping.<ref name=":0">{{Cite web |url=gameindustry.about.com/od/game-development/a/3d-Modeling-Fundamentals-Part-2.htm# |title=3D Modeling Fundamentals — Part 2<!-- Заголовок добавлен ботом --> |accessdate=2013-12-09 |archiveurl=https://web.archive.org/web/20131212064631/gameindustry.about.com/od/game-development/a/3d-Modeling-Fundamentals-Part-2.htm# |archivedate=2013-12-12 |deadlink=yes }}</ref>
Техника заключается в том, что отклонение каждого [[пиксел|пиксел]]я от [[нормаль|нормал]]и к поверхности просчитываемого объекта смотрится в карте высот ([[Wikipedia:en:heightmap]]) и применяется перед обсчётом освещения (см. для примера [[затенение по Фонгу]]).

''Прим.'' Кроме описанной выше техники, называемой «Bump mapping» существует ряд альтернатив, также позволяющих придавать рельефность поверхностям. «Bump mapping» более корректно переводится как «эффект бугристой поверхности», так как в англоязычной литературе присутствует техника с названием «Relief mapping», отличающаяся от вышеизложенной.


== Normal mapping ==
== Normal mapping ==
[[Файл:Normal map example with scene and result.png|мини|Результат работы технологии]]
Технология аналогична Bump mapping, но для хранения информации о рельефе используются текстуры, в которых кодируются данные не о высоте точек поверхности, а о отклонении нормалей поверхности. Для создания таких текстур обычно создаются многополигональная и низкополигональная модели, на основе которых и генерируется текстура нормалей.
Normal mapping — техника, позволяющая изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения хранятся в виде [[Тексел (графика)|тексела]], цветовые составляющие которого ['''r''','''g''','''b'''] интерпретируются в оси вектора [x, y, z], на основе которого вычисляется нормаль, используемая для расчёта освещённости пикселя. Благодаря тому, что в карте нормалей задействуются 3 канала текстуры, этот метод даёт большую точность, чем Bump mapping, в котором используется только один канал и нормали, по сути, всего лишь интерпретируются в зависимости от «высоты».


Карты нормалей обычно бывают двух типов:
== Parallax occlusion mapping ==

Данная технология также использует карты нормалей, но в отличие от normal mapping’а реализовывает не только освещение с учетом рельефа, но и сдвигает координаты диффузной текстуры на определенное значение в зависимости от рельефной текстуры и угла обзора. Этим достигается наиболее полный эффект рельефа, особенно при взгляде на поверхность под углом.
object-space — используется для недеформирующихся объектов, таких как стены, двери, оружие и т. п.<ref name=":1">{{Cite web |url=http://tech-artists.org/wiki/Normal_Map#Tangent-Space_vs._Object-Space |title=Normal Map — Tech Artists Wiki<!-- Заголовок добавлен ботом --> |accessdate=2013-12-09 |archiveurl=https://web.archive.org/web/20131213020229/http://tech-artists.org/wiki/Normal_Map#Tangent-Space_vs._Object-Space#Tangent-Space_vs._Object-Space |archivedate=2013-12-13 |deadlink=yes }}</ref>

tangent-space — применяется для возможности деформировать объекты, например персонажей .<ref name=":1" />

Для создания карт нормалей обычно используется высокополигональная и низкополигональная модели, их сравнение даёт нужные отклонения нормалей для последней.<ref name=":0" />

== Parallax mapping ==
{{Основная статья|Parallax mapping}}
Данная технология также использует карты нормалей, но, в отличие от normal mapping, она реализует не только освещение с учётом рельефа, но и сдвигает координаты диффузной текстуры. Этим достигается наиболее полный эффект рельефа, особенно при взгляде на поверхность под углом.

=== Parallax occlusion mapping ===
{{Основная статья|Parallax occlusion mapping}}
Parallax occlusion mapping является усовершенствованной и в то же время одной из наиболее вычислительно сложных разновидностей Parallax mapping. Фактически представляет собой форму локальной [[Трассировка лучей|трассировки лучей]] в пиксельном шейдере. Трассировка лучей используется для определения высот и учёта видимости текселей. Иными словами, данный метод позволяет создавать ещё большую глубину рельефа при небольших затратах полигонов и применении сложной геометрии. Недостаток метода — невысокая детализация силуэтов и граней.

Реализовать Parallax occlusion mapping возможно в рамках функциональности API [[DirectX 9]] [[Shader Model]] 3, однако для получения оптимальной производительности видеокарта должна обеспечивать надлежащий уровень скорости исполнения ветвлений в [[пиксельный шейдер|пиксельном шейдере]]. На данный момент Parallax occlusion mapping используется в некоторых [[компьютерная игра|компьютерных играх]], например, [[Crysis]], [[Metro 2033]] и [[ArmA 2]]. Также эта технология используется в популярном [[Бенчмарк (компьютер)|бенчмарке]] ''3DMark Vantage''.


== Displacement mapping ==
== Displacement mapping ==
[[Файл:Bump map vs isosurface2.png|thumb|right|300px]]
{{planned}}
Эта техника, в отличие от описанных выше, изменяет геометрию поверхности по заданной карте высот, обычно передающейся в вершинный [[шейдер]] через текстуру. Преимущество в том, что [[освещение]] считается обычным способом (пиксельный шейдер может быть практически любым), но требует высокую детализацию модели. Вероятно, будет использоваться в будущем.


== См. также ==
== См. также ==

* [http://www.ixbt.com/video/light-model-bump.html Особенности моделирования света: Рельефное текстурирование (Bump mapping)]
* [http://www.ixbt.com/video/light-model-bump.html Особенности моделирования света: Рельефное текстурирование (Bump mapping)]
* [http://www.ixbt.com/video2/terms2k5.shtml Современная терминология 3D графики]
* [http://www.ixbt.com/video2/terms2k5.shtml Современная терминология 3D-графики]

== Примечания ==
{{примечания}}

== Литература ==
* {{книга
| автор = Buss, S.R.
| часть = V.2 Bump mapping
| заглавие = 3D Computer Graphics: A Mathematical Introduction with OpenGL
| издательство = Cambridge University Press
| год = 2003
| allpages = 371
| pages =
| isbn = 9780521821032
| ref = Buss
}}
* {{книга
| автор = Birn, J.
| заглавие = Digital Lighting and Rendering
| издательство = Pearson Education
| год = 2013
| allpages = 464
| isbn = 9780133439175
| ref = Birn
}}
* {{книга
| автор = Akenine-Möller, T. and Haines, E. and Hoffman, N.
| заглавие = Real-Time Rendering, Third Edition
| издательство = CRC Press
| год = 2008
| allpages = 1045
| isbn = 9781439865293
| ref = Real-Time Rendering
}}


[[Категория:Методы текстурирования]]
[[Категория:Методы текстурирования]]
[[Категория:Освещение в трёхмерной графике]]
[[Категория:Освещение в трёхмерной графике]]


{{спам-ссылки|1=
{{compu-stub}}
* gameindustry.about.com/od/game-development/a/3d-Modeling-Fundamentals-Part-2.htm#

}}
[[cs:Bump mapping]]
[[de:Bump mapping]]
[[en:Bump mapping]]
[[es:Bump mapping]]
[[fr:Placage de relief]]
[[hu:Bump mapping]]
[[it:Bump mapping]]
[[ja:バンプマッピング]]
[[ko:범프 매핑]]
[[pl:Mapowanie wypukłości]]
[[zh:凸凹纹理映射]]

Текущая версия от 00:32, 12 июня 2024

Сфера без рельефной текстуры; Рельефная текстура, наложенная на изображение ниже; Сфера геометрически идентичная первой, но с наложенной рельефной текстурой. Благодаря этому меняется реакция при затенении, в результате чего эффект бугристой поверхности делает сферу похожей на апельсин.

Рельефное текстурирование — метод в компьютерной графике для придания более реалистичного и насыщенного вида поверхности объектов.

Bump mapping — простой способ создания эффекта рельефной поверхности с детализацией большей, чем позволяет полигональная поверхность. Эффект главным образом достигается за счёт освещения поверхности источником света и чёрно-белой (одноканальной) карты высот, путём виртуального смещения пикселя (как при методе Displace mapping) как если бы там была вершина (только без физического и визуального сдвига), за счёт чего таким же образом изменяется ориентация нормалей использующихся для расчёта освещённости пикселя (затенение по Фонгу), в результате получаются по-разному освещённые и затенённые участки. Как правило, bump mapping позволяет создать не очень сложные бугристые поверхности, плоские выступы или впадины, на этом его использование заканчивается. Для более детальных эффектов впоследствии был придуман Normal mapping.[1]

Результат работы технологии

Normal mapping — техника, позволяющая изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения хранятся в виде тексела, цветовые составляющие которого [r,g,b] интерпретируются в оси вектора [x, y, z], на основе которого вычисляется нормаль, используемая для расчёта освещённости пикселя. Благодаря тому, что в карте нормалей задействуются 3 канала текстуры, этот метод даёт большую точность, чем Bump mapping, в котором используется только один канал и нормали, по сути, всего лишь интерпретируются в зависимости от «высоты».

Карты нормалей обычно бывают двух типов:

object-space — используется для недеформирующихся объектов, таких как стены, двери, оружие и т. п.[2]

tangent-space — применяется для возможности деформировать объекты, например персонажей .[2]

Для создания карт нормалей обычно используется высокополигональная и низкополигональная модели, их сравнение даёт нужные отклонения нормалей для последней.[1]

Данная технология также использует карты нормалей, но, в отличие от normal mapping, она реализует не только освещение с учётом рельефа, но и сдвигает координаты диффузной текстуры. Этим достигается наиболее полный эффект рельефа, особенно при взгляде на поверхность под углом.

Parallax occlusion mapping

[править | править код]

Parallax occlusion mapping является усовершенствованной и в то же время одной из наиболее вычислительно сложных разновидностей Parallax mapping. Фактически представляет собой форму локальной трассировки лучей в пиксельном шейдере. Трассировка лучей используется для определения высот и учёта видимости текселей. Иными словами, данный метод позволяет создавать ещё большую глубину рельефа при небольших затратах полигонов и применении сложной геометрии. Недостаток метода — невысокая детализация силуэтов и граней.

Реализовать Parallax occlusion mapping возможно в рамках функциональности API DirectX 9 Shader Model 3, однако для получения оптимальной производительности видеокарта должна обеспечивать надлежащий уровень скорости исполнения ветвлений в пиксельном шейдере. На данный момент Parallax occlusion mapping используется в некоторых компьютерных играх, например, Crysis, Metro 2033 и ArmA 2. Также эта технология используется в популярном бенчмарке 3DMark Vantage.

Displacement mapping

[править | править код]

Эта техника, в отличие от описанных выше, изменяет геометрию поверхности по заданной карте высот, обычно передающейся в вершинный шейдер через текстуру. Преимущество в том, что освещение считается обычным способом (пиксельный шейдер может быть практически любым), но требует высокую детализацию модели. Вероятно, будет использоваться в будущем.

Примечания

[править | править код]
  1. 1 2 3D Modeling Fundamentals — Part 2. Дата обращения: 9 декабря 2013. Архивировано из [gameindustry.about.com/od/game-development/a/3d-Modeling-Fundamentals-Part-2.htm# оригинала] 12 декабря 2013 года.
  2. 1 2 Normal Map — Tech Artists Wiki. Дата обращения: 9 декабря 2013. Архивировано из оригинала 13 декабря 2013 года.

Литература

[править | править код]
  • 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.