Search Keywords: animation, moving object, VRaySphereFade, compositing

 

Замечание: сцена, которую мы используем в этом уроке, основана на сцене Sponza Atrium (моделлинг Marco Dabrovic - http://www.rna.hr). Это одна из моделей для CGTechniques Radiosity competition.

 

 

Обзор

Основы композинга

Композинг в 3ds Max

Атмосферный плагин VRaySphereFade

Рабочий процесс

Визуализация слоев

Окончательная сборка

Заключение

 

 

Обзор

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

 

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

 

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

Основы композинга

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

 

Наша задача: в 3d-сцене имеется некий объект; мы хотели бы наложить его на данный фон, принимая во внимание, по возможности, максимальное количество эффектов (тени, отражения, GI и т.д.).

 

Обычно это делается при помощи двух слоев с 3d-объектом (который накладывается на фон). Первый слой мы будем называть слоем маски (mask layer) - он определяет какие части фона изменяются 3d-объектом, а какие части остаются прежними. Маскирующий слой умножается на фон. Второй слой мы будем называть слоем объекта (object layer) - он определяет, какой цвет должен быть добавлен к маскированному фону для получения итогового изображения. Слой объекта добавляется к маскированному фону.

 

Итак, формула композинга:

 

итоговое_изображение = слой_фона * слой_маски + слой_объекта

 

Фоновый слой нам дан, и мы о нем не должны беспокоиться. Это может быть фотография, видеосъемка или предварительно визуализированное изображение. Мы должны определить только слой маски и слой объекта. Мы их будем вычислять, используя три отдельных визуализации 3d-объекта:

Имея три эти визуализации, мы можем вычислить слой маски и слой объекта следующим способом:

 

слой_маски = черная / чистая;

слой_объекта = нормальная - черная;

 

Затем мы можем использовать слои маски и объекта для получения окончательного изображения.

Композинг в 3ds Max

Теперь давайте применим эту теорию к практике. Для композинга мы будем использовать 3ds Max, но это может быть сделано в любой программе композинга, которая поддерживает необходимые операции с изображением (сложение, вычитание, умножение и деление), например, Digital Fusion.

 

К сожалению, 3ds Max не имеет нужных нам встроенных операций, поэтому мы собираемся использовать дополнительный плагин: текстурную карту VRayCompTex, которую можно загрузить отсюда (разархивируйте файл .dlt в подкаталог \plugins\vrayplugins\ каталога установки 3ds Max).

 

Устарело. Текстурная карта VRayCompTex давно включена в поставку V-Ray. (Прим. перев.)

 

Эту плашку мы будем использовать для фона:

В середину этой плашки мы собираемся добавить чайник.

 

1.1. Откройте начальную сцену, которую можно найти здесь. Эта сцена не точно такая же, как та, которая была использована для получения вышеприведенной плашки, но она достаточно близка по композиции. Вообще вы должны пытаться соответствовать фоновой плашке так хорошо, на сколько это возможно. Если фоновая плашка является визуализацией 3d-сцены, то самое лучшее - использовать ту же сцену.

1.2. Визуализируйте сцену и сохраните изображение как normal.png, с 48 битами на пиксель (для увеличения точности при последующем композинге).

1.3. Откройте редактор материалов, создайте новый материал типа VRayLightMtl и присвойте материалу чисто черный цвет, или вы можете использовать материал black mtl из редактора материалов. Присвойте этот материал чайнику в сцене.

1.4. Визуализируйте сцену и сохраните изображение как black.png с 48 битами на пиксель (для увеличения точности).

1.5. Скройте (Hide) чайник.

1.6. Визуализируйте сцену и сохраните изображение как pure.png (снова, с 48 битами на пиксель).

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

 

1.7. Откройте 3ds Max с пустой сценой.

1.8. Откройте Редактор Материалов и поместите четыре изображения (normal.png, black.png, pure.png и плашку для фона) в отдельные текстуры типа Bitmap; установить режим преобразования (mapping mode) растровых изображений в Screen environment.

 

Теперь вы будете создавать слои маски и объекта.

 

1.9. Создайте VRayCompTex и назовите ее object (объект).

1.10. Перетащите текстуру normal в слот Source A текстуры VRayCompTex (при подсказке выберите метод Instance).

1.11. Перетащите текстуру black в слот Source B текстуры VRayCompTex (снова выберите метод Instance).

1.12. Установите Operator текстуры VRayCompTex в Difference. Вот, что вы должны получить:

Теперь у нас есть наш слой объекта. Далее нам надо создать слой маски.

 

1.13. В незанятом слоте Редактора Материалов создайте новую текстуру VRayCompTex и назовите ее mask (маска).

1.14. Перетащите текстуру black в слот Source A текстуры VRayCompTex (выберите метод Instance).

1.15. Перетащите текстуру pure в слот Source B текстуры VRayCompTex (выберите метод Instance).

1.16. Установите Operator текстуры VRayCompTex в Divide. Вот, что вы должны получить:

Теперь у нас есть слои объекта и маски для окончательного композинга. Нам надо соединить их с фоном для получения окончательного изображения.

 

1.17. В незанятом слоте Редактора Материалов создайте новую текстуру VRayCompTex и назовите ее masked bg.

1.18. Перетащите как Instance текстуру mask в слот Source A текстуры VRayCompTex.

1.19. Перетащите как Instance текстуру background в слот Source B текстуры VRayCompTex.

1.20. Установить Operator текстуры VRayCompTex в Multiply.

 

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

 

1.21. В незанятом слоте Редактора Материалов создайте новую текстуру VRayCompTex и назовите ее final.

1.22. Перетащите как Instance текстуру masked bg в слот Source A текстуры VRayCompTex.

1.23.Перетащите как Instance текстуру object в слот Source B текстуры VRayCompTex.

1.24. Установите Operator текстуры VRayCompTex в Add.

 

Это наша окончательная составная текстурная карта. Ниже показана схема соединения четырех исходных изображений:

 

Теперь нам надо визуализировать эту карту для получения окончательного изображения.

 

1.25. Откройте диалог Render scene, на вкладке Common установите разрешение для изображения 600x600 (это разрешение всех наших изображений в этом разделе).

1.26. Установите текущий визуализатор в Default scanline.

1.27. На вкладке Renderer выключите опцию Antialiasing.

1.28. Включите опцию Filter maps.

 

1.29. Откройте диалог Environment и установите карту final в качестве карты окружающей среды.

1.30. Визуализируйте сцену:

Здесь заключительная сцена для композинга, которую вы должны получить, если правильно выполнили все шаги этого урока.

Прелесть использования этого метода в том, что он может правильно соединять все эффекты (отражения, тени, GI и т.д.) без использования механизма маскирования (matte/shadow) или чего-то еще из 3ds Max.

Атмосферный плагин VRaySphereFade

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

 

Большинство интересующих нас эффектов (тени, отражения, GI) появляются около анимированных объектов в сцене. Идеально, если сможем визуализировать только эти части и пропустить повторную визуализацию изображения целиком.

 

Здесь вступает в игру атмосферный эффект VRaySphereFade. Он позволяет вам визуализировать только часть сцены, которая расположена рядом с анимированным объектом. Остальная часть сцены показывается как сплошной серый цвет. Однако GI, отражения, тени и пр. по прежнему вычисляются с использованием всей сцены, поэтому получается, что все эффекты корректны. Вы можете загрузить этот плагин отсюда (разархивируйте файл .dlr в подкаталог \plugins\vrayplugins\ каталога установки 3ds Max).

 

Устарело. Атмосферный эффект VRaySphereFade давно включена в поставку V-Ray. (Прим. перев.)

 

Сейчас мы рассмотрим как использовать плагин VRaySphereFade в сцене из предыдущей части.

 

2.1. Откройте начальную сцену, которую можно взять здесь.

2.3. Создайте объект сферического гизмо и расположите его вокруг чайника. Обычно мы будем окружать каждый анимированный объект гизмо, связанным (link) с этим объектом:

2.2. Откройте диалог Environment и добавьте атмосферный эффект VRaySphereFade (вкладка Environment, свиток Atmosphere).

2.4. Нажмите кнопку Pick в параметрах VRaySphereFade и щелкните по только что созданному гизмо.

2.5. Перейдите на свиток System в параметрах V-Ray и включите опцию Optimized atmospheric evaluation - это значительно увеличит скорость визуализации областей, маскированных атмосферным эффектом.

2.6. Визуализируйте сцену:

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

 

Сделайте, как описано в предыдущей части урока, "чистую", "черную" и "нормальную" визуализации и объедините их с фоновым изображением. Результаты:

"Нормальный" слой
"Черный" слой
"Чистый" слой

 

Слой "Объект" = "Нормальный" - "Черный"
Слой "Маска" = "Черный" / "Чистый"
Окончательное композитное изображение поверх фоновой плашки

 

 

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

 

Визуализация оригинальной сцены с чайником
Композинг полной сцены
Композинг с VRaySphereFade

 

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

Рабочий процесс

Теперь у нас есть вся необходимая информация для визуализации нашей анимации. Она будет состоять из четырех этапов:

 

a) Визуализация фона без анимированных объектов по технологии визуализации статической сцены с движущейся камерой.

b) Создание гизмо и связывание (link) их с анимированными объектами. Создание атмосферного эффекта VRaySphereFade и добавление созданных гизмо к атмосферному эффекту.

c) Визуализация анимации с движущимися объектами в три отдельных последовательности изображений: "нормальную", "черную" и "чистую".

d) Композинг фоновой анимации с тремя другими анимациями.

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

 

3.1. Откройте начальную сцену для фоновой анимации.

 

Мы визуализируем все анимации в разрешении 900 х 500 пикселей. Это может занять достаточно много времени (когда подготавливался этот урок, это заняло более двух дней для просчета трех персонажных анимаций), поэтому вы можете захотеть использовать более низкое разрешение, например 450 х 250.

 

3.1a. На вкладке Common диалога Render scene установите разрешение изображения для визуализации 450 x 250 пикселей.

 

3.2. Выключите Default lights в свитке Global switches.

3.3. Установите Antialiasing в Adaptive DMC с настройками по умолчанию 1/4.

3.4. Включите GI и установите и для первичных, и для вторичных отскоков Light cache (световой кэш).

3.5. Для светового кэша установите Subdivs равным 4000, Sample size равным 4.0 и Scale в World.

3.6. Для светового кэша переключите Mode в Fly-through и, в целях просмотра, включите Show calc. phase.

3.7. Включите Use light cache for glossy rays и установите Interp. samples равным 5.

3.8. В группе GI Environment свитка Environment включите опцию Override MAX's и установите Multiplier равным 2.0.

3.9. Визуализируйте любой кадр анимации для вычисления светового кэша.

3.10. Сохраните световой кэш и измените Mode на From file с только что сохраненным файлом.

 

Теперь, когда световой кэш готов, нам нужно вычислить карту освещенности.

 

3.11. Для Primary GI установите Irradiance map с предварительным набором настроек High.

3.12. В свитке DMC Sampler установите Noise threshold равным 0.002.

3.13. Включите опцию Don't render final image в свитке Global switches.

3.13. Для карты освещенности установите Mode в Multiframe incremental.

3.14. Визуализируйте каждый 10-ый кадр анимации для вычисления карты освещенности.

3.15. Сохраните карту освещенности в файл и измените для карты освещенности Mode на From file с указанием только что сохраненного файла.

3.16. Выключите опцию Don't render final image в свитке Global switches.

3.17. Визуализируйте каждый 1-ый кадр окончательной анимации для фона с сохраненным решением GI и сохраните анимацию как последовательность изображений в формате PNG с 48 битами на пиксель.

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

Отсюда можно взять конечную сцену для части a).

 

b) Теперь мы будем использовать сферические гизмо и атмосферный эффект VRaySphereFade для изоляции движущихся объектов в сцене, что бы потом объединить их с готовым фоном.

 

3.18. Продолжаем работать со сценой из части a) и сделаем видимыми (unhide) в сцене четыре двуногих персонажа (biped character).

3.19. Создайте четыре сферических гизмо с радиусом около 80.

3.20. Каждое из гизмо выровняйте (align) по соответствующему объекту Biped COM (Bip01, Bip02, Bip03, Bip04).

3.21. Откройте диалог Environment и добавьте атмосферный эффект VRaySphereFade.

3.22. Добавьте в список наши четыре гизмо.

Отсюда можно взять сцену после настройки гизмо.

 

c) Для визуализации трех анимаций мы будем использовать прямое вычисление GI (brute force) для первичных отскоков для избежания проблем с мерцанием на персонажах и вокруг них.

 

3.23. Переключите Primary GI на Brute force GI с 25 подразбиениями.

3.24. Для светового кэша установите Subdivs равным 3000.

3.25. Для светового кэша переключите Mode в Single frame.

3.26. Перейдите на свиток System и включите опцию Optimized atmospheric evaluation - это значительно ускорит вычисления.

 

Первое, мы будем визуализировать "нормальную" анимацию.

 

3.27. Визуализируйте всю анимацию в последовательность файлов в формате 48-битного PNG.

 

Кадр 145 Кадр 268

 

Второе, мы будем визуализировать "черную" анимацию.

 

3.28. Присвойте черный материал типа VRayLight всем четырем двуногим персонажам. Визуализируйте всю анимацию в последовательность файлов в формате 48-битного PNG.

 

Кадр 145 Кадр 268

 

Третье, мы будем визуализировать "чистую" анимацию.

 

3.29. Скройте (hide) всех двуногих персонажей и снова визуализируйте анимацию целиком.

 

Кадр 145 Кадр 268

 

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

В этой части мы будем соединять "нормальную", "черную" и "чистую" анимации при помощи карты VRayCompTex.

 

4.1. Откройте в 3ds Max новую сцену и откройте Редактор Материалов.

4.2. Загрузите "нормальную", "черную" и "чистую" анимационные последовательности в три различных слота и назовите их "normal", "black" и "pure" соответственно.

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

4.3. Для всех четырех текстур измените тип на Environment с преобразованием Screen.

4.4. Сделайте четыре карты типа VRayCompTex в четырех незанятых слотах.

4.5. Первую карту VRayCompTex назовите object и перетащите карту normal в Source A, карту black в Source B, измените Operator на Subtract.

4.6. Вторую карту VRayCompTex назовите mask и перетащите карту black в Source A, карту pure в Source B, измените Operator на Divide.

4.7. Третью карту VRayCompTex назовите masked bg и перетащите карту mask в Source A, карту background в Source B, измените Operator на Multiply.

4.8. Четвертую карту VRayCompTex назовите final и перетащите карту masked bg в Source A, карту object в Source B, измените Operator на Add.

 

Мы точно следовали схеме, которую обсуждали ранее в разделе Композинг в 3ds Max.

4.9. Перетащите карту final в слот Environment map диалога 3ds Max Environment.

4.10. Переключите визуализатор на Scanline.

4.11. На вкладке Renderer диалога Render scene выключите Antialiasing и Filter Maps.

4.12. Визуализируйте окончательную анимацию.

 

Здесь можно взять сцену для композинга.

Отсюда можно взять окончательную анимацию в оригинальном разрешении 900x500 (5 MB).

Отсюда можно взять уменьшенную версию (2 MB).

 

Давайте посмотрим один кадр анимации:

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

 

Заключение

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

 

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

 

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


Хостинг от uCoz