Обзор VRayDisplacementMod.
Displacement mapping - техника для добавления деталей к геометрии вашей сцены без необходимости предварительного моделирования. Концепция очень похожа на bump mapping. Только bump mapping имеет закрашивающий эффект, который изменяет только внешний вид поверхности, в то время как Displacement mapping действительно изменяет поверхность.
Пример: Displacement в сравнении с Bump Mapping.
Этот пример показывает различия между bump mapping и displacement mapping. Обратите внимание на круглый силуэт сферы и ее тени в случае bump mapping и деформированный силуэт, генерируемый displacement:
bump mapping | displacement mapping |
В данном случае для дисплейсмента взята карта 3d Cellular; использован метод 3D displacement.
Type (Тип)
Type - метод, используемый для применения дисплейсмент-преобразования:
2D mapping (landscape) - этот метод основывает дисплейсмент на текстурной карте, известной заранее. Поверхность, подвергнутая дисплейсменту, визуализируется как искривленные высотные зоны, основанные на текстурной карте. Реальная трассировка лучей преобразованной поверхности делается в пространстве текстуры, и результат обратно преобразовывается в 3d-пространство. Преимущество этого метода в том, что он сохраняет все детали карты дисплейсмента. Однако он требует, что бы объект имел корректные текстурные координаты. Вы не можете использовать этот метод для 3d процедурных текстур или для других текстур, которые используют координаты объекта или мировые координаты. Карта дисплейсмента может получать любые значения (в противоположность 3d-преобразованию, которое всегда игнорирует значения за границами диапазона 0.0-1.0 или от черного до белого).
3D mapping - это общий метод, который берет исходную геометрию поверхности и подразбивает ее треугольники на более мелкие подтругольники, которые потом смещаются. Это преобразование может быть применено для произвольных карт дисплейсмента с любым типом преобразования (mapping). Этот метод также может использовать карту дисплейсмента, указанную в материале объекта. Заметим, что для 3d-преобразования диапазон значений карты дисплейсмента должен укладываться в диапазон 0.0-1.0 (от черного до белого). Значения за пределами этого диапазона будут срезаны.
Subdivision - этот метод похож на метод 3d-преобразования, с тем отличием, что он будет применять схему подразбиения к объекту, так же как модификатор MeshSmooth. Для треугольных полигонов меша используется схема циклического подразбиения (Loop subdivision). Для четырехугольных полигонов - схема Катмулла-Кларка (Catmull-Clark scheme). Другие полигоны сначала преобразуются к треугольникам. Если вы хотите только сгладить объект без применения карты дисплейсмента, установите параметр Amount в 0.0.
Пример: Subdivision Displacement
Это пример дисплейсмента подразбиениями (модель головы - Alexander Sokerov):
Без использования subdivision и displacement
Только subdivision (значение displacement 0.0)
Использовоние и Subdivision, и displacement.
Какой метод использовать? В предыдущих версиях V-Ray было огромное различие между производительностью двух других методов и 2D mapping, который был быстрее во многих случаях. С введением поддержки динамической геометрии в V-Ray 1.45.xx, 3d дисплейсмент стал гораздо быстрее для аналогичного или даже лучшего качества, по сравнению с 2d mapping. Тем не менее, для больших поверхностей, таких как океан или горы, метод 2d mapping может работать лучше.
2D-перобразование также сохраняет карту дисплейсмента в предварительно оттранслированном виде в памяти. Большие карты дисплейсмента могут занимаит большое количество оперативной памяти. В этом случае более эффективным может быть использование 3D-преобразования, т.к. оно может повторно использовать память, использованную для измененной геометрии.
Common parameters (Общие параметры)
Texmap - карта для дисплейсмента. Это может быть любая текстурная карта: растровое изображение, процедурная карта, 2D или 3D карта и т.д. Заметим, что с 2D-дисплейсментом вы можете использовать только текстуры с явным UV-преобразованием, тогда как с 3D-дисплейсментом может быть использована любая текстура. Текстурная карта игнорируется, если включена опция Use object mtl (Использовать материал объекта).
Texture channel - UVW-канал, который будет использоваться для дисплейсмент-преобразования. Этот канал должен соответствовать текстурному каналу, указанному в самой текстурной карте, если используется явное UVW-преобразование. Параметр игнорируется, если включена опция Use object mtl.
Filter texmap - если опция включена, текстурная карта будет фильтроваться. Параметр игнорируется, если включена опция Use object mtl.
Filter Blur - сила фильтра, применяемого к карте.
Amount - значение дисплейсмента. Значение 0.0 означает, что объект остается неизмененным (или просто сглаживается, если вы используете метод Subdivision). Чем выше значение, тем больше эффект дисплейсмента. Параметр также может быть отрицательным; в этом случае дисплейсмент будет вдавливать геометрию внутрь объекта.
Shift - в этом параметре указывается константа, которая будет добавлена к значениям карты дисплейсмента, сдвигая выдавливаемую поверхность вверх или вниз вдоль нормалей. Параметр может быть положительным или отрицательным.
Water level - значение карты дисплейсмента, ниже которого геометрия будет обрезаться, если опция флаг установлен. V-Ray будет обрезать геометрию поверхности в местах, где значение карты дисплейсмента ниже указанного порога.
Приер: Параметр Shift .
Обратите внимание, что параметр Shift - это абсолютное значение в мировых единицах. Если вы измените Amount, вероятнее всего понадобится настроить Shift тоже.
Shift = -5.0
Shift = 0.0
Shift = 5.0
Пример: Clip Mapping.
Примечание: параметр Water level также абсолютен в мировых единицах. В случае изменения Amount и/или Shift, вам скорее всего придется регулировать уровень воды, чтобы получить тот же эффект. В этом примере параметр Amount имеет значение 5.0, апараметр Shift установлен в 0.0.
Water level = 0.0 (без clipping)
Water level = 1.25
Water level = 2.5
Water level = 3.75
Water level = 5.0 (clip применен ко всей геометрии)
Этот пример демонстрирует использование displacement mapping clip от геометрии объекта. displacement map представляет собой смесь Noise map и мозаичную карту Gradient ramp map; темные участки карты отсекаются:
В этом случае displacement map была применена к определенной mapping channel; в данном случае был использован 2D displacement.
Параметры 2D mapping.
Resolution - определяет разрешение текстуры для дисплейсмента, используемую V-Ray. Если текстурная карта - растровое изображение, то будет наилучшим задать разрешение равным размеру растрового изображения. Для процедурных 2d-карт разрешение определяется желаемым качеством и детальностью дисплейсмента. Заметим, что V-Ray также будет автоматически генерировать карту нормалей, основываясь на карте дисплейсмента, для компенсации деталей, не захваченных текущей выдавленной поверхностью.
Precision - этот параметр имеет отношение к кривизне выдавливаемой поверхности; плоские поверхности можно делать с более низкой точностью (для совершенно плоской поверхности вы можете использовать 1), более искривленные поверхности требуют более высоких значений. Если точность недостаточно высока, вы можете получить темные пятна ("прыщи") при дисплейсменте. Более низкие значения просчитываются быстрее.
Tight bounds - эта опция заставляет V-Ray более точно вычислять ограничивающие объемы для выдавленных треугольников, что приводит к немного лучшему времени просчета.
Параметры 3D mapping/subdivision.
Edge length - определяет качество дисплейсмента. Каждый треугольник оригинального меша подразбивается на некое количество подтреугольников. Большее количество подтреугольников означает более высокую детальность дисплейсмента, увеличение времени просчета и использование большего количества оперативной памяти. Меньшее количество подтреугольников означает меньшее количество деталей, более быстрый просчет и меньшее количество используемой памяти. Смысл параметра Edge length зависит от значения параметра View-dependent.
View-dependent - когда опция включена, параметр Edge length определяет максимальную длину ребра подтреугольника в пикселях. Значение 1.0 означает, что самое длинное ребро каждого подтреугольника будет около одного пикселя длиной при проекции на экран. Когда выключено, параметр Edge length - максимальная длина ребра подтреугольника в мировых единицах.
Max. subdivs - этот параметр управляет максимальным количеством подтреугольников, генерируемых из любого треугольника исходного меша. Это значение является квадратным корнем из максимального количества подтреугольников. Например, значение 256 означает, что будет сгенерировано самое большее 256 x 256 = 65536 подтреугольников для любого данного исходного треугольника. Делать это значение очень высоким - не самая хорошая идея. Если вам нужно высокое значение, то вместо этого лучше разбейте (tesselate) сам исходный меш на более мелкие треугольники. С версии 1.45.20, действительное количество подразбиений для треугольника окугляется вверх до ближайшей степени 2 (это делает более простым недопущение дырок из-за различного разбиения соседних треугольников).
Static geometry – при включении дисплейсмента геометрия предварительно компилируется в структуру ускорение в начале рендеринга и остается там до конца кадра. Это может ускорить рендеринг и увеличит использование памяти.
Classic Catmul Clark – когда эта опция включена, V-Ray будет использовать метод Classic Catmul Clark для разбивки меша вместо гибридного используемого по умолчанию. Эта опция должна быть включена, только если меш полностью состоит из прямоугольных граней, иначе он не будет работать.
Smooth UVs - позволяет выбрать, будет ли у объекта UVs или нет.
Preserve map bnd – этот параметр позволяет сохранять границы UV, не сглаживает их, когда опция Smooth UVs включена.
All – все границы UVs будут сохранены и не сглаживаются.
Internal – будут сохранены только внутренние границы. Внутренние границы-это UVs, которые разделены в UV пространстве, но связаны в геометрии. Этот параметр означает, что не будет сглаживания UVs на стыках.
None - все границы будут сглажены
Tight bounds - когда опция включена, V-Ray будет пытаться вычислять точный ограничивающий объем выдавленных треугольников из исходного меша. Это требует предварительного сэмплинга текстуры для дисплейсмента, но просчет будет быстрее, если текстура имеет большие белые или черные области. Однако, если текстура для дисплейсмента сложна для оценки и имеет множество переходов от черного к белому, то просчет может быть быстрее, если эту опцию выключить. Когда опция выключена, V-Ray будет использовать наихудшие ограничивающие объемы, и не будет предварительно сэмплировать текстуру. Заметим, что это имеет значения только в режимах 2d mapping и 3d mapping; для метода Subdivision этот параметр игнорируется, и V-Ray будет всегда вычислять точный ограничивающий объем.
Use object mtl - если опция включена, то карта дисплейсмента будет взята из материала объекта вместо карты, указанной в VRayDisplacementMod. Заметим, что вы должны запретить собственное дисплейсмент-преобразование 3ds Max, сняв отметку с переключателя Displacement в свитке Common parameters 3ds Max (но не опцию Displacement в свитке Global switches V-Ray, которая запретит дисплейсмент V-Ray).
Keep continuity - когда опция включена, V-Ray будет пытаться сгенерировать непрерывную поверхность без разрезов в тех местах, где у вас фейсы с различными группами сглаживания и/или ID материалов. Обратите внимание, что использование ID материалов для соединения карт для дисплейсмента - не очень хороший способ, т.к. V-Ray не может всегда гарантировать непрерывность поверхности. Используйте другие методы (vertex colors, маски и т.д.) для смешивания различных карт дисплейсмента.
Edge thresh - когда включена опция Keep continuity, этот параметр управляет расстоянием, на котором карты на фейсах с различными ID материалов будут смешаны. Заметим, что V-Ray может гарантировать только непрерывность ребер, но не непрерывность по вертексам (означающее, что поверхность не будет иметь дыр вдоль ребер, но могут быть расщепления вокруг вертексов). По этой причине вы должны сохранять это значение достаточно малым.
Vector Displacement - если ваша текстура для дисплейсмента цветная (не в градациях серого), то V-Ray сконвертирует ее в градации серого до визуализации преобразованной геометрии. Когда эта опция включена, это позволяет V-Ray использовать каналы красного, зеленого и синего цвета из карты дисплейсмента для искривления геометрии по направлениям U и V в дополнение к искривлению по направлению нормали к фейсу.
Disabled – отключает vector displacement, в данном случае будет использован regular displacement вдоль поверхности нормали.
Tangent – текстура интерпретируется со значением 0.5 в tangent space displacement map;
Object – этот тип имеет смысл только с текстурами Ptex displacement через VRayPtex texture, когда значение текстуры представлено 0 в displacement в object space. Если информация о меше хранится в Ptex file, V-Ray может правильно сместить деформации меша. Object-space Ptex vector displacement работает только с подразделением поверхности, когда Тип дисплейсмента выставлен на Subdivision.
Cache normals – когда эта опция включена, V-Ray создает и сохраняет информацию о нормалях каждой вновь созданной вершины. Это требует дополнительной памяти, но ускоряет расчеты затенения во время рендеринга.
Split Method - определяет метод, который будет использоваться при подразбиении фейсов геометрии.
Tex. map min/max - эти два параметра позволяют вам указать собственные границы для преобразованной геометрии. По умолчанию значения границ 0 и 1.
Пример: Edge Length (длина ребра).
Изображение ниже рендерилось с Edge map | VRayEdgesTex map с слоте материалов Diffuse, так что можно увидеть исходные треугольники меша. Кроме того, мы включили опцию Faceted в VRayMtl. Теперь V-Ray будет не только сглаживать нормали поверхности, но и автоматически применять карту нормалей, что представляет собой нормаль искревленной поверхности, которая делает вид поверхности более детализированной.
View-dependent включен, и это относится к пикселям исходного изображения, а не зуммированного, полученного с blow-up рендерингом. Именно для этого мы смогли сделать blow-up рендеринг, чтобы лучше увидеть отдельные подтреугольники:
Edge Length 0.5
Edge Length 0.5 Вид крупным планом.
Edge Length 1.0
Edge Length 1.0 Вид крупным планом.
Edge Length 2.0
Edge Length 2.0 Вид крупным планом.
Edge Length 5.0
Edge Length 5.0 Вид крупным планом.
Edge Length 10.0
Edge Length 10.0 Вид крупным планом.
Пример: Опция Keep Continuity.
Опция Keep continuity для объектов с разнонаправленными нормалями на соседних треугольниках, обычно вследствие принадлежности к различным группам сглаживания. На среднем изображении вы можете видеть шели на ребрах, полученные из-за разнонаправленных нормалей. Использование опции Keep continuity позволяет избежать этой проблемы. Эта опция также поможет получить сглаженный результат для пересечений границ ID материалов для объектов с материалами типа multi/subobject.
Без дисплейсмента | Keep continuity выключено | Keep continuity включено |
Пример: Дисплейсмент по вектору.
Этот пример показывает действие опции Vector displacement более детально.
Первое изображение слева показывает объект-деталь, который мы преобразовали в карту векторного дисплейсмента посредством запекания в текстуру с помощью материала VRayVectorDisplBake. Второе изображение показывает полученную карту дисплейсмента, в которой красная, зеленая и синяя компоненты определяют векторы дисплейсмента в UVW-пространстве текстуры. Последнее изображение показывает другой объект с картой векторного дисплейсмента, примененной посредством модификатора VRayDisplacementMod.
Часть сложной геометрии и упрощенная версия с материалом VRayVectorDisplBake | Карта дисплейсмента, полученная посредством запекания текстуры с запекающим элементом VRayCompleteMap упрощенной геометрии. Результат сохранен в файл .exr (здесь показан файл .png). | Карта дисплейсмента, примененная к другому объекту через модификатор VRayDisplacementMod со включенной опцией Vector displacement. |
Пример: Split Method.
Этот пример показывает действие параметра Split method. Для лучшей демонстрации эффекта, для объекта был использован материал Standard со включенной опцией Faceted и текстурой VRayEdgesTex в диффузном слоте для показа границ фейсов оригинального меша. Обратите внимание, как режим Binary изменяет ориентацию треугольников подразбиения дисплейсмента, в то время как режим Quad сохраняет их ориентацию.
Split method режим Binary | Split method режим Quad |
Пример: Текстурные границы.
Этот пример показывает плоскость, преобразованную с помощью карты дисплейсмента, которая имеет отрицательные значения. С границами для дисплейсмента, установленными по умолчанию, мы не можем увидеть геометрию, искривленную в отрицательном направлении. Однако теперь мы можем установить собственные границы от -1 до 1, и мы можем видеть преобразованную геометрию и в положительном, и в отрицательном направлении.
Texmap min = 0 ; Texmap max = 1 | Texmap min = -1; Texmap max = 1 |
Пример: Дисплейсмент на персонаже.
Этот пример показывает дисплейсмент на персонаже; карта - 3D cellular, поэтому использован метод 3D displacement.
Заметим, что если персонаж анимирован и используется 3d карта с преобразованием Object XYZ, то карта будет изменяться по отношению к поверхности объекта, т.к. поверхность сама изменяет свое положение в пространстве. Если вы хотите зафиксировать процедурную 3d-карту относительно поверхности анимированных объектов, примените модификатор UVW Map с режимом преобразования XYZ to UVW для объектов и используйте Explicit mapping channel для процедурной карты.
| |
Персонаж с дисплейсментом. |
Персонаж без дисплейсмента.
Примечания:
· Текстуры накладываются на искривленную поверхность; следовательно текстуры с преобразованием Object XYZ и World XYZ могут выглядеть по другому на искривленном объекте по сравнению с тем, как они выглядели бы на исходном объекте. Если это нежелательно (например если вы хотите карту дисплейсмента подогнать под текстуру), используйте явно каналы преобразования для текстур материалов, а преобразования Object XYZ/World XYZ оставьте только для карты дисплейсмента.
· Искривленные объекты не будут работать правильно с теневыми картами (Shadow maps). В теневые карты будет включена информация о неискривленном меше. Для слабого дисплейсмента это может работать хорошо. Заметим, что дисплейсмент работает правильно с тенями VRayShadowMap.
· VRayDisplacementMod не влияет на объекты VRayPlane, VRayProxy или VRayFur.
· Метод 2d mapping (landscape) будет игнорировать параметр Tiling, указанный в самих текстурах. Как побочный эффект, это означает, что этот метод не будет работать с опцией Real-world map size в текстуре Bitmap и других текстурах. Вместо этого вы должны изменить UVW-координаты объекта, или использовать метод 3d mapping.
Источник: http://docs.chaosgroup.com/display/VRAY3MAX/Displacement+Modifier+|+VRayDisplacementMod#DisplacementModifier|VRayDisplacementMod-vectorDisplacement