Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_3D-mod.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
10.94 Mб
Скачать

13.6. Создание неровностей на поверхности.

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

Рис. 13.23 Пример с вогнутым риснком

Данный подход очень напоминает выдавливание (чеканку). Главное — это правильно наложить яркие и темные участки. Остальное сделает наш мозг.

Но как определить, какие части изображения делать яркими, и наоборот? Очень просто. Опыт жизни большинства людей, когда им приходится большей частью находятся в условиях, когда свет исходит сверху, заставляет принять, что большинство поверхностей сверху ярко освещены, а снизу, наоборот, находятся в тени и будут темнее. Таким образом, если глаз воспринимает светлые и темные области на объекте, то человек воспринимает их как рельеф (рис. 13.24).

Рис. 13.24 Пример с выпуклым риснком

Посмотрев на тот же рисунок, только развернутый на 180 градусов (рис 13.23), можно заметить, что он стал полной противоположностью предыдущему. То, что раньше казалось выпуклым, стало вогнутым, и наоборот. А ведь это то же самое изображение. Если же заставить мозг воспринимать свет, как идущий снизу, мозг воспроизведет информацию так же, как на первом изображении.

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

Использование карт высот

Первый метод основан на использовании рельефных карт (Bump Mapping).

Рельефная карта — это обычная текстура, только в отличие от первой, несущей информацию о цвете определенных участков, рельефная карта несет информацию о неровностях. Самый распространенный способ представить неровности - это применить карту высот. Карта высот — это текстура в оттенках серого, где яркость каждого пикселя представляет, насколько он выдается из базовой поверхности (рис 13.25).

Рис. 13.25 Карта высот

Используя карту высот, можно имитировать неровности практически любой поверхности: дерево, камень, чеканка и т.д. Конечно, у всего есть свои пределы. Используя рельефное текстурирование, нельзя имитировать крупные впадины и возвышенности, но вот для имитации неровностей и шероховатостей на поверхности этот метод подходит идеально.

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

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

Рис. 13.26 Расчет векторов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]