Уроки Аушвица: VR-проект с Volumetric съемкой. Часть 2

PHYGITALISM
Mar 1, 2020 · 9 min read

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

Часть 1 \ Часть 2 \ Часть 3 \ Часть 4

Самое сложное — начать

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

  1. Все сцены должны быть в 3D пространстве для получения большего контроля над процессом монтажа в Unity: наложение эффектов, пролёты камеры, игра со светом. В перспективе, 3D сцены можно более качественно вывести в AR/MR;
  2. Объемные модели детей с анимацией;
  3. Рисование в смешанной реальности;
  4. VFX, компьютерная графика.

Варианты захвата движений и создание объемных моделей детей

Получение достаточно точного 3D аватара (копии человека) вместе с анимацией накладывает определенные сложности. Идеальным вариантом был бы то, что сделали инженеры Google в своём проекте, Microsoft или то, что предоставляют компании такие как dimension. Такие проекты стоят очень дорого, так как включают в себя новейшие технологии, необходимость хорошей студии и профессионального освещения, команду с разносторонними компетенциями. Самый бюджетный вариант — имитация 3D. В нашем проекте PillBird мы решили сделать 2D видео с прозрачным фоном в AR, чтобы добиться эффекта смешанной реальности.

Приложение PillBird

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

Мы начали прорабатывать несколько направлений:

  • Полноценное 3D с реальной анимацией
  • Полноценное 3D с реалистичными моделями и реальной анимацией
  • 2.5D видео записанное с помощью RGB-D сенсора

Полноценное 3D с реальной анимацией

Идея

Мы подготавливаем 3D модели детей заранее, жертвуя реалистичностью. Записываем реальные движения в виде скелетной анимации и накладываем на подготовленные 3D модели. Основная сложность здесь это как записать реальные движения. Костюма захвата движений со специальными датчиками у нас не было, но и резких движений, с которыми могли возникнуть проблемы при съемке не предполагалось, поэтому у нас появилась идея использовать RGB-D сенсор и специальное ПО для захвата движений. Обзор некоторых RGB-D сенсоров есть в нашей статье.

Реализация

Использовать два RGB-D сенсора Kinect V2 , платную программу от iPi Soft для создания скелетной анимации и iPi Recorder (бесплатная) для записи данных. Два сенсора были выбраны по достаточно простой причине. Если расположить сенсоры в нужные места, они будут дополнять друг друга. То, что находится вне поля зрения одного сенсора будет видно на другом и наоборот. Такая конфигурация снижает проблемы с некорректной анимацией в сложных случаях, когда система не может решить какое движение совершил человек. Мы хотели попробовать запись с RealSense D415 и D435 из-за того что у нас всего было 3 сенсора, но iPi Mocap Studio не поддерживала несколько сенсоров от Intel.

В нашем случае конфигурация была как на рис. 1.

Рис. 1.Расположение сенсоров Kinect V2

С установкой ПО проблемы у нас не возникло. Для начала работы необходимо выполнить калибровку. Калибровка нужна для определения взаимного расположения сенсоров относительно друг друга.

Процесс калибровки описан в официальной документации. Есть два варианта:

  1. Калибровка с помощью плоского объекта, типа картины или картонки.
  2. Калибровка с помощью фонарика.

Мы остановились на варианте с плоским объектом. Второй вариант мы тоже пробовали, но у нас, не было фонарика, как в примерах.

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

Запись данных для калибровки с использованием плоского объекта

После этого можно начинать захват движений. Процесс построения скелетной анимации делится на два этапа:

  1. Запись данных с сенсора /сенсоров;
  2. Обработка данных для определения движений с настройкой различных параметров.

После обработки скелетную анимацию можно применить к 3D модели.

Результат обработки данных со скелетной анимацией

Мы взяли 3D модели с сайта Mixamo и добавили к ним скелетную анимацию.

Результаты на видео:

Проблемы

Качество анимации достаточно неплохое при соотношении затраченных ресурсов и необходимого оборудования, но есть определённые проблемы:

  1. Иногда части скелета могут сбиваться при отслеживании. В некоторых случаях это можно исправить с помощью ручной подстройки скелета;
  2. Анимация ладони при достаточно далёких планах не захватывается. Из-за этого ладонь всегда прямая;
  3. Существует эффект дрожания. Например, голова постоянно дёргается на скелете. Частично это решается через настройки обработки в самой программе;
  4. Необходимо снимать человека в обтягивающей одежде т. к. из-за свободной одежды возникают проблемы;
  5. При перемещении камер необходима новая калибровка;
  6. При начале захвата движения человек должен развести руки и ноги, чтобы было проще всего связать скелет с дальнейшим движением, иначе придётся вручную настроить начальное положение скелета.

Полноценное 3D с реалистичными моделями и реальной анимацией

Этот подход непосредственно связан с предыдущим, но с небольшими изменениями. Анимацию мы также записываем на RGB-D сенсоры, но 3D модель получаем похожими на оригинал. Желательно полуавтоматически, чтобы не тратить время на моделирование. Это позволило бы сохранить узнаваемые черты людей, дополненные эффектами. Мы рассматривали два варианта: RGB-D сенсоры и фотограмметрия.

Фотограмметрия

Идея

Сделать много снимков объекта с разных ракурсов и потом воспользоваться специальным ПО, которое позволяет восстановить 3D модель по снимкам.

Реализация

Для фотограмметрии использовалось две программы 3DF Zephyr и Meshroom. Для качественной работы необходимо сделать достаточно много снимков. В 3DF Zephyr, в пробном режиме, было ограничение на 50 фотографий. Съёмка производилась на iPad Pro, процесс занимал достаточно много времени и стоять на одном месте неподвижно было тяжело, поэтому в финальном скане произошли смещения, из-за чего он выглядел плохо с точки зрения геометрии. В наших тестах пропадали руки.

Видео с демонстрацией работы 3DF Zephyr
Видео с демонстрацией работы Meshroom

После наложения анимации результат выглядел следующим образом:

Видео с демонстрацией работы Meshroom

В итоге мы отказались от этого метода из-за проблем с передачей геометрии объектов.

Проблемы

  1. Геометрия объекта плохо восстанавливается. Заметны значительные искажения и отсутствуют некоторые части тела, если снимать с одной камеры;
  2. Программа 3DF Zephyr ограничена 50 снимками в бесплатном режиме. Для качественного результата может понадобится больше снимков и требуется хорошая камера. Время съёмки также увеличивается;
  3. Долго приходится стоять неподвижно. На следующих снимках какие-то части могут быть сдвинуты. Для детей стоять в одной позиции непростая задача. Более предпочтительный вариант это использовать несколько камер для одновременной съёмки;
  4. Итоговый вариант выглядел не очень хорошо и не стоил таких затрат, на наш взгляд.

Использование RGB-D сенсора

Идея

Второй вариант предполагал использовать RGB-D сенсор Occipital Structure Sensor. Он работает вместе c iPad. Для него есть приложение, которое позволяет сканировать объекты. Мы хотели использовать эту возможность для получения 3D моделей детей.

Реализация

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

Процесс сканирования шлема от HTC.

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

Сканирование людей

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

Проблемы

  1. Качество текстур намного хуже даже при хорошем освещении по сравнению с фотограмметрией;
  2. Текстуры на 3D моделях иногда смещены и накладываются друг на друга. Это заметно в области лица в примерах на видео;
  3. На сканах были дырки в тех местах до которых было сложно добраться физически. Их необходимо было бы закрывать вручную.

2.5D видео, записанное с помощью RGB-D сенсор

Идея

Записать видео на RGB-D сенсор. Здесь у нас появляется возможность придать объём плоским объектам на камере, потому что вместе с обычным видео записываются данные о глубине. Конечно, того что не видит камера не будет видно и в 3D. Из-за этого появляется эффект обрезанной 3D модели. Поэтому мы и назвали это 2.5D, как не полноценный переход в 3D. Имея записанные данные мы получаем много точек в 3D, которые образуют объекты на видео. Их достаточно, чтобы характерные черты объектов были видны. Преимущество такого подхода является то, что мы можем применять различные эффекты к этим точкам. Этот вариант был выбран как итоговый.

Реализация

Для записи данных был выбран сенсор Azure Kinect. Он обладал наибольшим разрешением съёмки глубины 1024x1024. Единственное ограничение было в частоте кадров. Съёмка в таком режиме можно было осуществлять только на 15FPS. Нам было этого достаточно. В качестве ПО использовалась программа DepthKit. Она умеет работать с Azure Kinect и упрощает процесс создания такого видео:

  1. Есть возможность записать данные с базовой настройкой сенсора: разрешение съёмки, настройка баланса белого, экспозиции и т. п
  2. Есть превью в небольшом редакторе и возможность выбрать порог по глубине, для того чтобы обрезать фон или выделить какие-то объекты, обрезать видео. Этот момент важен т. к. при съёмке в разрешении 1024x1024 видео с глубиной имеет форму восьмиугольника и не совпадает с формой видео, снятого на RGB камеру, которая прямоугольная.
  3. Имеется возможность добавить чёрно-белую маску на видео для выделения определённого объекта, например человека.

На рис. 2 представлены настройки сенсора Intel RealSense D415. Стоит заметить, что настроек значительно меньше, чем есть в программе Intel RealSense Viewer. Для Azure Kinect таких настроек больше.

Рис. 2 Настройки сенсора для Intel RealSense D415

На рис. 3 представлен пример выбора значения глубины, далее все примеры сняты на Azure Kinect.:

Рис. 3 Выбор значения глубины для обрезки фона

На рис. 4 визуализация значений глубины с Azure Kinect. Обратите внимание на форму того, что снимает сенсор. Чёрные участки внутри восьмиугольной области означают отсутствие данных. Это может быть связано с воздействием внешней среды на сенсор. Как правило, все сенсоры и датчики имеют определённые погрешности при измерениях.

Рис. 4 Визуализация значений глубины, записанных на Azure Kinect

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

Рис. 5 Чёрно-белая маска, необходимая для включения дополнительных возможностей
Пример редактирования видео

Поэтому снимать лучше всего на хромакее для простого обрезания объектов. После завершения настроек есть возможность экспортировать данные в виде видео или последовательности моделей в формате obj вместе с текстурой. Что использовать — зависит от приложений, но мы использовали видео, т. к. это менее затратный способ для Unity в воспроизведении результата в 3D.

Экспорт после наложения маски

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

Проблемы

  1. Неполноценное 3D.
  2. RGB-D сенсоры чувствительны к некоторым материалам, освещению. Особенно с большой поглащательной способностью света. Данных о глубине до таких объектов может не быть. Например, на Azure Kinect могут влиять источники инфракрасного излучения из-за физических принципов работы на которых основан сенсор. Для других RGB-D сенсоров факторы, влияющую на работу могут отличаться;
  3. При максимальном разрешении съёмки глубины, FPS достаточно низкий и не подходит для захвата резких движений;
  4. Объекты выставленные ближе к камере дают тень, которая перекрывает достаточно большие области на остальных объектах. Например, выставленные перед собой руки. Это нужно учитывать при съёмке. Одни ракурсы могут быть более предпочтительны по сравнению с другими;
  5. Области RGB и камеры глубины не совпадают, поэтому полезного пространства намного меньше, чем кажется на первый взгляд;
  6. Azure Kinect нельзя использовать вместе с HTC Vive Pro. Инфракрасный излучатель влияет на работу приёмников шлема и контроллеров. Из-за этого шлем не может корректно ориентироваться в пространстве. В итоге мы снимали людей со шлемом Oculus Quest.

Вывод

Проекты на стыке традиционных и новых технологий съёмки дают возможность реализовывать проекты на новом уровне. Технологии съёмки с использованием RGB-D сенсоров и игровых движков позволяют упростить процесс создания проектов. При этом меняется сам подход к съёмке. Появляется возможность вдохнуть в проекты новую жизнь уже после использования основного материала. Например, перенести в AR/VR. Как и в любом процессе, такая съёмка имеет свои особенности, которые нужно учитывать. Здесь желательно понимать некоторый базис технологии, которая используется.

Из нескольких вариантов мы выбрали съёмку 2.5D на Azure Kinect. Такой подход наиболее естественно продолжает традиционный подход к съёмке на камеру. При этом даёт возможность использовать игровые движки для создания красивых эффектов. Azure Kinect был выбран, т. к. он является одним из самых лучших RGB-D сенсоров по основным характеристикам: качество RGB камеры, разрешение съёмки глубины и т.п. из доступных на массовом рынке.

<предыдущая часть \ следующая часть>

Автор

Александр Крючков

a.kryuchkov@phygitalism.com

Инженер-исследователь в Phygitalism

PHYGITALISM

Создаем проекты на стыке XR, ML и других интерактивных…

PHYGITALISM

Создаем проекты на стыке XR, ML и других интерактивных технологий

PHYGITALISM

Written by

Мы - команда PHYGITALISM, реализуем фиджитал-проекты и много экспериментируем с XR, интерактивными технологиями и машинным обучением.

PHYGITALISM

Создаем проекты на стыке XR, ML и других интерактивных технологий