Quantcast
Channel: Блоги Intel® Developer Zone
Viewing all articles
Browse latest Browse all 106

Советы и рекомендации по использованию Unity с Intel RealSense SDK 2014

$
0
0

Отправлено: Коллин Калбертсон (Intel) 6 декабря 2014 г.

В этой статье предоставляется информация, рекомендации и ссылки для разработчиков, использующих Unity с RealSense SDK 2014. Оставляйте в комментариях дополнения и поправки, и я добавлю их в дальнейшие версии этой статьи. Заходите сюда почаще, чтобы следить за обновлениями.

Важное замечание о версиях Unity:

Unity 4.x в своей основе является 32-битной. Вы можете использовать Unity Pro или бесплатную версию Unity до тех пор, пока используете подписанные библиотеки в Intel RealSense SDK R2 (v.4)

Unity 5.x в своей основе является 64-битной. Вы должны перезаписать 64-битные библиотеки (libpxccpp2c.dll and libpxccpp2c.dll.signature) в ваш проект.

Прежде всего: существующая документация, которая может пригодиться.

Отметим, что можно использовать DLL-библиотеку Unity, не используя Unity Toolkit. При публикации вопросов и отзывов учитывайте разницу между ними. 

Некоторые требования

  • Версия Gold R1 поддерживает ТОЛЬКО Windows 8.1. Поддерживается только камера Creative RealSense F200, направленная на пользователя, причем камера должна быть подключена напрямую в порт USB 3.0 без использования USB‑концентратора. 
  • Необходимо использовать версию Unity Pro, поскольку бесплатная версия Unity не поддерживает подключаемые модули C++.  Могут существовать обходные пути для решения этой проблемы, но Intel их не поддерживает. Даже в рамках конкурса Intel НЕ предоставляет лицензии на версию Pro. Обратите внимание, что RSSDK 2014 может использовать C# и содержит немало готовых встроенных «расширений» для взаимодействия между камерой и Unity.  (Спасибо, Марти!)
  • ПРИМЕЧАНИЕ. Версия Gold R1 компилировалась для Unity Pro 4.1 и также была проверена с версией 4.5. С бета-версией 4.6 тестирование не проводилось.

А теперь советы и рекомендации

  • Полный экран. Старайтесь вывести приложение на полный экран в оконном и безоконном режиме при любом разрешении экрана. 
    • Примечание. Intel рекомендует разрешение 1368 x 768 в качестве минимального.
    • Перед компиляцией убедитесь, что в настройках проигрывателя установлен флажок «Использовать Direct3D 11».
      • Если в настройках проигрывателя доступно только D3D9, снимите флажки Default is Native Resolution или Default is Full Screen и задайте экран по умолчанию с разрешением 1368 x 768.
    • Используйте ТОЛЬКО следующие соотношения сторон: 16:9 и 16:10.
    • Результат: положение флажка Windowed на вкладке Resolution Selection Screen.
      • Если этот флажок установлен, приложение будет запущено в окне, но его размер можно будет изменять или разворачивать на весь экран.
      • Если этот флажок снят, приложение будет запускаться на полном экране.
    • Обратите внимание, что можно проверить разрешение экрана   
      // Cap screen resolution, an example
      if ( Screen.currentResolution.width > 1366 || Screen.currentResolution.height > 768 )             
      Screen.SetResolution(1366, 768, true);
  • Производительность
    • Желаемое значение AcquireFrame в функции Unity Update() должно быть (false,0) во избежание снижения производительности. (В Unity это блокирующий вызов, привязывающий кадровую скорость к RS и использующийся для ожидания доступности каких-либо кадровых данных.)
      if (sm.AcquireFrame (false) != pxceStatus.PXCM_STATUS_NO_ERROR)
    • Отслеживание обеих рук можно реализовать в одном и том же потоке, но рекомендуется создать отдельные потоки для лица, для голоса и для любого многорежимного использования.
  • Сглаживание в Unity: как и в SDK, доступно 4 типа сглаживания. Вот рекомендации по их использованию в Unity.
    • Stabilize: хорошо подходит для пользовательского интерфейса, поскольку сохраняется существующее расположение вплоть до обнаружения крупных движений.
    • Weighted: поддерживает усреднение данных по любому набору значений (Gaussian, Uniform и пр.). Хорошо подходит для отслеживания рук.
    • Quadratic: сглаживание на основе времени, применяемое также для стабилизации.
    • Spring: на основе времени, но с линейным изменением сглаженных данных.
       
  • Голос и речьв Unity. В Unity поддерживаются команды и преобразование речи в текст (можно использовать образец оболочки C# из папки фреймворка). Синтез речи осуществляется таким же образом (используйте образец из C#). 
     
  • Трехмерная сегментация — бороды.В настоящее время при наличии длинной бороды обнаружение может существенно замедлиться: борода поглощает значительную часть инфракрасного излучения и может «отделить» голову от туловища, вызвав путаницу при обнаружении. Над этой проблемой ведется работа.
  •  
  • Регистрация распознавания лица.
    • В версии Gold R1 двухмерное распознавание лица использует только ID#100. 
    • Версия Gold изменена по сравнению с бета-версией и теперь ожидает в течение 10 кадров подряд перед подтверждением распознавания (этот параметр не изменяется, благодаря ему снизилось количество случаев ложного распознавания).
       
  • При наличии затруднений с UnityEngine.Texture2D PXCMImage.ImageData.ToTexture2D(Int32 plane, Int32 width, Int32 height))
    используйте ToTexture2D с указанием Texture2D в виде параметра.
  • От Marty G: Если вы обнаружили, что объекты двигаются рывками, непредсказуемо или отрываются от объектов, к которым привязаны в качестве дочерних, зайдите в свойства Inspector для конкретного скрипта TrackingAction и установите нулевыми все значения 'Virtual World Box'и 'Real World Box'.
  • От Marty G. Если вы хотите, чтобы Unity запускала скрипт внутри объекта, другого, чем MovingObject, отредактируйте скрипт внутри TriggerObject, чтобы дать имя этому объекту, имя скрипту и задать тип функции в начале этого скрипта (Start(), Update() и т.д.). Больше на эту тему см. в посте на форуме.

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

 


Viewing all articles
Browse latest Browse all 106

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>