[Перевод] Использование камеры Intel RealSense с TouchDesigner. Часть 2

82c71a539e9d409e9cae8b84940cc12d.jpg
© Rolf Arnold
Камера Intel RealSense — очень полезный инструмент для создания проектов виртуальной реальности и дополненной реальности. Во второй части этой статьи вы узнаете, как использовать узлы камеры Intel RealSense в TouchDesigner для настройки рендеринга или проекции в реальном времени для многоэкранных систем, одиночных экранов, 180-градусных (полнокупольных) и 360-градусных систем виртуальной реальности. Кроме того, информацию с камеры Intel RealSense можно передавать в Oculus Rift с помощью узла Oculus Rift TOP в TouchDesigner.
Вторая часть будет посвящена узлу RealSense CHOP в TouchDesigner.
Доступ к самым важным функциям отслеживания камер RealSense F200 и R200, таким как отслеживание глаз, пальцев и лица, осуществляется в узле RealSense CHOP в TouchDesigner. Эти функции отслеживания особенно интересно использовать в анимации реального времени или при отслеживании анимации в соответствии с движениями тела и жестами людей. Мне это представляется наиболее полезным для выступлений танцоров или музыкантов, где требуется высокий уровень интерактивности между живым видео, анимацией, графикой, звуком и выступлением.

Для получения файлов TouchDesigner* (.toe), связанных с этой статьей, нажмите здесь. Также доступна бесплатная копия TouchDesigner для некоммерческого использования. Она обладает полной функциональностью, но максимальное разрешение не может превышать 1280×1280.
Вновь следует отметить, что благодаря поддержке камеры Intel RealSense программа TouchDesigner* становится еще более универсальным и мощным средством.

Примечание. Как и первая часть этой статьи, вторая часть предназначена для пользователей, уже знакомых с программой TouchDesigner* и с ее интерфейсом. Если у вас нет опыта работы с TouchDesigner* и вы собираетесь постепенно разбираться в этой статье, то рекомендую сначала просмотреть документацию, доступную здесь: Изучение TouchDesigner.

Примечание. При использовании камеры Intel RealSense для достижения оптимальных результатов следует учитывать дальность. На этой веб-странице Intel указана дальность всех моделей камер и даны рекомендации по использованию камер.


Все данные, предоставляемые камерами Intel RealSense, очень полезны для создания виртуальной реальности и дополненной реальности. Некоторые попытки делать то, что сейчас делается с помощью камеры Intel RealSense, были еще в 80-х годах. Технология отслеживания расположения руки была разработана в 80-х годах в виде перчатки, передающей данные, авторы этого изобретения — Джейсон Ланьер (Jason Lanier) и Томас Циммерман (Thomas G. Zimmerman). В 1987 году компания Nintendo выпустила первый манипулятор для управления играми в виде перчатки, подключаемой по проводам к игровой консоли Nintendo.

Устройства, развитие которых привело к созданию камер Intel RealSense, изначально предназначались для анимации на выступлениях: технологии захвата движения применялись, чтобы преобразовать выступление человека в математические данные, то есть в цифровую информацию. Захват движения применялся еще с 70-х годов в исследовательских проектах в различных университетах, а также в войсках для обучения. Одним из первых анимационных фильмов, созданных с помощью захвата движения, был анимационный ролик Sexy Robot, созданный в 1985 году Робертом Абелем (Robert Abel) и его коллегами. В ролике Sexy Robot использовалось несколько технологий для получения информации, с помощью которой была создана и анимирована цифровая модель робота. Сначала была создана модель робота. Ее измерили со всех сторон, описывающую ее информацию перевели в цифровой вид: аналогичных результатов камера RealSense добивается при съемке объектов. Для вычисления движения на актере нарисовали точки, движение которых соотнесли с движением цифрового «скелета»: была создана векторная анимация, при помощи которой двигалась цифровая модель. Камера RealSense обладает возможностью инфракрасной съемки и инфракрасным лазерным проектором, что позволяет получать данные для цифровых моделей и отслеживания движений. Возможности отслеживания камеры Intel RealSense достаточно совершенны: можно отслеживать даже движения глаз.


В настоящее время существует две модели камер Intel RealSense. Они выполняют схожие функции, но кое в чем различаются: это камера Intel RealSense F200, для которой предназначены упражнения в этой статье, и камера Intel RealSense R200.

Камера Intel RealSense R200 благодаря своему компактному размеру обладает важными преимуществами. Она предназначена для установки на штатив или на заднюю часть планшета. Таким образом, объектив камеры направлен не на пользователя, а на окружающий мир, а благодаря усовершенствованным возможностям съемки поле зрение камеры охватывает более широкую область. Кроме того, у этой камеры улучшены и возможности измерения глубины. Эту камеру очень интересно использовать для проектов дополненной реальности, поскольку в ней поддерживается функция восприятия сцены, позволяющая добавлять виртуальные объекты в отснятую сцену реального мира. Также можно накладывать виртуальную информацию на снимаемое изображение в прямом эфире. В отличие от модели F200 камера R200 не поддерживает отслеживания пальцев, рук и лиц. TouchDesigner поддерживает обе модели камер Intel RealSense: и F200, и R200.


TouchDesigner идеально сочетается с камерой Intel RealSense: поддерживается прямая связь между мимикой лица пользователя и движениями рук и программным интерфейсом. TouchDesigner может напрямую использовать эти данные отслеживания и положения. TouchDesigner также может использовать данные глубины, цветного изображения и инфракрасного изображения, передаваемые камерой Intel RealSense. Камеры Intel RealSense очень легкие и компактные, особенно модель R200, которую можно легко разместить рядом с исполнителями незаметно для аудитории.

Адам Берг (Adam Berg), исследователь в компании Leviathan, работающий над проектом по использованию камеры Intel RealSense вместе с TouchDesigner для создания интерактивных инсталляций, заявляет: «Благодаря компактному размеру и простой конструкции камера отлично подходит для интерактивных решений. Камера не бросается в глаза, а требования к инфраструктуре упрощаются, поскольку камере не требуется внешний источник питания. Кроме того, нам понравились низкие задержки при создании изображения глубины. TouchDesigner — великолепная платформа для работы (от создания первоначального прототипа до разработки финальной версии). Она обладает встроенной поддержкой пяти камер, возможностью высокопроизводительного воспроизведения мультимедиа и удобными возможностями работы с шейдерами. Помимо этого, безусловно, следует отметить и великолепную поддержку».


Во второй части мы рассматриваем узел CHOP в TouchDesigner для камеры Intel RealSense.

Узел RealSense CHOP


Узел RealSense CHOP управляет трехмерным отслеживанием и данными о положении. Узел CHOP содержит информацию двух типов. (1) Положение в реальном мире (измеряется в метрах, но можно довести точность до единиц миллиметров) используется для преобразования по осям x, y и z. Повороты вокруг осей x, y и z в RealSense CHOP выводятся в виде углов Эйлера по осям x, y и z в градусах. (2) Узел RealSense CHOP также получает пиксели входного изображения и преобразует их в нормализованные UV-координаты. Это полезно для отслеживания изображений.
Узел RealSense CHOP обладает двумя настраиваемыми параметрами: отслеживание пальцев/лица и отслеживание маркера.

  • В разделе Finger/Face Tracking можно выбрать отслеживаемые элементы. Можно ограничить список отслеживаемых элементов только одним аспектом, а затем, соединив узел Select CHOP с узлом RealSense CHOP, вновь ограничить список, чтобы отслеживать только движение брови или глаза.
  • Отслеживание маркеров позволяет загрузить изображение и отслеживать этот элемент, где бы он ни находился.


Демонстрация 1: использование отслеживания


Это простая первая демонстрация узла RealSense CHOP показывает, как его можно соединять с другими узлами и использовать для отслеживания и создания движения. Вновь обратите внимание, что для этих демонстраций достаточно крайне поверхностного знания TouchDesigner. Если у вас нет опыта работы с TouchDesigner* и вы собираетесь постепенно разбираться в этой статье, то рекомендую сначала просмотреть документацию, доступную здесь: Изучение TouchDesigner.
1. Создайте узлы, которые нам потребуются, и расположение их в горизонтальной строке в следующем порядке: узел Geo COMP, узел RealSense CHOP, узел Select CHOP, узел Math CHOP, узел Lag CHOP, узел Out CHOP и узел Trail CHOP.
2. Соедините узел RealSense CHOP с узлом Select CHOP, узел Select CHOP — с узлом Math CHOP, узел Math CHOP — с узлом Lag CHOP, узел Lag CHOP — с узлом Out CHOP Node, а узел Out CHOP — с узлом Trail CHOP.
3. Откройте страницу параметров Setup узла RealSense CHOP и убедитесь, что для параметра Hands World Position задано значение On. Выводится расположение отслеживаемых суставов руки в пространстве. Значения указываются в метрах по отношению к камере.
4. На странице параметров Select узла Select CHOP установите для параметра Channel Names значение hand_r/wrist: tx, выбрав его среди доступных значений в раскрывающемся списке справа от параметра.
5. В параметре Rename From введите hand_r/wrist: tx, затем в параметре Rename To parameter введите x.

933621ea40c94daaaf2c1bbc41e53fd9.jpg
Рисунок 1. Отбор каналов из узла RealSense CHOP происходит в узле Select CHOP

6. В параметре Range/To Range узла Math CHOP введите 0, 100. Для уменьшенного диапазона движений введите число меньше 100.
7. Выберите узел Geometry COMP и убедитесь, что он находится на странице параметров Xform. Нажмите кнопку »+» в правом нижнем углу узла Out CHOP, чтобы включить просмотр. Перетащите канал X на параметр Translate X узла Geometry COMP и выберите Export CHOP в раскрывающемся меню.

5264732e2834414a85a32488feb09107.jpg
Рисунок 2. Здесь вы добавляете анимацию, полученную из RealSense CHOP

Для рендеринга геометрии понадобится узел Camera COMP, узел Material (MAT) (я использовала Wireframe MAT), узел Light COMP и узел Render TOP. Добавьте эти узлы для рендеринга этого проекта.
8. В узле Camera COMP на странице параметров Xform установите для параметра Translate Z значение 10. Это позволит лучше видеть движение созданной геометрии, поскольку камера сдвигается назад по оси Z.
9. Проведите рукой перед камерой и посмотрите, как геометрическая фигура будет двигаться в узле Render TOP.

4a92212e14914166840849ff70f9ac17.jpg
Рисунок 3. Как узлы соединены друг с другом. Благодаря узлу Trail CHOP в конце можно просмотреть анимацию в графической форме

3ced75d7be454f5ba25124e4e9ec997d.jpg
Рисунок 4. Значение преобразования x узла Geometry COMP было экспортировано из канала x в узел Out CHOP, который был передан далее по цепочке от узла Select CHOP


В этой демонстрации мы задействуем функцию отслеживания маркеров в RealSense CHOP, чтобы показать, как использовать изображение для отслеживания. Вы создадите изображение, у вас будет две его копии: печатная копия и цифровая копия. Они должны в точности совпадать. При этом можно изначально располагать цифровым файлом и напечатать его либо, располагая изображением на бумаге, отсканировать его для получения цифровой версии.
1. Добавьте узел RealSense CHOP в сцену.
2. На странице параметров Setup узла RealSense CHOP выберите для параметра Mode значение Marker Tracking.
3. Создайте ресурс Movie File в TOP.
4. На странице параметров Play узла TOP в разделе File выберите и загрузите цифровое изображение, для которого у вас также есть печатная версия.
5. Перетащите Movie File в TOP на страницу параметров Setup узла RealSense CHOP и в ячейку Marker Image TOP в нижней части страницы.
6. Создайте узлы Geometry COMP, Camera COMP, Light COMP и Render TOP.
7. Как было сделано ранее на шаге 7 в демонстрации 1, экспортируйте канал tx из RealSense CHOP и перетащите его в параметр Translate X узла Geometry COMP.
8. Создайте узел Reorder TOP и соедините его с узлом Render TOP. На странице параметров Reorder узла Output Alpha выберите One в раскрывающемся списке.
9. Поместите напечатанное изображение цифрового файла перед камерой Intel RealSense и подвигайте его. Камера должна отслеживать движение и выдавать его узлу Render TOP. Числа в RealSense CHOP также изменятся.

1b4cfcc067b44db7a7404bf5f6398655.jpg
Рисунок 5. Это полный макет демонстрации с отслеживанием маркера

2ad66b93aeb34d3199d031f5986ef8fb.jpg
Рисунок 6. На странице параметров узла Geo COMP канал tx из узла RealSense CHOP перетащен на параметр Translate x


На палитре программ TouchDesigner в разделе RealSense есть шаблон eyeTracking, который можно использовать для отслеживания движения глаз пользователя. Этот шаблон использует отслеживание пальцев/лица узла RealSense CHOP; для узла RealSense TOP должен быть задан Color. В шаблоне зеленые прямоугольники WireFrame двигаются в соответствии с движением глаз человека и накладываются на цветное изображение человека в RealSense TOP. Вместо открытых зеленых прямоугольников можно использовать любые другие геометрические фигуры или частицы. Это очень удобный шаблон. Вот изображение с шаблоном.

a29ebe4bda1f4015bcc8569caa3e6cd2.jpg
Рисунок 7. Обратите внимание, что глаза отслеживаются даже через очки


В этой демонстрации мы берем файл и показываем, как представить его в полнокупольном рендеринге и в 360-градусной виртуальной реальности. Я уже подготовила такой файл для загрузки. Это файл chopRealSense_FullDome_VR_render.toe.

Краткое описание процесса создания этого файла
В этом файле я хотела разместить геометрические фигуры (сферу, тор, цилиндры и прямоугольники) в сцене. Поэтому я создала несколько узлов SOP для этих различных геометрических фигур. Каждый узел SOP был присоединен к узлу Transform SOP для перемещения (преобразования) геометрических фигур в разных местах сцены. Все узлы SOP соединены с одним узлом Merge SOP. Узел Merge SOP подан узлу Geometry COMP.

205762a96d034ab693cca200d7f6bb78.jpg
Рисунок 8. Это первый шаг в разметке геометрических фигур, размещенных в сцене, в загружаемом файле

Затем я создала узел Grid SOP и узел SOP–DAT. Узел SOP–DAT был использован для получения экземпляра Geometry COMP, чтобы можно было добавить в сцену больше геометрических фигур. Я также создала узел Constant MAT, выбрала зеленый цвет и включила параметр WireFrame на странице Common.

8df76617482746e9b61d63d434314f31.jpg
Рисунок 9. Узел SOP–DAT был создан с помощью узла Grid SOP

Затем я создала узел RealSense CHOP и соединила его с узлом Select CHOP, в котором я выбрала канал hand_r/wrist: tx для отслеживания и переименовала его в x. Я соединила Select CHOP с узлом Math CHOP, чтобы можно было изменить дальность, и соединила Math CHOP с узлом Null CHOP. Рекомендуется всегда завершать цепочку узлом Null или Out, чтобы было удобнее вставлять новые фильтры в цепочку. Затем я экспортировала x Channel из узла Null CHOP в параметр Scale X узла Geometry COMP. Это обеспечивает управление всеми перемещениями геометрических фигур по оси x в сцене, когда я провожу правой рукой перед камерой Intel RealSense.

089735e1ace04510abf0148c551c3558.jpg
Рисунок 10. Данные отслеживания из узла RealSense CHOP используются для создания анимации в реальном времени и движения геометрических фигур вдоль оси x

Для создания полнокупольного 180-градусного рендеринга из этого файла
1. Создайте узлы Render TOP, Camera COMP и Light COMP.
2. На странице параметров Render узла Render TOP выберите Cube Map в раскрывающемся меню Render Mode.
3. На странице параметров Common узла Render TOP задайте для параметра Resolution разрешение с соотношением сторон 1:1, например 4096 на 4096, для получения разрешения 4K.
4. Создайте узел Projection TOP и соедините с ним узел Render TOP.
5. На странице параметров Projection узла Projection TOP выберите Fish-Eye в раскрывающемся меню Output.
6. (Это необязательно, в этом случае у файла будет черный фон.) Создайте узел Reorder TOP и на странице параметров Reorder в правом раскрывающемся меню Output Alpha выберите One.
7. Теперь все готово либо к непосредственному выполнению анимации, либо к экспорту файла фильма. Инструкции см. в первой части этой статьи. Вы создаете круговую купольную анимацию типа «Рыбий глаз». Это будет окружность с квадратом.

Чтобы использовать альтернативный метод, вернитесь на шаг 2 и вместо выбора Cube Map в раскрывающемся меню Render Mode выберите Fish-Eye (180). Теперь перейдите к шагу 3, а также при желании — к шагу 6. Теперь анимация готова к запуску или к экспорту.

Для создания 360-градусной виртуальной реальности из этого файла
1. Создайте узлы Render TOP, Camera COMP и Light COMP.
2. На странице параметров Render узла Render TOP выберите Cube Map в раскрывающемся меню Render Mode.
3. На странице параметров Common узла Render TOP задайте для параметра Resolution разрешение с соотношением сторон 1:1, например 4096 на 4096, для получения разрешения 4K.
4. Создайте узел Projection TOP и соедините с ним узел Render TOP.
5. На странице параметров Projection узла Projection TOP выберите Equirectangular в раскрывающемся меню Output. При этом будет автоматически установлено соотношение сторон 2:1.
6. (Это необязательно, в этом случае у файла будет черный фон.) Создайте узел Reorder TOP, затем на странице параметров Reorder в правом раскрывающемся меню Output Alpha выберите One.
7. Теперь все готово либо к непосредственному выполнению анимации, либо к экспорту файла фильма. Инструкции см. в первой части этой статьи. При экспорте фильма вы создаете прямоугольную анимацию с соотношением сторон 2:1 для просмотра в очках виртуальной реальности.

ba3daf9449a448778e9f550de947a407.jpg
Рисунок 11. В файл добавлены длинные оранжевые узлы Tube SOP. Вы можете добавить собственную геометрию в этот файл


В TouchDesigner создано несколько шаблонов для загрузки. В них показано, как настроить Oculus Rift в TouchDesigner. Один из этих шаблонов — OculusRiftSimple.toe — можно найти в архиве. Для просмотра в Oculus Rift, естественно, компьютер должен быть подключен к Oculus Rift. Без Oculus Rift можно создать файл, просмотреть изображения в узлах LeftEye Render TOP и RightEye Render TOP и отобразить их в фоне сцены. Я добавила поддержку Oculus Rift в файл, использованный в демонстрации 3. Таким образом, камера Intel RealSense анимирует изображение, которое я вижу в Oculus Rift.

a3389bdff8734abd888e4f5687a3e848.jpg
Рисунок 12. Здесь в фоне отображается левый глаз и правый глаз. Большая часть анимации этой сцены управляется путем отслеживания из узла CHOP камеры Intel RealSense. Файл, использованный для получения этого изображения, можно загрузить, нажав на кнопку в правом верхнем углу этой статьи, chopRealSense_FullDome_VRRender_FinalArticle2_OculusRiftSetUp.toe

© Habrahabr.ru