- Щоб додати коментар, увійдіть
Алгоритмы визуализации
В этой главе...
В этой главе дается подробный обзор трех алгоритмов визуализации, доступных в mental ray: стандартной визуализации с построчной разверткой, трассировки лучей и аппаратной визуализации, а также показывается их применение как вместе, так и по отдельности. Назначение этой главы — помочь вам лучше понять основополагающие процессы визуализации и различные соображения, оказывающие влияние на решения, принимаемые при подготовке к визуализации. В этой главе вы ознакомитесь с отличиями построчной развертки, трассировки лучей и аппаратной визуализации, а также с реализацией этих алгоритмов в трех основных приложениях, где имеется доступ к mental ray. Освоение материала этой главы имеет решающее значение для оптимизации процесса визуализации как по продолжительности, так и по качеству. Решения, положенные в основу оптимизированной визуализации, сочетают в себе настройку подходящих параметров для ускорения визуализации с правильным подходом к разработке и выполнению всей последовательности кадров. Такие аспекты, как разрешение геометрической модели (число многоугольников), форматы и разрешение текстур (размеры файлов изображений), спецэффекты и проходы визуализации, оказывают заметное влияние на успешное выполнение проекта, в котором удачное построение сцены способствует согласованности визуализации.
Введение в искусственное освещение
Приступая к рассмотрению алгоритмов визуализации, следует напомнить, что конечная цель визуализации изображения, формируемого средствами машинной графики, создать реалистичные, завершенные поверхности, сымитировав поведение света в реальном мире. В машинной графике процесс формирования изображения зависит от двух главных составляющих: шейдеров освещения и их взаимодействия с шейдерами материалов поверхностей. Но поскольку настоящий свет намного сложнее CG освещения, то очень трудно воссоздать даже самые элементарные световые эффекты, как, например, освещение с расширенным динамическим диапазоном (HDR; этот вопрос подробно рассматривается на протяжении всей книги). В стремлении разрешить все эти затруднения, связанные с воссозданием настоящего затенения, в машинной графике применяются различные алгоритмы визуализации и сложные модели шейдеров, призванные обеспечить повышение реализма результатов трехмерной визуализации. Сложное поведение света может быть отчасти учтено в методах, которые опираются на алгоритмы усовершенствованной трассировки лучей, в том числе визуализацию освещения отраженным светом с использованием изображений HDR (этот вопрос более подробно рассматривается в главах 12 и 13).
Основное отличие искусственно сгенерированного изображения средствами трехмерной графики от того, что приходится наблюдать в действительности, состоит в том, что реальном мире свет распространяется наружу от своего источника в окружение, взаимодействуя с поверхностями как в прямом, так и в отраженном направлении и определяя форму независимо от наблюдателя или регистрирующего устройства. Следовательно, в реальных условиях мы инстинктивно прослеживаем пути, которые свет проходит от своего источника в окружении, отражаясь по ходу от разных объектов и достигая в конечном итоге нашего глаза, цифрового датчика или пленки в камере. В области трехмерной визуализации мы можем воспринимать окружение как нечто, определяемое при прослеживании путей движения взгляда от камеры к сцене независимо от используемого алгоритма. Каждое наблюдение теоретически начинается с прослеживания пути движения взгляда от местоположения камеры к сцене и изучения различных атрибутов окраски поверхностей, которые встречаются на этом пути, включая влияние текстуры, цвета, света, тени и тумана. Следовательно, в виртуальном трехмерном мире, где изображения формируются машиной, источник света и наблюдатель меняются местами. И для оценки путей движения взгляда применяются разные алгоритмы. Так, при построчной развертке и аппаратной визуализации пути движения взгляда не прослеживаются, а оцениваются другими методами, тогда как при трассировке лучей такие пути имитируются в результате оценки пересечения многоугольников, встречающихся на данном пути взгляда по сцене, что считается более ресурсоемкой формой визуализации. Все эти алгоритмы более подробно рассматриваются в последующих разделах, а также в главе 5.
Наше представление о настоящем освещении и фотографии оказывает заметное влияние на практический подход к визуализации, выбор форматов изображений и отображение результатов вывода. В этой книге вопросы машинного формирования изображении и имитации реальных условий рассматриваются на примере методов отражения и освещения средствами машинной графики. Подробнее о физических свойствах света и камер и их связи с шейдерами в машинной графике, фотографией, форматами вывода и даже изображениями HDR вы узнаете из глав 4 и 9. Чем больше вы будете знать о свойствах света и камер, тем большее вдохновение для творчества вы сможете черпать даже в самых простых явлениях природы.
Внутренний механизм визуализации
Визуализация — это процесс растрирования трехмерной векторной графики в поэлементную двухмерную графику для формирования растрового изображения. Для того чтобы сформировать растровое изображение из трехмерной графики, программа должна выбрать значения цвета в трехмерной графике и дополнительно обработать цвет, а затем определить окончательное значение цвета каждого пикселя. По существу, данные растрового изображения содержат полутоновые значения для каждого пикселя, которые затем интерпретируются как каналы цвета в устройствах вывода изображений и, в частности, в типичные каналы трех основных цветов RGB (красного, зеленого и синего). Под растрированием обычно понимается процесс преобразования векторных данных в двухмерные невекторные данные подобно тому, как это обычно делается при экспорте векторной графики в формате растровых изображений, например, TIFF, в таких приложениях, как Adobe Illustrator или Macromedia Freehand.
Для трехмерной визуализации имеются два совершенно разных подхода: один — программный, включая алгоритмы построчной развертки и трассировки лучей, а другой — аппаратный с использованием одного из двух распространенных API (OpenGL или Direct3D) с целью задействовать графический процессор компьютера во время визуализации. При программной визуализации оцениваются значения пикселей, поочередно выбираемых из сцены (даже на уровне субпикселей) методом построчной развертки или трассировки лучей в зависимости от заданных уровней выборки сцены и других связанных с этим параметров, подробнее рассматриваемых в главе 5.
Другой подход, при котором также используется построчная развертка (рассматриваемая далее в разделе "Визуализация с построчной разверткой"), состоит в визуализации аппаратными средствами, где из вершин, получаемых графическим процессором, компонуется геометрическая форма и рассчитывается отражение. При аппаратной визуализации база данных сцены, формируемая в mental ray и рассматривавшаяся в главе 1, не используется. Вместо этого по очереди выбирается каждый треугольник и в "реальном масштабе времени" интерпретируются соответствующие параметры его настройки, но, в отличие от программной визуализации, информация из элементов базы данных сцены не считывается. Следовательно, для аппаратной визуализации совсем не обязательно знать что-либо о сцене и параметрах ее настройки. Графическому процессору достаточно обработать один треугольник за другим и заполнить все пиксели в зависимости от выбранного разрешения. Несмотря на то что в mental ray поддерживается передача многоугольников графическому процессору для аппаратной визуализации, это средство, главным образом, программной визуализации, не зависящее от аппаратных средств графического процессора. В этой главе основное внимание уделяется методам программной визуализации в mental ray и вкратце рассматриваются принципы аппаратной визуализации, а также интеграция mental ray с аппаратными средствами. Программная визуализация с построчной разверткой является наиболее часто используемым алгоритмом в большинстве приложений визуализации, поэтому ссылки на визуализацию здесь и далее означают именно этот метод, если не указано иное. Все три упомянутых выше метода визуализации подробнее рассматриваются в последующих разделах.
Выборка и фильтрация
Значение цвета пикселя измеряется в mental ray несколькими методами. Такие измерения играют важную роль, ведь, как станет ясно дальше, различные свойства окраски поверхности зависят от значения и интенсивности цвета. В различных алгоритмах визуализации применяются разные методы измерения значений цвета, но все они сводятся к одному общему знаменателю: выборке. На рис. 2.1 представлен типичный процесс выборки в ходе программной визуализации. Как правило, оценка точки поверхности состоит из выборочных измерений цвета в трехмерной сцене (Е) в зависимости от поля зрения камеры (А), которое, в свою очередь, связано с анализируемым пикселем (С) в буфере кадров В). Один и тот же пиксель может быть выбран несколько раз (на уровне субпикселей), как показано стрелками (D), обозначающими выборку элементов сцены (Е) для данного пикселя (С).

Рис. 2.1. Взаимосвязь между камерой, буфером кадров, выборкой на уровне субпикселей и трехмерной сценой.
Выборка не обязательно ограничивается размером целевого пикселя при программной визуализации, а значения, полученные в отдельной выборке, отнюдь не обозначают окончательное значение цвета пикселя, но являются промежуточными на пути к определению окончательного значения цвета пикселя в результате интерполяции последовательного ряда выборок (т.е. определенного сочетания значений цвета). Следовательно, выборка может осуществляться на уровне субпикселей (избыточная выборка) и, наоборот, на уровне нескольких пикселей (недостаточная выборка). Если за один раз выбирается несколько пикселей, это фактически означает лишь одну выборку, в результате которой измеряется значение цвета NхN пикселей. Очевидно, что такая выборка ускоряет визуализацию, но приводит к снижению качества изображения. Этот метод годится для визуализации сцены с целью быстрого предварительного просмотра.
Примечание.
Очень важно уяснить, что на каждый пиксель приходится одно значение цвета, обозначающее несколько элементов сцены, включаемых в данный пиксель. Правильное представление о том, как это значение рассчитывается, помогает контролировать качество изображения, уменьшить мерцание и повысить эффективность визуализации. Возможность выполнять выборку на уровне субпикселей существенно улучшает интерполяцию окончательного значения цвета каждого пикселя и позволяет преодолевать ограничения на уровне отдельного пикселя.
Помимо самой выборки, дополнительная интерполяция и фильтрация результатов выборки способствует максимально точному определению значения цвета каждого пикселя. Методы фильтрации предназначены для фильтрования цветов пикселей из отдельных выборок в буфере кадров, повышая целостность результатов соседних выборок до того, как они достигнут буфера кадров.
Буферы кадров и вывод
По завершении выборки и фильтрации полученные значения сохраняются в виде данных растрового типа в буфере кадров, где они хранятся до окончания визуализации, после чего их можно сохранить в файле изображения на диске. Перед записью данных изображения на диск они могут быть также переданы из буфера кадров для дополнительной видеообработки каждого пикселя с целью получить такие эффекты, как свечение или размытость.
Па рис. 2.1 показана взаимосвязь между камерой, буфером кадров, выборкой и трехмерной сценой, когда на каждый пиксель приходится несколько выборок. На этом рисунке показано также, что одним пикселем в буфере кадров может быть представлено несколько многоугольников на сцене.
Примечание.
Подробнее о буферах кадров и вариантах вывода из них вы узнаете из главы 3. А в главе 5 вы ознакомитесь с тем, как настраиваются параметры выборки, фильтрации и всего, что имеет отношение к качеству изображения.
Алгоритмы визуализации в mental ray
В mental ray могут быть использованы три основных алгоритма визуализации наряду с различными вариантами каждого из них. Как упоминалось выше, эти алгоритмы реализуются, в основном, программным путем, поскольку в данном случае речь идет о средстве программной визуализации.
В последующих разделах основное внимание уделяется программным алгоритмам визуализации и их отличиям, а в конце главы будет рассмотрена и аппаратная визуализация.
Если судить по названию, то mental ray - это программный продукт, специализирующийся на трассировке лучей, тем не менее в нем широко применяются и алгоритмы построчной развертки. В действительности, это программное средство само определяет, какой именно алгоритм использовать в зависимости от заданного варианта вывода. В функции данного средства визуализации входит определение значений цвета освещения поверхности, атмосферных эффектов и многое другое, и для каждой задачи mental ray решает, как лучше всего интерпретировать поверхность, исходя из параметров настройки визуализации, указанных пользователем и помещенных в блок опций сцены внутри файла формата mental images (.mi). Такое решение связано с выбором трассировки лучей или построчной развертки в соответствующей форме, а также с рядом других опций, имеющих непосредственное отношение к возможностям mental ray. Некоторые из этих опций представлены ниже в виде небольшого фрагмента из блока опций преобразования сцены XSI в формат mental images.
options «Render Options»
…
shadow on
trace on > активизировать визуализацию с трассировкой лучей
scanline on > активизировать визуализацию с построчной разверткой
hardware off > отменить аппаратную визуализацию (по умолчанию)
filter box 1.000000 1.000000
face both
trace depth 2 2 4
samples -1 2
samples collect 4
contrast 0.2 0.2 0.2 0.2
motion off
task size 0
caustic off > Свойства усовершенствованной трассировки лучей...
globillum off > Свойства усовершенствованной трассировки лучей...
finalgather off > Свойства усовершенствованной трассировки лучей...
output on
…
end options
Примечание
Параметры настройки mental ray определяются в блоке опций внутри файлов формата .mi. Эти опции, как правило, управляют различными параметрами настройки визуализации и могут быть также переопределены из командной строки перед визуализацией. Если используется командная строка, то эти опции указываются в ней в виде команд с префиксным флажком (-). А если команды состоят из нескольких операторов, как, например, trace depth в приведенном выше фрагменте, то при вводе из командной строки вместо пробелов используются знаки подчеркивания. В этой книге чаще используется синтаксис командной строки, тогда как в блоке опций те же самые команды указываются без префиксного флажка, а знаки подчеркивания заменяются пробелами.
Различные алгоритмы визуализации могут быть использованы в mental ray как в определенном сочетании, так и по отдельности. Это означает, что в mental ray может быть использована только трассировка лучей или же только построчная развертка либо и то и другое вместе. Кроме того, для повышения производительности программные методы визуализации могут дополняться аппаратными. С другой стороны, если выбрать аппаратную визуализацию, то mental ray будет опираться, в основном, на графический процессор в отношении таких поддерживаемых аппаратно свойств, как элементарные шейдеры и визуализация, возвращаясь затем к программной поддержке более усовершенствованных свойств, в том числе и освещения отраженным светом (это свойство не поддерживается аппаратно). Но чаще всего различные программные алгоритмы используются в определенном сочетании вместо трассировки лучей или построчной развертки одновременно с аппаратной визуализацией. В mental ray реализован подход, позволяющий указывать и настраивать алгоритмы в целях более эффективного управления визуализацией. Поэтому вы должны сами выбрать наилучший вариант визуализации для конкретного проекта или сцены. Указывая конкретный алгоритм и параметры его настройки, вы фактически определяете способ визуализации нескольких элементов сцены, в том числе отражения, преломления, размытости движения, эффектов бликов в объективе камеры, освещения отраженным светом и прочего, причем все это активизируется в блоке опций, при условии, что активизирован и поддерживающий алгоритм (чаще всего трассировки лучей).
