3DTracking - небольшие заметки

Здравствуйте!!!

В этом уроке речь пойдёт о 3D Tracking. Сегодня трудно назвать фильм, где бы не применялась данная технология. В уроке будут рассмотрены несколько проектов и несколько способов получения данных.

Для урока использовалась программа Boujou 4.1.

При съёмке материала желательно не забыть измерить расстояние между несколькими парами маркеров или хотя бы между двумя маркерами. Это поможет в дальнейшем и облегчит совмещение видео с 3D объектами. Хорошо если меркеры будут размещены в разных плоскостях. Ещё нелишним будет снять сетку для определения Distortion (искажения), причём сетку необходимо снимать с тем же фокусным расстоянием, с которым снимался материал для трэкинга. Но если съёмка проводилась без маркеров, без замеров, без контрольной сетки, а данные камеры неизвестны, это не значит что такой материал нельзя использовать и при таких условиях можно получить точные данные трэкинга.

Пример сетки, снятой для использования в уроке.

Что бы узнать значение Distortion, импортируем снятую сетку в программу. Далее переходим в Setup, затем переходим к строке Asses Lens Distortion (manual).

В открывшемся окне создаём калибровочную линию Add Calibration Line. Можно изменить значение  Step с 0,1 до 0,01 в первом случае будут добавляться десятые доли, а во втором - сотые, это позволит более точно выставить значение в строке R

Изменяя значение R нужно добиться совпадения калибровочной линии с линией на снятой сетке. При таком искажении значение R получилось 0,19.

Сейчас рассмотрим проект. Перед началом необходимо внести изменения в настройках программы. Данные трэкинга будут использоваться в програмее 3D Max, исходя из этого внесём необходимые изменения. Заходим в Edit далее Preferences, в появившемся окне выбираем 3D Display, затем нажимаем на параметр Preferred Camera Orientation и устанавливаем значение Z-up, Y-forward. Если этого не сделать, то в 3D Max все объекты будут неправильно сориентированы и придётся всю сцену корректировать.

Импортируем материал, для этого в левой части программы (Toolbox) нажимаем на соответствующую кнопку  и в появившемся окне необходимо выбрать тип камеры Free Move, потому что камера была не статичной и перемещалась, далее в окне Interlace укажем Not Interlaced, т.к. используемый материал без полей. Желательно видео просчитать в последовательность кадров, а не использовать AVI файл.

Весь путь к материалу не должен содержать кириллицу, иначе программа не сможет открыть файл. Если установлен русский Windows, в этом случае и на «Рабочий стол» нельзя сохранять, потому как путь будет таким «C:/Documents and Settings/All Users/Рабочий стол/».

Если известны параметры камеры, на которую был снят материал, необходимо указать программе эти данные. Для этого переходим в Toolbox и нажимаем на кнопку , откроется окно с настройками, вносим необходимые изменения. Меняем значение Film back (размер матрицы) в данном случае - 21,5 мм на 16,1 мм, в том же окне Cameras переходим в Advanced параметры и устанавливаем значение Radial distortion на 0,19,полученное при помощи сетки. Далее укажем фокусное расстояние, для этого возвращаемся в Toolbox и нажимаем на кнопку Focal Constraint, в открывшемся окне указываем нужное значение, в данном случае 22 мм

Следующим действием будет создание маски. Учитывая что актёр, находящийся в кадре двигается, нам необходимо исключить его из процесса трэкинга, иначе результат может быть не таким, как нужно. Вот что получилось при трэкинге без маски. В начальных кадрах всё хорошо, но при первом движении актёра, точки «уплыли». И здесь же добавлю, визуально в окне программы смещаются точки (Predictions), но если перейти в режим 3D sпроекции, можно увидеть что смещаются не точки, а именно виртуальная камера, движение которой получено в результате трэкинга.

И так для создания маски переходим в левую часть программы (Toolbox) и нажимаем на кнопку  делее, левой кнопкой мыши обводим актёра. Затем анимируем маску, переходя по таймлайн, из кадра в кадр перемещаем маску так, что бы она закрывала актёра от первого кадра, до последнего.

Маску можно анимировать не только перемещая вершины, но и в тех участках видео, где это возможно, передвигать её целиком
1. Перемещение вершин,
2. Перемещение всей маски,
3. Вращение маски,
4. Изменение размера.

   

В том случае, когда актёр снят на зелёном/синем экране, можно упростить создание маски. Достаточно сделать чёрно-белую маску из основного материала. В данном случае использовалась программа After Effects, с помощью кеинга убираем зелёный фон, далее создаём новый слой белого цвета White Solid (при чёрном Background Color) и в параметрах Track Matte устанавливаем  Alpha Inverted Matte. Полученный результат просчитываем в последовательность кадров.

В программе Boujou заходим в 2D Tasks, затем нажимаем на Import Image Based Mask, в открывшемся окне указываем путь к созданной маске и в разделе Mask Type устанавливаем include white, тем самым именно белый цвет будет включён в процесс трэкинга, при этом актёр будет закрыт маской.

Что бы начать трэкинг, преходим в Toolbox и нажимаем на кнопку Track Features, в появившемся окне нажимаем на Advanced и в контрольном окне видим что актёр исключён из процесса трэкинга, остаётся нажать Start и ждать завершения.

И в конце преобразуем полученные данные из 2D в 3D, для этого необходимо нажать на кнопку Camera Solve  и в появившемся окне установим галочку на Optimize camera path smoothness, для сглаживания пути камеры, затем нажимаем кнопку Start.

Посмотрим на результат, на первый взгляд всё выглядит неплохо, но при внимательном рассмотрении видно, что в кадре 33 точки сместились относительно маркеров, причём отклонение довольно большое. При таком результате в 3D пакете, объекты будут смещаться, поэтому необходимо исправить ошибку.

Попробуем добавить в сцену Target Track, для этого в Toolbox выбираем  Add Target Track и в первом кадре устанавливаем на маркер. Положение Target Track можно контролировать в Zoom Tool, что находится в правой части программы. Затем необходимо создать несколько ключевых кадров,для этого преходим по таймлайн и устанавливаем созданный Target Track на тот же маркер, но в разных кадрах. Чем больше ключевых кадров, тем лучше будет результат трэкинга. После этого необходимо нажать правой кнопкой мыши на Target Track, появится строка Toggle edit mode, нажимаем на неё и перейдя в режим управления трэком, опять нажимаем правой кнопкой мыши на Target Track и выбираем строку Track, после этого начнётся процесс трэкинга. Таким образом добавим в сцену несколько Target Track. Сейчас опять вернёмся к Camera Solve, что бы получить новые данные трэкинга. В Boujou есть функция Adjust Solve, ею так же можно пользоваться для исправления ошибок, именно при добавлении Target Track или Locator, но в данном случае неточность в трэкинге довольно большая и Adjust Solve скорее всего не исправит ошибку, поэтому была выбрана функция Camera Solve и 3D камера будет создана заново, с учётом изменнеий.

Посмотрим на результат после добавления Target Track.И в этом случае смещение есть,но уже не такое большое.В просмотровом окне программы несоответствие может быть незаметным,но при совмещении с 3D объектами ошибка будет очевидна.Необходимо продолжить исправление ошибки.

Перейдём в Graph Mode,здесь можно увидеть график перемещения и вращения камеры.Что бы активировать окно Graph Mode нажимаем на соответствующую кнопку   в Active View Controls Toolbar(над просмотровым окном).

Оставим активным график перемещения камеры,для этого снимем галочку с ненужных параметров,оставив её только для Translation.Рассмотрим график,для увеличения окна можно воспользоваться комбинацией Shift+правая кнопка мыши,так будут лучше видны погрешности.В данном случае никаких искажений в перемещении камеры нет,значит траектория движения виртуальной камеры соответствует траектории реальной камеры,но трэки всё же смещаются.

Активируем график вращения камеры,переставив галочку на Rotation.Здесь видны искажения,именно в кадре 33 самое большое отклонение.Добавление Target Track не исправит ошибку,они отслеживают движение маркеров при трэкинге,но после Camera Solve смещаются относительно маркеров,в то же время продолжая движение по траектории маркеров.Значит программа не точно определила положение маркеров в пространстве.Улучшить результат можно с помощью локаторов (Locator), название этого инструмента говорит само за себя.

Исходя из графика, в сцену необходимо добавить локаторы (Locator). Для этого в Toolbox выбираем кнопку  и устанавливаем локатор на маркер. Так же как и Target Track, положение локатора можно контролировать в окне Zoom Tool. Перемещаясь по таймлайн необоходимо создать несколько ключевых кадров,минимум два,при этом локаторы можно устанавливать не только на маркерах, но и на любых предметах,попадающих в камеру. Функция Locator отличается от функции Target Track. Локатор не обладает возможностью отслеживать движение маркера, но с его  помощью программа лучше определяет положение маркеров и объектов в сцене,что значительно повышает точность результата. Локатор влияет на трэкинг только в тех кадрах, где он был установлен, там же создаются ключи. Поэтому сам локатор желательно устанавливать в тех участках, где есть резкое изменение траектории движения камеры при съёмке. После установки локатора, необходимо нажать на него правой кнопкой мыши и далее на строку Toggle edit mode. Чем больше локторов, тем точнее будет результат, но длительность просчёта увеличивается в разы.

После установки всех локаторов, опять переходим в Camera Solve, как только завершиться процесс можно увидеть, что в этом случае в кадре 33 точки не смещены относительно маркеров, более того большенство точек окрасились в жёлтый цвет, это говорит о точности трэкинга. Таким образом была исправлена ошибка трэкинга, теперь никаких смещений нет и совмещение с 3D объектами будет точным. Если сравнить график до и после добавления локаторов, видно как меняются линии вращения камеры, в первом случае есть резкие изменения формы линий, во вотором случае линии сглаженные и не содержат резких искажений.

 

Для того,что бы увидеть результат,можно установить контрольный объект.В Boujou есть несколько тестовых объектов,по умолчанию это «Божья коровка»,для добавления объекта в Toolbox нажимаем Add Test Object. Из списка Type выбераем объект Arrow, почему именно Arrow? Этот объект можно точно разместить на маркере, так будут лучше видны малейшие ошибки трэкинга. При воспроизведении видно, что тестовый объект не смещается и в кадре 33, где было смещение трэков, объект так же находится на маркере. Всего лишь несколько локаторов помогли исправить неточность в трэкинге.

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

Создадим новый проект. Импортируем этот же материал в программу. Допустим что данных о камере и о фокусном расстоянии нет. В этом случае всё оставляем без изменений. Если фокусное расстояние неизвестно и не менялось, в окне Type устанавливаем Constant unknown, в том случае когда фокусное расстояние менялось, в том же окне Type устанавливаем Variable unknown.

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

Далее, как и в первом проекте, воспользуемся автотрэкингом,для этого нажимаем на кнопку Track Features,затем в открывшемся окне нажимаем Start, после окончания трэкинга нажимаем на кнопку Camera Solve и опять Start,тем самым преобразуем данные из 2D в 3D.

  

По окончании процесса рассмотрим результат. Если на таймлайн открыть строку Solves, можно увидеть пропуски в зелёной линии, это говорит о том, что в данном участке трэкинг отсутсвует, а перейдя в Graph Mode видно, что и в нескольких непропущенных кадрах (с 28 по 35) трэкинг неудался, об этом говорят резкие изменеия формы линий. В этих кадрах точки будут смещаться с маркеров. Результат трэкинга намного хуже, относительно предыдущего проекта, при этом действия отличались лишь тем, что в первом проекте были внесены данные о камере. Значит в этом случае с помощью автотрэкинга хорошего результата не будет. Исправлять ошибки в данном проекте не будем,этот пример был приведён лишь для того, что бы показать как влияют на результат данные о камере. Проект можно закрыть и начать заново.

 

В новом проекте воспользуемся возможностью программы, вручную отследить движение маркеров. Что бы добавить Target Tracks нажимаем на кнопку .Но для этого необходимо минимум 7 трэков одновременно видимых по всей длине. В данном материале нет нужного количества маркеров, которые видны по всей длине, поэтому некоторые трэки будут установлены не с первого кадра. Для более точной установки Target Tracks можно увеличить просмотровое окно, воспользовавшись комбинацией Shift+правая кнопка мыши или контролировать положение трэка в окне справа Zoom Tool.

Устанавливаем трэк на маркер в первом кадре, далее переходим по таймлайн и корректируем положение трэка относительно движения маркера, создавая ключевые кадры. Минимальное количество ключевых кадров, для трэкинга-2. Но для лучшего результата их должно быть больше, особенно в тех участках, где есть размытие из-за резких движений камеры. После установки ключевых кадров, нажимаем правой кнопкой мыши на трэк (Target Track), появится строка Toggle edit mode, нажимаем на неё и переходим в режим управления трэком.

 

Что бы начать трэкинг опять нажимаем правой кнопкой на Target Track и выбираем строку Track, нажимаем на неё и ждём окончания процесса. Для лучшего результата можно изменить контрастность между маркером и фоном, для этого в окне справа Zoom Tool меняем значения Brightness и Contrast, после этого маркер будет более чётко виден и программа точнее отследит его перемещение. Если, в процессе трэкинга, Target Track сместился относительно маркера, можно остановить трэкинг, нажав кнопку Cancel, что находится под просмотровым окном.В проблемных кадрах необходимо создать дополнительные ключи и возобновить трэкинг.

 

После окончания трэкинга можно проверить его качество, для этого на таймлайн откроем строку Target Tracks, если есть красные участки их нужно исправить, потому что в этих участках трэкинг прошёл неудачно. Нет необходимости повторять действия для всей длины. Достаточно очистить нужный промежуток. Необходимо правой кнопкой нажать на ключ, далее выбрать Clear Range Tracking, что бы очистился нужный участок, нужно выбрать из двух ключей именно первый. Далее можно добавить один или 2 ключа и опять с помощью правой кнопки выбрать строку Track Range, так трэкинг пройдёт только в выбраном участке. Если красных линий нет, можно идти дальше. Желательно добавить несколько локаторов (Locator) так же, как и в первом проекте.

Учитывая, что не все трэки активны от первого до последнего кадра, на этом этапе рано воспользоваться Camera Solve, если это сделать, в таком случае трэкинг будет активным только с того кадра, в котором активны все 7 трэков (в данном случае это кадр 68) а до этого кадра в просмотровом окне мы не увидим ни условной поверхности (Ground Plane), ни тестовго объекта, а если перейти в режим 3D проекции, то и виртуальная камера появится только в кадре 68.

Переходим в Toolbox и нажимаем на кнопку Track Features, это нужно для того, что бы заполнить пустоту с первого кадра по кадр 68. Далее можно перейти к Camera Solve. После завершения всего процесса посмотрим на результат. И снова трэкинг не идеален. В первом кадре трэки смещены относительно маркеров, но далее до самого конца никаких смещений нет и результат трэкинга безошибочный.

Перейдём в 3D проекцию,для этого нажимаем на иконку 3D  здесь можно увидеть путь виртуальной камеры.Отклонение в движении,с первого по второй кадры,довольно сильное,при том,что в сцену были добавлены Target Track и Locator.Что бы исправить неточность трэкинга,нужно изменить значение Distortion.

Если сетка всё же была снята и значение Distortion известно, в этом случае проделываем уже знакомые действия. Переходим в Setup, далее Asses Lens Distortion (manual). И в окне Asses Lens Distortion вносим полученное значение 0,19

В конце, что бы всё встало на свои места, с учётом изменеия Distortion, необходимо опять обратиться к Solve. На этот раз воспользуемся Adjust Solve, эта функция не создаёт камеру, в отличии от Solve Camera, а вносит изменения к уже созданной камеры. Переходим в 3D Tasks, далее Adjust Solve и в появившемся окне устанавливаем галочки на Optimize radial distortion parameters и Optimize camera path smoothness, после этого нажимаем Start. Так будут внесены изменеия в сцену, с учётом новых параметров.

838 0 850 197
42
2009-05-16
Да уж, небольшие заметки:) 5/5
2009-05-16
Вот это я понимаю УРОК,очень интересная технология.Естественно 5/5
2009-05-16
Всьо просто Клас!
2009-05-16
5\5 понравилось, что рассматриваются проблемные моменты!
2009-05-16
Урок только просмотрел, но уже смело поставил 5/5, т.к. результаты просто отличные.
2009-05-17
ЗдОрово. 5/5 Чувствую, скоро пригодится, актеру респект и уважуха)))))
2009-05-18
небольшое дополнение, с вашего позволения - http://render.ru/forum/viewtopic.php?post_id=680323#680323
2009-05-18
Исчерпывающий урок. :) 5/5
2009-05-19
интересно, а чего пацан везде такой грусный)))
2009-05-21
Вот это называется "от А до Я",ничего не скажешь только 5/5
2009-05-22
5/5
2009-05-22
отличный урок.... разобрал для себя многие непонятные моменты...спасибо вам большое ... удачи...
2009-05-22
Отлично,очень подробный урок.Мне вообще казалось,что локаторы это бесполезная приблуда.Теперь всё стало ясно 5/5
2009-05-22
здорово!
2009-05-23
Спасибо за комментарии,всем кто написал здесь и в ПМ. [b]Михаил Мокеев[/b] спасибо,актёру передал ваше сообщение,к тому же ещё был премирован мороженым. [b]O.din13 aka Alexey Ost[/b] А грусный наверное от того,что хотел 500 эскимо,а получил всего одно. [b]Михаил Коровянский[/b] дополнения всегда не лишние,тем более в такой области как мачмувинг.Этот процесс довольно непредсказуем,по сему любая информация полезна,что бы использовать все возможности для достижения нужного результата. [b]w6OP3w[/b] я сам удивился,кто же мог подумать что он так разрастётся.Честно говоря сюда можно было даписать ещё столько же. Обратите внимания,в уроке 3 страницы и ссылки на демо находятся в самом конце.
2009-05-25
Ничего не скажешь-5/5
2009-05-25
Спасибо! Много нового узнал :)
2009-05-26
Лучшее что встречалось на русском языке.Спасибо за урок.
2009-05-26
Подскажите, может я чего недопонял: как сделать так, чтоб этот мальчик сидел в виртуальном автомобиле. Тоесть. как добавлять 3D объекты в реальную сцену я коекак понял, а вот как добавить в 3D окружение реальный объект? Как заставить программу понимать очертаия этого реального объекта, причем точно, а остаток реального окружения игнорировать?
2009-05-26
Поставил 5\5:) Виктор, подскажите пожалуйста, где еще можно посмотреть более инфы о таком спецефичном предмете? Да, и за урок спасибо большое!
2009-05-26
[b]kUkara4[/b],что бы заставить программу понимать очертания объекта (человека),он снимается на зелёном/синем экране.Обратите внимания на демофайлы 001 и 002,там актёр сняn на фоне зелёной ткани,а маркеры синие.при сборке сцены (в частности в программе After Effects) зелёный/синий фон легко убрать с помощью кеинга-KEYING.Такой инструмент есть во всех программах композинга.Если же человек был снят на другом фоне,где кеинг невозможен,в этом случае необходимо вырезать маской.Это,пожалуй,самый утомительный и долгий процесс.нужно обвести маской объект и кадр за кадром анимировать положение и форму маски.Вот собственно в двух словах как это сделать. Можно в google задать [b]кеинг[/b] и [b]ротоскопинг[/b] увидите множество тем по данному вопросу на русском языке.
2009-05-26
[b]Mark_Lee[/b],есть уроки gnomon по 3Д трэкингу,по моему 5 выпусков у них было с интеграцией данных в Maya.
2009-05-26
[b]Виктор Кулачкин[/b] Спасибо :) Желаю победы . 5/5 урок
2009-05-26
5/5
2009-05-27
[b]Виктор Кулачкин[/b] 5.5, урок отличный, Вы лучший в области тракинга. Может Вы сделаете следующий урок про то как сделать тракинг объекта в сцене или героя, например, чтобы сделать ножи как у расомахи или пол лица как у терминатора ободрать.
2009-05-27
[b]kUkara4[/b] спасибо. [b]mykola-82[/b] если просто нужно заменить часть тела или лица,то лучше делать это не трэкингом,а мокапом.Обычный объект-трэкинг отслеживает только движение.А при помощи мокапа и мимика передаётся.Вот урок.http://www.render.ru/books/show_book.php?book_id=701
2009-05-31
Доброго времени суток, я извиняюсь что залезу с вопросом не много не по теме! Виктор, я смотрел ваши предыдущие уроки по МОКАПУ, далее нашел о том где по чем и как продают эту систему захвата движеней, там имеются 4-6-12-24 камеры в комлекте, скажите можно ли обойтись минимальным колличеством камер в 4 штуки? и как колличество камер влияет на конечный результат?
2009-06-01
[b]Mark_Lee[/b] в общем то 4 камеры конечно же хватает для несложного мокапа,но всё таки минимум 6 камер.Количество камер,как таковое,не влияет на качество захвата,точнее и оно тоже влияте,но в бОльшей степени результат зависит от правильной расстановки камер.Если часть маркеров не будут попадать в камеры,то количество последних ничего не даст.А простую ходьбу или приседания можно и 2 камерами захватить,установить слева и справа от актёра,а он будет идти на камеры.
2009-06-03
Спасибо Виктор, отличный урок! Пригодится. Голосую по максимуму!
2009-06-09
У меня появился вопрос. Я не совсем понял,а зачем добавлять Target Track на руку после трекинга и как понять [b]"Что бы совмещение видео с 3D объектом было удобней, после всех действий можно добавить Target Track или Locator"[/b].Как добавленная точка поможет при совмещении ?
2009-06-10
Наконец нормально про BOUJOU человек написал. 5/5 . Спасибо.
2009-06-11
[b]delcon[/b] добавленные точки ускоряют процесс совмещения в 3Д пакете.В данном уроке актёр должен держаться руками за край 3Д объекта и что бы не двигать объект много раз и не просчитывать кадры,что бы увидеть точность совмещения края объекта и рук актёра,для этого и добавляется точка на руку.Останется только лишь совместить край 3Д объекта с точкой,т.е. с рукой.Это делается для удобства и экономии времени.
2009-06-25
Как всегда, отлично изложенный материал. Спасибо! 5/5
2009-08-07
[quote]Если сетка всё же была снята и значение Distortion известно, в этом случае проделываем уже знакомые действия.[/quote] А если Дисторсию невозможно было отследить ? Капут ? Допустите вариант, что вы не нашли Дисторсию. Каковы дальнейшие действия ? А в целом хороший урок. Молодец.
2009-08-07
Забыл добавить, +5 ! :)
2009-09-27
потрясно!
2009-12-04
Люди, помогите. Я ничего не могу выделить ни масок не трекеров. В чем проблема может быть? Нажимаю на трекер а он не выделяется.
2010-09-28
Я ещё даже не изучал урок-так, проглядел, и понял, насколько он актуален- ведь по этой программе уроков на русском практически нет. Огромное спасибо автору!!! 5+
2011-05-14
зравствуйте, а у меня такой вопрос можно ли каким-нибудь образом объединить трекинг с VRayPhysicalCamera вместо стандартной камеры? может есть какой-то скрипт позволяющий это сделать? я где-то вычитал то, чтобы точно совпало значение углов стандартной камеры с Vraycam нужно target distance вирээвской камеры установить где-то на километров пять. есть ли вариант попроще и поточней? заранее спасибо.
2011-08-15
Ну вот и мне ваши заметки пригодились, спасибо огромное Виктор!!! )
2011-10-24
Полгода шарахался от этого урока(казался слишком сложным и громоздким ), но как говорится, жизнь заставила. А оказалось всё не так уж страшно. [b]Потрясающе всё разжёвано! Супер! Огромное спасибо!!![/b]
2012-08-30
Спасибо! Программа оказалась очень простой и дружелюбной)
RENDER.RU