002-02. Алгоритмы визуализации

Что выбрать: построчную развертку или трассировку лучей

Когда в mental ray начинается визуализация, то сначала всегда используется алгоритм построчной развертки, если он не отменен специально. Если же в ходе визуализации mental ray решает, что требуется трассировка лучей, например, для определения отражений, происходит автоматическое переключение на визуализацию с трассировкой лучей. При визуализации с построчной разверткой оценивается прохождение основных лучей от камеры к сцене, но эти основные лучи не трассируются. Вместо этого их путь определяется из информации, собранной на стадии предварительной обработки построчной развертки (подробнее об этом далее в разделе "Визуализация с построчной разверткой"). Как правило, трассировка лучей начинается только в том случае, если требуется проследить вторичные лучи. А по завершении трассировки лучей mental ray возобновляет визуализацию с построчной разверткой до тех пор, пока трассировка лучей не понадобится вновь. В некоторых видах визуализации построчная развертка вообще не применяется, хотя и активизирована. Например, для эффектов глубины резкости объектива требуется трассировка каждого основного луча, и если трассировка лучей активизирована, то построчная развертка вообще не начинается, поскольку для прослеживания всех основных лучей используется трассировка. Таким образом, mental ray самостоятельно решает, когда следует использовать построчную развертку, а когда — трассировку лучей, при условии что эти алгоритмы активизированы среди параметров настройки визуализации.

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

Преимущества и недостатки

Трассировка лучей отличается от построчной развертки главным образом точностью выборки, а следовательно, и методом оценки выбранного цвета. При визуализации с построчной разверткой необходимо лишь выявить многоугольники непосредственно перед камерой в пределах прямой видимости, тогда как при трассировке лучей можно исследовать поверхности, изменяя направление линии прямой видимости, как при отражении и преломлении. Следовательно, при визуализации с построчной разверткой mental ray не обязательно знать, где находятся дополнительные поверхности и существуют ли они вообще. Например, поверхности, находящиеся позади камеры, не оказывают влияния на выбираемые точки, когда трассировка лучей отменена, но когда она активизирована, они оказывают влияние на цвет отражения. Так, если для точки поверхности требуется дополнительная оценка цвета, например цвета отражения от ближайшей поверхности, то при трассировке лучей в данной точке испускается вторичный луч для обнаружения отражений и преломлений в зависимости от требований шейдера материала, а следовательно, предоставляются дополнительные средства для более точного определения цвета.

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

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

Визуализация с построчной разверткой

При визуализации с построчной разверткой в mental ray сначала выполняется предварительная обработка сцены, в ходе которой полигоны сцены упорядочиваются в двумерный массив пикселей по координатам Y и X, определяющим местоположение каждого полигона. Такой массив, по существу, является проекцией сцены по линии прямой видимости от камеры, предоставляя информацию о пересекающихся полигонах. В этом массиве трехмерные значения представлены двухмерными значениями поэлементного разложения на растр, а не координатами трехмерного пространства. И, несмотря на то что глубина (по оси Z) не представлена в этом массиве непосредственно, mental ray все же в состоянии определить, какие объекты находятся ближе к камере и какие объекты удалены от нее, исходя из пределов глубины самой камеры. В этом случае визуализация превращается в процесс упорядочения геометрической формы, находящейся на самом переднем плане, в массив пикселей в зависимости от пространственного расположения поверхностей на сцене. Это означает, что несколько многоугольников в массиве могут иметь одинаковые координаты, а следовательно, они перекрываются. Для упорядочения по глубине в mental ray необходимо определить местоположение многоугольника, исходя из замера глубины от сцены до камеры, по которому можно судить о глубине расположения каждого полигона на сцене относительно остальных полигонов с теми же самыми координатами X, Y в массиве пикселей.

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

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

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

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

Алгоритмы визуализации с построчной разверткой

В mental ray предоставляются три разных алгоритма построчной развертки: стандартное средство визуализации с построчной разверткой, растеризатор и OpenGL. А в качестве четвертого варианта можно вообще выключить визуализацию с построчной разверткой.

  • Стандартное средство визуализации с построчной разверткой. В этом случае используется только что описанный стандартный алгоритм визуализации с построчной разверткой. Данный метод подразумевает также применение основного алгоритма выборки в mental ray, описываемого в главе 5.
  • Растеризатор. Это алгоритм построчной развертки с растрированием, усовершенствованный в двух важных аспектах визуализации, которые позволяют использовать его с выгодой как при производстве фильмов, так и производстве мелкой графической и анимационной продукции. Прежде всего, этот алгоритм упорядочивает сцену по глубине намного быстрее, чем при обычной визуализации с построчной разверткой. Это означает, что многоугольник, находящийся на самом переднем плане, может быть обнаружен в mental ray гораздо быстрее и без учета всех остальных многоугольников, расположенных прямо за ним в точке с теми же самыми координатами. Как только первый многоугольник будет выявлен с "первого попадания" из точки расположения камеры, все остальные многоугольники, находящиеся позади него, могут быть проигнорированы. По существу, растеризатор не занимается измерением расстояния от каждого многоугольника до камеры, чтобы определить его местоположение относительно других многоугольников. А поскольку эта стадия опускается, то визуализация с построчной разверткой ускоряется. Благодаря столь эффективному способу распознавания геометрической формы растеризатор становится весьма привлекательным решением для визуализации сцен, где присутствует много меха и волос. Кроме того, растеризатор позволяет ускорить визуализацию размытости движения. Для визуализации размытости движения в mental ray может быть использована построчная развертка или же трассировка лучей без существенных отличий в результатах. Если активизирован растеризатор, то поддерживается только визуализация размытости движения с построчной разверткой, тогда как аналогичная визуализация с трассировкой лучей отменяется. Благодаря этому существенно сокращается продолжительность визуализации, хотя и не поддерживаются такие свойства трассируемой лучами размытости движения, как отражение, преломление или затенение размытых движением поверхностей. Тем не менее растеризатор обеспечивает существенное повышение производительности, и поэтому этот метод следует рассматривать всегда, когда он уместен. (Подробнее о размытости движения вы узнаете из главы 8.)
  • Насколько алгоритм выборки в растеризаторе лучше, чем стандартный алгоритм выборки в mental ray? Он не обеспечивает такую же гибкость и не поддерживает такой же подход к выборке на уровне субпикселей, хотя и позволяет оценивать цвет на уровне субпикселей. Тем не менее этот алгоритм оказывается достаточно эффективным при визуализации размытости движения или выявлении недостатков в крупных сценах, визуализация которых может быть затруднена из-за сложности их геометрической формы. Некоторые крупные сцены могут насчитывать миллионы полигонов, что усложняет их упорядочение по глубине. Подробнее об алгоритме выборки в растеризаторе и его характеристиках речь пойдет в главе 5.

  • Визуализация с ускорением средствами OpenGL. Такая визуализация повышает производительность благодаря использованию возможностей видеоадаптера компьютера при определении пространственного расположения объектов на сцене, перед тем как выполнять визуализацию с помощью программного алгоритма. Стадии предварительной обработки, на которых выявляются пересекающиеся поверхности, а сцена упорядочивается по глубине, могут быть пройдены очень быстро, поскольку аппаратно расчеты выполняются быстрее, чем программно (хотя и не так точно). Но в ходе данного процесса качество визуализируемого изображения не ухудшается, поскольку все последующие расчеты, связанные с выборкой цвета, выполняются программно. Технология OpenGL служит лишь для усовершенствования стадии предварительной обработки и в качестве дополнения программной визуализации, а не ее альтернативы, подобно аппаратной визуализации.
  • Существенное отличие ускорения средствами OpenGL от аппаратной визуализации состоит в том, что в первом случае mental ray не позволяет аппаратным средствам рассчитывать шейдеры. С другой стороны, при аппаратной визуализации mental ray обычно использует аппаратные средства для шейдеров. Подробнее об этом речь пойдет далее в разделе "Аппаратная визуализация".
    В приведенном ниже фрагменте вывода сообщений о ходе визуализации с ускорением средствами OpenGL в Maya показано, что предварительная обработка служит для выявления пересечений и "основных лучей" с целью определить многоугольники, видимые из камеры.

    RC 0.2 progr: rendering
    (визуализация) RCI 0.2 progr: opengl intersection rendering begin (начало визуализации с ускорением opengl и выявлением пересечения)
    PHEN 0.2 info : --------------------------------------
    PHEN 0.2 info : mayabase, compiled on Jul 19 2005. (база данных mayabase, скомпилировано 19 июля 2005 года)
    PHEN 0.2 info : --------------------------------------
    RCI 0.2 info : opengl rendering time: 0.0 seconds
    (время визуализации с ускорением opengl: 0,0 с)
    RCI 0.2 progr: opengl intersection rendering end
    (завершение визуализации с ускорением opengl и выявлением пересечения)
    RCI 0.2 progr: begin intersection preprocessing
    (начало предварительной обработки для выявления пересечения) RCI 0.2 info : using OpenGL for eye rays
    (использование OpenGL для прослеживания основных лучей) RCI 0.2 info : not tracing secondary rays
    (трассировка вторичных лучей отсутствует)
    RCI 0.2 progr: end intersection preprocessing (конец предварительной обработки для выявления пересечения)

    Визуализация с ускорением средствами OpenGL активизируется довольно просто. Для этого в командной строке достаточно ввести команду -scan-line opengl или указать эту же команду в блоке опций внутри файла формата .mi. Среди упоминаемых основных приложений ускорение средствами OpenGL доступно в Maya и XSI 5.1 или более ранних версиях, а в версии XSI 6 и 3ds Max оно недоступно. Ускорение средствами OpenGL может стать неактуальным при заметном повышении вычислительных мощностей центрального процессора и значительном снижении потребности обращаться за помощью к графическому процессору.

  • Отмена визуализации с построчной разверткой. Есть ли в самом деле смысл отменять визуализацию с построчной разверткой явно, если известно, что трассировка лучей все равно выбирается в mental ray автоматически по мере надобности? Дело в том, что в этом случае просто экономятся вычислительные ресурсы. Зачем выполнять предварительные расчеты и упорядочивать сцену для визуализации с построчной разверткой, если заранее известно, что для ее визуализации потребуется трассировка лучей? В подобных случаях такая отмена вполне оправдана, поскольку исключает стадию предварительной подготовки к построчной развертке. При появлении определенных артефактов или затруднений, связанных с визуализацией (особенно из-за точности определения глубины), можно также попытаться отменить визуализацию с построчной разверткой, поскольку трассировка лучей обычно дает более точные результаты и без характерного для построчной развертки упорядочения сцены по глубине на стадии предварительной обработки.
  • Например, визуализацию с построчной разверткой целесообразно отменить в основном приложении, если в сцене используется эффект глубины резкости, визуализируемый в mental ray, для чего обычно требуется трассировка каждого луча, исходящего из объектива камеры. Аналогично, при одновременном появлении объектов рядом друг с другом скрадывается глубина сцены. Такие объекты кажутся пересекающимися, хотя на самом деле один из них находится ближе к камере, чем другой. Подобная ситуация может возникнуть из-за преувеличенных пределов обзора камеры по глубине или же вследствие того, что объекты оказываются слишком близко друг к другу, чтобы правильно определить их взаимное расположение на стадии упорядочения сцены по глубине перед построчной разверткой. Данное затруднение можно разрешить трассировкой лучей, используя присущие ей более точные методы оценки пространственного расположения геометрической формы на сцене.

    Активизация алгоритмов визуализации с построчной разверткой

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

    -scanline [off | on I rasterizer I opengl]

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

    MAYA

    1. Выберите из главного меню Window-->Rendering Editors-->Render Settings (Окно-->Редакторы визуализации-->Параметры визуализации) или же щелкните на соответствующей пиктограмме быстрого вызова, чтобы открыть окно Render Settings. Выберите вариант mental ray из раскрывающегося списка Render Using (Средство визуализации) в этом окне и перейдите к свитку Rendering Features (Свойства визуализации) на вкладке mental ray, как показано на рис. 2.2.

    Рис.2.2. Параметра настройки алгоритма построчной
    развертки, доступные в Maya из свитка Rendering Features
    в окне Rendering Settings

    2. Кнопки-переключатели из области Primary Renderer (Основное средство визуализации) позволяют указать алгоритм, используемый для визуализации по основным лучам, включая построчную развертку (Scanline), растеризатор (Rasterizer (Rapid Motion)) и трассировку лучей (Raytracing). Следует иметь в виду, что если активизированы алгоритмы построчной развертки или растеризатора, то они лишь определяют предпочтительный алгоритм, но не отменяют трассировку лучей. Обратите также внимание на то, что трассировка лучей активизируется и для визуализации по вторичным лучам в области флажков Secondary Effects (Вторичные эффекты; см. рис. 2.2).

    XSI

    1. Откройте окно Render Manager из главного меню или расположенной слева панели инструментов Render. Перейдите по следующей цепочке: mental ray-->mental ray Render Options-->вкладка Rendering. Алгоритмы визуализации доступны из раскрывающегося списка Туре в области Primary Rays (Основные лучи), как показано на рис. 2.3.

    Примечание
    О применении окна Render Manager см. врезку "Диспетчер визуализации в XSI 6.0" в главе 1.

    Рис.2.3. Алгоритмы визуализации доступны в XSI на вкладках Rendering и Optmization в свитке mental ray Rendering Options

    2. Если перейти по цепочке mental ray Render Optionsвкладка Optimization, то вновь появится раскрывающийся список Primary Rays. По существу, на вкладке Rendering собраны самые основные, хотя и не все свойства, доступные на других вкладках. Следовательно, раскрывающиеся списки Primary Rays на этих вкладках взаимосвязаны, и при изменениях в одном из них происходит обновление другого.

    3. Обратите внимание на свойства Tile Size (Размер мозаичного элемента) и Tile Order (Порядок мозаичного расположения), доступные на вкладке Optimization (показанной на рис. 2.8 далее в этой главе). Эти свойства связаны с порядком расположения и размерами мозаичных элементов, о чем речь пойдет далее во врезке "Порядок мозаичного расположения и норматив".

    3DS MAX

    1. Для того чтобы воспользоваться mental ray в 3ds Max, активизируйте его в качестве средства окончательной визуализации (Production renderer) в окне Render Scene. С этой целью выберите из главного меню команду RenderingRender (или нажмите функциональную клавишу ). Найдите на вкладке Common в открывшемся окне Render Scene свиток Assign Renderer (Назначение средства визуализации), где вы можете выбрать mental ray в качестве средства окончательной визуализации, щелкнув на кнопке с многоточием справа от метки Production.

    2. Выберите в окне Render Scene: mental ray Renderer вкладку Renderer и перейдите к свитку Rendering Algorithms (Алгоритмы визуализации), как показано на рис. 2.4.

    Рис. 2.4. Алгоритмы визуализации с построчной разверткой можно найти в 3ds Max на вкладке Renderer

    3. Флажок Enable (Активизировать) из области Scanline (Построчная развертка) активизирует и отменяет опции, перечисленные выше в подразделе "Активизация алгоритмов визуализации с построчной разверткой". Если этот флажок установлен, используется стандартный алгоритм построчной развертки.

    4. После того как визуализация с построчной разверткой будет активизирована, вы можете выбрать алгоритм растризатора, установив флажок Use Fast Rasterizer (Rapid Motion Blur) (Использовать быстрый растеризатор (размытость быстрого движения)).

    Визуализация с трассировкой лучей

    Трассировка лучей привносит в процесс визуализации ряд усовершенствованных свойств и алгоритмов. На самом элементарном уровне трассировка лучей, по существу, является еще одним средством, обеспечивающим более точное измерение значений цвета в выбранной точке поверхности. Измерения с трассировкой лучей дают более точные результаты, поскольку точки выбираются путем испускания лучей в сцену и сравнения каждого луча с многоугольниками, находящимися на сцене на предмет их пересечения. Следует подчеркнуть, что при трассировке лучей на самом деле используются не лучи, а оценка пересечений с многоугольниками, встречающимися на заданном пути по сцене, а для удобства такие пути называются лучами. В mental ray предоставляются три разных алгоритма для разделения сцены на мелкие сегменты ради сокращения числа сравнений многоугольников с лучами и ускорения визуализации. Такие методы подробнее рассматриваются в главе 5. Следовательно, трассировка лучей представляет собой процесс испускания лучей в сцену из точки ее наблюдения в камеру, в результате чего лучи распространяются внутри сцены прямыми путями до тех пор, пока не пересекут поверхность. Эта начальная стадия испускания лучей в сцену для измерения значений цвета называется испусканием лучей. Алгоритм испускания лучей был впервые предложен Артуром Аппелем (Arthur Appel) в 1968 году.

    Примечание

    ПОРЯДОК МОЗАИЧНОГО РАСПОЛОЖЕНИЯ И НОРМАТИВ

    В методах программной визуализации, применяемых в mental ray, процесс визуализации выполняется не построчно, а по отдельным мозаичным элементам. В упоминаемых основных приложениях можно установить два параметра мозаичного расположения, которые могут оказывать влияние на общую производительность: порядок мозаичного расположения и норматив на размер мозаичного элемента в пикселях.

    ПОРЯДОК МОЗАИЧНОГО РАСПОЛОЖЕНИЯ

    Во всех трех основных приложениях по умолчанию устанавливается порядок мозаичного расположения по Гильберту (Hilbert), благодаря которому визуализация оптимизируется как с точки зрения эффективного выполнения задания, так и по производительности. Такой порядок вынуждает mental ray использовать базу данных сцены наиболее логичным образом, что позволяет также оптимизировать управление памятью при визуализации сцен, насыщенных геометрической формой. Ради эффективности следует всегда применять именно такой порядок. Помимо этого, имеются и другие разновидности порядка мозаичного расположения, которые можно использовать в диагностических целях для просмотра "картины" визуализации в разной последовательности на экране. К их числу относятся Spiral (По спирали) в XSI; Spiral, Left to Right (Слева направо), Right to Left (Справа налево), Тор-Down (Сверху вниз) и Bottom-Up (Снизу вверх) в 3ds Max.

    НОРМАТИВ

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

    -task_size [целое число]

    Норматив указывается в виде квадратных участков пикселей и, как правило, автоматически определяется средствами mental ray в основных приложениях. Если установлен нулевой норматив, он автоматически определяется в mental ray на основании внутренних расчетов и целевого разрешения визуализации. Норматив оказывает заметное влияние на выборку и фильтрацию, о чем подробнее речь пойдет в главе 5.

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

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

    УСТАНОВКА НОРМАТИВА В MAYA

    1. Выберите сначала команду RenderBatch Render или Render Current Frame из главного меню, а затем блок параметров, чтобы открыть окно атрибутов соответствующей команды.

    2. Если установлен атрибут Auto Tiling (Автоматическое мозаичное расположение), норматив рассчитывается автоматически. Если же сбросить атрибут Auto Tiling, то норматив можно указать вручную (в пикселях) в поле атрибута Task Size (Норматив).

    УСТАНОВКА НОРМАТИВА В XSI

    1. Откройте в XSI окно Render Manager и перейдите по цепочке mental ray Render Optionsвкладка Optimization.

    2. Свойства Tile Size и Tile Order служат для установки размера каждого мозаичного элемента и порядка его появления на экране соответственно. (Эти свойства показаны на рис. 2.8 далее в этой главе.)

    3. Как видите, в XSI предоставляются на выбор два порядка мозаичного расположения: Hilbert и Spiral, а норматив устанавливается автоматически, исходя из "наилучшего предположения" которое делается в XSI по отношению к визуализируемой сцене, чего, как правило, оказывается достаточно, за исключением упомянутой выше ситуации, возникающей при визуализации в сети.

    УСТАНОВКА НОРМАТИВА В 3DS МАХ

    1. Перейдите ко вкладке Renderer в окне Render Scene: mental ray Renderer. В области Options из свитка Sampling Quality (Качество выборки) находятся все необходимые в данном случае параметры.

    2. Параметр Bucket Width (Ширина заливки) связан с установкой норматива и по умолчанию принимает значение, соответствующее размерам 48x48 мозаичного элемента.

    3. Требуемый порядок мозаичного расположения выбирается из раскрывающегося списка Bucket Order (Порядок заливки), где доступны следующие варианты: Hilbert, Spiral, Left to Right, Right to Left, Top-Down и Bottom-Up.

    Испускание лучей

    Метод испускания лучей предоставляет средства для более точного измерения цвета в сцене, чем устаревший и менее точный алгоритм визуализации с построчной разверткой. Первым художественным фильмом, в котором испускание лучей нашло настоящее применение при объединении трехмерной графики и кадров с естественным движением, стал фильм "Трон" (Tron), выпущенный анимационной студией MAGI в 1982 году в Нью-Йорке. Интересно, что полноценный анимационный фильм "История игрушек" (Toy Story) был визуализирован с построчной разверткой и выпущен на студии Pixar лишь более 10 лет спустя в 1995 году.

    Фильм "Трон" стал эпохальным, если не поворотным, событием в производстве художественных фильмов с элементами трехмерной графики, поскольку он вошел в историю благодаря применению усовершенствованных алгоритмов испускания лучей для наложения машинной графики на кадры с игрой актеров. Примечательно, что в том же году с участием того же самого художника-концептуалиста Сида Мида (Syd Mead) был выпущен незабываемый фильм "Бегущий по лезвию бритвы" (Blade Runner). Этот фильм до сих пор остается одной из тех фантастических кинокартин с элементами машинной графики, которые не только оказали огромное влияние на дальнейшее развитие самой машинной графики и кинематографа, но и раскрыли такие понятия, как генная инженерия, клонирование и фантастическое окружение. Если воссоздание такого окружения, как в фильме "Бегущий по лезвию бритвы", опиралось раньше на фотографические эффекты и миниатюрные съемочные площадки, то теперь оно опирается на усовершенствованные алгоритмы визуализации наряду с макетами. Последовательное объединение всех этих элементов с игрой актеров, фоном и природными явлениями основывается в определенной степени на методах трассировки лучей, придавая необходимый реализм таким фильмам, как "Терминатор-3: восстание машин" (Terminator 3: Rise of the Machines) студии "Уорнер Бразерс". Этот фильм насыщен сложными эффектами визуализированных отражающих поверхностей.

    Трассировка лучей

    Трассировка лучей была впервые представлена Тернером Уиттедом (Turner Whitted) в 1979 году как метод, расширяющий возможности испускания лучей благодаря дополнительным алгоритмам прослеживания отраженных, преломленных и теневых «лучей. Это означает прослеживание дополнительных путей прохождения лучей, или взглядов, метаемых в сторону сцены. Как упоминалось выше, такие лучи обычно называются основными, а дополнительные, отраженные и преломленные лучи - вторичнъши. (Теневые лучи также являются разновидностью вторичных лучей.) Все эти дополнительные лучи могут испускаться, если требуется, после пересечения основных лучей с поверхностью в зависимости от опций визуализации, указанных для сцены, и, разумеется, от шейдера поверхности. Так, если активизированы тени, отражения или преломления, воссоздаваемые методом трассировки лучей, то дополнительные лучи прослеживают путь от одной точки пересечения к следующей, возвращая информацию о цвете, который должен быть виден в первой точке пересечения. Прослеживаемый путь может предоставить также средства для измерения расстояния между двумя прослеживаемыми точками, что позволяет применять усовершенствованные методы формирования отражений, преломлений и теней, рассматриваемые на протяжении всей этой книги.

    Трассировка лучей всегда подразумевает изменение направления заданного луча. Прямые пути прохождения лучей, как, например, сквозь совершенно прозрачные материалы с показателем преломления 1,0, прослеживать не обязательно, а следовательно, для визуализации непреломляющих прозрачных объектов достаточно и построчной развертки, если таковая активизирована. В таком случае трассировка лучей активизируется всякий раз, когда конкретный шейдер требует изменить направление основного луча, чтобы проследить прямые отрезки пути этого луча в любом направлении. Кроме того, усовершенствованные свойства трассировки поддерживают более точное размывание отражений (поскольку на расстоянии отражение должно быть размытым) и залегание теней на удалении (ведь чем дальше тень падает от объекта, тем больше она расширяется и размывается). Более подробно эти вопросы рассматриваются в главах 7 и 10.

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

    Примечание
    В главе 9 дается подробный обзор свойств различных видов отражения света, а также показывается, каким образом они связаны с моделями трехмерных шейдеров.

    Что же касается камер, то способность трассировки лучей изменять направление луча открывает путь к применению эффектов в объективе камеры. Следовательно, mental ray может верно воспроизводить целый ряд свойств настоящих объективов (с помощью так называемых шейдеров объективов), изменяя направление основных лучей, исходящих из камеры в сторону сцены (этот вопрос более подробно рассматривается в главах 3 и 4). Еще одно свойство трассировки лучей, называемое прохождением лучей, позволяет оценивать результаты измерений лучом вдоль пути прохождения света, определяя видимость света. Благодаря этому средство визуализации может учитывать на пути прохождения света эффекты объемного освещения, оказывающие влияние на затенение и освещение. Если воздух или пыль участвует в освещение сцены, то трассировка лучей может быть использована для оценки взаимосвязей между висящими в воздухе частицами, измеряя расстояние между ними (подробнее об этом вы узнаете из главы 12).

    Если объединить вместе все упомянутые выше возможности трассировки лучей, то в итоге получится весьма эффективный метод имитации реальности. (Разумеется, за это приходится расплачиваться увеличением продолжительности визуализации.) Практически все усовершенствованные инструменты mental ray опираются в той или иной степени на эффект трассировки лучей. Свойства трассировки лучей, включающие в себя усовершенствованные алгоритмы визуализации, в том числе и те, что применяются вместе с эффектами освещения отраженным светом, объемного освещения и развитыми шейдерами, подробно рассматриваются на протяжении всей этой книги и, в частности, в главах 10-14.

    Процесс трассировки лучей

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

    Отражение и преломление

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

    Рис.2.5. Процесс расчета последовательных отражений

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

    Примечание

    Как показано на рис. 2.5, угол падения равен углу отражения, а значит, для воссоздания отражений в mental ray требуется изменить путь прохождения луча, чтобы он последовал на сцене точно по пути зеркального отражения (как будет показано в главе 9) и затем возвратил точные значения цвета отражения.

    Если поверхность в точке А преломляет свет (показатель ее преломления больше 1,0), то преломленный луч направляется по пути к точке В1, расположенной в нижней части преломляющего объема. В точке В1 производится очередной расчет в шейдере для определения цвета, возвращаемого в точку А где затем определяются свойства поверхности аналогично тому, как это делается при отражении в точке В. Если преломление продолжается далее, то из преломляющего объема исходит дополнительный луч, который направляется в гипотетическую точку С1. Как и отраженные лучи, в результате расчетов преломленные лучи следуют правдоподобными путями, изменяя свое направление по законам физики — в данном случае по закону Снеллиуса. Подробнее о физических свойствах света вы узнаете из главы 9.

    Пределы трассировки лучей

    При отражении и преломлении число отклонений луча зависит от пределов, устанавливаемых среди прочих параметров настройки визуализации (как будет показано далее в разделе "Активизация и управление трассировкой лучей"). Так, если установлен предел 2 на число отражений и такой же предел на число преломлений, то общее количество испускаемых в сцену и прослеживаемых лучей составит 4. Следовательно, из каждой точки поверхности может исходить вторичный луч (как отраженный, так и преломленный), которому разрешено отклониться в сцене еще раз перед возвратом значения цвета, поскольку установлен предел 2 на число отражений и преломлений в каждой выборочной точке сцены, что включает в себя первый вторичный луч и еще один дополнительный луч.

    Это означает, что в случае, приведенном на рис. 2.5, вторичный луч направляется из точки А в точку В, а затем в точку С, если установлен предел 2 на число отражений. А по завершении расчетов значения цвета возвращаются обратно по цепочке к первой поверхности (в точку А). Таким образом, исходная поверхность, с которой начался процесс расчета отражений, получает цвета отражений с учетом влияния в точках В и С.

    Максимальная глубина трассировки лучей

    Максимальный предел трассировки лучей может быть установлен общим как для отраженных, так и для преломленных лучей. Так, если в примере, приведенном на рис. 2.5, установить максимальный предел трассировки лучей менее 4 отклонений луча и при этом требуется рассчитать 2 отраженных и 2 преломленных луча, то трассировка лучей прекратится преждевременно. Если установлен максимальный предел 2, то в mental ray рассчитываются только 2 отражения или 2 преломления или же по одному из них. Такой предел действует независимо от установленных пределов на число отражений и преломлений. Эти пределы могут достигать и 10, но рассчитано будет лишь максимум п отражений и преломлений, где п — максимальная глубина трассировки лучей. Такое независимое ограничение позволяет экспериментально задавать большое число отражений и малое число преломлений и ограничивать их общее число таким образом, чтобы максимально использовать эти параметры настройки визуализации, но в разумных пределах. С другой стороны, это дает возможность для оперативного выявления недостатков визуализации или предварительного просмотра сцены при очень малых значениях параметров настройки, изменив лишь один атрибут. Как правило, для получения приемлемых результатов измерения цвета достаточно двух расчетов трассировки лучей. Но если при наличии преломлений не обеспечить хотя бы четырехкратное проникновение лучей внутрь поверхности для измерения цвета, то в конечном итоге будет возвращено значение, которое приведет к появлению пустых (черных) пятен в каналах цвета RGB и альфа-канале изображения. Все эти параметры настройки трассировки лучей будут подробно рассмотрены в соответствующих разделах остальной части данной книги.

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