Smoke and Mirrors

Финальный рендер. Картинка кликабельна, можно зырить в 4k

Короче тут странная вёртска. На всякий случай поясню - в тексте всё идёт так: сначала картинка, а под ней серая подпись курсивом. Это не подзаголовок, а именно подпись к картинке.

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

Линза собственной персоной

---

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

---

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

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

---

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

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

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

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

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

---

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

---
Объёмная Дисперсия
---

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

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

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

---

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

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

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

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

Логозавр

---

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

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

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

---

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

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

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

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

---

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

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

---

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

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

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

---

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

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

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

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

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

---

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

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

---

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

---

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

Выражаю благодарность коллеге Константину , финальный кадр рендерился на его компе, а не на моём.

Ладно, люкс-рендер попробую позже. Но какой-то он мутный. Прям мутный.

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

fresnellensfogvolumeraydispersionprismreflectionrefractionmirrorlasercausticglassabsorbtion

Комментарии (38)

+2
Nick_pan
Мое почтение!!!!))
+2
freezemaximus
Молодец)
+3
ponchik8686
ООООЧЕНЬ интересно! Благодарю)
+1
snake
Спасибо интересно было! 720 часов, хороший стресс тест компьютеру на стабильность)
+1
CESHURIK
OMG. ЗАЧЕМ? )))))
+10
temp-64GTX
прост))))
+1
Crafter_Vol
Потому что может! :)
0
jjunny
в скрине с линзой у Вас там овер 300 миллиардов поликов или все же баг и там миллионов? скок оперативы-то? не знал, что Макс могет сток поликов молотить - тут бы сейчас Блендеристам показать этот скрин)))
+1
temp-64GTX
Это была отдельная сцена с 126 линзами. И в максе ещё цифры статистики любят налазить друг на друга.
На одну линзу там около 200k поликов.
+1
semjaza
Что за анаконда!?)
+25
Mozart
Мы не знаем что это такое, если бы мы знали что это такое, но мы не знаем что это такое!

Круто, было интересно
+5
Special
Тут, только за пытливый ум, уже звезд насыпать! Развитие и открытия в 3д, которые стоят внимания (которые действительно заслужили). Что-то новое.
+8
Graphicus
Визуализатор ученый какой то )
+3
Slimba
Интересно было прочесть) Нет предела человеческой пытливости, так держать :)
+2
V.S.O.P.
Прям какой и должен быть блог, в смысле блог. А то многие просто заманивают народ бесплатными знаниями. Примерно так и появляются сумасшедшие ученые из мультиков.
+2
necBTpuko
Научная работа прям :) Очень круто, спасибо)
+2
alexsimm
Нихера се ты заморочился!!!
Спасибо! было очень интересно!
+4
V.Dolgalev
"Мне за это такую премию дадут...." )))
+2
kuro4ka
уважение
+2
infornal_f
Вам, товарищ, в научных издания положено публиковаться!
+3
Magomed Mirzaev
Вам к Кристоферу Нолану надо)
+3
ViTcore
всё круто, хотел написать вот бы анимашку короткую, потом дошёл до 720 часов и тут у меня произошёл отвал
+2
VictoriaCh2303
сменились три поколения внуков, а рендер все еще считался бы)))
+2
switchzhivora
весьма любопытно
+2
valek76
Респектище!
+2
.Kin
в тесте с виреем ис виреевские? свет кажется там честнее всего
+1
temp-64GTX
Виреевские. А по честности просчёта освещения - даже корона с этим лучше справляется, чем вирей. В этом плане pathtracer-ы unbiased-ы всегда дают лучший результат, чем классические рейтрейсеры.
+4
mrbaymurzaev
Вы отрендерили всю оптическую физику в одной картинке))
+1
grol69
индиго - молодец!
отличная работа!!
+2
medvedik
Спасибо, огромное, благодаря таким людям я и начал заниматься 3д. Нет пределов человеческим возможностям, теперь только компьютеры нужно доработать)))
+3
Donnerjack
Комментарий удален
+2
giglen
Офигеть))) Вы ждали месяц?!

Статья— улет! *аплодисменты*
+1
temp-64GTX
Пока оно рендерилось - я другими делами занимался =)
+1
giglen
Ну это понятно, что вы не у монитора сидели, но месяц— это жестко))) тем более ради теста! Возможно вы— единственный в мире, кто провел такого рода работу)
+1
temp-64GTX
Есть и более замороченные чуваки. Я смотрел видеопрезентацию, где чел пытался сделать систему линз и зеркал как в реальной фотокамере. Чтоб можно было крутить фокусировку, и получать настоящее боке и доф. Сколько он времени на это потратил - боюсь даже представить.
0
giglen
Так и в итоге у него получилось?))
0
temp-64GTX
Ага.
+2
Productorionarious
Это невероятно круто!