From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Проходы визуализации (Render Passes) — совокупность различных вычислений, которые визуализатор Blender (Render Engine) должен произвести для того, чтобы получить результирующее изображение. В каждом “проходе“ визуализатор вычисляет различные типы взаимодействий объектов друг-с-другом.

О RenderPass подробно

Все, что вы видите как результат визуализации должно быть предварительно рассчитано для получения финального изображения. Всё взаимодействие между объектами вашей сцены — совокупность действий осветителей, камер, фоновых изображений, установок окружающей среды и т. д. — должно быть отдельно рассчитано различными проходами просчета (passes) по нескольким причинам, например, вычисление теней или radiosity производится несколько раз для каждого пикселя изображения, чтобы получить максимально точный его цвет. Среди элементов, вычисляемых в стандартной процедуре визуализации встречаются:

  • Куда падают тени (shadows)? Каждый источник света, отбрасывающий тень, должен быть „трассирован“ — другими словами производится расчет движения виртуальных световых лучей практически подо всеми возможными углами от данного источника света до поверхностей, вычисляется количество света, дошедшего до поверхности и, соответственно, то, насколько яркой будет выглядеть эта поверхность.
  • Как гасится (occlude) атмосферный (ambient) свет объектами сцены?
  • Как свет отражается (reflect) от зеркальных поверхностей? Ровно как и при расчете теней, визуализатор использует виртуальные линии, только теперь они исходят от камеры и „отражаясь“ от зеркальных поверхностей, попадают на объекты, которые должны быть „видимы“ камерой.
  • Как свет отклоняется (преломляется, refract) от прямолинейного пути, проходя сквозь прозрачные объекты? Продолжает ли он идти по прямой, или его путь изгибается? Если это происходит, то на какой глубине проникновения в объект?
  • Какие объекты присутствуют в сцене, и каковы из очертания? Должен ли каждый конкретный объект выглядеть четко, или его следует просчитать таким образом, чтобы он был размыт — не в фокусе?
  • Как быстро что-либо движется (скорость, velocity)? Должен ли объект размываться при движении при выбранной частоте кадров, или его движение достаточно медленное, чтобы он мог выглядеть совершенно четко?
  • Как далеко от камеры расположены поверхности объектов (Z-глубина, Z-depth)? Должны ли все поверхности быть видимыми камерой, или их перекрывают какие-то другие объекты?
  • Имеет ли объект вектор нормалей (normal) — bumpmap? Требуется ли расчет теней и геометрии для каких-либо объектов?
  • Нужно ли рассчитывать зеркальность? Насколько блестящими должны выглядеть объекты с текстурами, вроде металла?
Renderer Rewrite
Начиная с Blender 2.42, модуль визуализации (render engine) был полностью переписан. Обратитесь к статье Unified Renderer, если Вы используете старую версию Blender.


Ответ на все приведенные вопросы содержится в этом изображении:

Manual-Render-RenderPasses-Example.jpg


Каждый проход визуализации (RenderPass) дает на выходе изображение или карту.

RenderPasses, дающие в результате изображения (Images), можно просмотреть сразу в просмотрщике (viewer), или сохранить в качестве слоя в многослойном OpenEXR-файле, если данных проход (pass) задействован (enabled).

Другой результат RenderPass может быть картой (map). Для того, чтобы его можно было увидеть, его нужно перевести во что-то зримое. Например, карта Z-глубины представляет собой массив значений расстояний каждого пикселя изображения от камеры; эти значения находятся в диапазоне +/-3,000,000 (или около того) единиц измерения blender. На изображении выше можно увидеть промежуточный узел (node) между выводным сокетом RenderLayer и входным сокетом узла Viewer (узел Map Value), который выполняет как раз такой перевод величин. Вам необходимо будет использовать подобные специальные узлы для работы с такого рода картами как с изображениями.

Выбор Проходов визуализации

Manual-RenderLayer-Panel.png

Каждое из приведенных выше изображений может быть выбран в качестве отдельного прохода визуализатора. Фактически единственная необходимость в отделении прохода заключается в возможности каким-либо образом изменить получаемый результат.

Некоторые из них должны быть включены и использованы в вашей сцене (а не просто выбраны в панели RenderLayer), чтобы вы могли хоть что-нибудь увидеть. Например, если в вашей сцене нет ни одного источника света, или эти источники света не отбрасывают теней, или еще интереснее — материалы объектов не принимают теней (receive shadows), то проход просчета Shadow (тень) будет давать пустой результат — просто-напросто в сцене ничего нет, что он мог бы показать. Если вы не задействовали Ambient Occlusion в настройках окружающей среды (environment), просчет AO также будет пустым даже если вы его отметили.

Для того, чтобы сохранить время и место на диске, в панели RenderLayers необходимо сообщить программе, какие проходы требуется рассчитывать:

  • Combined: данная опция включает расчет всех проходов, даже если это и не требуется (как говорится, "целая энчилада"). Другими словами данная опция аналогична включению сразу всех нижеперечисленных.
  • Z: карта Z-глубины; она отражает насколько каждый пиксель изображения удален от камеры. Обычно используется для Depth-Of-Field (DOF, глубина резкости). Карта глубины линейно обратно пропорциональна (1/расстояние) ближней плоскости отсечения камеры (camera clip start).
  • Vec: вектор; как быстро движутся предметы. Используется с Vector Blur (направленное размытие).
  • Nor: вычисляет освещение и его изменение в условиях видимой геометрии для карт неровностей (bumpmap — изображения, используемого для имитации дополнительных деталей на поверхности объекта) или для изменения обычного направления света, падающего на объект.
  • UV: позволяет выполнить текстурирование после визуализации. Подробнее — в описании узла UV.
  • IndexOb: создает маску для выбранных объектов. Обратитесь к описанию узла MaskObj.
  • Col: базовые настройки цветов в изображении.
  • Diff: диффузный цвет; основные цвета перед затенением.
  • Spec: настройка бликов.
  • Shad: тени. Убедитесь, что отбрасывание теней включено для ваших источников света (положительное, positive, или отрицательное, negative), их прием включен в параметрах материалов. Смешивайте этот проход методом умножения (multiply) с проходом Diffuse.
  • AO: рассеянное освещение. Убедитесь, что данная опция включена в панели настроек окружающей среды (environment), а также включена трассировка лучей (RayTracing).
  • Refl: отражения, возникающие на всех отражающих поверхностях. Установите режим смешивания в Add для совмещения этого прохода с Diffuse.
  • Refr: преломление света в прозрачных объектах. Установите режим смешивания в Add для совмещения этого прохода с Diffuse.
  • Rad: Radiosity; светящиеся и просто освещенные объекты реального мира отбрасывают часть своего цвета на соседние объекты; данный проход содержит как раз результаты таких отражений и излучений.

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

Снятие выбора с Проходов визуализации

Нажмая CtrlLMB Template-LMB.png на проходе, вы исключаете данный проход из совокупности вычисляемых проходов. Исключенные проходы помечаются черной точкой рядом с именем.

(Кроме того, иногда, говоря, что вы хотите «целую энчиладу», вы, в действительности, совсем не хотите целую энчиладу!)

Использование Проходов визуализации

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

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

  • Image (Изображение): поскольку это основной и единственный готовый продукт, все пользователи Blender используют его.
  • Alpha: Обратите внимание на узел AlphaOver и все узлы Matte.
  • Z (Глубина): Обратитесь к узлу Defocus.
  • Vec (Вектор): Обратитесь к узлу Vector Blur.
  • Normal (Нормаль): Обратитесь к узлу Normal.

Перекрашивание теней

Manual-Render-RenderPasses-Example2.png

Давайте пропустим буфер теней (Shadow buffer) через перекрашивающий узел, а затем рекомбинируем изображение, чтобы наши тени на нем стали цветными. Собственно, все необходимое, что требуется сделать для этого, уже отображено на изображении справа — давайте пробежимся по нему и посмотрим, как реализована наша задумка. Слева можно видеть входной узел (input) RenderLayer. Сцена состоит из отражающего шара, лежащего на пьедестале. Кроме него все вокруг серое. Мы использовали стандартную 4-х-ламповую систему освещения: заполняющий задний, размещенный высоко, два заполняющих источника света по бокам у самого пола и основной свет несколько выше и левее камеры. Сюзанна, обезьянка из набора примитивных объектов Blender, расположена прямо перед основным источником света так, что ее тень лежит на полу сцены. Шар отбрасывает тени на задник и пол.

Два верхних узла просмотра (viewer) отображают изображения, первый, — используя тень (Shadow) в качестве альфа-канала (Alpha channel), — и второй показывает только канал тени. Чем темнее участок изображения справа, тем более прозрачен этот же участок на изображении слева. Мы использовали тень, чтобы вырезать отдельные участки изоброажения.

Затем мы пропускаем тень через узел RGB Curve, который усиливает синюю составляющую изображения на 75%; таким образом серая тень (R:40, G:40, B:40) становится (R:40, G:40, B:40x1.75=70). Результат этой обработки отображает нижний viewer. Здесь присутствуют еще два узла: AlphaOver и Mix. Механизм работы следующий:

  • Используется карта теней (Shadow map) в качестве коэффициента (Factor).
  • Синяя тень присоединяется к верхнему сокету (Socket) узла.
  • Оригинальное изображение направляется на нижний сокет.

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

Точно также вы могли заменить одно изображение другим, например, взять тень с другого слоя визуализации (renderlayer). Вы можете даже использовать изображения из другого проекта вместо данных настоящего (используя узел Image Input), чтобы получить какой-нибудь интересный эффект (например, таким образом можно получить эффект, вроде того, что был на постере к фильму Star Wars Episode One, где Энекин Скайуокер отбрасывает тень Дарт Вейдера).

Compositing Ambient Occlusion

Manual-Render-Passes-AO.jpg

AO is a geometry-based dirt shader, making corners darker. It is separately enabled in the World settings and computed as a separate pass. When enabled, it has one of three Modes (Add, Subtract, Both), and variable Energy level (which changes the intensity of the shading). The third variable is the amount of Ambient light that the material receives. If it does not receive any, then ambient occlusion does not affect it. Based on these variables, Blender computes an AO pass. If you call it out as a separate pass and wish to composite it back into your image, you will need to enable the Color and Diffuse pass as well.

To configure your noodle, consider the example image above.

  1. . First, depending on the AO mode do one of the following: If AO mode is Add: directly use the AO pass. If AO mode is Sub: Calculate AO - 1, or if AO mode is Both: Calculate 2*AO - 1
  2. . Multiply the output of Step 1 with the AO energy level
  3. . Multiply the output of Step 2 with the material's ambience value. If you have materials which receive different ambience light levels (0.5 is the default), one would have to create an ambience map based on Object ID)
  4. . Multiply the output of Step 3 with the color pass
  5. . Add the output of Step 4 to the diffuse pass

If shadows, colored ambient light, specularity, reflections, and/or refractions are involved they have to be added to the diffuse pass before adding the converted AO pass.

Vector Blurring Shadows

Manual-Nodes-VectorBlur-Shadow.jpg

When using Vector Blur, instead of Motion Blur, objects in motion are blurred, but objects at rest (with respect to the camera) are not blurred. The crossover is the shadow of the object in motion. Above, we have a cube in motion across a ground plane. If we just ran the combined pass through Vector Blur, you can see the result in the lower right-hand corner; the box is blurred, but its shadow is sharply in focus, and thus the image does not look realistic.

Therefore, we need to separate out the diffuse and shadow passes from the floor by creating a "Floor" renderlayer. That renderlayer has Diffuse and Shadow passes enabled, and only renders the floor object (layer 2). Another renderlayer ("Cube") renders the Z and Vector passes, and only renders the cube (on layer 1). Using the Blur node, we blur the shadow pass, and then combine the diffuse and blurred shadow by multiplying them together in a Mix Multiply node; we then have a blurred shadow on a crisp ground plane. We can then mix the vector-blurred object to provide a realistic-looking image.

Заключение

Начиная с Blender 2.43 вы можете управлять проходами визуализатора (Render Passes), чтобы получить практически полный контроль над итоговым изображением. Заставлять объекты отбрасывать не свои тени, управлять фокусировкой камеры на отдельных объектах, изменять цвета для пост-обработки или просто поменять способ формирования конечного изображения, чтобы сэкономить время, — эти и многие другие возможности предоставляет вам данный инструмент.

Удачного блендинга!