Компания
311,60
рейтинг
18 декабря 2015 в 09:00

Разработка → Intel RealSense SDK и Oculus Rift DK2 перевод


В этой статье описываются технические подробности и проблемы, с которыми могут столкнуться разработчики при создании программных решений, использующих Intel RealSense SDK для Windows* и очки (гарнитуру) Oculus Rift*. Мы начинаем с обзора комплекта Oculus Rift Development Kit 2 (DK2), затем перейдем к некоторым проблемам, возникающим при разработке приложений, работающих с несколькими инфракрасными камерами. В этой статье также приводится описание интеграции Intel RealSense SDK и Oculus Rift в проекте Unity* 5.

Системные требования


Информация, представленная в этой статье, касается применения камеры Intel RealSense F200 (переднего обзора). Для выполнения всех описываемых действий потребуется комплект Oculus Rift DK2, камера Intel RealSense (F200) и система разработки, отвечающая следующим требованиям.
  • Процессор Intel Core 4-го поколения или более поздний (для поддержки Intel RealSense SDK)
  • 150 МБ свободного места на жестком диске
  • 4 ГБ ОЗУ
  • Один порт USB3 для камеры F200 и два порта USB 2.0 для Oculus Rift DK2
  • Windows* 8.1
  • Выделенная видеокарта NVIDIA GTX* серии 600 или AMD Radeon* серии HD 7000 (или более мощная) с выходом DVI*-D или HDMI*.

Для поддержки Oculus Rift* DK2 и камеры Intel RealSense (F200) требуются следующие программные компоненты.
  • Intel RealSense SDK (версии 6.0.21.6598 или более поздней)
  • Intel RealSense Depth Camera Manager F200 (версии 1.4.27.41944 или более поздней)
  • Oculus SDK для Windows* (версии 0.7.0.0-beta или более поздней)
  • Среда выполнения Oculus для Windows* (версии 0.7.0.0-beta или более поздней)
  • Oculus Utilities для Unity 5 (версии 0.1.2.0-beta или более поздней)

Для ознакомления с Unity можно использовать бесплатную персональную версию (5.2.2 или более позднюю), доступную здесь.

Комплект Oculus Rift* DK2


Oculus Rift DK2 — это комплект оборудования и программных компонентов, позволяющий разработчикам создавать игры и интерфейсы виртуальной реальности. В дополнение к очкам (гарнитуре) комплект также включает камеру отслеживания положения с низкими задержками, чтобы следить за движением головы пользователя.

Это, по сути, обычная веб-камера, на объектив которой установлен инфракрасный фильтр. Очки (гарнитура) оснащены несколькими скрытыми инфракрасными светодиодами, установленными таким образом, что камера отслеживания использует их для определения положения головы пользователя в трехмерном пространстве. Интересно, что эти скрытые источники ИК-излучения обнаруживаются камерой Intel RealSense при просмотре ИК-потока камеры в примере Raw Streams в SDK.


ИК-светодиоды Oculus Rift* видны камере Intel RealSense

Очки (гарнитура) Oculus Rift включают гироскоп, акселерометр и магнитометр.
В сочетании с объединенными данными датчиков это оборудование определяет ориентацию головы пользователя и выдает соответствующие координаты поворота вокруг продольной, поперечной и вертикальной осей. Камера отслеживания предоставляет дополнительную информацию о положении головы пользователя (т. е. пространственные координаты по осям X, Y и Z).

Чтобы лучше понять, что именно камера отслеживания DK2 добавляет в картину виртуальной реальности, запустите демонстрационную сцену из программы настройки Oculus.


Программа настройки Oculus

При просмотре демонстрационной сцены с камерой отслеживания, подключенной к порту USB, вы увидите, что объекты на виртуальном столе будут находиться ближе или дальше при приближении или отдалении головы от камеры.


Демонстрационная сцена Oculus Rift

Если после этого запустить эту демонстрационную сцену, отключив разъем USB камеры отслеживания, вы увидите, что данные ориентации, предоставляемые датчиком очков (гарнитуры) Oculus Rift, по-прежнему будут задавать углы поворота вокруг продольной, поперечной и вертикальной осей, но ощущение глубины пропадет при перемещении головы по оси Z.

Помехи при одновременном использовании с камерой переднего обзора


Разработчики, использующие Intel RealSense SDK и заинтересованные в создании приложений виртуальной реальности, использующие камеру переднего обзора Intel RealSense F200, должны помнить о возможности помех, образуемых при взаимном влиянии трехмерной камеры глубины и камеры отслеживания Oculus Rift. На рисунке ниже показан ультрабук-трансформер Lenovo ThinkPad* Yoga 15 со встроенной камерой Intel RealSense F200 и камерой отслеживания Oculus Rift, установленной рядом на кромке экрана.


Камеры переднего обзора

Камера Intel RealSense F200 использует технологию кодирования света для проецирования ИК-излучения на пользователя и получения невидимого отраженного изображения ИК-камерой. Гарнитура Oculus Rift использует для частичного отслеживания головы набор ИК-светодиодов, свечение которых регистрируется собственной пассивной ИК-камерой; эта камера оборудована оптическим фильтром, который пропускает только инфракрасную область спектра. Влияние ИК-светодиодов гарнитуры Oculus Rift на камеру Intel RealSense можно увидеть как изменяющиеся помехи в потоке глубины.


ИК-помехи данных глубины

Сдвиг камеры отслеживания DK2 на некоторый угол по отношению к камере Intel RealSense может несколько снизить воздействие ИК-помех, но тот факт, что гарнитура Oculus может быть источником ИК-излучения, означает, что она будет определенным образом влиять на камеру переднего обзора Intel RealSense, когда используется камера отслеживания DK2.

Чтобы лучше понять последствия таких помех, мы запустили образец приложения SDK Hands Viewer, подключив камеру отслеживания DK2 к порту USB и запустив демонстрационное приложение виртуальной реальности Oculus Rift. Как показано на рисунке ниже, наблюдается значительное падение кадровой скорости. Это можно связывать с разными факторами (например, для этого теста использовался видеоадаптер NVIDIA GeForce* 840M, менее мощный, чем указано в минимальных требованиях). Но все же интересно наблюдать, что отслеживание руки и распознавание жестов камерой Intel RealSense при этом работают достаточно хорошо.


Распознавание жестов при наличии инфракрасных светодиодов Oculus Rift

Использование Unity 5


Ранее мы упомянули возможные помехи между камерой Intel RealSense и камерой DK2, но что произойдет, если сочетать эти технологии в реальном проекте?
В следующих разделах мы кратко разберем создание простого проекта Unity 5 с поддержкой камеры Intel RealSense, а затем включим виртуальную реальность.

Создайте новый проект Unity


Запустите новый проект Unity, дважды щелкнув значок Unity на рабочем столе. Выберите New, затем выберите имя и расположение проекта.
Если редактор Unity уже открыт, создайте новый проект, выбрав File, New Project в меню, затем укажите имя и расположение проекта.

Импортируйте набор инструментов RSSDK Unity Toolkit


Импортируйте набор инструментов RSSDK Unity Toolkit, выбрав Assets, Import Package, Custom Package… в меню.
На экране Import Package перейдите в папку SDK, в которой находится пакет Unity Toolkit. Это расположение может различаться в зависимости от того, куда был установлен пакет SDK. В этом примере набор инструментов находится в папке C:\Program Files (x86)\Intel\RSSDK\framework\Unity.
Выберите UnityToolkit, затем щелкните Open.
(Примечание. В этой папке находятся два файла Unity: UnityToolkit и UnityCSharp. При импорте UnityCSharp будут добавлены только нужные управляемые и неуправляемые библиотеки DLL, необходимые для поддержки Intel RealSense SDK в приложении Unity. Если импортировать UnityToolkit, то нужные DLL-библиотеки будут импортированы в проект вместе со множеством других ресурсов, чтобы упорядочить разработку проекта с поддержкой Intel RealSense SDK.)

Появится экран Importing Package, на котором будут выбраны все подключаемые модули, действия и заготовки. Оставьте флажки установленными и нажмите кнопку Import.

На экране Project обратите внимание, что в проект добавлен ряд активов, которые находятся в следующих папках.
  • Plug-ins. Содержит файл libpxccpp2c.dll и неуправляемую DLL-библиотеку C++ P/Invoke.
  • Plugins.Managed. Содержит файл libpxcclr.unity.dll и управляемую библиотеку интерфейса C#.
  • RSUnityToolkit. Содержит папки Actions, Internals, Prefabs и Samples.

Добавьте игровой объект


Проект будет изначально содержать основную камеру и направленный источник света. На экране Hierarchy щелкните Create, затем выберите 3D Object и Cube. При этом в игровую сцену будет добавлен игровой объект-куб.

В папке Project в Assets разверните папку RSUnityToolkit и выберите Actions.

Папка Actions содержит сценарии, которые можно применять к игровым объектам. Щелкните сценарий TrackingAction, затем перетащите его на игровой объект Cube на экране Hierarchy.

Выберите Cube на экране Hierarchy, и вы увидите, что на экране Inspector отображается Tracking Action (Script).

Настройка отслеживания рук


По умолчанию для действия отслеживания выбрано HandTracking, а для габаритов области виртуального мира (Virtual World Box Dimensions) задано значение 100 по осям X, Y и Z. Если вы играете в игру в этот момент, то уви-дите, что светодиод трехмерной камеры глубины включится, указывая, что камера активирована.

Если поднять руку перед камерой, вы (скорее всего) увидите, что игровой объект-куб улетит с экрана. Причина в том, что для параметра Virtual World Box Dimensions заданы слишком большие значения. Измените параметры Virtual World Box Dimensions на 10 для осей X, Y и Z.

Обратите внимание, что в представлении сцены теперь поле виртуального мира, очерченное красным, приблизилось к игровому объекту.

Снова запустите игру. Теперь игровой объект-куб должен отслеживать движение вашей руки в более тесном виртуальном пространстве.

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


Unity* Editor — параметры действий отслеживания

Включение виртуальной реальности в проекте Unity


Как указано на веб-сайте Oculus Rift DK2, разработчики Unity 5.1+ могут заменить стереоскопическую камеру виртуальной реальности на встроенные средства отслеживания ориентации и положения главной камеры. Для этого нужно установить флажок Virtual Reality Supported в разделе Player Settings. Выполните следующие действия, чтобы включить виртуальную реальность в проекте.

Выберите Edit – Project Settings в меню, затем щелкните Player.
В окне Inspector установите флажок Virtual Reality Supported.

Нажмите кнопку Play и наденьте очки Oculus Rift. Вы сразу увидите, что преобразования главной камеры теперь заменяются отслеживанием ориентации очков Oculus Rift. Куб по-прежнему отслеживает движение вашей руки с помощью сценария TrackingAction в Intel RealSense SDK Toolkit для Unity, но теперь камера Unity отслеживает движение очков.


Unity с включенной виртуальной реальностью

Импортируйте пакет Oculus Utilities для Unity


Пакет Utilities — необязательное дополнение, он включает заготовки, сцены и сцена-рии для разработки приложений виртуальной реальности. Ниже показано, как импортировать этот пакет в ваш проект.

Выберите Assets, Import Package, Custom Package… в меню.

На экране Import Package перейдите в папку, в которой находится файл пакета OculusUtilities Unity. Выберите OculusUtilities, затем щелкните Open.

Появится экран Importing Package, на котором будут выбраны все компоненты Oculus. Оставьте все флажки установленными и нажмите кнопку Import.

Примечание. В этом примере мы добавим в сцену заготовку OVRCameraRig из пакета OculusUtilities. Поэтому нет необходимости устанавливать флажок Virtual Reality Supported в окне Inspector при использовании пакета OculusUtilities.

Перетащите заготовку OVRCameraRig на сцену.

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

Нажмите кнопку Play и наденьте очки Oculus Rift. Вы увидите, что OVRCameraRig теперь отслеживает движения очков, а преобразование куба по-прежнему управляется движением руки.
Примечание. Полные сведения об использовании пакета Oculus Utilities см. в документации.

Добавьте виртуальную реальность в образец проекта Intel RealSense SDK Toolkit для Unity*


Благодаря встроенной поддержке виртуальной реальности в Unity 5.1+ можно очень просто включить поддержку виртуальной реальности в образце Intel RealSense SDK Toolkit для Unity, например в Sample 1 – Translation. Попробуйте выполнить следующие действия.

В папке Project разверните RSUnityToolkitSamplesScenes и дважды щелкните Sample 1 — Translation (не забудьте сначала сохранить прежнюю работу, если она вам нужна).

Выберите EditProject Settings в меню, затем щелкните Player.
Убедитесь, что в окне Inspector установлен флажок Virtual Reality Supported.
Щелкните Play и попробуйте!

Заключение


В этой статье мы рассмотрели потенциальные проблемы помех, которые могут возникнуть при использовании камеры Intel RealSense переднего обзора в проекте, использующем камеру отслеживания Oculus Rift. Мы также рассказали о простых сценариях, в которых отслеживание руки камерой Intel RealSense применялось в виртуальной реальности. Попробуйте сами и посмотрите, каких интересных результатов вам удастся добиться!
Автор: @saul Bryan Brown
Intel
рейтинг 311,60

Комментарии (4)

  • 0
    Процессор Intel Core 4-го поколения или более поздний (для поддержки Intel RealSense SDK)

    А зачем такое ограничение?
    • 0
      Чтобы покупали новые CPU :). Технически скорее всего какой-нибудь дополнительный набор инструкций AVX2 в библиотеке используется который только с 4-го поколения поддерживается
      • 0
        Это реально глупо. Я помню когда эмулятор Windows Phone 7 внезапно начал работать только на core i7 т.к. разрабочикам вдруг понадобилась аппаратная виртуализация в hyper-V. Это было очень обидно. Тут кажется что-то аналогичное.
        • 0
          обсчет данных довольно ресурсоемкий. Хотя некоторые функции будут работать и на предыдущих моделях.

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

Самое читаемое Разработка