Каустика
Здравствуйте люди добрые, сегодня я хочу коснуться темы каустики. Есть в игре с CGI-светом некий шарм (я просто с кафедры квантовой электроники и оптических технологий, поэтому меня эта тема интересует).
Итак, каустика, что же это за зверь такой? По правде говоря, все просто. Сейчас я попробую на пальцах без математики и сложной геометрии описать суть этого явления, прежде чем мы перейдем к попыткам рендера этой красоты.
В природе есть разные среды, есть изотропные, есть анизотропные, есть оптические(прозрачные однородные среды с точным значением показатель преломления). Нас сейчас интересует оптические среды. И еще хорошо бы вспомнить, что оптический свет мы считаем электромагнитной волной видимого СВЧ диапазона, свет же считается и набором квантов (отдельных квазичастиц). Свет распространяется везде, где только может (если есть источник света и если нет гравитационного поля черной дыры, которое не выпускает свет). И, надеюсь, вы помните со школьной физики, что свет может преломляться, отражаться, интерферировать, дифрагировать и т.д.
Вот предположим, у нас есть хрустальный бокал, стоящий на столе. Хрусталь - оптическая среда. Проходя через бокал, пучки света многократно будут отражаться и преломляться, прежде чем выйдут наружу. И благодаря тому, что свет, будучи волной, умеет интерферировать, то есть в каких-то местах усиливаться, в каких-то ослабевать (зависит от синфазности световых волн) мы сможем наблюдать на столе причудливый световой узор. Это хорошо видно на изображении ниже:
Также банальный пример, обычная лупа. Если мы пропустим через нее пучок света, то линза имеет свойство фокусировать свет в каком-то месте экрана на определенном расстоянии.
Также вы могли видеть световые узоры на дне прозрачных водоемов, очень красивое зрелище.
Подведем итог, каустика - это особые линии (в двумерном случае) и особые поверхности, вблизи которых резко возрастает интенсивность светового поля.
Этот пример наглядно демонстрирует геометрию хода лучей:
Итак, давайте перейдем в Maya - программа, на примере которой будет изложен метод рендера. Рендерить буду с помощью V-Ray, ибо он круто работает с лучами. Арнольд сейчас активно используется в киноиндустрии и они особо не развивают тему дисперсии и каустик, потому как это для кино особо не надо. Но в V-Ray это все есть, поэтому работаем в нем.
Для начала я сделаю то, через что будет проходить свет - например, бокал. Скачать модельку можете здесь
Данная моделька сделана под сабдив, поэтому ее нужно сгладить, нажав "3" на клавиатуре. Также, чтобы вирей правильно отрендерил сабдив-модельку, нужно добавить соответствующий атрибут, как показано ниже:
Теперь давайте создадим плоскость - стол, создадим источник света и накинем виреевские текстуры, в настройках поставим рендер с помощью v-ray.
Далее я немного колдую с настройками рендера и настраиваю материал бокала. В настройках меню Vray Sambler type я поставлю на Bucket, а в меню GI разверну свиток caustics и поставлю галочку "on". В материале стекла я выкручиваю параметр Refraction Color и снимаю галочку с "Affect Shadows":
Попытка отрендерить бокал приведет к таким последствиям:
Чтобы улучшить результат, можно увеличить количество сабдивов каустик и в настройка рендера во вкладке caustics рекомендую поставить Search distance units (world) и Max photons где-то 300.
В общем, блик есть, но он отвратительный, тут все дело в стандартном источнике света виреевском. Он не лучшим образом подходит для этого. Гораздо интереснее себя ведут скайдом и вирейсан. На примере ниже я использовал VraySun: Я оставил источник света, но Caustics Multiplier у него обнулил (этот параметр отвечает за интенсивность каустик, то есть 0 - значит каустик от этого источника света нет).
Короче говоря, что-то такое получилось:
Не скажу, что прям "Вау", так как тут всего лишь 8000 caustics subdives, но для примера вполне себе. Более подробно о параметрах можете ознакомиться тут.
По аналогии делается и дно водоема: В этом видео я продемонстрировал процесс:
Процесс медитативный, сводящийся к оптимальному подбору сабдивов и настройками света.
Вот, что получилось в итоге:
или вот, здесь тоже сделал небольшую сцену с дном бассейна:
Спасибо, что дочитали статью до конца, если остались какие-то вопросы или есть какие-то рекомендации, милости прошу в комментарии ;)