понедельник, 21 декабря 2015 г.

3ds max, photoshop, hydra render, nuke.

Советский бытовой радиоприёмник "Звезда-54".

"Ни один советский вещательный радиоприёмник не имеет такой интригующе-загадочной интимной истории, в которой смешалось всё - политика, культура, идеология и, не в последнюю очередь, радиотехника и производство.

Это первая и единственная ласточка, прилёт которой дал надежду на незначительную, но свободу. Пусть из Франции. Слегка революционную и буржуазную, без лишающей человека внутреннего мира общественной Парижской коммуны. В таком восприятии "Звезда-54" советская легенда!

С радиотехнической точки зрения "Звезда-54" являлась ординарным бытовым радиоприёмником и по существующему тогда ГОСТу относилась к 2 классу, то есть занимала промежуточную качественную нишу. Однако, по внешнему виду она выделялась среди всех современников так, как отличаются топ модели на подиуме от рядовых подружек, одевающихся в предложенные от кутюр, но уже серийно адаптированные для производства наряды. Основным вызывающим, если не шокирующим ощущением от радиоприёмника был советский пятиконечный краснозвёздный символ на абсолютно роскошном буржуазно-капиталистическом фоне, не говоря уже о наименовании. И тогда, в далёкие времена пятидесятых годов, и сегодня Звезда-54 не оставляет равнодушным никого, кто хотя бы мельком, случайно, увидел этот, безусловно по своей сути предмет эпохи или, как профессионально выражаются археологи, элемент культурного слоя. "





Оценить:
http://render.ru/gallery/work/109778#work

среда, 12 августа 2015 г.

Визуализация (свет, материалы, композ, эффекты).

Т.к. я вхожу в команду разработчиков отечественного GPU рендера "Hydra render", то периодически делаю виз на нём, для тестов и галереи.















Далее везде ментал рей.

Арт для файтинга.


Обложка диска.




 Арт на мотивы "Тралик и Валик".







Пилотная серия мультфильма. Визуализация без ГИ, в сцене порядка 100 источников света. На персонажах добавлены интерполированные диффузные отражения, аля окклюжен с колорблидингом. Доф и моушен блюр на композе. Все отражения фейковые, но начиная с небольшой дистанции. Рендерилась панорама 360 градусов из центра действия в кадре, и потом использовалась как энвайронмент для отражений, с менталовской нодой "Environment blur", которая интерполирует глосси для энвайронмента.








Проба с окклюженом.






Ещё одна пилотная серия. Здесь свет делал по другому, используя ФГ на короткой дистанции, остальное заливается амбиентом, ну и прямой свет. Свет немного жестковат, но времени допиливать уже не было. Отражения, доф, моушен блюр по обкатанной системе. 

суббота, 22 декабря 2012 г.

Progressive Rendering vs Unifield Sampling.

Сделал вот такой небольшой тест, Progressive render vs Unifield Sampling, 3d max 2013. Mental ray 3.10.1.12.

Sky Portal в "окне" с 2 семплами. Основной мат arch&design, глосснесс 0,3 - 1 семпл. FG - brutte force, 1 bounce, 1 ray.

Настройки:



   Время рендера у обоих картинок одинаковое. Внизу, увеличенные в фотошопе в 2 раза оригиналы.


Прогрессив лучше себя проявил в светлых областях, но немного проиграл в тенях. По картинке, я бы присвоил ничью. Надо ещё потестить с дофом и моушен блюром.

Сделал ещё один тест. На этот раз в Unifield выкрутил quality на полную, отрендерил и на это же время ограничил progressive, чтоб сравнить на максимальных (адаптивных) настройках. Unifield посчитал за 45 мин. 19 сек. А прогрессив остановился раньше, закончив на 13 мин. 43 сек. Прогрессив немного проиграл в тенях, но в целом кач-во сходное.


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

P.S. Если разрешение вашего рабочего стола меньше или равно 1280х1024, то картинки лучше открывать в отдельном окне. 

воскресенье, 16 декабря 2012 г.

The ray's intersection point.

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







понедельник, 27 июня 2011 г.

Альбедо в реалистичной визуализации.


   Всем привет. В этой статье я расскажу о понятии "Альбедо" и его значении в создании реалистичной визуализации. Начнём с теории. Вот его определение из физической энциклопедии:

   АЛЬБЕДО (от позднелат. albedo - белизна) - величина, характеризующая рассеивающую или отражательную способность поверхностей или космических тел. Используется в атм. оптике и астрофизике. В широком смысле А.- отношение потока отражённого (рассеянного) излучения к потоку падающего излучения. В теории переноса (рассеяния) излучения используется также понятие единичного А., т. е. отношение числа рассеянных во все стороны фотонов к числу падающих фотонов.

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

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

   Т.е., согласно понятию альбедо, получается, что для получения более реалистичного результата максимально белая диффузная поверхность в материале рендера не должна превышать значение 96% белого, это следует из приведённой далее таблицы. Конечно, искусству законы не указ, но меня здесь интересует чисто техническая сторона вопроса.

   Я не раз замечал, что в настройках рендера скачанных сцен для врея значение мультиплая вторички ГИ ставят около 0,75. Возможно, это как раз попытка решить проблему излишнего переотражённого света ввиду того, что все материалы созданы из расчёта, что белый имеет 100% альбедо. Но, в таком случае, необходимо ещё уменьшить и первичный отскок ГИ на то же значение, на которое уменьшен отскок вторичного ГИ. Чтобы первый отскок ГИ затухал так же, как и все последующие. Такой подход весьма прост, но не очень корректен, т.к. альбедо материалов останется прежними для зеркальных и глосси отражений. Что будет влиять на реалистичность.

   В рендере Mental ray есть похожие инструменты для уменьшения интенсивности последующих отражений в алгоритме Final Gather. Это параметр – «Weight» (вес). Находится он в настройках Final Gather. Работает он именно уменьшая интенсивность каждого следующего отскока, умножая текущую интенсивность на значение веса, а не уменьшая интенсивность всей просчитанной карты ФГ. Врей работает схожим образом. Я проверил это следующим образом. Сначала считалась простенькая тестовая сцена, с диффузным цветом равным единице (100% белый) и уменьшенными, равнозначными, значениями мультиплая ГИ для первичного и вторичного отскока. В ментале соответственно - мультиплай ФГ и вес. Обзовём эти значения переменной «X». Далее считалась картинка со значением диффузии равным «Х» и единичными значениями мультиплаев ГИ. Результаты схожие, что и позволяет говорить о параметрах мультиплая ГИ в врее и мультиплая и весе в ментале как о параметрах, работающих для каждого отскока ГИ. Тест провёл с разными значениями «Х».

   К сожалению, в ментале нет подобного регулятора для фотонов. Мультиплай в настройках фотонов уменьшает интенсивность всей просчитанной карты фотонов. Т.е. остаётся использовать только ФГ с переотражениями. А это, зачастую, намного дольше при расчёте замкнутых сцен с кол-вом диффузных переотражений больше 2-х. К сведению, при просчёте сцены связкой фотоны + ФГ параметр «Weight» игнорируется так же, как и "Diffuse bounces", т.к. это параметры вторичных переотражений, реализацией которых займётся включённая опция фотонов.

   Исходя из всего вышеизложенного, самым правильным будет редактировать материалы, выставляя значение «Diffuse Level» равным значению нужного нам альбедо. Можно менять просто интенсивность цвета, но при использовании текстур, а тем более многокомпонентных карт, проще менять Diffuse Level. Это, конечно, не очень удобно, т.к. придётся лопатить все материалы, но взамен мы получаем настройку не зависимую от алгоритма ГИ и корректную визуализацию отражающих (зеркальных) поверхностей.

   Теперь испытаем нашу методику на тестовой сцене. Я буду использовать ментал рей, фотоны + ФГ.

   Итак, поехали.

   3d max 2011, mental ray, гамма 2,2. Материал Arch&Design. На всех материалах Diffuse = 1(Альбедо = 1).Я специально сделал пол красным, т.к. нас ждёт сюрприз. Дело в том, что альбедо оказывает влияние на цветовой перенос, т.е. на так нашумевший «колор блидинг». Лучше не использовать чистый цвет, т.е. имеющий 100% насыщенность, т.к. в природе таких материалов не бывает, и это повлияет на реальность визуализации. Даже минимальное уменьшение насыщенности позволит этому цвету смешиваться с другими, что отражает реальное положение дел. Я уменьшил насыщенность красного на минимально значение, с 1 до 0,992. Следующие примеры покажут, как альбедо влияет на цветовой перенос.

   Для начала рендер только с источниками, без ГИ, для понимания интенсивности начального света. В окнах - Sky Portal, за окном - Daylight (mr Sun, mr Sky).

  
   Включаем ГИ.
   3 млн. фотонов. Merge1 см. Радиус 15см. Fast Look Up – вкл. Очень рекомендую использовать мердж для фотонов и Fast Look Up для ускорения расчёта ФГ и экономии памяти. Т.к. мердж уменьшает кол-во фотонов, заменяя все фотоны в радиусе мерджа на 1 фотон с усреднённым значением. Как следствие, вся фотонная карта уменьшается в объёме информации, и поэтому ФГ производит поиск нужных значений в ней в разы быстрее. FG = Density 1, Ray 500. В материалах включён AO с галкой колор блидинга, дистанция 30 см. Цвет Shadow Color чёрный, это полный колор блидинг, без AO. Считаем.


   Мы наблюдаем типичную картину, с которой многие сталкивались. Картинке далеко до реальности именно из-за того, что выставлено слишком большое альбедо, которого вообще в природе не существует. Дело в том, что предметы, которые мы считаем белыми, на самом деле могут быть далеки от даже 90% белого. Понаблюдайте за поверхностью, про которую вы бы сказали, что она самая белая, а потом поднесите к ней лист белой офисной бумаги. Скорее всего, предмет окажется темнее бумаги. Я воспроизвёл этот тест и вот, что у меня получилось. Бумага уложена в 3 слоя, чтоб из-за просвечивающихся особенностей бумаги, стол на неё не влиял.


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

   Как видно, все предметы, которые по отдельности мне казались очень белыми, в сравнении с бумагой кажутся серыми. А ведь у такой бумаги альбедо около 0,6-0,7(в других источниках до 0,8). И стандартный потолок, которому мы обычно ставим альбедо около 0,9, в большинстве случаев тянет всего на 0,6. Возможно, появится справедливый вопрос, ведь это уже не белые поверхности, а серые. Но в природе нет понятия белый и серый, а есть способность поверхности отразить больше или меньше света. Поэтому даже серый предмет, находясь в очень тёмно серой комнате, не имеющей других поверхностей с альбедо, превышающим альбедо серого предмета и не имеющей знакомых цветовых ориентиров, типа кожи наших рук, будет казаться белым. Причиной этому будет являться наша способность адаптироваться к освещению. И поэтому, скормив физически корректному визуализатору поверхности с реальными альбедо, нужно также выполнить адаптацию яркости сцены для удобного зрительного восприятия. Другими словами – выставить экспозицию. Можно увеличивать интенсивность освещения, но в 3д максе есть удобная опция для регулирования экспозиции – Exposure Control.

   Казалось бы, простая вещь, но далее мы увидим, как меняется освещение по мере уменьшения альбедо. Ниже находится таблица со значениями альбедо некоторых материалов. В таблице указаны приблизительные значения, т.к. материалов с одноимённым названием может быть много. Например, гипс. Гипс бывает: строительный (гипсовый алебастр), формовочный (лепка, скульптура, моделирование), медицинский (более чистый) и прочие подвиды. Поэтому альбедо у них может отличаться. Таблица взята с сайта фототехнического сервера ОАО "Красногорский завод им. С.А. Зверева".



Отражательная способность различных поверхностей
Поверхность
Вид отражения
Коэффициент отражения
Окись магния
диффузное
0,96
Алебастр
диффузное
0,92
Серебро полированное
направленное
0,88--0,93
Белая гипсовая поверхность
диффузное
0,85
Снег свежевыпавший
смешанное
0,75--0,78
Стеклянное зеркало
направленное
0,72--0,85
Серебрение матовое
направленно-рассеянное
0,7
Алюминий полированный
направленное
0,65--0,75
Хромированная полированная поверхность
направленное
0,60--0,70
Алюминий матированный
направленно-рассеянное
0,55--0,60
Бумага белая матовая
направленно-рассеянное
0,60--0,70
Снег тающий чистый
смешанное
0,60--0,62
Хромирование матовое
направленно-рассеянное
0,50
Оштукатуренная поверхность
диффузное
0,40--0,45
Шелк натуральный
смешанное
0,35--0,55
Тес (дерево свежее)
направленно-рассеянное
0,35--0,42
Кожа лица
смешанное
0,25--0,35
Песок белый сухой
диффузное
0,24--0,32
Глина желтая
диффузное
0,16
Тес старый, посеревший
направленно-рассеянное
0,12--0,16
Песок белый мокрый
диффузное
0,11-0,20
Асфальтовое покрытие сухое
смешанное
0,10--0,18
Чернозем сухой
диффузное
0,07--0,08
Асфальтовое покрытие мокрое
направленно-рассеянное
0,06--0,08
Лиственная растительность летом
направленно-рассеянное
0,09--0,12
Хвойная растительность
диффузное и направленно-рассеянное
0,08--0,12
Лиственная растительность осенью
направленно-рассеянное
0,15--0,30
Черное сукно
направленно-рассеянное
0,10--0,12
Чернозем мокрый
направленно-рассеянное
0,02--0,05
Черный бархат
диффузное
0,01--0,03

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

   Альбедо = 0,85 (по таблице белая гипсовая поверхность). Мне казалось, мой лев на фотографии из гипса, но сами видите, насколько он темнее бумаги. Поэтому в таблице приведён какой-то ну очень белый гипс. Ставим в материале Diffuse Level = 0,85. Тюль просвечивается, поэтому цвет транслюценции тоже нужно уменьшать пропорционально цвету диффузии, т.к. просвечивает она собственную диффузию. Настройки тюли: Прозрачность = 0,5. Цвет = falloff (настройки по умолчанию). Транслюценция = 0,5 (просвечивает 50%) и цвет = 0,85. Далее этот цвет тоже будем уменьшать.


Альбедо= 0,6.


Альбедо= 0,42 (оштукатуренная поверхность).


   Обратите внимание, как уменьшился цветовой перенос, да и свет стал похож на реальный.

Альбедо= 0,2.



Меньше ставить я не буду, т.к. думаю, смысл происходящего понятен.

   В связи с уменьшением интенсивности диффузии, нужно пересмотреть настройки силы отражений – «Reflection» в материалах. Их, скорее всего, нужно сделать меньше, если вы настраивали их на глазок, основываясь на интенсивности диффузии. Это повлияет на скорость затухания зеркальных и глосси переотражений, что добавит реализма.

   Итак, как же теперь настраивать сцену, исходя из вышеперечисленной информации. Я предлагаю свой способ, возможно, кто-то найдёт лучше. Найдите в своей сцене самый белый объект, прикиньте какое у него альбедо, а лучше найдите подобный материал в реальном мире, и сравните его с листом белой офисной бумаги, альбедо которого примерно 0,7. Далее, выставите это значение альбедо в материале, в Diffuse Level, для своего белого объекта, например, 0,5. Затем, чтобы упростить настройку и видеть все материалы в редакторе в привычной экспозиции, мы изменим интенсивность света в настройках материал эдитора до 2-х. Чтобы материал с нашим максимальным альбедо стал 100% белый. Для других значений альбедо работает простая формула: 1 / «альбедо» = «интенсивность света». Обратите внимание, что материал эдитор не сохраняет изменённое значение интенсивности света для конкретной сцены, а использует его для всех сцен. Далее выставляйте значение максимального альбедо (0,5) в Diffuse Level во всех материалах, которые вы будете редактировать. Затем, по мере визуализации изображения отрегулируйте её экспозицию.

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

   На этом у меня всё. Спасибо за внимание.

пятница, 8 октября 2010 г.

Проблемы антиализинга.

   В этой статье я хочу рассказать о нюансах антиализинга, а точнее его подвида - суперсемплинга, который используют большинство рейтрейсеров, таких как Mental Ray, Vray, Final Render, Brazil.
Проблемма состоит в том, что для того чтобы визуализировать мелкие детали, нужно большое кол-во семплов на пиксель. Поясню наглядно.
   Я буду использовать 3d max 2011 и Mental Ray. Создадим конусы с соотношением диаметра основания к высоте, равным 250. Расположим их в ряд, удаляющийся от камеры. Разрешение я специально поставил не большое, т.к. чем меньше разрешение, тем сложнее суперсемплерам проработать мелкие детали.
   Фильтр антиализинга я использую, в основном, по Гауссу, с ширинои и высотой в 2 пиксела. И вот почему:
1. Быстрее Митчелла (с другими не сравниваю, т.к. считаю Митчелл самым достойным аппонентом).
2. По кач-ву практически не уступает. Митчелл немного резче.
3. Не даёт затемнения пикселов на краях, в следствии небольшого эффекта шарпа, которым обладает Митчелл. Это важно на композе.
4. Ланчоз имеет ещё более выраженный шарп и он немного медленнее Митчелла.

   Результаты рендеров, с разными настройками:








     Почему мы имеем такую картину? Суперсемплинг выстреливает луч из пиксела, используя настройку "Minimum", не попадает по самому узкому месту конуса, а это ближе к верхушкам, и с чистой совестью переходит к другому пикселю. Т.е. до следующего уровня семплинга, ограниченного настройкой "Maximum" дело не доходит. Так же, уменьшение настройки "Spatial Contrast" не поможет. Остаётся тупо увеличивать минимальное кол-во лучей, что увеличивает время просчёта. Так же, это относится к предметам любого размера, если они удалены от камеры на столько, что становятся меньше пикселя. Например, объекты уходящие к горизонту (трава, деревья, мелкие ветки и т.д.). Вот такая расплата, за кач-венный рендер.

   Другие результаты показывают сканлайны.

1. Максовский "Scanline".
2. Режим "Fast Rasterizer" в ментале (я не уверен что это настоящий сканлайн, но геометрию он шурует очень быстро).
Вообще Mental Ray заявляет себя как гибридный рендер, Scanline + Raytrace. Но почему включая у него режим "Scanline", у него использует простой суперсемплинг, мне не понятно. Наверно, его сканлайн где-то в другом месте себя проявляет.
3. Maya Software.
4. Renderman.

   Результаты рендеров:





   У них другой алгоритм отрисовки геометрии. И они намного быстрее справились с задачей, это их большой плюс. Но у сканлайнов есть и недостатки, один из них - они не любят рейтрейсинг. Хотя Renderman, например, быстро развивается и рейтрейсинг там имеет хорошие показатели по скорости.
   Итого.
1. Перед финальным рендером, вам надо оценить необходимость в детализации.
2. Если вы используете рейтрейсеры и вам нужна хорошая детализация, мало поднять максимальное значение. Чаще всего надо поднять минимальное. В большинстве случаев, достаточно 16, а максимальными настройками можно считать 64 семплов, для минимума и максимума. В Vray это значение 3. Т.к. в нём 0 = 1 семпл, 1 = 4 семплов, 2 = 16 семплов, 3 = 64 семплов. Также, по идее, очень хорошая опция Anti-aliasing Sampling Override в Maya. Она позволяет по объектно регулировать суперсемплинг. Но к сожалению у меня она не заработала. Подобная опция есть для ментала, если подключить шейдер от фирмы "Ctrl.Studio". Я его не пробовал ещё. Как попробую - напишу.
3. Final Render R3: Вроде внедрили алгоритм гибридного рендеринга, позволяющего отрабатывать мелкие объекты, которые не берут обычные настройки суперсемплинга. Я ещё не тестил. Подробнее тут.
http://www.cebasstation.com/index.php?pid=product&prd_id=75&feature=960
4. Если используете 3дмаксовский сканлайн: Ничего настраивать для антиализинга не надо. Он даёт максимально кач-венную геометрию. Про текстуры разговор отдельный. Я как раз готовлю статью про это.
5. Maya Software: настройка антиализинга "Highest quality" является максимальной и даёт хороший результат, без доп. настройки.
6. Renderman: настройка антиализинга "Pixel Samples", влияет ещё и на кач-во моушен блюра. Как правило, больше 15х15 не требуется.

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

P.S. На текущий момент (2012 г.) в ментал рее имеются и другие алгоритмы антиализинга - это "unified sampling" (что-то наподобие вреевского DMC) и "progressive rendering" (рендерится вся картинка с 1 семплом, и постепенно проявляется по мере добавлении семплов в нужные части изображения). Они лучше по соотношению скорость/кач-во, чем стандартный алгоритм. Чтобы воспользоваться ими в 3д максе, нужно скачать и подключить к максу бесплатный скрипт, вот от сюда: http://www.infinity-vision.de/page/ro_menue . Т.к. в 3д максе не реализованы эти фичи, в отличии от майи и софтимиджа.

Начиная с 3д макс 2014 "unified sampling" встроен.