Уроки Аушвица: VR-проект с Volumetric съемкой. Часть 3
27 января был опубликован видео-арт проект, над которым мы работали 2,5 месяца. В этом цикле статей мы расскажем про важные смысловые и технологические аспекты этого проекта и о том, почему не нужно бояться неизвестного.
Время съемок
После проведения всех необходимых исследований по технологии захвата людей, пришла пора начинать следующий этап — работы по съемке. В нашем распоряжении была зеленая студия и один день :) Потом была возможность доснять только материал с рисованием из шлема.
Чтобы сработать слаженно, быстро и правильно, мы должны были провести тщательную подготовку. Мы составили список необходимого оборудования, продумали нейминги в проекте. На предварительной встрече обсудили, как именно будет проходить процесс, какие движения детей нужно заснять, как правильно работать с Tilt Brush, чтобы потом корректно совместить модель рисунка и движения для фейковой смешанной реальности.
Для съемок основной части рисующих в Tilt Brush детей нам были необходимы:
- VR шлем+контроллеры,
- камера Azure Kinect,
- компьютер,
- внешний SSD (для более оперативной работы и съемки),
- хромакей/зеленая комната,
- хороший свет.
Съемка в смешанной реальности (XR)
В сети много примеров красивых видео с людьми, рисующими в VR:
Нашей целью было добиться такого же результата, только с цифровым эффектом (VFX) на людях, а рисунки должны были реагировать на звуки. И все это, конечно, в 4k разрешении.
Во время проведения исследований мы нашли следующие статьи:
- Как создаются красивые трейлеры со смешанной реальностью
- Статья с официального сайта OculusQuest
- Единственная статья на русском: “Как смешать реальности: 9 простых шагов”
Они нам не сильно помогли, в частности потому, что в итоге у разработчиков получался смонтированный ролик. Нас же интересовало 3D. Однако, почти все способы мы все равно попробовали.
Встроенная возможность съёмки в TiltBrush
В приложении есть специальный режим Mixed Reality, где экран делится на четыре части (начиная с левого верхнего угла): сцена с рисунком после наложения маски, альфа-маска (изображение в градациях серого), изображение с внешней камеры, изображение от первого лица.
Из-за разделения экрана на 4 части, съёмку итогового видео можно осуществлять только в разрешении, равном половине разрешения монитора. Поэтому такой способ нам совсем не подходил.
Тогда мы решили, что запишем людей на Azure Kinect отдельно, а рисование в Tilt Brush — отдельно. Для этого в приложении есть режим “Spectator Mode”. Однако, с ним невозможно поставить камеру в сцене точно на то же место, где стоит Azure Kinect, так как двигать ее можно только вручную в шлеме.
Связка Liv + TiltBrush
Первое, что советуют использовать при XR съемке — приложение LIV. Оно позволяет осуществлять запись с реальной камеры и автоматически обрезать хромакей, чтобы совместить человека и его обстановку в VR. Здесь важно правильно провести калибровку контроллеров, чтобы совпадали реальные контроллеры, виртуальные и их изображение на камере. В итоге должна была получиться следующая картина:
К сожалению, выяснилось, что последнее обновление Tilt Brush перестало стабильно работать с LIV. Мы даже связывались по этому вопросу с разработчиками в дискорде, на что они ответили, что проблема есть, но когда она будет исправлена — неизвестно. В старых версиях он работал хорошо. На этом YouTube-канале собраны довольно подробные инструкции по настройке и записи.
Три контроллера и HTC Vive
Мы рассматривали и другой вариант. У HTC есть интересная возможность использовать три контроллера: реальную камеру можно объединить с контроллером от HTC, воспользовавшись специальными держателями или скотчем :). При подключении третьего контроллера через USB, и настройке его в качестве источника привязки виртуальной камеры в LIV, мы можем перемещать контроллер вместе с реальной камерой, а за ней и виртуальную. Это позволяет делать динамичные ракурсы при съёмке в VR.
Этот вариант казался нам наиболее привлекательным, но мы ещё не знали о проблеме совместимости Azure Kinect и HTC (и то и то оборудование имеет инфракрасное излучение, которое взаимно мешает правильной работе).
Наше решение
Из тестов было понятно одно — такие способы записи нам не подходит. Даже если бы все работало правильно, LIV выдает только 2D видео рисующего ребенка, что исключает возможность создание 3D сцены.
В итоге мы поняли, что единственный вариант, подходящий нам по большинству критериев — запись процесса рисования на Azure, и имитация рисования непосредственно в Unity, используя модель .fbx с проявляющими шейдерами (подробнее про шейдеры вы можете подробнее узнать из этой статьи).
Пайплайн съемки был следующий:
1. Мы выстроили камеру Azure и общую композицию в соответствии с планом, где были описаны все нужные дубли и ракурсы;
2. В шлем предварительно была загружена готовая TiltBrush сцена с рисунком. Из нее мы выбирали конкретный объект, который художник должен был прорисовать для конкретного дубля. Объект копировался;
3. В VR сцене мы отмечали положение камеры Azure для дубля. Новый дубль-новый цвет (мы подходили в шлеме к камере, и контролером рисовали стрелку вверх). Это было сделано для того, чтобы потом легко сориентироваться, с какого ракурса был снят дубль в Azure и в каком ракурсе необходимо ставить модель рисунка;
4. Сцена с новыми объектами и стрелками сохранялась и экспортировалась. Экспортировать .fbx из OculusQuest нельзя, так как шлем мобильный, и функционал в приложениях довольно ограничен, поэтому мы использовали HTC Vive, экспортировали прямо из папки TiltBrush на компьютере;
5. Далее мы импортировали полученные файлы в Unity 3D, и все дальнейшие работы шли уже там.
Что мы узнали во время наших ресерчей?
Во время тестов всплыло много интересных, и иногда совсем неожиданных моментов. О некоторых мы уже рассказали, но хочется подвести итог:
- Шлем HTC Vive, с которым мы хотели работать, имеет инфракрасный излучатель, такой же излучатель стоит на камере Azure Kinect. Это мешало записи при одновременном использовании. Поэтому мы отказались от Vive в пользу шлема Oculus Quest. В кадре он смотрелся лучше, хоть и всплыли некоторые незначительные проблемы с TiltBrush, например, большие сцены долго прогружались и висли;
- Камера транслировала съемку на компьютер в DepthKit, благодаря чему мы в реальном времени могли крутить сцену и смотреть разные ракурсы. При работе с Volumetric video рекомендуется использовать Ч/Б маски, на которых удаляется зеленый фон, их делают после съемок. Если маска не используется, DepthKit сам предлагает отделить человека, по данным о глубине. Выяснилось, что некоторые материалы и виды ткани передают неправильную глубину. Особенно проблемы были видны на поверхностях, отражающих свет. Крышку шлема мы заклеивали бумагой, а одеться рекомендовали в джинсы, футболки, толстовки. Костюмная ткань отображалась хуже всего;
- Снимать видео можно и без хромакея, но в таком случае маску сделать не получится, придется ограничиться данными о глубине, которые иногда подводят. У нас были наиболее благоприятные условия: мы снимали в зеленой комнате с хорошим профессиональным освещением.
Главная сложность во всем проекте — взаимоисключающие способы работы. Например, плохая состыковка используемого софта. На каждом этапе нам было необходимо продумывать, как обойти очередное ограничение, понимать, можем ли мы продолжать работать с выбранными инструментами, или необходимо полностью менять подход.
Для решения некоторых проблем мы писали собственные инструменты, о которых подробнее расскажем в следующей части.