Для этого урока я намеренно использовал обычное видео, снятое на смартфон, чтобы столкнуться с повседневными проблемами. Угол обзора на левую стену машины очень крутой, кроме того, некоторые растения двигаются. Если вы хотите немедленно повторить урок, вы найдете использованный 2D-фильм "Mauern.mov" в рабочих материалах.
2D-Трекинг видео-материала
Мы начинаем рабочий процесс трекинга движения как обычно, с трекинга 2D-фильма. Для этого мы берем объект Motion Tracker из меню Motion Tracker в новую пустую сцену Cinema 4D.
Чтобы Motion Tracker мог проанализировать фильм, мы открываем диалоговое окно настроек объекта Motion Tracker в менеджере атрибутов на странице Видео. Нажимая кнопку Загрузить в строке Видео, мы попадаем в диалоговое окно Открыть.
Здесь вы выбираете прилагаемый 2D-фильм как Видео и загружаете его в объект Motion Tracker с помощью кнопки Открыть.
Значение Reasample для анализа видео применяется только к предстоящей операции трекинга для реконструкции камеры. При последующей реконструкции сцены Cinema 4D, как правило, использует наивысшее качество фильма. Однако даже для реконструкции камеры высокое значение (за исключением немного более длительного времени вычислений) не помешает.
Для 2D-трекинга мы переходим на соответствующую страницу диалогового окна Motion Tracker. Мы ограничимся автоматическим трекингом, так как нам не нужны специальные трекинг-точки для последующей сборки. Чтобы гарантировать, что достаточно информации трекинга, мы устанавливаем число треков 2000, с минимальным расстоянием 25.
Нажав кнопку Авто-треки создать ...
... мы видим, что желаемое количество трекинг-точек распределено очень равномерно на нашем видео-материале.
Чтобы Motion Tracker показал себя более терпимым к быстрым движениям камеры, перед трекингом мы переключаемся на страницу Опции и активируем там опцию Экстраполяция позиции поиска.
Теперь мы можем начать 2D-трекинг на странице Автоматический трекинг с помощью кнопки < Авто-трек >.
После завершения работы Motion Tracker мы проверяем отслеженный 2D-фильм, нажав кнопку воспроизведения, чтобы убедиться, что трекинг-точки сохранены достаточно на всем протяжении фильма.
3D-реконструкция камеры
Из этой информации о трекинге мы будем в следующем шаге реконструировать информацию о камере. Для этого мы переходим на следующую страницу в диалоговом окне Motion Tracker, на 3D-вычисления. Мы можем использовать предустановленные значения для Полной 3D-реконструкции, так как Motion Tracker должен самостоятельно определить фокусное расстояние.
Нажимая кнопку 3D-реконструкция, происходит 3D-вычисление информации о камере.
Результат 3D-вычислений показывает - как не удивительно - большинство зеленых деталей в хорошо видимых неподвижных областях, в то время как движущиеся растения и крутая левая стена остаются проблемной зоной, обозначаемой красными деталями из-за более быстрых движений камеры.
Калибровка сцены
Прежде чем приступить к реконструкции сцены, мы калибруем имеющуюся сцену с помощью Constraints. Хотя этот шаг теоретически не является обязательным для реконструкции, он устанавливает сцену на достойную точку отсчета (начало) и в правильное положение по осям и масштабирование.
Чтобы достичь лучших трекинг-точек для этого шага, мы перемещаем позицию временного регулятора на поздний момент времени, обеспечивающий нам качественные трекинг-точки.
Мы начинаем с определения Начальной точки сцены. Для этого мы присваиваем объекту Motion Tracker через меню Motion Tracker>Constraints Constraint на позицию.
Чтобы объявить отслеживаемую точку исходной сценой, мы щелкаем активным инструментом Constraint-позиции по точке отслеживания, находящейся посередине пола. Толстая оранжевая обводка отслеживаемой точки показывает нам, что исходная точка определена.
Мы можем убедиться в диалоговом окне настройки тега Constraint-позиции объекта Мotion Tracker, что выбранная нами исходная точка сцены привязана к качественной, зеленой точке Цели (здесь: машина 0661).
Мы продолжаем с использованием инструмента Constraint слоев из меню Motion Tracker>Constraints, чтобы установить выравнивание по оси Y.
С использованием активного инструмента Constraint слоев мы создаем треугольник, щелкая по трем точкам отслеживания, находящимся на уровне пола. При этом обращайте внимание на ориентацию показанной оси. С помощью инструмента Перемещение вы можете в дальнейшем выделить точки треугольника и тестировать их на других, возможно, более подходящих точках отслеживания.
Когда вы будете удовлетворены результатом, нам останется только установить желаемую ось для Constraint слоев. Это делается в диалоговом окне настройки тега Constraint слоев, где мы выбираем ось Y.
В последнем этапе калибровки мы также устанавливаем ориентацию оси Z и одновременно масштаб сцены. Для этого мы берем инструмент Constraint вектора из меню Motion Tracker>Constraints.
Сгенерировав векторный Constraint, мы получаем линию в трехмерном виде, которую мы передвигаем на две подходящие точки отслеживания на правой стене, чтобы определить положение оси Z.
После того, как линия была выровнена по двум точкам отслеживания, расположенным параллельно к стене, мы открываем диалоговое окно настройки тега Constraint вектора и устанавливаем, что линия Constraint вектора определяет ось Z.
В этой связи мы сразу же можем задать масштабирование сцены, установив предопределенное значение известное и предположив длину линии (в моем случае 1,5 метра).
Как видно по зеленому цвету двух целей линии, эти точки отслеживания также отлично подходят для калибровки.
После завершения калибровки мы переключаемся на реконструированную камеру, чтобы посмотреть на восстановленную до этого сцену.
И, как мы видим, дно забора находится на плоскости XZ нашей глобальной системы координат. С учетом неровности пола и, вероятно, не совсем вертикальной стены, мы можем быть довольны этим результатом.
3D-реконструкция ограждения
После окончания предварительных работ мы переходим к основному нововведению в Релизе 19 - реконструкции сцены на основе 2D-видеоданных.
Чтобы сделать это, мы переходим на последнюю страницу диалогового окна настройки объекта Motion Tracker, к реконструкции. Здесь сначала мы выбираем Предустановленную высокое качество, которую затем настраиваем под наши требования.
Реконструкция сцены включает в себя создание облака точек и последующее создание сетки, то есть преобразование этого облака точек в полигональную сетку. Оба этапа автоматически последуют друг за другом, поскольку мы выбрали Предустановленную высокое качество. Однако так как нам сначала нужно получить только облако точек для проверки перед созданием сетки, мы активируем опцию Только облако точек, прежде чем начнем реконструкцию, щелкнув по кнопке Начать реконструкцию сцены.
В зависимости от скорости компьютера может потребоваться несколько минут после завершения реконструкции сцены для создания полигонального объекта с облаком точек сцены. Этот объект облака точек имеет тег цветов вершин, отображающий отдельные точки облака точек с реконструированной информацией о цвете.
Из вид камеры редактора мы уже можем получить очень информативные данные о реконструкции и ожидаемом создании сетки только с помощью этого окрашенного облака точек.
В данном случае мы, конечно же, не можем быть удовлетворены результатами. Нет ничего от стены, дно представлено лишь в отдельных фрагментах - мы с уверенностью пропустили создание сетки.
Поэтому нам нужно настроить параметры создания облака точек в соответствии с требованиями нашего видео. Во-первых, мы уменьшаем минимальный угол до 2°, чтобы помочь реконструкции на левой и задней стене. Таким образом мы решаем проблему острой угловой стены слева и небольших движений камеры.
Увеличивая размер заплаты до 30, мы получаем более крупный шаблон поиска, что повышает качество облака точек. Наконец, мы еще отключаем опцию фильтрации малых групп, чтобы предотвратить отсев тонких, но важных заплат.
Мы удаляем объект полигона старого облака точек в менеджере объектов, прежде чем повторить попытку, нажав кнопку Начать реконструкцию сцены.
Из-за измененных параметров реконструкции процесс создания облака точек займет некоторое время, но результат будет очевиден.
Теперь пол и задняя стена также присутствуют, хотя на левой стене из-за неудачного угла камеры больше ничего не удастся. Но это не так важно, ведь для невидимых зон в конечном итоге не нужна подробная сетка.
С этим облаком точек успешно можно выполнить мешинг. Для начала преобразования облака точек в полигональную сетку переходим на страницу Реконструкции в разделе Мешинг и нажимаем кнопку Сгенерировать меш.
Этот шаг также займет некоторое время из-за установленного высокого качества, но в конечном итоге мы получим практически закрытую полигональную сетку.
Для реконструированной сценической сетки был создан новый полигональный объект. Теперь, когда мы будем работать с этим объектом, мы можем скрыть видимость точечного облака сцены и, если еще не сделали этого, объект движения-трекера в виде светофора-фильтра в менеджере объектов.
Поскольку объект сцены-сетки также имеет тег цвет вершин, …
… при выборе тега цвет вершин в менеджере объектов мы видим полигональную сетку, окрашенную подходящим образом под видео.
Здесь через искажения цвета опять же ясно видны уже обсужденные проблемные места реконструкции. Однако нас интересует только простая полигональная сетка вокруг стены, поэтому мы можем не обращать на это внимание.
Что мы не должны упустить из виду, это маленькое полигональное отверстие в углу слева сзади. Чтобы закрыть это отверстие, выделяем полигональный объект сцены и вызываем инструмент Закрытие полигонального отверстия из меню Сетка>Создание.
Этот инструмент обнаруживает нежелательное отверстие в сцене, когда мы наводим указатель мыши на близкое ребро, и закрывает его, когда мы нажимаем на него.
Сглаживание полигональной сетки
Высокое разрешение сценной реконструкции, конечно, отражается на очень беспокойной поверхности сетки. Если бы мы просто поместили полигональный объект стены в Генератор подразделения поверхности для разглаживания, сцена стала бы еще сложнее из-за дополнительного разбиения сетки.
Вместо этого мы выделяем полигональный объект и, удерживая клавишу Shift, выбираем Деформатор сглаживания из меню Создание>Деформаторы.
Добавив клавишу Shift в качестве модификатора, мы поместили Деформатор сглаживания так, как нам нужно, над полигональным объектом сцены.
Настройки Деформатора сглаживания мы можем оставить на значениях по умолчанию.
Таким образом, полигональная сетка выглядит гораздо лучше. Наша цель - реконструкция сцены стены - достигнута. Теперь давайте рассмотрим, как текстурировать полигональный объект и интегрировать его в двухмерный фильм.
Интеграция трехмерного полигонального объекта в двухмерный фильм
Чтобы интегрировать реконструированную стену как трехмерный объект в затреканное видео, нам нужно подготовить двухмерный фон и накладывать на стену материальную текстуру проекции. Для этого мы вызываем диалоговое окно настроек объекта Мотион-трекера и переходим на страницу Видеоматериалы. Через кнопку Создать фоновый объект мы генерируем готовый текстурированный фоновый объект для вставки двухмерного видео при рендеринге.
Тег текстуры объекта фона теперь можно использовать и для объекта сценамеша отгораживания. Перетаскивая тег текстуры с зажатой клавишей Ctrl, мы копируем его на объект сценамеша.
Чтобы объект сценамеш принимал тени от других объектов, но сам не бросал теней, мы назначаем ему через меню Теги>Cinema 4D Теги в менеджере объектов тег рендера.
В диалоговом окне настроек тега рендера соответственно отключаем опцию бросать тени и активируем опцию композиция фона.
Теперь мы можем расположить любые 3D-объекты в отгораживании, добавить сцене хотя бы один источник света, бросающий тени…
… и отгораживание будет получать тени в правильных местах. Благодаря моушн-трекингу также обеспечивается, что каждый интегрированный 3D-объект остается в правильном месте в восстановленном 2D-фильме.