суббота, 21 февраля 2009 г.

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

(Статья опубликована в журнале “ТВ технологии” N6 2008)
Сегодня трудно представить себе крупнобюджетный художественный фильм, музыкальный видеоклип, рекламный ролик, красочную анимированную графику при создании которых не использовались бы программы композитинга. Цифровой композитинг (Digital Compositing) – это важная составляющая в создании визуальных спецэффектов (VFX – Visual effects).
Как снять героя в одном месте (скажем, в павильоне), а затем использовав имеющиеся в распоряжении художника технологии, заменить все окружающее его пространство, на некий сказочный замок, непроходимые джунгли или пейзаж другой планеты, другими словами, как бы перенести героя в другое место – над решением этой проблемой творцы киноэффектов бились с самого рождения кино.
Кроме того, часто в отснятое изображение необходимо внести определенные коррективы, – убрать из кадра лишние объекты, заменить их другими, сделать цветокоррекцию и т.д. Вот для решения подобных задач и созданы программы цифрового композитинга. То есть, цифровой композитинг – это компоновка, соединение изображений, взятых из различных источников в целостную, «бесшовную» картинку.
Рон Бринкман (Ron Brinkmann), автор книги «Искусство и наука цифрового композитинга» дает ему такое определение:
«Цифровой композитинг – это комбинирование с помощью цифровой обработки изображений, как минимум, из двух источников для получения целостного результата»[1].
Айзек В. Керлоу, один из пионеров компьютерной анимации, дает схожее определение:
«Композитинг изображений состоит в комбинировании двух или более разных изображений в одно, причем таким образом, что создается иллюзия единого пространства и времени: кажется, что все изображения имеют место в одно и то же время и в одном и том же месте и были сняты (записаны) одновременно»[2].
То есть, при композитинге должна обеспечиваться иллюзия единства места и времени происходящего в кадре.
Наиболее часто применяемые технологии для композитинга – это кеинг – съемка героев на синем или зеленом фоне с последующей заменой фона на необходимое вам изображение. Скажем, на телевидение практически все телеканалы – от мала до велика, используют кеинг при показе прогнозов погоды, когда ведущий воодушевленно разгоняет компьютерные тучи руками.
Эту технологию часто по-привычке и неточно называют «рирпроекцией». Этот термин пришел на телевидение из кино, где во время киносъемки на задний фон за спинами героев действительно проецировали с помощью кинопроектора предварительно снятое на пленку изображение.
King-Kong-rawPlate
Сцена, снятая в павильйоне
King-Kong-Final
Эта же сцена после композитинга
Фильм “Кинг Конг” реж. Питер Джексон

Сегодня, кроме кеинга, еще одним из главных направлений развития композитинга является соединение в одном кадре изображений созданный компьютером - Сomputer Generated Image (CGI) с действием и актерами, снятыми «вживую», обычно на фоне синего или зеленого экрана.
Итак, основные сферы, где сегодня применяется композитинг:
Цифровой композитинг CGI включает в себя такие наиболее распространенные задачи:
1) Собственно говоря, CGI Compositing – как мы уже говорили, это соединение объектов, созданных в программах 3D-графики, с задним фоном, в качестве которого обычно служит снятый на пленку пейзаж или актеры. Сегодня с помощью трехмерной графики создают не только динозавров, космические корабли или монстров. Гораздо сложнее оказалось смоделировать окружающий нас мир – создать фотореалистичные человеческие волосы, кожу, а компьютерным персонажам повторить обычную человеческую походку. Моделируют также и природные явления – облака, огонь, дым, удар молнии, воду. В кино появились даже «цифровые дублеры», заменяющие не только высокооплачиваемых звезд в опасных трюках, но и «живых» дублеров, если трюк действительно может оказаться для них смертельным.
2) Расширение декораций (Set Extension) – Сейчас больше нет необходимости возводить дорогостоящие декорации фантастических замков или городов будущего. Достаточно создать небольшое «реальное» окружение для актеров, а затем в программах 3D-графики «достроить» все остальное. В кино раньше тоже иногда дорисовывали чудесные дворцы или инопланетные пейзажи, но все равно наметанный глаз кинозрителя (а уж тем более современного) ощутит некую разноплановость этих элементов.
vlcsnap-74845
vlcsnap-76535
В современных программах композитинга, где собирают все элементы сцены вместе, согласовывают их по освещению, добавляют атмосферные явления (дымку, туман), делают цветокоррекцию, чтобы зрители не заметили никаких «швов» в изображении.
3) Согласование движения (Match Move). Современные режиссеры не любят съемок статичной камерой. О сценах погонь и перестрелок в современных боевиках можно и не говорить. Но даже в спокойных и камерных сценах съемочная камера обычно немножко движется, чтобы все время «оживлять» картинку. Однако, если у нашего героя не реальное, а «виртуальное» 3D окружение, то необходимо так согласовать перемещение камеры с виртуальными декорациями, чтобы зрители этого не заметили. Часто встречается и противоположная задачу – поместить 3D объект, скажем Кинг-Конга, на снятые движущейся камерой улицы Нью-Йорка. Эту операцию согласования (Match Move) и делают в программах композитинга.
Впрочем, композитинг позволяет решать не только проблемы, связанные с 3D- персонажами. Много работы и над снятой камерой окружающей нас реальностью. Особенно интересен композитинг визуальных эффектов, которые решает такие, наиболее часто встречающиеся задачи:
1) Кеинг - классическая работа для программ композитинга - съемка персонажей на синем или зеленом фоне, с последующей заменой его на снятое в другом месте или сгенерированное на компьютере изображение.
2) Motion Tracking – «привязка» изображения к какому-то движущемуся предмету. Скажем, замена логотипа на движущемся автомобиле, или замена картинке на компьютерном мониторе, который виден в снятом кадре. Сюда же относиться и стабилизация камеры, - если во время съемок с руки камера тряслась, то применение этого эффекта позволит компенсировать это дрожание и сделать изображение более стабильным.
3) Варпинг и морфинг (Warping and Morphing) – Варпинг – это искажение изображения по определенным алгоритмам. На изображение как бы одевается деформирующая сетка и мы можем его растягивать, или сжимать, потянув за узелки этой сетки. Варпинг часто используют, чтобы разместить рекламный логотип не на ровной поверхности, а на бутылке или шаре. Что касается морфинга, то достаточно вспомнить клип Майкла Джексона «Black and White», где в финале люди разных рас и полов на наших глазах превращались друг в друга. Такой плавный переход одного изображения в другое и в рекламных роликах стал уже избитым приемом.
clip_image002
4) Bullet Time Shots – «Время полета пули» - эффект, ставший популярным благодаря трилогии «Матрица». Время как бы сильно замедляет свой ход и мы видим как герой Кину Ривза уклоняется от пули, а камера успевает совершить облет героя. Или во время занятий восточными единоборствами герои словно зависают в прыжке и камера объезжает вокруг них. Затем нормальное течение времени восстанавливается. И самое главное – мы не видим ни одной монтажной склейки. Такое замедление и ускорение времени получило название Time Warping или Retaiming. Понятно, что никакая кинокамера не способна так быстро двигаться в реальности.
clip_image002[6]
Вместо нее вокруг снимаемого персонажа размещается несколько десятков фотокамер, работа которых синхронизируется с помощью компьютера.
Другая технология «работы со временем», носящая название optical flow, также используется во многих программах композитинга. Если вы сняли эпизод на кинопленку со скоростью 24 кадра в секунду и хотите замедлить движение, то, скажем, в программах видеомонтажа вы получите стробированное движение, поскольку программа просто повторит одни и те же кадры по нескольку раз. Применение технологии optical flow, которая анализирует векторы движения объектов в кадре и позволяет создать промежуточные кадры для получения более плавного замедленного движения.
1) Создание толпы (Crowd Duplication) – многотысячные массовки сегодня в кино можно спокойно заменить несколькими десятками статистов, «размножив» их в программах композитинга.
2) Создание атмосферных явлений – дыма, огня, тумана, снега, дождя и т.д. и добавление их в кинокадры. Для этого часто используют специальные генераторы частиц (Particles).
3) Ротоскопинг (Rotoscoping) – ручное рисование масок в композитинге. Если вы не смогли снять героев на фоне синего экрана, то есть прокеить изображение невозможно, а вам необходимо поменять в кадре задний план – тогда наступает очередь ростоскопинга – рисования вокруг героя маски вручную, кадр за кадром.
4) Убирание подвесок (Wire Removal) – часто головокружительный прыжки или падения на съемочной площадке герои совершают, подвешенными за специальные тросы. В процессе композитинга приходится эти тросы убирать из кадра, копируя участки изображения из соседних областей или даже кадров.
5) Восстановление кинопленки. Иногда на пленки сразу после проявки негатива обнаруживаются дефекты – царапины, пересветы и т.д. Если пересъемка эпизода невозможна или стоит очень дорого (кинозвезда уже на съемках другого фильма) можно попытаться восстановить изображение, использовав для этого, скажем, соседние неповрежденные кадры.

Во многих программах композитинга можно создавать и анимированную графику (Motion Graphics), которая сейчас используется практически везде - от мобильных телефонов до музыкальных клипов и заставок телекомпаний. Буквы и слова, используемые как элементы дизайна (Typography), титры в кино (Title Sequence) – все это сфера применения motion graphics.
Motion grafics
Итак, как мы уже говорили выше, сущность композитинга - составление из отдельных частей целостного изображения. В детстве, наверное, каждый из нас создавал аппликации – вырезал из журналов и книжек разные картинки, которые затем наклеивал на листок бумаги, пытаясь создать новый мир. Взрослые дяди и тети сегодня, по-сути, занимаются тем же, используя для этого, правда не ножницы и клей, а, часто, супердорогие программы композитинга и мощные компьютеры. И все это во благо «великой иллюзии»…
«Небесный капитан и мир будущего» (Sky Captain and the World of Tomorrow)
Фильм «Небесный капитан и мир будущего» был полностью снят на фоне синего экрана на HD-видео (Sony HDCAM 4:2:2).
Capitan_Blue-screnn
Кадры, отснятые на синем экране
Capitan_Blue-screnn_2
Capitan_Background
CG-Background
Capitan_Samolet
Компьютерная модель самолета
Capitan_shadow_Samolet
И его отрендереная тень
Capitan_Final
Финальный кадр –результат композитинга предыдущих изображений и их постобработки.

Как это работает.
Для композитинга нескольких видеослоев используется альфа-канал, содержащий черно-белое изображение, которое маскирует (защищает) выбранные участки одного или нескольких комбинируемых слоев. Можно использовать одновременно несколько альфа-каналов. Маска, содержащаяся в альфа-канале, напоминает трафареты, которые используются для быстрого нанесения надписей краской на предметы. В трафарете вырезаются слова или картинки, после чего он прикладывается к нужной поверхности и краситься сверху. В результате окрашенными оказываются только необходимые нам участки. Композитинг с использованием масок альфа-канала аналогично позволяет выделять только необходимые участки как на переднем плане, так и на заднем плане. В кино тоже существовала подобная технология, которая носила название матирования или каширования (каше).
Применявшийся в кино оптический композитинг имеет много общих черт с новейшим цифровым композитингом. Оптический композитинг использует экспонирование пленки на свету. Это аддитивный процесс – чем больше экспозиция, тем светлее изображение. Цифровой композитинг также является аддитивным процессом. В типичном случае использования 8-битного линейного видео, каждый пиксель имеет определенное цифровое значение, которое получается путем комбинирования значений в красном, синем и зеленом каналах цвета от 0 до 255 (всего 256=28 градаций). Черный цвет имеет значение 0,0,0, белый – 255,255,255, а скажем, оранжевый - 255,190,10. Комбинирование изображений (композитинг) – это математические операции над значениями пикселей изображений фона (background) и переднего плана (foreground). Наиболее часто применяются в процессе смешения слоев (blending).
Рассмотрим стандартный пример композитинга 2-х изображений – одного снятого на фоне «синего экрана» и второго, которое должно служить новым фоном.
matte
На иллюстрации (1a.) изображен задний фон (background),
(1b.) – объект перед синим экраном (foreground),
(1c.) – маска или альфа-канал (matte or alpha).

Когда мы запускаем в соответствующих программах процесс композитинга, сначала математически умножается задний фон (background) (1a) на инвертированный альфа-канал (1d). Там, где маска имеет черный цвет, пиксели из бекграунда(1a) умножаются на ноль и поэтому каждый из каналов RGB имеет в этом месте значение 0,0,0, то есть черный цвет. Там, где у маски белый цвет – они умножаются на 1 и сохраняют свое значение. В этих местах нам полностью будет виден задний фон. Серые области умножаются на соответствующее значения прозрачности между 0 и 1. Эти области будут частично прозрачны. Результат этих операций мы видим на (1e). Там, где маска имеет черный цвет, черными будут и области на бекграунде.
Изображение на переднем слое (1b) умножается на маску (1c) и результирующим является изображение (1f). Наконец, над пикселями этих двух изображения (1e) и (1f) мы производим операцию сложения и в итоге получаем результат композитинга – наш объект с переднего плана на фоне изображения с бекграунда (1g).
Впрочем, одна из основных проблем, которая возникает после композитинга изображений – эта несовпадение объектов по яркости, поскольку они, чаще всего сняты при разных условиях освещения.
«Сложение» - это простая математическая операция, например, если пиксель в левом нижнем углу бекграунда имеет значения 175,100,60 а расположенный точно в этом же месте, но на переднем плане 0,0,0, то сложив вместе два эти значения мы получим в сумме - 175,100,60, то есть значение такое же, как и у пикселя с бекграунда. Пиксели, из области, которую занимает наш персонаж, расположенный на переднем плане, будут иметь тоже значение и на скомпонованном изображении. Немного другая ситуация с пикселями, расположенными по «мягким» краям (soft edge) маски – здесь они «смешиваются» (blended). Например, если пиксель на (1а) имеет значение 150,50,20, а на (1b) - 50,50,100, то после процесса композитинга пиксель на финальном изображении будет иметь суммарное значение обеих пикселей - 200,100,120. Эти математические операции выполняются для каждого пикселя компонируемого изображения и в композитинге обычно называются «смешение» - Blend.
По немного другому сценарию работает процесс композитинга если на переднем плане мы используем элемент, созданный с помощью программ 3D-графики (CGI).
pre-miltipled
Изображение (2a) - это передний план, (2b) - бекграунд. В этом случае нам все равно нужно выполнить умножение пикселей бекграунда на инвертированную маску переднего плана, как и в предыдущем случае, чтобы получить значения пикселей 0,0,0 или «черную дыру» в областях, где будет добавлен огонь. Однако нам не нужно умножать изображение переднего плана на его маску. В этом случае, созданные на компьютере элементы уже несут в себе необходимую информацию – этот вид маски называется "pre-multiplied". Результат композитинга (2g) получаем, сложив пиксели изображений (2a) и (2f). Этот вид композитинга известен, как "ADD" (сложение).
Итак, если коротко подытожить вышесказанное, главное в композитинге – это искусство создания масок! Это - сердцевина композитинга. Создаете ли вы маску с помощью кеинга или покадрово прорисовываете ее вручную в процессе ротоскопинга – главное, чтобы маска была «чистой», без цветовых окантовок, а результирующий образ выглядел реальным и зрители не заметили бы никаких «швов» в изображении.
(Конец 1 части статьи)

продолжение статьи

[1] Ron Brinkmann, «The Art and Science of Digital Compositing», Elsevier, 2008, p.2.
[2] Айзек В. Керлоу «Искусство 3D-анимации и спецэффектов», М. 2004, стр. 399

4 комментария:

Анонимный комментирует...

Здорово! узнал немного как это делается.=))

Анонимный комментирует...

очень занятно

Divine Boy комментирует...

хорошая статья ;)

MikeP комментирует...

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