Всім привіт, мене звуть Серго, живу я в місті Чебяркуля, катаюся на мотоциклі, працюю в невеликому продакшені.
Хочу розповісти про реалізацію motion-capture без участі студії та іншого дорогого обладнання. Даний спосіб отримання рухів займає якийсь час, але якщо все грамотно один раз налаштувати, щоб можна було потім швидко використовувати в какіхнібудь проектах, ця техніка знайде своє застосування.
Розглянемо приклад лицьовій анімації персонажа, що нам знадобиться:
Організовуємо знімальний майданчик - встановимо камеру на невеликій відстані від імені актора, далі встановимо дзеркала так, щоб в видошукачі було добре видно обличчя актора і його відображення, приблизно ось так:
Вид згори нашої студії буде виглядати так:
Невеликий відступ, важливо щоб дотримувалася рівність: Z = A + B = X + Y, де Z - фокусна відстань нашої самотньої камери, а A + B і X + Y - фейковие фокусні відстані двох інших камер відповідно. Але насправді рівність виконуватися не буде, Z буде завжди менше, що приведе до невеликої похибки у вигляді трохи поглибленої форми особи в бедующем, але це нестрашно (: ось така ось геометрія.
Далі займемося гримом нашого актора, подивимося в інтернеті як працюють наші колеги, і візьмемо щось середнє, я зробив 8 точок навколо рота, по три на щоках, ну і ще кілька на лобі і на носі, звернемо увагу, що при будь-якому рух людської міміки точки носа і чола залишаються нерухомими відносно один одного, це нам допоможе в подальшому.
Вимовляємо заздалегідь підготовлену промову, ну або що-небудь в дусі "Превед, я креведко!", Стоп. Дивимося чого у нас там відзняти, якщо все нормально, всі крапки чітко видні і не йдуть за межі видошукача йдемо далі.
Переходимо в PFTrack.
PFTrack - дозволяє реалізовувати різні завдання по трекінг і знаходженню руху камери, ми ж в даному уроці торкнемося лише завдань пов'язаних з motion capture.
Створюємо новий проект File - New Project. дивимося, що тут є цікавого.
Інтерфейс програми інтуїтивно зрозумілий, я розібрався з усім з першого разу непребегая до help
Тиснемо кнопку Import Footage. у вікні вибираємо наші центральну камеру center.avi. тиснемо load. Бачимо, що ім'я камери автоматично змінилося на center, далі заходимо в властивості нашої камери - Camera - Camera Parameters або "ctrl + p" на клавіатурі.
Міняємо тип камери на Motion Capture. а також вказуємо, що фокусна відстань мо час зйомки незмінний і нам невідомо.
Тиснемо close. Звернемо увагу, що раніше неактивна кнопка Import Footage. знову стала активною. Додаємо залишилися сиквенций left.avi і right.avi.
Тепер потрібно синхронізувати всі наші сиквенций, насправді нам цього робити непотрібно, тому що знімали все однією камерою, просто перевіримо, що всі камери стоять на початку і натиснемо кнопку Sync
можна сильно спростити собі життя, якщо виставити віконця камер так, щоб можна було все відразу відстежувати, скористаємося кнопками меню New Window і Tile Window Layout.
Далі починається найцікавіше. (: Щоб отримати тривимірні координати наших маркерів, спочатку потрібно отримати їх двомірні координати на кожній камері, для цього скористаємося трекінгом.
В процесі трекінгу програма може видавати помилки. це не страшно. Вони можуть бути викликані декількома причинами, а передусім неправильно налаштованої витримкою через поганої освітленості, як це було з моєї веб камерою. Вирішити цю проблему можна покрутивши параметри в меню Trackig - Tracking parameters. або використовувати більше світла при зйомках і більш кращу камеру, сподіваюся, що у Вас таких проблем невознікнет (:
Отже ми маємо 2д координати всіх трекер з усіх камер, тепер нам потрібно перетворити їх в тривимірні координати, зробити це дуже просто, основна робота позаду (:
Мало не забув, для прискорення і точності подальшого прорахунку необхідно вказати нерухомі ділянки обличчя, виділяємо точки носа і чола про які було сказано вище, тиснемо Tracking - Constraints. у вікні спочатку натискаємо New потім виділяємо наші точки справа, потім кнопку "<<" и Close
Вибираємо знову камеру Center в списку ліворуч і тиснемо в меню Camera - Solve Camera. або ctrl-F7, трохи чекаємо спостерігаючи за незрозумілим процесом.
Усе! Ми отримали координати всіх наших маркерів і камер в 3д, що з ними робити вже плід вашої уяви, завдання можна вважати вирішеною!
А все-даки, що робити далі? Далі експорт все це добро в ваш улюблений пакет 3д графіки, в моєму випадку 3dsmax9. шукаємо зліва пункт Camera Exports. . правою на ньому! - New. зберігаємо в форматі 3DS max script (* .ms). запускаємо макс, в меню тиснемо MAXScript - Run Script. і. дабл-клік по раніше збереженого .ms
Встаємо з-за столу, вклоняємося кажучи "Про спасибі! Великий пеефтрек!", Сідаємо, закриваємо його, більше він нам не знадобиться
Далі я не буду вдаватися в подробиці макса, просто розповім мій принцип прив'язки точок до моделі голови
Почнемо з підгонці нашої конструкції точок під модель голови, я робив це так: трохи збільшив розмір всієї конструкції, трохи повернув її і присунув до лиця моделі так, щоб точки майже лежали на поверхні. Тут можуть виникнути кілька складнощів, ідеально було б почати з кадру в якому особа актора симетрично і не виражає ніяких емоцій і підганяти все під нього, але якщо з якихось причин такої кадр відсутній його потрібно буде створити, можна умовно назвати його Reset Pose. Чим акуратніше буде виконана ця частина, тим краще буде виглядати кінцева анімація.
Тепер створимо ріг для особи, в нашому випадку він буде складатися з:
- Групи кісток складаються з пари хребців і великий кістки яка буде служити головою, робимо для неї IK контролер по всій довжині і прив'язуємо його до точки чола;
- Групи кісток для губ, в якій буде 8 IK контролерів, аттачем їх до наших точках губ відповідно;
- Кость для підборіддя, також робимо їй IK контролер і аттачем його до точки підборіддя.
Я використовував сцену прикладу, з поставки макса, і трохи змінив її.
Тепер кидаємо на нашу модель модифікатор skin. додаємо в нього наші кістки і точки щік, правимо розподіл ваги, натискаємо плей і насолоджуємося виконаною роботою (: