Theory/LightingControls

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

Контроль освещения для Компьютерной Кинематографии.


Оглавление документа


Ronen Barzel


Pixar Animation Studios


Эта статья представляет практическую модель источника света, которая была разработана в течение нескольких лет в ответ на потребности производства компьютерной графики в фильмах, в особенности для создания CG анимационных фильмов, таких как История Игрушек (Toy Story). Модель дает художникам по свету такой контроль над формой, местом расположения и текстурой источников света, который позволяет применить навыки художников реального кинематографа к компьютерным изображениям.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
Введение


Фотореализм является важной и наиболее изучаемой темой в CG изображений и освещении. Но фотографы и кинематографисты знают что когда это касается освещения, реализм не является главной целью....


...«Практические» источники света в обычных кинофильмах, такие как настольные лампы или верхний свет (ceiling lamps) редко являются основными источниками освещения. Вместо этого различные типы ламп, прожекторов помещают сзади камеры для создания требуемого светового эффекта. Художники по свету будут использовать все необходимые техники, трюки и уловки, такие как подвешенная ткань перед источником света для получения мягких теней, расположение непрозрачных пластин или ступенчатых фильтров для придания формы света, фокусирования узкого пучка света для создания особых световых эффектов...


Эта статья описывает CG модель освещения, обеспечивающую удобный и полный контроль в кинематографии. Она была разработана в соответствии с потребностями и запросами художников по свету, занимающихся производством компьютерной графики для кино: инструменты, которые мы описываем удобны в практическом использовании, и особенно все световые эффекты, которые были использованы в создании Toy Story были реализованы с помощью этих инструментов.


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


В статье, мы вначале опишем все свойства световой модели (Пункт 2) и дадим описание (включая полный Рендер Мэн?-шейдер) позже (Пункт 3). Мы так же приведем несколько примеров из Истории Игрушек (Toy Story) (Пункт 4). Но запомним, что мы говорим по большей части о технологии кинематографии.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
Модель освещения


Здесь мы обобщаем и знакомимся с контролем для большинства аспектов каждого источника света: выбор, форма, затенение, текстура, затухание, направление и свойства. Мы опишем и проиллюстрируем эти возможности в пунктах 2.1–2.7. Для ясности, каждое свойство мы будем иллюстрировать в отдельности, несмотря на то что модель позволяет использовать их в любых комбинациях. Так же мы иллюстрируем статические изображения, но все параметры могут, конечно, быть анимированы.


Fig. 1


 (9 Кб)


Fig. 2


 (11 Кб)


Fig. 3


 (14 Кб)


Изображение Fig 1? показывает простую сцену, освещенную только заливающим светом и ту же сцену с простым коническим источником света. Туман введен для иллюстрации эффекта прохождения света через пространство.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
1.Выборочность


В компьютерной графике источники света могут выборочно освещать конкретные объекты(per-object selection). (Fig 3?). Способность выборочно освещать объекты в сцене является мощным свойством, которая не имеет аналогов в реальном освещении. В нашем случае per-object selection используется довольно часто, в частности при настройке освещения отдельно для персонажей и для окружения.


Fig. 4


 (3 Кб)


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
2. Форма


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


· Generalized cone/pyramid. Это световой конус/пирамида, сечением которой является суперэлипс (superellipse), которая непрерывно изменяется от полной окружности, через скругленный прямоугольник, к чистому прямоугольнику


Fig. 8


 (3 Кб)


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


Fig. 6


 (13 Кб)


· Softedge. Для смягчения краев у света мы определяем граничную зону в которой интенсивность света затухает постепенно. Ширина и высота зоны затухания могут определяться отдельно. Таким образом, мы имеем две вложенные пирамиды: свет с полной интенсивностью во внутренней пирамиде и с интенсивность равной 0 во внешней, с мягким затуханием между ними.


Fig. 7


 (13 Кб)


· Cuton and Cutoff. Форма светового пучка может быть изменена указанием ближней и дальней зон усечения, опять же с регулируемыми зонами затухания для ближней и дальней границы


Fig. 9


 (13 Кб)


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


Имея возможность подгонки формы и «мягких» краев у источника света легко настроить «мягкое» освещение в сцене и создавать фейковый (faking) area-light penumbra эффект.


(эффект освещения от area-источников света, то есть источников не являющихся точечными, это особенно важно, так как все версии РМ до 11 не поддерживали area-lights – поясниния пер. bog).


В наших проектах мы в основном использовали прямоугольные (rectangular) c большими граничными зонами (edge zones) дающими мягкое затухание света; конические источники света используются в основном в сценах включающих в себя практическое освещение такое как сигнальный огонь (flashlight).


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


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
3. Использование теней


Тени и позиции теней является важной частью киноискусства. Компьютерная графика имеет огромную свободу в контроле за тенями при создании художественных эффектов. В этом пункте мы будем рассуждать о тенях, как о некоем «объеме темноты» внутри которое освещение отсутствует; этим объемом можно манипулировать как самостоятельным элементом.


· Shadow selection. Источнику света нет необходимости всегда отбрасывать тень.


Fig. 11


 (12 Кб)


В Fig 11? показано, что ключевой источник света (key light) отбрасывает тень, а заливающий (fill light) – тени не создает. Тени так же могут быть выключены в соответствии с per-object –принципом (выборочно отбрасывать тень от конкретных объектов – прим. bog)


Fig. 12


 (12 Кб)


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


· Shadow direction. Направление в котором падает тень не обязательно должно следовать за источником света – каждый «объем темноты» может быть расположен так как требуется. Для примера


Fig. 13


 (14 Кб)


это тоже самое что и Fig 12?, но тени сдвинуты так, чтобы тор мог затенять цилиндр. Это, наверное, неожиданно – как далеко мы можем сдвинуть тень от истинного ее направления без визуального диссонанса. «Жульничество» с направлением падения тени может быть мощным средством контроля композиции изображения; в нашем случае второстепенные тени сделаны с «жульничеством».


Fig. 14


 (14 Кб)


Fig. 15


 (12 Кб)


· Shadow sharing. Вероятно, необычным свойством источника света является разделение его теней с другими источниками света. «Oбъем темноты», определен данным источником света и объект может задерживать так же хорошо освещение от других источников света. Это позволяет художникам по свету усиливать тени, которые размываются близлежащими источниками света. Sharing-метод является одним из наиболее часто нами употребляемых.


· Fake shadow. Это часто используется при создании экстра-теней, имеется в виду несуществующие невидимые объекты или просто затемнить сцену, где это необходимо. В реальном освещении непрозрачные пластины помещаются перед источником света. В нашей модели, блокеры могут быть определены таким же образом; каждый определенный 2D суперэлипс может быть помещен где угодно в пространстве. Как и с обычными тенями, направление падения тени от блокера можно регулировать, и блокер может быть разделен между несколькими источниками света. В нашем случае блокеры активно использовались, иногда несколько для одного источника света.


· Shape trimming. Блокер может быть большим и располжен так чтобы отсекать форму источника света. Анимированные большие блокеры являются легким способом имитации эффекта door-opening-offscreen.


· Shadow softening. Полученные тени слишком резкие (harsh), любую тень или блокер можно сделать просвечивающимися. Края тени могут быть «смягчены» следующим образом: для блокеров это делает edge-zone dropoff по тому же принципу что и регулируется форма пучка света; для теней объектов граница «объема темноты» может быть размыта (is blurred). Наконец, вместо черного на тень можно назначить произвольный цвет; тонкое использование цветных теней может добавить насыщенность изображению.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
4. Текстура.


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


· Cookie. Одноцветное изображение используется как «cookie cutter» для получения форм пучка света отличных от встроенного суперэлипса или, что более тонко, создание сложных теней от невидимых объектов (Fig. 10 верхний и средний).(«Cookie» есть разговорный аналог cucaloris – техническое название для непрозрачных карт с изображением (cutouts), использующихся для блокирования света)


Fig. 17


 (13 Кб)


Fig. 18


 (11 Кб)


Fig. 19a,b


 (2 Кб)  (4 Кб)


· Slide. Полноцветное изображение для слайд-прожектор эффекта


Fig. 20


 (13 Кб)


Несфокусированную проекцию (например от телевизора) можно получить применив блюр-фильтр так чтобы его ширина увеличивалась с растоянием от прожектора.


· Noise. В дополнение к файлам с изображением, свет может быть спроецирован и через 2D noise функцию, которая изменяет интенсивность или цвет, создавая эффект замазанного грязью прожектора.


Как с блокерами и тенями можно «жульничать» с направлением спроецированного изображения, блюрить его и менять интенсивность.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
5.Затухание.


Интенсивность света может изменяться в привычных понятиях CG освещения:


Fig. 21


 (14 Кб)


· Beam distribution. Fig 21? иллюстрирует затухание интенсивности через световой пучок по обычной экспоненциальной cos-функции; однако угол нормализован так чтобы интенсивность затухала до 0 на краю пучка.


Fig. 22


 (14 Кб)


· Distance falloff. Fig 22? иллюстрирует затухание интенсивности с растоянием от источника, использующий обычно обратную степень затухания; полученная интенсивность хорошо определяется в оригинальном источнике света, мы обеспечиваем сглаживание максимальной интенсивности.


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


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
6. Направление


Луч света в компьютерной графике может распространяться (в основном) двумя способами:


· Radial. Лучи света исходят из точки на вершине пирамиды.


· Parallel. Лучи света параллельны оси пирамиды, так же как очень удаленный источник света (distant light).


Fig. 23


 (11 Кб)


Fig. 24


 (14 Кб)


Fig 23?, Fig 24? показывают параллельные и радиальные лучи в световой пирамиде. Сочетание параллельных лучей с источником света подобной формы нефизично, но все же вполне употребимый эффект: лучи света создаются вдоль краев формы. Ситуация в которой употребимо подобное «юкачество» с направлением лучей может быть следующей – для примера мы имеем лучи параллельные направлению отличному от оси пирамиды или определены произвольно криволинейным вектором поля для направления лучей.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
7.Свойства.


Мы обсуждали где и в каком направлении свет достигает поверхности в сцене. Наконец, мы пришли к свойствам «фотонов» которые падают на поверхность:


· Intensity. Формально интенсивность света определяется в оригинальной или исходной точке в источнике света. На эту величину влияет дальней граница луча света, тени, cookies, шум и затухание (dropoff).


· Color. Цвет источника света выражается в стандартном RGB-цвете, который может быть фильтрован slide, шумом и цветными тенями.


· Effects. Существуют три стандартных типа CG-освещения: ambient плоское (без затенения) освещение(ambient flat lighting), диффузное освещение с затенением (diffuse shape lighting) и спекулятная подсветка (specular highlighting). Они могут быть использованы в сочетании со scale-фактором для каждого (Для амбиентного освещения понятие направления является, конечно, неуместным). На практике, только диффузный свет обычно используется для мягкого, пока ключевые источники света используют и диффузный и спекулярный эффекты. Небольшая амбиентная компонента света используется для устранения полностью черных областей.


Дополнительная информация. В зависимости от того, что поддерживается surface шейдером, дополнительная информация может быть донесена до поверхности. Для примера, четвертый канал цвета может содержать «ультрафеолет» так что «флюаресцентная» поверхность будет реагировать самосвечением; или мы можем иметь идентификатор для каждого источника света так чтобы поверхности могли реагировать различно на определенные источники света (механизм использования lightsource statement).


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
Примеры реализации в Shading Language.


В конце статьи я приведу пример шейдера, реализующего большинство идей, описанных в данной статье. Он написан Ларри Гритцом (Larry Gritz) и использовался для рендера всех изображений в данной статье. Путем несложных манипуляция возможно добавить поддержку multiple блокеров, sliders, coockies и shadow maps на один источник света (предлагается использовать arrays для каждого эффекта как то shadow maps names, blockers position и так далее, затем обработать все эти элементы в цикле).


Изображения 1–6 содержат кадры из Истории Игрушек. Мы будем обсуждать некоторые проиллюстрированные эффекты освещения для каждого кадра.


 (17 Кб)


Изображение 1. Это простая сцена, иллюстрирующая насколько важна форма и положение светового пучка для формирования изображения: персонаж заключен в рамку квадратным профилем (rectangular profile) bard-door источника света. Источник света светит через оконный профиль, находящийся за пределами кадра справа, но положение, выбранное для визуального эффекта не обязательно должно быть привязано к позиции геометрии окна, солнца и кровати. Обратите внимание так же на «мягкие» (с частичной прозрачностью) тени кровати на стене.


 (18 Кб)


Изображение 2. Имеет полосы света на персонажах, которые не являются тенями от жалюзи, а сгенерированы с использованием cookies, которые создают подобный впечатляющий эффект.


 (17 Кб)


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


 (9 Кб)


Изображение 4. Здесь источник света (flashlight – предположительно подсвечивающий – пояснения bog.) так же использует cookies для создания кольцевого линзового эффекта (lens ring). Flashlight в действительности включает два световых источника – один подсвечивает персонажи, а другой используется только для создания объемного света (fog). Далее объемный свет отсекается так чтобы он не распространялся дальше персонажа. Эта сцена так же иллюстрирует эффект флюарисценции в лучах ультрафиолета – голубого свечения при освещении (этот эффект легко реализовать используя структуру lightsource() внутри цикла illuminance – пояснение bog.).


 (16 Кб)


Изображение 5. Это изображение иллюстрирует важность местоположения тени – тени от ящика аккуратно выверены так, чтобы «Х» при падении на лицо персонажа затенял глаза при разговоре. Блокеры так же были использованы для затенения задника (background), тон затенения выделяют лицо персонажа на переднем плане.


 (10 Кб)


Изображение 6. Содержит различные технологии: главный свет (key light) с мягкими краями; направление падения тени от персонажа сдвинуто для большего композиционного эффекта; специальный источник света, который светит слева только на стол, подчеркивает текстуру поверхности стола; отдельные источники света подсвечивая персонаж обеспечивают необходимые дополнительные блики; анимированные cookies обеспечивают эффект падающего дождя.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
Дополнение 1. Суперэлипс


Суперэлипс – это фигура, которая варьируется между элипсом и (с определенными ограничениями) прямоугольником и описывается следующей формулой:


 (5 Кб)


где a, b, x, y – радиусы, d – «скругление», параметры который изменяет форму от чистого элипса d = 1, до чистого прямоугольника d->0.


 (12 Кб)


Мы хотим получить отрезок смягчения для точки P, фигуры, образованной двумя суперэлипсами, имеющими радиусы a, b и A, B. То есть, для данной точки P мы присваиваем фактору смягчения значение 1, если она располагается во внутреннем суперэлипсе, и 0 если за внешним суперэлипсом и величина смягчения изменяется между суперэлипсами. Мы допускаем, что точка в трехмерном пространстве может быть спроецирована в первый квадрант канонической плоскости элипса.


Мы посылаем луч из точки Р – P(s) = sP; он пересекает внутренний суперэлипс в точке Q и внешний в точке R. Для того чтобы вычислить точки P, Q, R мы пишем:


 (5 Кб)


Тривиальный случай, когда p = 1, для вычисления q мы выводим:


 (16 Кб)


и таким образом


 (5 Кб)


финальный фактор смягчения –


1-smoothstep(q,r,p), где в Render Man? smoothstep есть:


 (6 Кб)


Для чистого прямоугольника d = 0, фактор смягчения вычислить просто:


(1-smoothstep(a, A, Px))x(1-smoothstep(b, B, Py));


которая дает разницу затухания углов, чем ограничивает вычисление скругления, но удовлетворяет нашим требованиям.


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
Дополнение 2. Кривая затухания интенсивности света


Формула для интенсивности света выражается следующим образом:


 (4 Кб)


Где d-расстояние до источника света, alpha – показатель степени затухания, K – коэффициент интенсивности. Значение интенсивности растет с уменьшением расстояния:


 (9 Кб)


Warning: Illegal string offset 'stripnotypo' in /home/renderma/public_html/formatters/post_wacko.php on line 10
Небольшой комментарий


От себя могу сказать следующее – я использовал эту световую модель при создании собственного источника света (dl_keyLight), который активно использовался. Приведу пример интерфейса моего шейдера.


 (132 Кб)


Я специально не делал поддержки множественных теней и блокеров, так как пока это не требовалось в процессе работы, однако в качестве упражнения была реализовывана в одном источнике поддержка 4 shadow maps и 8 блокеров, а так же поддержка множества собственных эффектов (volumeLight, fake translucence, fake subSurfaceScattering реализована поддержка селективного SSS – реализация SSS от Matt Pharr, lensFX и так далее).


Cкачать uberlight.sl




Перевод – Вячеслав Богданов?
Nick: bog Email: bogcube@yahoo.com


 
Много файлов (42). [Показать файлы/форму]