FRYRENDER

FRYRENDER
уроки

PHYSICALY

PHYSICALY
материалы

RENDER

RENDER
документация

ENGINE

ENGINE
тесты

Six classic glasses

February 2, 2010


Шесть классических стаканов в современном стиле для охлаждающих напитков в жаркий зимний вечер. Ноль градусов по нынешней зиме это просто адский жар )
Материал стекла практически стандартный из библиотеки FryRender, а вот с лимоном доэкспериементировался до того, что сделал один из трех слоев материала - диэлектриком (стеклом), пока не получилось то, что и представлено на изображении. Позже есть идея сделать этот же мат "нормальным",  классическим образом, с использованием подповерхностного рассеивания (ССС).

Большое изображение:

Fryrender user manual (Material Editor). Part II

Свойства слоя

Есть два типа слоев материала в Fryrender:
• Emitter layers, генерирующих свет с настраиваемыми тоном и интенсивностью. Они используются для создания искусственных источников света, таких как световые панели, лампочки, и т.д. ... Заметьте, что в Fryrender, источники света добавляются в сцену путем создания геометрии к которой применяется материал с Emitter layers. Emitter layers достаточно прост и имеет только один набор свойств.
• Basic layers, слой используется для любого материала, не только излучающего, но и отражающего/поглощающего свет. Basic layers служит для отражений, преломлений и пропускания света. Его свойства очень гибки, так как они способны воспроизводить все обычные оптические свойства, фиксируемые камерой или человеческим глазом. Все параметры, ответственные за эту гибкость сгруппированы в 4 подгруппы свойств (basic / transmittance / sss / coating).
Обратите внимание, что материалы могут быть изготовлены из любого количества слоев, а также отметить, что оба типа слоев могут быть объединены в случае необходимости. Однако, большинство слабо отражающих свет материалов, пластмасс, металлов и диэлектриков изготовлены из одного или двух Basic layers. ...

Вес слоев
Первая группа свойств используется для настройки веса слоя. Как объяснялось ранее, все слои материала суммируется вместе, после того как они умножены на их веса. Например, в 2-х слойном материале с условными слоями L1 и L2 и весом слоев W1 и W2 общий результат будет рассчитан так:
( W1 • L1 + W2 • L2 ) / 100
Или если вес первого слоя 80%, а второго слоя 20%, получаем следующее:
L1 • 0.8 + L2 • 0.2
Таким образом вес слоя определяет вклад каждого слоя в итоговый результат. Другими словами W1 процентов света будет отражено слоем L1 и W2 процентов слоем L2.
Как говорилось ранее общий вес слоев не должен превышать 100%. Физически правильные материалы - обязаны соответствовать закону сохранения энергии. Это значит, что количество отраженного света должно всегда быть меньше количества падающего света. Т.е. выражение:
W1 + W2 + … ≤ 100%
служит для соблюдения закона сохранения энергии. В дереве слоев материала отображается предупреждение, если это условие не выполнено, как показано на рисунке.
Вес слоя может быть указан как в процентах так и монохромной картой. Заметьте, что если используется карта, процент перемножается с ней . В этом случае карта интерпретируется следующим образом - абсолютно черные точки это 0%, а абсолютно белые точки карты это вес указанный в процентах. Например если вес слоя задан 75%, то вес карты преобразуется в диапазон [0%...75%]. Однако в большинстве случаев когда используется карта, значения процентов оставляют равным 100%, следовательно карта никак не модифицируется.
пример материала полученного с использованием веса слоев

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



Основные свойства (Basic properties)


Отражения (reflectance)


Наиболее характерной чертой каждого слоя материала является его отражение (а точнее, его цвет). С теоретической точки зрения, цвет отражения - это та часть цветового спектра, который поверхность не поглощает. Как видно на рисунке ниже, поверхность с голубым отражением - та, где все падающие на поверхность длины волн спектра кроме синей поглощены, в то время как синяя отражается.
Большинство материалов, в особенности полированные, по разному отражают свет на своей фронтальной, с точки зрения камеры или глаза, поверхности (близко к 0º) или боковой поверхности (близко к 90º). Вот почему вкладка отражений слоя имеет два параметра (коэффициенты): REF0º и REF90º. Рисунок ниже показывает, как влияют оба параметра на цвета отражений однослойного материала.
Обратите внимание, что REF0º используется на фронтальной поверхности, REF90 º на боковой, а линейно рассчитываемый переход цветов, используется на промежуточных углах поверхности. Следует также отметить, что для большинства материалов следует использовать полностью белый REF90º. Так обстоит дело у пластмасс, металлов и диэлектриков (в основном), которые становятся практически зеркальными по краям. По умолчанию fryender устанавливает REF90º полностью белым для каждого слоя, для вашего удобства. Небелый цвет REF90º используются только для достижения определенных, необычных эффектов таких, какие есть у атласных или бархатных материалов.
Имейте в виду, что, поскольку Fryrender физически корректный рендер, чем более близким к действительности будет ваш подход к созданию материала, тем более фотореалистичнее будут выглядеть ваши рендеры. Коэффициенты отражений - это то, с чем вы должны быть особенно осторожны. В реальной жизни абсолютно черных, совершенно белых, и даже чересчур ярких насыщенных тонов просто не существует. Таким образом, и это является одним из наиболее важных советов в данном руководстве: всегда назначайте цвета в безопасном, реалистичном диапазоне. Это правило, которому можно меньше следовать для коэффициента - REF90º, но к которому никогда не следует легкомысленно относиться для коэффициента - REF0º.


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


Этот, так называемый, безопасный диапазон формируется всеми цветами RGB, где все три R, G, B компоненты должны оставаться по меньшей мере в 30-40 единицах от 0 и от 255. Например, никогда не использовать RGB = 0,0,0 для черного цвета. Используйте RGB = 32,32,32 или что-то близкое к этому. Что еще более важно, никогда не используйте RGB = 255,255,255 для белого цвета. Используйте RGB = 215,215,215 или опять-таки близкие к этому значения. Обратите внимание, что для того, чтобы не ограничивать вашу свободу Fryrender не ограничивает цвета RGB принудительно. Таким образом, ответственность сохранить цвета в вышеупомянутом безопасном диапазоне, лежит на самом пользователе.
Выход цветовых значений за границы безопасного диапазона, не просто поставит под угрозу реалистичность изображения, это также может быть серьезной проблемой для эффективности расчета сцены. Как объяснялось выше, коэффициенты отражений - это количество падающего света, который материал заставляет отскочить (отразиться). Если материал будет настолько яркими, что он отклоняет весь или почти весь входящий свет, нет поглощения энергии, которая может привести к энергетической перегрузке сцены. Это приведет к гораздо большему времени визуализации, и даже появлению порошкообразного шума, который никогда не исчезнет до конца. Эта ситуация невозможна в реальном мире, поэтому вы должны быть очень осторожны, чтобы избежать этого, когда настраиваете ваши материалы.
Рисунок ниже показывает, какое влияние оказывают на сцену два белых материала, в первом случае для REF0º используется RGB = 215,215,215 (выглядящий правильно) и RGB = 255,255,255 (энергетическая перегрузка).

Индекс преломлений/рефракции (ND)

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

ND управляет индексом преломления материала, а так же и Френель отражениями.

Визуально мы можем контролировать ND как кривую Френеля, представленную оранжевым графиком в окне редактора материалов (см. рисунки выше). Кривая Френеля представляет собой связь между углом падения света (от 0º до 90º)  и величиной отражения материала. Кривая Френеля всегда на максимуме у 90º, а левая ее часть будет выше или ниже в зависимости от значения ND. Слои с низким ND будут давать слабые отражения с фронтальной части объекта (у 0º) и высокие отражения по краям (у 90º), а слои с высоким ND продемонстрируют "тонкий" эффект Френеля (высокие отражения независимо от угла).
ND = 1,3 | 1,7 | 2,5 | 5,0 | 25,0

Диэлектрики, такие как, вода (ND=1,33), стекло (ND=1,51) или алмаз (ND=2,5) имеют низкий показатель ND. Металлы имеют высокие или даже очень высокие показатели ND (от 20 и выше).  Идеально отражающее зеркало можно создать установив значение ND в максимальное значение 100. Точный индекс преломлений для того или иного материала легко можно найти в интернете, например тут или тут.
Обратите внимание, что степень эффективности ND зависит от параметра шероховатости (roughness) и оказывает большее влияние на полированные материалы, чем на нешлифованные. Из-за этого цвет, указанныйв параметре REF90º  менее выражен у нешлифованных материалов, чем у полированных. ND и REF90º абсолютно не затрагивают lambertian-материалы (roughness=100).

"Перевод официального руководства пользователя" автор: Feversoft (2009)
перевод: мой (2-я часть) В ПРОЦЕССЕ !!!оригинал: randomcontrol.com

Camera motion blur

January 30, 2010

"Motion Blur, термин, который пришел из фотографии, относится к эффекту "смазывания", которое происходит, если объекты перемещаются на значительные расстояния, в то время, как шторка фотоаппарата открыта (object motion blur). В действительности, объект "растирается" вдоль снимка во время экспозиции, создавая ощущение размазанности. Также этот эффект может появиться, если во время экспозиции быстро перемещается камера (camera motion blur) - в этом случае размазанным получается все изображение (причем чем ближе к камере тем сильнее)." (с)
FryRender поддерживает camera motion blur на уровне рендера, а object motion blur через Velocity channel и последующую постобработку в специализированных программах.

Цель урока изучить каким образом получается сamera motion blur в фрайрендере, а так же как и какие параметры оказывают на этот эффект наибольшее воздействие и получить изображение с motion blur в кaком-то одном самом выигрышном кадре анимации.

Итак для начала создаем сцену в которой и будет происходить все действие. Подробности опущу, вряд ли они кому-то неизвестны. Остановлюсь лишь на первых важных параметрах для создания эффекта motion blur - скорости движения камеры и количества кадров в секунду (FPS). Для этого придется моделировать дорогу, имеющую реальные размер 1 км (1000000 мм). Камера будет проходить этот участок за 1000 кадров (25 кадров в секунду), соответственно за 40 секунд, а значит со скоростью 90 км/ч. Машины будут двигаться навстречу с такой же скоростью, а это означает, что общая скорость камеры относительно автомобилей будет равна - 180 км/ч. Весь этот перевод нужен только для удобства. Все-таки привычнее ориентироваться в км/ч, а не в мм/сек. Третий важнейший параметр это shutter speed в настройках камеры, измеряемый в долях секунды (1/s). Ниже представлены три изображения с разным значением shutter speed.

Выставляем в настройках рендера 3д-редактора (я использую 3dx max 2010) в Common parameters 2 кадра (для этой конкретной сцены естественно) на которых машины будут ближе к камере - 480 и 481. Почему два? Потому, что фрайрендер не рендерит motion blur в одном статичном кадре. Или у меня не получилось :) Затем в настройках фрайрендера ставим в закаладке Output Configuration - Full Animation Rаnge для рендера всех кадров анимации. Первый из них и будет тот, что нам нужен.
Необходимо помнить, что чем меньшее значение shutter speed мы используем (1/15, 1/30, 1/60), тем меньшее размытие получаем. Иными словами за 1/60 секунды камера успеет пройти меньшее растояние, чем за 1/15 секунды, следовательно и объекты будут размыты слабее.

Теперь проверим как повлияет скорость движения камеры на motion blur. Уменьшаем количество кадров за которое камеры проходит наш участок дороги в 2 раза, до 500 кадров. Скорость возрастает тоже в 2 раза, до 180 км/ч. Машины так же ускоряем в 2 раза. Теперь скорость камеры относительно автомобилей равна - 360 км/ч. Смотрим что получилось:
Эффект размытия очень сильный, но не такой как был на первом из трех изображений. Получается надо грамотно и творчески подходить к подбору соотношения между скоростью камеры и shutter speed, т.к. эффект будет выглядеть совершенно по разному при скорости скорости камеры увеличенной в 2 раза с постоянным shutter speed и постоянной скоростью с shutter speed увеличенным в 2 раза.

Сцену урока с текстурами (кроме хдрки) можно скачать ниже:
Scene (2010 max)

"Эффект размытия при движении камеры." автор: Art (2010)
перевод: нет оригинал: BBA

Local normal mapping

January 29, 2010

Карты нормалей – это что-то среднее между технологией bump и displacement. Главная проблема при этом – как сделать карту. Если карты бампа и дисплейсмента можно нарисовать (ведь это всего лишь черно-белое изображение), то карты нормалей представляют собой координаты векторов, описанные через значения цвета в RGB. Поэтому карты нормалей нельзя создать без специальных инструментов. Fryrender версии Beta1.7 предоставляет простой механизм создания карт нормалей из существующей геометрии, на основе технологии ядра Layer Compositing. Чтобы продемонстрировать это, мы создадим материал шара для гольфа, используя карту нормалей, чтобы симулировать углубления в поверхности.

Создаем углубления.
Сперва, нам нужно геометрией создать поверхность, к оторую мы хотим симулировать картой нормалей. Для этого мы создадим плоскую поверхность, и сделаем subtract нескольких сфер.
слева созданная поверхность и сферы, справа - поверхность после применения булеана

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

Рендер карты нормалей.
Теперь, добавьте в сцену FRY Target камеру (можно не менять установки камеры по умолчанию). Установите камеру точно по центру нашей плоскости, и убедитесь в том, что она направлена сверху вниз, перпендикулярно к плоскости, и что плоскость с углублениями находится в фокусе, как показано ниже на рисунке.
Выберите в настройках рендера тип ядра FRY R2 - Layered Compositing, а затем установите в поле Layer type - Normals Buffer. Не меняйте остальные параметры.
Теперь отрендерьте сцену, и вы получите изображение, как на рисунке ниже. Это и есть карта нормалей. Полученная карта будет преимущественно голубого цвета, где каждый пиксель описывает координаты вектора по средствам значения каналов RGB. Канал R соответствует координате по оси X, G – по оси Y, и B – по оси Z, таким образом, что:
R = (X / 2 + 0.5) • 255
G = (Y / 2 + 0.5) • 255
B = (Z / 2 + 0.5) • 255
или, что одно и то же:
X = (R / 255 - 0.5) · 2
Y = (G / 255 - 0.5) · 2
Z = (B / 255 - 0.5) · 2
Нормаль, это всегда нормализованный вектор (или единичный вектор – вектор, длина которого равна единице выбранного масштаба), не равный нолю. Это значит, что:
X·X + Y·Y + Z·Z = 1
Потому, в карте нормалей возможно использовать не любые цвета, а только те, которые соответствуют координатам нормализированного вектора. Так как мы рендерим плоскость, которая располагается перпендикулярно к камере, то основная часть номалей будет иметь координаты (0,0,1) и будет направлена вдоль оси Z. Используя формулу, приведенную выше, получаем, что RGB, описывающее координаты такого нормаля, будет равным:
R = (0 / 2 + 0.5) · 255 = 127
G = (0 / 2 + 0.5) · 255 = 127
B = (1 / 2 + 0.5) · 255 = 255
Вот почему в карте нормалей преодбалает голубой цвет, и почему их нельзя нарисовать вручную, как, например, карты высот для bump или displace.
Преимущество карты нормалей в том, что с их помощью могут быть симулированы любые изгибы, морщины и трещины на поверхности. Вы также можете сделать карту, в которой нормаль будет направлен во внутрь поверхности, в то время как при использовании обычных карт высоты, вы не можете менять направления вектора, а только его длину.
слева – полученная после рендера карта нормалей, справа – более аккуратная бесшовная карта
Обратите внимание, что плоская поверхности отображается на карте голубым цветом (координатам 0,0,1 соответствует цвет 127,127,255), в то же время, левая часть углублений имеет красноватый оттенок (так как с изменением направления вектора по оси X, изменяется и значение красного канала в RGB).

Результат.
Материал мяча для гольфа – это просто пластик. Мы сделаем в материале два слоя, и в обоих слоях должна использоваться наша карта нормалей. В первом слое будет использоваться карта diffuse, второй слой – с сильным specular отражением. Соотношение веса слоев будет 85% для diffuse и 15% для specular, параметр roughness для слоя со specular поставим 5.
Обратите внимание на то, что наша карта нормалей по высоте почти в два раза меньше чем по длине, потому нам надо установить разное число повторений отдельно для координат U и V в настройках карты во fryrender. В нашем случае, это 18 и 10 соответственно. Также необходимо выбрать тип карты - Normals map (показано на Рисунке 6). Установки для карты нормалей должны быть одинаковы для слотов bump обоих слоев. И вот результат:

Заключение.
Карты нормалей, это эффективная (и в то же время экономная, с точки зрения использования ресурсов компьютера) технология детализации модели. Она гораздо более точная, по сравнению с bump. Недостаток же карт нормалей в том, что процесс их создание куда сложнее. В этом уроке была продемонстрирована простая техника создание карты нормалей, с использованием технологии ядра fryrender - Layered Compositing. Удачного меппинга!


"Карты нормалей: создание и использование карт нормалей." автор: Chema Guerra (2007)
перевод: Arhat оригинал: randomcontrol.com

Piggybank

January 23, 2010


Свинья-копилка. Необходимо было получить материал пластика с сильным эффектом подповерхностного рассеяния, напоминающий пластик из которого изготовлены детские игрушки советской эры.
Для начала делаем 1 слой, включаем ССС (режим - изотропик). Для того чтобы эффект ярче себя проявил уменьшаем density до 0.25 (1/см). Параметр абсорбции делаем равным 5 (см). При меньшем значении свет будет хуже проходить в объект и делать материал гораздо темнее, при более слабом эффекте ССС, при больших значениях свет будет слишком глубоко проникать  объект и делать эффект ССС слишком выраженным (другими словами места куда будет попадать направленный свет, станут слишком светлыми). В данном материале для слота ССС использован не просто цвет, а градиент, помогающий разделить объект на две половины - более светлую верхнюю и более темную - нижнюю.

Очень хорошо поведение параметров ССС описано в этом уроке.

В заключении добавим второй слой отвечающий за отражения. В нем мы можем разместить в слоте бампа какую-либо карту, чтобы придать неоднородность нашему материалу. Почему именно во втором слое? Потому что в первом слое параметр roughness = 100% и примененный бамп не окажет никакого влияния на создаваемый материал. Итог опытов (без текстур) можете скачать ниже. Большое изображение:


Material

Working with sun caustics

Зачем нужен этот урок?

Потому что нам необходимо знать, как добиться максимальной скорости рендера. Рендер объекта, который лежит на ровной плоскости и освещается солнцем – это то, с чем когда-нибудь сталкивается каждый. Давайте выясним, что надо сделать для того, чтобы fryrender работал в такой сцене максимально эффективно.

Когда вы настраиваете рендер на плоскости, возможно 2 варианта: если материал плоскости будет типа lambertian (полностью матовая поверхность, свет рассеивается по поверхности, и на объекте нет никаких отражений), тогда она не будет генерировать каустику (а будет только принимать ее), если это не lambertian материал, поверхность тоже генерирует каустику. Чем меньше плоскость, тем быстрее и чище будет рендер. Это заметнее всего при использовании не lambertian материалов. Избегайте использовать поверхность чрезмерно большого размера.


Типичный пример: поверхность, на которой лежат часы - слишком большая, и после 3 часов рендера, шум по-прежнему заметен. Причина в том, что материал пола дает много отражений, и программа вынуждена просчитывать каустику для всей поверхности, большая площадь которой даже не видна.

Как видно, после трех часов рендера, отражения и каустика по-прежнему очень шумные. Причина в том, что программа вынуждена просчитывать путь лучей света, которые даже не попадут в камеру. В данном случае нет смысла просчитывать рендер для 90 % площади поверхности, которая находиться в сцене.

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

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


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


"Работа с каустикой при использовании солнца" автор: Erwan Loison (2007)
перевод:  arhat оригинал: randomcontrol.com

Jerrycan & boiling flask

January 20, 2010


Пластиковая канистра и колба c реагентом. Материал канистры - двухслойный пластик с включеннм S5 в базовом слое и вторым слоем для отражений. Соотоношение слоев: 90% - базовый и 10% - слой рефлекта. Для освещения использовался набор HDRi, созданный с помощью простой и полезной утилиты - Smart IBL. Стекло и вода взяты из стандартной бибиотеки материалов Фрая, а скриншоты метериала пластика привожу ниже.

Материал пластика
1 слой:

2 слой:


Liquid in Glass

January 18, 2010


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

1. Первый шаг - моделирование формы стеклянного стакана.
2. Теперь выделите внутри формы ту ее часть, кторая будет вступать в контакт с водой, во вашей задумке, и отделите ее в отдельный объект.
ЭТО ЕДИНСТВЕННЫЙ СПОСОБ получить для FryRender правильное взаимодействие различных сред (воды и стекла в нашем случае)
3. Затем соедените верхние точки полученной формы линией, чтобы получить при вращении (модификатор `lathe') объект с замкнутым объемом.
Для большего реализма можно немного опустить только что созданную линию относительно двух ее крайних точек. Это позволит добиться эффекта капиллярности , присутствующего в реальной жизни, когда края жидкости, прикасающиеся к стенкам сосуда, располагаются немного выше остальной ее поверхности.

В качестве материалов стекла и воды, мы будем использовать материалы из стандартной библиотеки материалов рендера, но естественно можете использовать и любые материалы необходимыые вам. Чтобы результат был реалистичным, не забывайте, что для большинства стеклянных поверхностей ИОР (nd) = 1.5-1.6, а для воды обычно используют значение = 1.33.


Ниже представлены три наиболее распространенные ошибки при создании стеклянных объектов с жидкостью внутри. Эти методы моделирования дадут НЕВЕРНЫЙ результат.

"Жидкость в стеклянном стакане" автор: Feversoft (2009)
перевод: мой оригинал: randomcontrol.com