Bump Mapping

Бампмаппинг — техника симуляции микрорельефа ев плоскостях без массивных вычислительных затрат и изменений в геометрии. Для любого поверхностного пикселя выполняется вычисление освещения, которое исходит из значений в карте высот, которая называется Bump Mapping. Обычно это черно-белая 8-битная структура, и значение цвета самой текстуры используются для описания рельефа поверхности. Каждый цвет пикселя определяет высоту той или иной точки рельефа, большая высота означает большую высоту над поверхностью, а меньшая — наоборот.

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

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

Неплохо будет вспомнить и о составляющих освещения. Цвет любой точки на поверхности рассчитывается как сумма specular-, ambient- и  diffuse-составляющих от всех источников света, находящихся в сцене. В идеале вообще нужно рассчитывать от всех, но очень многими пренебрегают.

Ambient. Равномерная составляющая. Это начальное освещение для любой точки в сцене, при ней все точки освещаются абсолютно одинаково, а само освещение не зависит от каких-либо факторов.

Diffuse. Диффузная составляющая. Она зависит от положения источника света и нормали поверхности. Диффузная составляющая разная для любой вершины модели, именно это и придает ей объем. Свет больше не заполняет поверхность объекта одним и тем же оттенком.

Specular. Бликовая составляющая. Проявляется она в бликах отражения света от поверхности. Для того, чтобы ее рассчитать, используются еще два вектора, помимо вектора нормали и положения источника света: вектор отражения и направления взгляда. Блики способствуют увеличению реалистичности сцены, ведь все реальные поверхности отражают лучи света.

Понравилась статья? Поделиться с друзьями: