Gregory Chalenko - Compositing Artist and TD

Ротоскопинг
то, чего многие не любят, но все хотели бы иметь

Содержание


Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6. Желательно сразу установить мягкость контура Soft Edge0.001, поскольку отснятое изображение никогда не бывает идеально четким. Моушнблюр подбирается под каждый план индивидуально по кадрам с наиболее быстрым движением. Начать подбор можно с таких параметров: Shutter Angle = 90, Quality = 3.

Дополнительные приемы, помогающие облегчить страдания

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

Другой способ избежать этого эффекта - анимировать вращение не через форму маски, а через параметр ее вращения Z Rotation.

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

Для того, чтобы в процессе ротоскопинга оценивать соответствие формы и мягкости маски, выведите на один вьюпорт исходную картинку, по которой вы отрисовываете, а на второй вьюпорт - картинку, на которой все области за пределом отмаскированных, залиты контрастным к изображению цветом или цветом, близким к вкомпаживаемому фону, а еще лучше - готовый фон. На втором вьюпорте нужно отключить отображение векторных контуров масок (Ctrl+K).

Если в качестве исходника используется секвенция DPX или EXR, можно значительно упростить себе работу, откорректировав цвет так, чтобы контуры объекта читались наилучшим образом. Результат можно пересчитать в полноразмерный JPEG. Секвенция будет быстрее грузиться и ее можно будет перематывать без проблем.

Заметки по работе с масками в Blackmagic Fusion

Маски во Фьюжене анимированы по умолчанию. Чтобы не образовывалось новых ключевых кадров, нужно удалить анимацию (ПКМ на Right-click here for shape animation, выбрать Remove PolygonPolyline).
Для того, чтобы новые маски создавались без анимации, нужно создать пустую маску, удалить ее анимацию и сохранить установки по умолчанию (ПКМ на названии маски, Settings › Save Default)

Растровую маску (Bitmap) можно использовать в качестве люмакеера

В Glow есть специальная маска Glow Mask, позволяющая указывать область свечения, при этом сам эффект распространяется и за пределами маски (т.н. pre-masking)

Garbage Mask - маска на кеере или на Matte Control, позволяющая задавать полностью прозрачные области

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

В ReelSmart Motion Blur есть спец. маска RS Motion Blur Mask, разделяющая области изображения с разным направлением движения или отделяющая статичный фон от переднеплановых объектов. Настройка блюра отмаскированных таким образом областей находится во вкладке Top Layer.

Effect Mask имеет бОльший приоритет, нежели Garbage Mask, Glow Mask, Warp Mask и т.д.

Если включен режим автопрокси, каждый раз, когда дергаешь управляющий элемент, разрешение картинки понижается, потом опять повышается. Из-за этого картинка "сползает" вправо-вниз.

Применять маски к изображению для создания прозрачных областей можно через Brightness / Contrast с Gain = 0, воздействующий на альфу, или через Matte Control в режиме Matte Combine = Clear. Можно так же в Matte Control сделать Garbage Matte.

Поскольку Cineon Log модифицирует уровень черного, применять маску прозрачности или умножать на альфу нужно всегда после конверсии log → lin. Иначе области, которые должны быть прозрачными, будут высветлять или затемнять фон.
Если же точка черного должна по-любому быть изменена у уже отмаскированного изображения, необходимо сначала разделить цветовые каналы на альфу, а после цветокоррекции - умножить. Это решается либо через опцию Pre-Divide / Post-Multiply в самих инструментах цветокоррекции, либо через ноды Alpha Divide и Alpha Multiply.

Если у полигональной маски сложной формы одни сегменты перекрывают другие (контуры пересекаются), можно выставить Fill Method = Non-zero Winding вместо Alternate, чтобы избежать дырок в местах наложения.

При наведении курсора на контур маски в Display View, отображается ее название (полезно при большом количестве масок).

Во вход ноды, предназначенный для масок, можно воткнуть любое изображение. В этом случае изображение будет работать как растровая маска.
Чтобы изменить настройки такой маски, нужно войти во вкладку со значком радиации в настройках тула, к которому она применена. В такой маске недоступны параметры: Level, Soft Edge, Center.

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

Нарисовать эллипс или прямоугольник кривой безье можно, создав Polygon Mask и выбрав меню Polyline › Create › Ellipse... или Create Rectangle...

Другой способ создания сплайнового прямоугольника - нарисовать четырехугольник, затем, попарно выделяя точки и нажимая горячую клавишу E, ввести одинаковые координаты по одной из осей.
Редактировать габариты через Shape Box или удерживая Alt

В растровой маске параметр Soft Edge срабатывает после Low-High, т.е. Low-High влияет только на контраст входящего изображения.

Работать с мягкостью масок, менять тип затухания прозрачности или делать маски контурными можно с помощью инструмента Color Curves

Применение маски во Фьюжене равносильно умножению всех каналов на ее цвет (уровень).
Если в 3Д отрендерен отдельно цвет, отдельно альфа-канал и изображение не premultiplied, альфу можно присоединить как растровую маску.
Если же изображение уже premultiplied, альфу использовать как маску нельзя, т.к. появятся черные контуры. Вместо этого нужно воспользоваться Matte Control или Channel Booleans

Применить к маске перемещение вращение и масштабирование из трекера можно, присоединив соответствующие параметры маски через контекстное меню ПКМ › Connect To:
CenterTracker Unsteady Position
ScaleTracker Unsteady Scale
Z RotationTracker Unsteady Angle

Если необходимо открыть контур маски в определенном сегменте, можно сохранить .settings маски (ПКМ › Settings › Save As), открыть сохраненный файл в текстовом редакторе и поменять порядок вершин внутри тэга Points. Затем Drag'n'drop .setting во Flow, Shift+O.
Изменение порядка вершин может, так же, пригодиться для корректирования анимации маски, если вдруг получилось, что вершины ползут по контуру, переходя в не свою позицию.

Горячие клавиши

При работе с масками в Blackmagic Fusion наиболее часто используются следующие горячие клавиши:

Shift - перемещение точек сплайнов по одной из осей (нажать Shift, затем потянуть точки в нужном направлении, не отпуская Shift)

Shift - изменение длины одной касательной безье с сохранением угла

Ctrl - редактирование одной касательной безье независимо от второй

T - twist, вращение выбранных точек относительно позиции курсора (зажать T, потянуть курсор от точки желаемого центра вращения вправо для вращения против часовой или влево для вращения по часовой)

S - scale, масштабирование выбранных точек относительно позиции курсора (зажать S, потянуть курсор от точки желаемого центра масштабирования вправо для увеличения или влево для уменьшения)

X - масштабирование выбранных точек по горизонтали относительно позиции курсора (аналогично)

Y - масштабирование выбранных точек по вертикали относительно позиции курсора (зажать Y, потянуть курсор от точки желаемого центра масштабирования вверх для увеличения или вниз для уменьшения)

M - mask, перемещение точки привязки (center) маски независимо от контура

O - out, регулирование мягкости двухконтурной маски в выделенных вершинах или масштабирование каждой вершины относительно ее собственной нормали (зажать O, потянуть курсор вправо для смещения точек наружу или влево для смещения внутрь)

W - weight, масштабирование касательных всех выбранных точек или вес точек B-Spline

Shift+S - soft, сделать сегменты маски сглаженными

Shift+L - linear, сделать сегменты маски линейными

Shift+A - all, выделить все точки маски

Shift+T - tags, отобразить номера выделенных точек

Shift+B - box, отобразить габаритный прямоугольник (Shape Box)

E - editor, вывести диалог прямого редактирования координат выделенных точек



© 16.07.2007 Gregory Chalenko