Smoke and Mirrors

Main.jpg

Финальный рендер. На самом деле там ещё много шума, но рендерить ещё дольше — смысла нет.


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

Lens Hi Poly 32-512 Chamfer.jpg

Линза.


3dsmax 2021-03-26 22-08-30-37.png

Полигонов жрёт немало. Но для правильного преломления — это необходимо.


И даже две - одну собирающую, а вторую рассеивающую. Для теста попробовал замутить из них простейший бинокль - получилось.

Binocle_0000.png

Физикал коррект бинокль


Но хотелось посмотреть на поведение и траектории всех преломляемых лучей света. А это как раз хорошо видно в дымке/тумане. Но рендерить настоящий volume caustics - это одна из самых сложных/ресурcоёмких задач для рендер-движка. Попробовал вирей, но результат был ужасен.

ca.jpg

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


И тогда я начал перебирать рендер движки один за одним. По тем или иным причинам - максвелл не вывез, арнольд не вывез, октан не вывез, редшифт не вывез. И уже без всякой надежды, я поставил индиго - но на удивление он хорошо справился, спасибо алгоритму Bidirectional pathtracing with MLT.
Попутно вспомнился фильм "Железный Человек 2", где Тони, создавая новый элемент - чуть не спалил помещение лазером. Думаю - дай ка попробую сделать лазер.

t28.jpg

Старина вирей слился


t33.jpg

А вот индиго затащил


t37.jpg

Объёмная Дисперсия. И картинка без плашки "рендер.ру". Как тебе такое, елон муск?


А параллельный направленный пучок света от почти точечного источника - это вообще ад для тру pathtracing-движков. Да ещё и объёмной каустикой. Но индиго более-менее справился с этим. Тогда я и подумал - а почему бы не сделать сцену с кучей разных элементов. И чтобы вся сцена освещалась одним лишь этим лазерным лучом, без всяких бэкграундных светяшек. Вообще, идея показалась мне прикольной - один единственный небольшой плэйн, который делает всё - лазерные лучи объёмной каустики, и глобалку, и преломления, и проекцию, и дисперсию, всё остальное.
Ну и начал городить вообще всё, что приходило в голову. Времени на каждый элемент уходило довольно много, потому что каждый рендер тест - это час. Ну то есть просто отрендерить малюсенькую картинку, чтобы посмотреть, работает ли этот элемент - час времени. Порой вообще оставлял рендериться на ночь, а утром смотрел, что получилось. Например таким образом отрендерены две картинки выше, с дисперсией, и с синим стеклом.

t36.jpg

Типичный рендер-тест на ранних этапах просчёта. Абстракционизм.


Основная идея была в том, чтобы впихнуть как можно больше элементов в одну сцену.
По итогу мы имеем:


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

t40.jpg

Большую проблему создавали отражённые паразитные лучи, летящие в обратном направлении около основного белого потока лазера


t60.jpg

От этих паразитных лучей получилось избавиться далеко не сразу


- Моё лого. Подумал: а как бы сделать большую объёмную фигуру из одного луча. Думал, думал, и придумал вот такой вариант, который мы видим в сцене. Отражения, и никакого мoшeнничecтва.

t41.jpg

Логозавр


- Изучая статьи про стекло и линзы - позаимствовал идею разделения светового пучка из зеркальных фотокамер. Там используется тот же принцип. Это позволило сцене не ограничиваться одним элементом, а наделать их целую кучу.

- Бокс со светящимися кружочками. Тут мне хотелось сделать некий трафарет, но с более-менее равномерной яркостью всех элементов. Решилось это старым добрым диффузным рассеиванием, и frosted glass.

t45.jpg

Тесты коробки


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

t64.jpg

Рендер той же самой сцены без тумана, в котором как раз видно задумку по градиентному освещению


- Проекция со смайлом возникла из того, что мне вспоминались всякие витражи на соборах, и бьющее в них солнце, создающее красивые разноцветные лучи. Но в этой сцене витражи смотрелись так себе, поэтому я заменил их на crazy-смайл. Однако для него требовался не луч, а некая площадь параллельных лучей, которые имитировали бы солнце. Тут то нам и пригодились наши fresnel lens, с которых всё и начиналось. Одной линзой рассеиваем пучок, а второй линзой делаем его снова параллельным, но уже на необходимой нам площади.

t53.jpg

Тут опять видны отражённые обратно лучи, которые создавали проблемы. В частности на стене виден смайл. Отчасти решил это «надетыми» на луч шайбами, которые про себя называл «ферритовые кольца»


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

t54.jpg

Один из ранних вариантов траектории луча


- Сам лазер. Отдельным челленджем было создание направленного пучка параллельных лучей, т.к. индиго не поддерживает директ лайты. Пробовал несколько разных вариантов, но почти все из них либо не работали, либо отправляли рендертайм в космос. А что касается внешнего вида - технически это просто неприметный чёрный цилиндр, но хотелось чего-то более зрелищного, и потому соорудил некий корпус. Изначально хотел, чтобы там ещё кругляши светились, но индиго не вывез нормального SSS при такой яркости источника света.

t68.jpg

Попытки заставить нормально работать SSS — не увенчались успехом


im1614656618.jpg

Индиго не находил paths до лайта. В итоге красные (по задумке) палки «не зажигались»


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


- Были и другие идеи, но их не удалось реализовать. Они либо рендерились тысячу лет, либо просто не работали в индиго.


Попутно пришлось решить примерно миллион всевозможных проблем, которые постоянно возникали. Мне кажется вжвиую было бы проще и быстрее построить эту сцену.


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

t76.jpg

Если взглянуть на первое (и второе) слева стекло, то можно увидеть, что луча за ними не видно



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

im1615783568.jpg

Вот так оно рендерилось. В куче мест не видно луча в отражениях и преломлениях.

dfgdfgdgg.jpg

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


Ну и "вишенка на торте". Время рендера в 4k составило 720 часов. То есть ровно месяц. На один кадр. Для каких-нибудь ILM это конечно изи катка, но на то они и ILM.

Render time.png



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

649 0 850 5
19
2021-04-19
А Luxcore не пробовали? он вроде в каустику хорошо умеет
2021-04-19
SanekumА Luxcore не пробовали? он вроде в каустику хорошо умеет

Я начинал ещё в ноябре. Если правильно понимаю, то тогда ещё плагина для макса не было. Его выпустили только 13 декабря. Может попозже попробую.
2021-04-20
самый толковый материал за эти 2 года,наверное. а то у нас тут в основном любители шерсти что изучают каждый инструмент и спустя 10 минут "исследований" делают урок на эту тему.
2021-04-20
Суклеса нет, ребята
2021-04-20
Орлан, чего нет? 🧐
2021-04-20
Александр, cycles
2021-04-20
ааа. Ну эт да, чего нет, того нет. Но ставлю сотку рубасов, что он тоже не справится. А вот ЛюхКоре надо будет потестить.
2021-04-20
но тесты правильные
2021-04-20
Ильдар, ну так "понял сам - помоги другому") я конечно, тоже с этих учителей ору. Индигу кстати, считаю лучшим из рендеров, хорошо паралелит смешанные ГПУ и позволяет продлевать рендер
2021-04-20
Maxwell затащит?
2021-04-20
Дмитрий, нет.
2021-04-20
Александр, а почему гугл показывает что тесты с призмой и дисперсией затаскивает?
2021-04-21
Дмитрий, одно дело дисперсия на плоскости, а другое дело объёмная дисперсия. Я так понимаю что статью вы не читали? Там написано и про максвелл, и про фог.
2021-04-22
Думаю, Renderman бы тоже затащил, там bidir тоже есть (как и объёмная каустика)
2021-04-22
Thoisoi, indigo использует metropolis light transport + pathtracing/bidirectional pathtracing, отрендерить в нём каустику быстрее чем через bidirectional pathtracing, да и indigo в принципе быстрее чем renderman. Правда для других сценариев indigo представляет собой довольно таки бесполезный хлам...
2021-04-22
Да, нужен именно bidir + MLT. Остальные варианты будут рендерить тысячу лет.
2021-04-22
Александр, ну на самом то деле все мы знаем, что лучшая каустика только в ♂AMD Radeon ProRender♂
2021-04-22
Алексей, согласен
2021-04-26
Интересная статья, необычный материал. Благодарю! Даже жена, проходя мимо, заинтересовалась, что я такое смотрю)))
RENDER.RU