Несколько слов о настройках VRay

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

Примечание 2: Стремление к упрощению и "универсальности всего и вся" у меня не от хорошей жизни. Я преподаю 3DStudio в институте. Теперь представим себе как это выглядит. Даже на дизайне среды бОльшую часть времени проекта студенты тратят на чертежи, подбор мебели и т.д. Плюс другие предметы тоже надо учить. 3D для них важная, но далеко не самая важная часть (я не говорю про графический дизайн, у которого, по большому счёту, 3D - ознакомительный курс). При занятиях раз в две недели много ли запомнится? У половины проблемы даже с установкой самого 3DStudio дома, а что говорить про VRay? Что творится с настройками системных единиц лучше и не думать: в компьютерном классе на одном компьютере кто-то поставил System Units:Cm, Display Units:Meters, на другом System Units:Millimeters, Display Units:Cm, приносят из дома файл, там системные единицы дюймы, что там при открытии файла "не по-русски" спрашивает, неизвестно, надо тыкнуть на какую-нибудь кнопку, чтобы какая-то табличка убралась.

Поэтому подавляющее большинство студентов мучают два основных вопроса по VRay. Первый (после пары часов объяснений какие настройки за что отвечают): "Так какие настройки ставить?" Второй: "А как бы сделать так, чтобы побыстрее считалось?". Именно для них я стараюсь подобрать "усреднённые настройки" вроде тех, что приведены в самом конце, поэтому данная заметка рассчитана не на специалиста, а на среднестатистического студента.

Но иногда встречаются люди, которым действительно интересно, где же что есть в VRay. Часто это студенты, которые закончили институт, пошли работать и обнаружили, что им это надо. Теперь чтобы не повторяться по многу раз всех можно будет отсылать к этому уроку. И тех, кому интересно, и тех, кто просто ищет "средние настройки".

Примечание 3: Когда я писал название "Несколько слов о настройках VRay", я не знал, что заметка "распухнет" до таких размеров, но название мне нравится так что пусть остаётся.

Гамма

В случае, который мы будем рассматривать, гамма - это "сдвиг" серой точки. Звучит страшновато, но смысл простой - картинка становится светлее. Итак, гамма 1.0 и гамма 2.2

Как видно, при гамме 2.2 (и вообще при гамме больше 1) картинка получается более "выцветшая": тени светлее, контраст между тёмным и светлым меньше. Для тех, кто знаком с Adobe Photoshop это можно представить как использование команды Levels со значением серой точки 2.2

То есть чёрный цвет остаётся чёрным, белый остаётся белым, а вот средние значения высветляются. Почему же не сделать высветление в фотошопе уже после рендера в 3DStudio? После применения Levels цвета могут превратиться в другие, в то время как в 3DStudio "высветление" касается прежде всего освещения. Посмотрим на примере. Сделаем 3 картинки: рендер в гамме 1.0, в гамме 2.2 и в гамме 1.0 с применением Levels.

Если присмотреться, то видно, что гамма 2.2 затронула только тени. Там, где при гамме 1.0 тени выглядят чёрными, при гамме 2.2 в тенях можно разобрать детали. Цвет же текстур и объектов остаётся одинаковым (хотя надо отметить, что в данном примере для цвета шариков была использована карта коррекции цвета под гамму VRayColor, но обычно люди работают в одной гамме, поэтому даже не обязательно знать где она находится, а текстуры корректируются автоматически). А вот при гамме 1.0 и команде Levels цвета "съехали". По чёрно-белому градиенту даже видно, как именно они "съехали": серая точка сдвинулась ближе к чёрному цвету.

Выставление гаммы

В 3DStudio из верхнего меню выбираем Customize/Preferences. Сверху выбираем закладку Gamma and LUT. Для интересующихся LUT - сокращение от lookup table, примерный перевод "таблица соответствия", то есть таблица, где некоему входному значению соответствует некое выходное. Для гаммы мы "говорим": вот этому тёмному цвету соответсвует вот этот светлее, в результате тени на рендере не такие тёмные.

Галочки:

Gamma/LUT correction - включить корректировку гаммы. Включаем галочку.

Load Enable State with MAX files - если вы загружаете файл с другими настройками гаммы, то настройки сразу загрузятся. Например, вы работаете с гаммой 2.2, а открываете файл с гаммой 1.0. При включённой галочке настройки гаммы выставятся на 1.0. Если галочка отключена, то Max при открытии такого файла "спросит", что делать с гаммой. В принципе, если вас не испугает вопрос про другую гамму при открытии файла (теперь уже не должен бы испугать), то можно эту галочку не включать.

Gamma: 2.2 - собственно то, где выставляется гамма.

Affect Color Selectors - влиять на выбор цвета. При гамме 2.2 цвет получается "выцветшим". Если вы выбираете цвет, например, в редакторе материалов и хотете видеть, каким он будет при гамме 2.2, то включаете эту галочку. Теперь при выборе цвета серая точка смещается ближе к чёрному. С выключеной галочкой мы видим цвета в гамме 1.0, с включённой в гамме 2.2. Сравните окна выбора цвета с выключенной и с включённой галочкой (второй вариант явно светлее).

Если вы хотите выбирая цвет видеть его таким, каким он будет на рендере, то эту галочку надо включить. Лично я её включаю.

Affect Material Editor - влиять на редактор материалов. При отключённой галочке в редакторе "шарики" материалов показываются в гамме 1.0, то есть темнее, чем будут на рендере, при включённой - в гамме 2.2. Лично я её включаю.

Input Gamma: 2.2 - при загрузке текстур они автоматически будут преобразовываться в гамму 2.2. То есть на рендере мы будем видеть текстуры такими, какие они были бы в гамме 1.0.

Выставление гаммы в настройках VRay.

После выставления всех настроек в Preferences и нажимания кнопки ОК переходим в настройки VRay. Сверху выбираем закладку VRay. В свитке Frame buffer ставим галочку Enable built-in Frame Buffer. Теперь рендер будет производится в специальном окне VRay.
В свитке Color Mapping ставим Gamma: 2.2. Это значит, что VRay теперь работает в гамме 2.2 ("светлит" картинку). По сути, в настройках макса мы дали команду корректировать цвета и загружаемые текстуры под гамму 2.2, а в настройка VRay дали команду считать в этой гамме.

Антиалиасинг (сглаживание)

Если вы не знаете, что такое алиасинг и антиалиасинг, то можете посмотреть в интернете. Вкратце (цитата из википедии): http://ru.wikipedia.org/wiki/Сглаживание


Основной принцип сглаживания — использование возможностей устройства вывода для показа оттенков цвета, которым нарисована кривая. В этом случае пикселы, соседние с граничным пикселом изображения, принимают промежуточное значение между цветом изображения и цветом фона, создавая градиент и размывая границу.

В общем можно сказать, что антиалиасинг - это то, как сглаживаются пикселы на границах контрастных цветов.
В настройках вирея антиалиасинг выставляется в закладке VRay в свитке Image Sampler (Antialiasing). Можно поставить галочку On и выбрать из выпадающего меню возможные варианты. По умолчанию антиалиасинг включён и выбран пункт Area.

Теперь посмотрим разницу при увеличении. Я взял варианты: отключённый антиалиасинг, Area (по умолчанию), Catmull-Rom и Mitchell-Netravali. Конечно, в некоторых случаях разницу реально можно увидеть, только поставив картинки как слои в фотошопе и включая/отключая их. Но всё равно присмотримся.

Отключённый антиалиасинг и Area. На Area картинка как будто немного размыта, это заметнее на контрастных краях. В фотошопе похожего эффекта можно добиться, применив фильтр размытия по Гауссу с радиусом около 0.2 пиксела. То есть значения соседних пикселов чуть-чуть "усредняются".
Catmull-Rom и Mitchell-Netravali действуют по-другому. Вдоль тёмной границы добавляется светлая полоска, вдоль светлой - тёмная (в Mitchell-Netravali больше настроек, которые позволяют менять результат от почти незаметного до такого, что Catmull-Rom нервно курит в сторонке). В результате картинка выглядит более резкой, хотя это просто обман зрения. На самом деле это полезно, но с моей точки зрения проще отрендерить картинку без антиалиасинга, а потом в Photoshop применить фильтр Unsharp Mask или Smart Sharpen (в Photoshop верхнее меню Filter/Sharpen), которые делают то же самое, но с большим количеством настроек а, главное, без необходимости пересчитывать картинку, если что-то не понравилось.

Image Sampler.

Находится в закладке VRay в свитке Image Sampler (Antialiasing), по умолчанию выбран Adaptive Subdivision (адаптивное разбиение). Два других варианта Fixed и Adaptive DMC. Настройки Image Sampler Расположены в отдельном свитке. При этом если изменить Adaptive Subdivision например на Adaptive DMC, то название свитка с настройками изменится аналогично.

В сильно упрощённом виде: чтобы рассчитать цвет одного пиксела, компьютер рассчитывает, какого цвета объект находится на месте этого пиксела. Но, допустим, на месте одного пиксела находятся два объекта разного цвета. Тогда для реалистичности надо рассчитать два цвета, а результирующим цветом будет смешение этих двух. А если ещё больше цветов попадут на один пиксел? Для решения этого вопроса используется метод Image Sampler. Например, фиксированный метод (Fixed) разбивает каждый пиксел на заданное количество частей, считает цвет в каждой из них и результирующий цвет - среднее аримфетическое этих цветов. Adaptive Subdivision и Adaptive DMC - так называемые адаптивные сэмплеры. То есть если на пиксел приходится большая одноцветная поверхность, то они не будут разбивать пиксел на много мелких частей, а если встретят мелкие детали, то будут. В этом они отличаются от Fixed, который разбивает пикселы на более мелкие части независимо от того, какие объекты туда попадают.
В общем и целом, если у вас в сцене есть много мелких деталей и(или) эффекты размытости такие как размытые отражения (reflection glossiness) или глубина резкости, то лучше выбирать Adaptive DMC. Кроме того, он требует меньше оперативной памяти. Обычно для интерьеров он предпочтительнее, потому что размытые отражения на материалах мебели или паркета - обычная вещь.
Чтобы лучше понять, как работает Image Sampler, возьмём картинку с большим количеством мелких деталей (но пока что без отражений). Картинка посчитана Adaptive DMC с настройками по умолчанию.

Посчитаем ту же картинку с Adaptive Subdivision также с настройками по умолчанию (то есть так, как настройки выставлены, если просто поменять рендер на VRay).

Разница в скорости ощутимая: 27 секунд против 18, поэтому рассмотрим, почему второй метод оказался почти в полтора раза быстрее.

Разница именно в том, что у нас исчезли мелкие детали. Но не совсем правильно говорить, что сэмплер хуже, просто у него есть настройки, которые можно менять. Посмотрим на настройки Adaptive Image Sampler в свитке Adaptive Subdivision Image Sampler. Там есть параметры Min Rate и Max Rate, которые по умолчанию установлены -1 и 2, увеличивая эти значения, мы улучшаем качество мелких деталей. Чем больше цифры, тем лучше качество. При значениях Min rate:0 и Max rate:3 мы получаем вполне сопоставимое с Adaptive DMC качество. Но и время рендера получается практически таким же.
Кроме этого надо учитывать ещё один момент - если рендерить картинку не 640*480, как в этом примере, а в большом размере, то и мелких деталей будет "пропадать" меньше, потому что на большом формате они станут занимать больше пикселей.

У Adaptive DMC Sampler тоже есть настройки. Только вместо Min rate и Max rate качеством управляют Min subdivs. и Max subdivs. По умолчанию выставлены значения 1 и 4.

Цифры 1 и 4 неплохо подходят для рендера. Эти числа в квадрате - значения, на сколько частей будет разбиваться пиксел. То есть минимум - это 1 в квадрате=1 (пиксел не разбивается), а максимум - это 4 в квадрате =16 (пиксел разбивается на 16 частей, рассчитывается яркость каждой части, потом высчитывается среднее значение). Хотя для более качественного рендера вторую цифру можно увеличить и не обязательно, что это сильно скажется на скорости. Некоторые ставят там 100, и на скорость это особо не влияет, потому что очень мала вероятность того, что попадётся пиксел, который придётся разбить на 10000 кусочков.
Конечно, если вы хотите увеличить скорость рендера, то вторую цифру можно уменьшить. Это может пригодиться например, пока вы настраиваете свет в сцене и хотите быстрее видеть результат. Не надо также думать, что увеличение этих цифр, особенно первой, много даст (кроме увеличения времени рендера). Зачастую результат можно будет реально увидеть, только если сравнить две картинки.

Sub-pixel Mapping и Clamp Output.

Эти два параметра находятся настройках в закладке VRay в свитке Color Mapping.

Некоторые их всё время включают, другие, наоборот, всё время выключают. Чаще всего две этих галочки рекомендуют включать, есть у вас на рендере появляются отдельные "засвеченные" пикселы. Но неплохо бы узнать, что же делают зти галочки. Цвет картинки при расчёте не просто варьируется от чёрного до белого. Например, лампочки "белее", чем просто "белый цвет" (поэтому от них и отражение сильнее). Представим это так: чёрный цвет:0, белый цвет:1. Соответственно, серый будет 0.5, и вообще градации цвета идут от 0 до 1. Светящиеся объекты имеют яркость больше 1. На рендере они будут показываться белым, но "внутри" компьютер будет знать, что они ярче.
Простой пример - небо. Компьютер "знает", что небо синее, но его яркость больше 1 и на рендере небо получается белым. И есть под этим небом объект со слабо отражающим материалом. Компьютер берёт цвет неба, ослабляет его для отражения и оказывается, что в отражении цвет неба уже меньше 1 и в отражении видно, что небо синее.
Clamp Output "срезает" в итоговом изображении на рендере цвета ярче заданного уровня (по умолчанию 1.0 - цифра справа от Clamp Output под названием Clamp Level). Если просто поставить галочку Clamp Output, то разницы особо не видно. Но, чтобы понять, что же это такое, можно уменьшить Clamp Level. Например, поставив Clamp Level 0.5, мы на финальном рендере "срежем" все цвета ярче серого.

(Примечание: почему плоскость, на которой стоит чайник, получилась пятнистой и как от этого избавляться, будет рассмотрено в разделе про отражённый свет Indirect Illumination)
Хотя пока что ещё неясно, зачем нам нужны такие эффекты. Тем более, что по умолчанию Clamp Level стоит 1.0, то есть он "срезает" любой засвет до белого цвета, но засветы на рендере и так показываются белым.
Сначала надо разобраться, что же делает вторая интересующая нас галочка Sub-pixel Mapping.
Как мы знаем (или подразумевается, что мы знаем), при расчёте цвета пиксела он разбивается на более мелкие части. Представим себе, что пиксел разбили на 4 части, посчитали цвет в каждой из них, а потом показали усреднённый цвет. Но мы работаем в гамме 2.2, поэтому к итоговому рассчитанному пикселу применили цветокоррекцию под гамму 2.2. Теперь включаем галочку Sub-pixel Mapping. Пиксел так же разбивается на 4 части, считается цвет в каждой из них, после чего к каждому посчитанному кусочку применяется гамму 2.2, и только после этого считается усреднённый цвет.
То есть без галочки Sub-pixel Mapping цветокоррекция применяется к итоговому пикселу, а при включённой галочке цветокоррекция применяется к каждому "кусочку" пиксела, и только потом считается итоговый цвет.
Теперь, когда вероятный читатель уже начал ломать свой мозг, пытаясь понять, как же это применять, время показать на практике, как оно работает. Если у нас вообще нет цветокоррекции, то есть стоит гамма 1.0 и в свитке Color Mapping выбран Linear Multiply с параметрами Multiplier по 1, то разницы практически не будет.

В самом деле, какая разница, в каком порядке применять цветокоррекцию, если цветокоррекции нет?
Поэтому вместе с галочкой Sub-pixel Mapping поставим ещё и галочку Clamp Output. Многие знают, что если на рендере появляются отдельные "засвеченные" пикселы, то две эти галочки помогают. Но вот почему? Предположим, у нас есть пиксел, разбитый на 4 части. При расчёте в трёх частях яркость 0.5 (серый цвет), а в четвёртой 2.5 (например, отражение лампочки).

С отключённой галочкой Sub-pixel Mapping компьютер "считает": посчитать все значения, потом сложить их, разделить на количество частей: (0.5+0.5+0.5+2.5)/4=1 и применить Clamp Output: срезать весь цвет ярче 1. Но цвет и так 1, так что итоговым цветом получаем 1.0 (белый).
Теперь включаем галочку Sub-pixel Mapping. Компьютер посчитал все четыре значения и ТУТ ЖЕ применил к ним Clamp Output. В результате значение 2.5 "срезалось" до 1.

И уже после этого компьютер считает итоговый цвет: складывает все значения и делит на количество частей: (0.5+0.5+0.5+1.0)/4=0.625 То есть получаем светло-серый цвет.
На первый взгляд, из этого примера получается, что реалистичному цвету наступает капут: разница в яркости почти в четверть от нужного - это много. Но не надо забывать, что это просто пример. В реальности галочки Sub-pixel Mapping и Clamp Output чаще всего приглушают отражения, делают их более сглаженными. При этом сам по себе Clamp Output практически не влияет на результат, а вот в сочетании с Sub-pixel Mapping он "глушит" засвеченные пикселы со страшной силой (и теперь мы знаем, почему так происходит).

Собственно, минусы установки этих двух галочек вытекают из их плюсов: они "глушат" яркие отражения там, где отражения должны быть. Но вот вопрос что нам важнее - немного больше реализма или немного больше "красивости" решается отдельно для каждого случая. В общем-то, если мы хотим больше реализма, но нам не нравятся отдельные "неправильные" засветы, то вместо этих галочек можно просто поставить повыше качество в Adaptive DMC. То есть представим себе, что пиксел в нашем примере бьётся не на 4 части, а, например, на 64. В этом случае у нас невозможен вариант когда у рядом стоящих частей такая большая разница в яркости. Конечно, тогда возникает вопрос, готовы ли мы к увеличению времени рендера в несколько раз. Если изначальная картинка считается 5 минут, то полчаса за более реалистичные отражения - это немного. А вот если у нас интерьер, которые считается час?
Для примера сравним три картинки: первая без коррекции, вторая с двумя галочками (Sub-pixel Mapping и Clamp Output), третья без коррекции, но в настройках Adaptive DMC оба min и мах subdivs поставлены по 10 (каждый пиксел независимо от того, какие объекты в него попали, разбивается на 100 частей).

Как видим, в первом случае есть отдельные яркие пикселы, во втором случае уменьшаются отражения на некоторых кромках, а в третьем случае всё красиво, но считает раз в десять дольше. И, прежде чем делать окончательные выводы, вспомним, что рассматривать картинку при большом увеличении - это хорошо теоретически, но работу будут принимать глядя на картинку целиком.
Две картинки: первая с выключенными галочками Sub-pixel Mapping и Clamp Output, вторая с включёнными:

Если присмотреться, то видно, что на второй картинке исчезли некоторые засвеченные пикселы и отражения стали чуть темнее, но я бы не сказал, что общий результат сильно изменился. Лично я обычно включаю обе галочки. Пусть отражения чуть менее яркие, но зато и засвеченных пикселов нет.

Indirect Illumination (Ненаправленное овещение).

В реальной жизни свет отражается и переотражается от объектов. Посветив в тёмной комнате фонариком в потолок мы увидим всю комнату в отражёном от потолка свете. Если на светлой поверхности лежит освещённый предмет, то от поверхности на предмет попадают рефлексы, подсвечивая объект снизу. И так далее, и так далее, поэтому для достижения реализма в 3D без расчёта отражённого света не обойтись.
В VRay отражённый свет настраивается в закладке Indirect Illumination. В свитке Indirect Illumination ставим галочку On (включили расчёт отражённого света).

Дальше в свитке Irradiance Map ставим галочки Show Calc Phase и Show Direct Light. Эти галочки не влияют на конечный результат, но в процессе расчёта показывается примерная яркость финальной картинки. Кроме того, пока мы настраиваем яркость света, в выпадающем меню Current Preset можно поменять качество с High (высокое) на Very Low (очень низкое).