Search Keywords: displacement, displacement mapping, 2D, 3D

 

В этом уроке мы исследуем displacement mapping в V-Ray.

What is displacement mapping?

Displacement mapping это техника добавления геометрической детализации в процессе рендера. По контрасту с bump маппингом, которая работает, изменяя нормали поверхности, чтобы создать иллюзию детализации поверхности, displacement mapping изменяет саму поверхность.
Здесь приведен пример объекта отрендеренного с bump mapping и с
displacement mapping:

 

 
Original object  
Bump mapping
Displacement mapping

В случае displacement mapping, поверхность действительно изменяется, что приводит к качественной детализации и изменении контура объекта, тени и GI. В случае с bump mapping, хотя поверхность кажется измененной, контур и тень остаются теми же.

Displacement отличается от других типов шейдеров, так как изменяет поверхность объекта. Для этого объект должен быть изменен перед рендером. Поэтому V-Ray displacement это модификатор (хотя модификатор может использовать текстуру дисплейсмента из материала объекта).

Простой пример - displaced sphere

Начните с пустой сцены. Создайте GeoSphere с радиусом около 40 единиц и выберите V-Ray как рендер. Присвойте стандартный материал сфере.

Применение VRayDisplacementMod

Перейдите в панель модификаторов назначьте сфере VrayDisplacementMod.
Если сделать рендер прямо сейчас, вы заметите небольшой displacement эффект:

 

 

Это потому, что V-Ray применяет простой шум для displacement map, когда не использовано других текстур.

Выбор displacement map текстуры

Для выбора другой текстуры, кликните кнопку текстура в VrayDisplacementMod. Это вызовет Material/map диалог. Выберите текстуру Cellular. Для редактирования только, что созданной текстуры, откройте Material Editor и перетащите ее с кнопки в VrayDisplacementMod в слот Material Editor-а, выберите Instance при копировании текстуры.

 

Если отрендерить сферу теперь, получится такой результат:

 

 

Настройка величины дисплейсмента и смещения

Что бы сделать дисплейсмент эффект более выраженным, увеличьте значение Amount. Если использовать значение 5.0 и отрендерить сферу, вы должны получить такой результат:

 

 

Величина Amount определяет максимальный дисплейсмент (в тех местах текстуры, где она белая).

Вы можете сместить всю поверхность вверх или вниз, изменяя параметр Shift. Эффект расширения при положительных величинах Shift, или эффект сжатия при отрицательных величинах Shift. Вот несколько примеров различных значений Shift:

 

Shift = -5.0
 
Shift = 0.0
 
Shift = 5.0

 

Shift параметр принимает абсолютные значения в единицах сцены. Если вы изменяете Amount, скорее всего, понадобится настроить Shift так же.

 

Отсечение геометрии с использовснием Water level

Использование опции Use water level и параметра Water level позволяет отсекать часть объекта. Верните Shift в значение 0.0, если вы изменили его. Теперь включите опцию Use water level и установите Water level в 2.5:

 

 

Геометрия отсекается в тех местах, где значение displacement value меньше относительно Water level.
Вот несколько примеров с несколькими значениями Water levels (при Amount равным 5.0 и Shift 0.0):

 

 
Water level = 0.0 (no clipping)    
 
Water level = 1.25
 
Water level = 2.5
 
Water level = 3.75
 
Water level = 5.0 (all geometry is clipped)
 

Water level значение принимает абсолютные значения в единицах сцены. При изменении Amount или Shift, вероятно понадобится изменить Water level для получения того же эффекта.

При использовании 3D дисплейсмента, геометрия отсекается на уровне треугольных face - они или полностью отсекаются или полностью остаются видимыми (это отличается от случая 2d дисплейсмента, где отсечение происходит более точно). Поэтому, вы можете получить зубчатый край по краю отсечения.

Качество дисплейсмента

V-Ray выполняет 3d дисплейсмент разделяя каждую face исходного объекта на множество треугольных face-ов. Большее количество необходимо для более качественного дисплейсмента, но будет использовать больше памяти и увеличит время рендера.

Для понимания сколько треугольников используется, примените стандартный материал к сфере и включите опцию Faceted в этом материале. Это важно, так как иначе V-Ray не только сглаживает нормали поверхности, но так же автоматически применяет normals map, которая представляет нормали идеальной дисплейсед поверхности, при этом поверхность выглядит намного более детализированной, чем это в действительности есть.
Так же отключите Use water level, если она включена.

Если сделать рендер, должен получится следующий результат:

 

 

Здесь есть blow-up рендер для лучшей демонстрации отдельных subtriangles:

 

 

Дополнительно, приведен рендер с границами исходных face сферы.
Эта демонстрация получена при помощи VrayEdgesTex помещенной в Diffuse слот и Self-illumination слот. Установите цвет VrayEdgesTex в красный и Thickness в 1 юнит:

 

 

Качество дисплейсмента определяется размером и числом subtriangles.
Основной параметр для настройки это Edge length (длина грани). Он определяет максимальную длину subtriangle's грани (поверхности разбиения). Может быть задан или в единицах сцены или в пикселях, в зависимости от опции View-dependent.

Меньшие значения Edge length означают лучшее качество. Ниже приведено несколько примеров рендеренных с различным значением Edge length (с включенной опцией View-dependent). Обратите внимание, что View-dependent опция относится к пикселям в исходной картинке, не blow-up рендер.

Поэтому мы сделали blow-up рендер, что бы увидеть эффект разделения subtriangles.

 

Edge length value Normal rendering Blowup rendering
0.5
1.0
2.0
5.0
10.0

 

 

Hosted by uCoz