Настройка и расчет освещения в brazil r/s

1370

Часть 1. Обзор средств brazil


Введение

Если оставить в стороне чисто художественные критерии, успешность визуального воплощения трехмерной сцены определяется тремя основными факторами. Эти факторы - хорошее моделирование, интересные материалы и освещение. И если моделирование лежит вне компетенции программ рендеринга, то материалы и освещение являются их прямой обязанностью. В настоящее время существует целый ряд программ, специализирующихся на материалах и расчете освещения. Наиболее известны: mental ray, Vray, brazil r/s, finalrender, этот ряд постоянно расширяется. Среди современных программ рендеринга brazil занимает свое собственное достойное место. Brazil обладает достаточно гибкими и современными возможностями расчета освещения, хотя и не является самой быстрой программой расчета. Brazil имеет собственный механизм шейдеров материалов с универсальным интерфейсом. Этот механизм не так изощрен, как, например, у Renderman или mental ray, опирающихся не столько на библиотеку готовых шейдеров, сколько на программирование необходимых свойств. Однако свойств, заложенных в основные типы шейдеров brazil, достаточно для качественного воспроизведения свойств материалов самого широкого спектра. В масштабах промышленного производства это делает brazil выбором №1 для небольших и средних студий, обладающих возможностями сетевого рендеринга и не имеющих возможности/желания программировать собственные шейдеры. Впрочем, brazil имеет немало своих искренних приверженцев и среди энтузиастов-индивидуалов.

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



Немного теории

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

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

Прямое освещение вычисляется испусканием дополнительных лучей из каждой точки пересечения в направлениях всех источников света трехмерной сцены. При этом определяется, находится ли точка в тени или освещена, вычисляется расстояние до источника света и угол между направлением на источник и нормалью точки пересечения поверхности с лучом камеры. Если в сцене имеются не только точечные, но и протяженные источники типа linear (линейные), area (источники света, обладающие площадью) или volume (объемные), в их направлении испускается не один луч, а группа лучей, для того чтобы определить степень освещенности точки как сумму освещенностей от различных частей источника света. Такой механизм позволяет вычислять "мягкие" или размытые границы между тенью и светом (penumbra). Наиболее широко используются на практике источники света типа area.

Расчет отраженного и преломленного света вблизи углов идеального преломления и отражения (зеркальные отражения) выполняется посредством рейтресинга (raytracing или трассировка лучей). Если поверхность объекта в той ее точке, в которую попадает луч из камеры, обладает свойствами зеркального отражения или прозрачностью, в направлении идеальных углов отражения и преломления или в обоих направлениях, если поверхность обладает двумя этими свойствами одновременно, строится еще по лучу. Новые лучи трассируются до следующего пересечения с объектом сцены, где процедура может повторяться, если новая точка пересечения также имеет свойства преломления/отражения. Трассировка лучей для одной и той же исходной точки продолжается до тех пор, пока не будет достигнута заданная глубина трассировки (количество преломлений луча, задаваемых в настройках программы рендеринга) и известна как глубина трассировки. Либо, пока взнос в освещение от очередного луча не станет меньше некоторой заданной величины. Освещенность точки от отражений и преломлений определяется как сумма освещенностей от всех построенных из нее лучей рейтресинга. Современная модификация этого алгоритма позволяет рассчитывать размытость отражений и преломлений. Достигается это за счет того, что из начальной точки испускается не один луч, а несколько в створе углов, близких к идеальному углу отражения или преломления. Освещенность точки рассчитывается усреднением по некоторому закону освещенностей от этих лучей. Поскольку, по мере удаления от точки, такие лучи все больше расходятся, усреднение будет давать все более размытый результат с увеличением расстояния или при прохождении через другие отражающие/преломляющие поверхности.

Расчет диффузных переотражений выполняется двумя способами или их сочетанием - методом Монте-Карло и/или методом фотонных карт.

Метод Монте-Карло учитывает весь падающий в данную точку многократно переотраженный свет, кроме прямого света и зеркальных отражений/преломлений. Для этого вокруг точки строится полусфера (сфера, если материал поверхности еще и прозрачен), через поверхность которой в случайных направлениях испускаются лучи, получившие название "сэмплы". Направления на источники света и углы зеркальных отражений/преломлений исключаются из набора сэмплов. Каждый сэмпл трассируется до пересечения с окружением. В каждой новой точке пересечения должна быть вычислена ее освещенность, поэтому процесс должен повториться - расчет прямого освещения, трассирование зеркальных углов, построение полусферы и новых сэмплов для расчета непрямого диффузного освещения. Легко понять, что процесс испускания сэмплов имеет лавинообразный характер. Например, если для сэмплирования видимой в камеру точки использовать 50 лучей, то каждый луч может дать до 50 новых точек, а из них, в свою очередь, снова испускаются 50 лучей, каждый из которых даст еще 50 точек и так далее. Если не ограничивать глубину переотражений, процесс расчета может быть очень долгим. Поэтому, на практике глубина переотражений ограничивается либо в настройках рендера указанием глубины трассировки вторичных отражений, либо минимальной величиной вклада, который может быть учтен. Кроме того, сэмплирование всех отскоков, исключая самый первый, выполняется менее точно - с меньшим числом лучей.

Суммирование возвращаемых сэмплами освещенностей с той или иной степенью точности позволяет оценить полную освещенность точки, видимой в камеру. Чем больше лучей испускается через сферу, тем точнее будет оценка. Классический метод Монте-Карло (М-К) требует, чтобы направления лучей выбирались совершенно случайным образом. На практике почти все программы рендеринга используют модифицированный метод М-К, так называемый квази Монте-Карло (QMC в английской аббревиатуре). Его основное отличие в том, что направления лучей выбираются не совсем случайно. Например, для определения направлений могут использоваться так называемые низкорасходящиеся последовательности, позволяющие выбирать направления лучей так, чтобы сумма возвращаемых освещенностей сходилась к некоторому значению. Также довольно широко используется importance sampling, согласно которому среди всех возможных направлений лучей выбираются только те, которые дают существенный вклад в расчет освещенности. Довольно часто используется и метод определения направлений сэмплов по направлениям фотонов, взятых из фотонной карты вблизи точки и различные методы интерполяции, позволяющие получить освещенность некоторых точек без вычислений, по известным освещенностям уже вычисленных точек. Главное назначение этих методов - ускорить расчет без ущерба для качества. Вычисление освещенности точки методом Монте-Карло является довольно медленным, хотя может быть очень точным.

Второй способ расчета вторичных диффузных переотражений - метод фотонных карт. В этом случае весь расчет начинается не с трассировки лучей из камеры, а испусканием лучей (фотонов) от источников света. С каждым лучом связывается порция энергии, величина которой определяется характеристиками источника света. Фотоны трассируются до пересечения с поверхностями на заданную глубину переотражений фотонов. Если поверхность, с которой сталкивается фотон, имеет ненулевые диффузные характеристики, событие о столкновении (координаты столкновения, энергия и направление фотона) записывается в базу данных, получившую название "фотонная карта". Фотонная карта нужна для расчета вторичной диффузной освещенности точки на этапе трассировки лучей от камеры. Осуществляется это следующим образом. Когда луч от камеры пересекается с поверхностью, то вместо построения сферы и испускания сэмплов по координатам пересечения поднимаются записи о столкновениях фотонов из карты. Определяется количество ближайших фотонов и по их энергиям оценивается освещенность точки. Какие из фотонов будут принимать участие в оценке освещенности точки, определяется радиусом сбора фотонов или количеством собираемых фотонов, которые задаются явным образом в настройках рендера.

Метод фотонных карт - очень быстрый способ расчета, обладающий, к тому же, физической корректностью. Но он имеет два очень существенных недостатка. Первый - непомерные по современным меркам требования к оперативной памяти. Для получения корректных результатов требуется испускать огромное число фотонов. На каждую запись в базе данных о столкновении фотона требуется приблизительно 30 байт. На практике максимальное количество фотонов ограничено объемом памяти, который может адресовать операционная система. Для Windows XP SP1 и Win2k этот предел составляет 2 гигабайта (вне зависимости от того, сколько оперативной памяти установлено в компьютере), для Windows XP SP2 этот предел немного выше и может составлять 3 гигабайта. Вторым недостатком фотонных карт является их дискретность - каждое столкновение характеризуется единственной трехмерной координатой и единственным значением энергии. Это приводит к трудностям в расчете освещенностей углов и стыков только фотонной картой и к размыванию светотени в результате усреднения энергий фотонов по радиусу сбора (иначе не достичь гладкости, рендер будет "пятнистым").

В последнее время предпринимаются попытки усовершенствовать метод фотонных карт. Например, почти удалось снять ограничение на количество излучаемых фотонов за счет изменения методики учета вклада энергий фотонов в освещенность точек. Речь идет о light map для Vray и о tone map для brazil, которые должны появиться в будущих версиях этих программ. Но вопрос с усреднением все еще остается открытым - в этом направлении не предпринимается никаких исследований, насколько мне известно.

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

На этом с теорией все. Этого вполне достаточно для понимания работы основных настроек расчета освещенности brazil, к рассмотрению которых мы и переходим.

Обзор интерфейса brazil r/s

Brazil: General Options

Brazil имеет альтернативный стандартному "максовскому" VFB (Virtual Frame Buffer) - Brazil VFB. Самая первая закладка Brazil: General Options предлагает различные настройки, относящиеся в основном к Brazil VFB и консоли.



рис. 1 Настройка Braxil VFB и консоли

Использовать Brazil VFB удобно и полезно по двум причинам. Во-первых, в режиме "Select Buckets Mode" имеется возможность выбирать, какую часть изображения рендерить. В этом случае все изображение покрывается прямоугольной сеткой с размером ячейки, который выбирается в Bucketing Options>Size. Можно выбрать для рендера одну или несколько таких ячеек, кликая по ним мышкой, и когда выбор завершен, правым кликом запустить рендер.

903

11 октября 2004 Г.

1349

iXBT TV

  • Обзор материнской платы Z370 Aorus Gaming 7 под процессоры Coffee Lake

  • Обзор аккумуляторной дрели-шуруповерта Bosch GSR 12V-15 FC Professional

  • Заводские экзоскелеты, обновление Firefox, слишком умные наушники

  • Репортаж с конференции Supercomputing 2017 (SC17), день 3: стенд группы компаний РСК

  • Репортаж с конференции Supercomputing 2017 (SC17), день 2: стенд Intel

  • Репортаж с конференции Supercomputing 2017 (SC17), день 1: рейтинг Top500

  • Обзор кинотеатрального DLP-проектора LG PF1000U со встроенным ТВ-тюнером

  • Камера Panasonic G9, унитазный робот, игровой смартфон, кепка для водителей

  • Обзор портативной беспроводной колонки Sven PS-460

  • Обзор напольного пылесоса Tefal Silence Force 4A TW6477 с одноразовыми мешками для сбора мусора

  • Обзор сверхширокоугольного зум-объектива Canon EF 16-35mm f/2.8L III USM

  • Обзор изогнутого 34-дюймового IPS-монитора LG 34UC99 с соотношением сторон 21:9 и белым корпусом

1256