Leap motion controller как настроить

Использование Leap Motion

Для использования этого поставщика данных требуется контроллер движения LEAP .

Поставщик данных о движении LEAP обеспечивает управляемую функцию отслеживания для VR и может быть полезна для быстрого создания прототипов в редакторе. Поставщик данных может быть настроен на использование контроллера Motion LEAP, подключенного к гарнитуре или находящийся на рабочем столе.

Этот поставщик можно использовать в редакторе и на устройстве на автономной платформе. Его также можно использовать в редакторе на платформе UWP, но не в сборке UWP.

Версия МРТК Поддерживаемые версии модулей Unity для LEAP
2.6. x 4.5.0, 4.5.1
2.7. x 4.5.0, 4.5.1, 4.6.0, 4.7.0, 4.7.1, 4.8.0

Отслеживание движения с помощью LEAP (by Ултралеап) в МРТК

Импорт модулей Unity МРТК и LEAP Motion

  • Установите последнюю версию пакета SDK для LEAP , если она еще не установлена
  • импортируйте объект Microsoft. микседреалити. набор средств. Пакет Foundation в проект Unity.
  • Скачайте и импортируйте в проект последнюю версию модулей Unity Motion .
    • Импортировать основной пакет только в пределах модулей Unity

Интеграция модулей Unity в LEAP с МРТК

  • после того как модули Unity будут находиться в проекте, перейдите в раздел смешанная реальность набор средств >Leap motion >интеграция leap. модули Unity

интеграция модулей Unity в мртк добавляет 10 определений сборок в проект и добавляет ссылки на Microsoft. микседреалити. набор средств. Определение сборки providers. Леапмотион . Убедитесь, что среда Visual Studio закрыта.

Добавление поставщика данных о движении LEAP

  • Создание новой сцены Unity
  • добавьте мртк в сцену, перейдя к » смешанная реальность» набор средств >добавить в сцену и настроить
  • Выберите в иерархии объект Game Микседреалититулкит и выберите Копировать и настроить , чтобы клонировать профиль смешанной реальности по умолчанию.

  • Выберите профиль входной конфигурации

  • Выберите клон во входном системном профиле, чтобы разрешить изменение.

  • Откройте раздел поставщики входных данных и выберите Добавить поставщик данных вверху. в конце списка будет добавлен новый поставщик данных. откройте новый поставщик данных и задайте для него типMicrosoft. микседреалити. набор средств. Леапмотион. Ввод > Леапмотиондевицеманажер

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

Поставщик данных о движении LEAP содержит LeapControllerOrientation свойство, которое является расположением контроллера Motion LEAP. LeapControllerOrientation.Headset Указывает, что контроллер подключен к гарнитуре. LeapControllerOrientation.Desk Указывает, что контроллер размещается плоским на рабочем столе. По умолчанию устанавливается значение LeapControllerOrientation.Headset .

Ориентация каждого контроллера содержит свойства смещения:

Свойства смещения ориентации гарнитуры отражают свойства смещения в компоненте леапксрсервицепровидер. LeapVRDeviceOffsetMode Имеет три параметра: Default, смещение и преобразование заголовка вручную. Если используется режим смещения по умолчанию, то смещение не будет применяться к контроллеру движения LEAP. Режим смещения Головков вручную позволяет изменять три свойства: LeapVRDeviceOffsetY , LeapVRDeviceOffsetZ и LeapVRDeviceTiltX . Затем значения свойств смещения оси применяются к размещению контроллера по умолчанию. Режим смещения преобразования содержит LeapVRDeviceOrigin свойство Transform, которое указывает новый источник для контроллера движения LEAP.

Ориентация на Рабочий стол содержит LeapControllerOffset свойство, определяющее положение точки привязки для стрелок на столе. Смещение вычисляется относительно главной позиции камеры, а значение по умолчанию — (0,-0,2, 0,35), чтобы обеспечить отображение стрелок спереди и в представлении камеры.

Свойства смещения в профиле применяются один раз при запуске приложения. Чтобы изменить значения во время выполнения, получите поставщик услуг LEAP Motion на основе диспетчер устройств Motion:

EnterPinchDistance и ExitPinchDistance — это пороговые значения расстояния для обнаружения жестов сжатия и воздушного касания. Жест сжатия вычисляется путем измерения расстояния между кончиком указателя и кончиком пальца. Чтобы вызвать событие при входе в систему, значение по умолчанию равно EnterPinchDistance 0,02. Чтобы вызвать событие при входе в систему (выход из сжатия), расстояние по умолчанию между кончиком указателя по индексу и подсказкой Thumb будет 0,05.

LeapControllerOrientation : Гарнитура (по умолчанию) LeapControllerOrientation : Рабочий стол

Тестирование поставщика данных движения LEAP

  • После добавления поставщика данных о движении LEAP в входной системный профиль нажмите кнопку Воспроизвести, переместите руку перед контроллером движения LEAP, и вы увидите представление руки.
  • выберите файл > сборка Параметры
  • При использовании поставщика данных о движении LEAP поддерживаются только автономные сборки.
  • инструкции по использованию гарнитуры Windows Mixed Reality для автономных сборок см. в статье создание и развертывание мртк в вмр-гарнитурах (автономные).

Получение соединений с рукой

Получение соединений с помощью поставщика данных о движении LEAP аналогично получению соединения типа «рука» с МРТКм. Дополнительные сведения см. в разделе Отслеживание вручную.

С помощью МРТК в сцене Unity и поставщика данных о движении LEAP, добавленного в качестве поставщика входных данных в входном системном профиле, создайте пустой объект Game и присоедините следующий пример скрипта.

Этот сценарий является простым примером того, как извлекать набор Объединенных соединений Palm при движении в LEAP. Сфера соответствует левому углу, в то время как куб соответствует правой стороне.

Совет по рабочему процессу редактора Unity

Для использования поставщика данных о движении LEAP не требуется гарнитура VR. Изменения в приложении МРТК можно тестировать в редакторе с помощью LEAP без гарнитуры.

В редакторе будут отображаться стрелки движения, не подключенные к сети VR. Если LeapControllerOrientation для задано значение гарнитура, то контроллеру Motion в LEAP должен быть назначена одна рука с камерой, направленной вперед.

Если камера перемещена с помощью ключей трассе в редакторе и LeapControllerOrientation является гарнитурой, руки не будут следовать за камерой. Руки будут перемещаться на камеру только в том случае, если телефонная гарнитура VR подключена, а LeapControllerOrientation задается гарнитура. LEAP будет следовать за перемещением камеры в редакторе, если установлен в LeapControllerOrientation рабочее место.

Удаление LEAP из Project

  1. переход к > разным модулям Unity,подвижным > в смешанной реальности набор средств leap
    • разрешить обновление Unity в виде ссылок в Microsoft. микседреалити. набор средств. На этом шаге изменяется файл providers. Леапмотион. асмдеф
  2. Закрыть Unity
  3. закрыть Visual Studio, если он открыт
  4. Откройте проводник и перейдите к корню проекта Unity МРТК.
    • Удаление каталога унитипрожектнаме/Library
    • Удалите каталог унитипрожектнаме/Assets/plugins/леапмотион
    • Удаление файла унитипрожектнаме/Assets/plugins/леапмотион. meta
  5. Повторное открытие Unity

В Unity 2018,4 можно заметить, что ошибки по-прежнему остаются в консоли после удаления библиотеки и ресурсов ядра движения LEAP. Если ошибки регистрируются после повторного открытия, перезапустите Unity еще раз.

Общие ошибки

LEAP не интегрирован с МРТК

Чтобы проверить, интегрированы ли модули Unity Motion с МРТК, выполните следующие действия.

  • переход к смешанной реальности набор средств > служебные программы > > Leap проверка состояния интеграции
    • Откроется всплывающее окно с сообщением о том, интегрированы ли модули Unity для LEAP с МРТК.
  • Если сообщение говорит о том, что ресурсы не были интегрированы:
    • Убедитесь, что модули Unity Motion находятся в проекте
    • Убедитесь, что добавленная версия поддерживается, см. таблицу в верхней части страницы для поддерживаемых версий.
    • испытайте смешанную реальность набор средств > служебные программы > > leap интеграция модулей Unity для leap

Сбой при копировании многопользовательского ХЛАПИ сборки

При импорте ресурсов ядра Unity для работы с LEAP эта ошибка может быть записана в журнал:

Решение

  • Краткосрочное решение — перезапустить Unity. Дополнительные сведения см. в описании проблемы 7761 .

Сцена примера движения LEAP

В примере сцены используется профиль Дефаултлеапмотионконфигуратион и определяется, правильно ли настроен проект Unity для использования поставщика данных движения LEAP.

пример сцены содержится в Microsoft. микседреалити. набор средств. Пример пакета в Мртк/examples/демонстрация/хандтраккинг/ каталог.

Источник

Боевое знакомство с Leap Motion

Хабр, привет!

Сегодня я хотел бы рассказать о простеньком приложении для небольшого, но интересного гаджета, случайно попавшего мне в руки (да еще и бесплатно!).
Рассматривать и пробовать будем девайс под названием LeapMotion, который красуется на сайте за «притягательные» 79.99$…
О нем речь и пойдет дальше.

Для начала несколько слов о самом устройстве. Это маленький, похожий на флешку приборчик, который захватывает движение ваших рук. Продвигается как некий «убийца» kinect-a. Подробнее о нем можно прочитать на wiki.

Попал он ко мне, как уже говорил, по чистой случайности, на hackathon-е от мелкоMicrosoft, где этот гаджет являлся один из направлений разработки. Стоит так же сказать, что статьи об этом чуде устройстве уже появлялись на просторах хабра, однако, внятного русскоязычного туториала обнаружено не было.

Однако, ближе к делу.
Само действие длилось всего около 6 часов, поэтому мне и команде предстояло разобратся в новой для себя технологии на лету. Разрабатывать было решено аналог кубика-рубика, а использовать для этих средств Unity3d, который как нельзя подходит для такой задачи. Документация нашлась быстро и мы приступили.

Далее обо всем по порядку.

1) Драйвера

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

2) SDK

Сам SDK содержит в себе набор библиотек, необходимых для разработки и пример работы: UnitySandbox, который по сути является тем же приложением, указывающем на строение вашей руки. Единственным изменением является то, что нам дадут пощупать настоящий кубик! Который мы можем поднимать и опускать, увеличивать и делать другие всевозможные пакости с бедным кубом.
Интересности SDK на этом заканчиваются.

3) Приложение

Так как использовать примеры из SDK — это не интересно, пришлось крутить собственный велосипед для работы с этим чудом.
Ну начнем. Для начала создадим проект и добавим в папку с библиотеками следующие dll-ки, которые возьмем из скачанного SDK (для x86):
x86/LeapCSharp.dll
x86/Leap.dll

Далее складываем в наш Assets folder файл LeapCSharp.NET.3.5.dll.
Затем создаем скрипт с оригинальным названием LeapBehavior, приписываем его к main camera и добавляем в него следующий код:

LeapBehavior.cs

Пара слов о Controller и Frame. Первый нужен для управления и контроля за самим девайсом, а Frame содержит в себе все, что сумел «увидеть» наш чудо гаджет в данный момент. Frame так же может вернуть списки увиденных рук, кистей, пальцев и все другие прелести.
frame.Fingers.Count вернет нам размер списка, который содержит все пальцы, увиденные прибором.

Однако есть несколько тонкостей. Во-первых Leap motion, очень часто, считает сведенные вместе пальцы за один, во-вторых, часто не может определить какой руке принадлежат пальцы(две поставленные рядом руки, перекрестил — развел — свел) и бедный датчик может показать невероятное, но это мелочи.

С определением числа пальцев покончено, теперь попробуем найти их позицию. Все так же тривиально, надо лишь чуточку модифицировать функцию Update. Добавим после вывода в логи следующие строчки:

С помощью Fingers получаем лист пальцев на Fream-е и берем позицию 0-го.

Теперь попробуем как-то это визуализировать. Воспользуемся самым быстрым и простым способом. Попробуем привязать к нашим пальцам какой нибудь объект. Например, сферу. Для этого добавим сферу на сцену и добавим к ней наш скрипт (не забудьте убрать этот же скрипт с главной камеры).

Теперь изменим его так, чтобы позиция сферы менялась вместе с позицией пальца. Для этого создадим Vector3 (объект, содержащий 3 компоненты — X, Y и Z). Проинициализируем его полученными с сенсора координатами пальцев. Также, для визуализации пальцев, создадим новый скрипт под названием fingerController. В итоге немного исправленный скрипт будет иметь следующий вид:

Теоретически наш объект — сфера, должна плыть вслед за пальцем, номер которого, указан в поле IDFinger. Например так.

Изменим цвет сферы на наш любимый (чтобы та была отлична от фона) запускаем приложение и ура — все работает!
Добавим сферу для второго пальца на форму. После запускаем проект и крутим пальцами во все стороны. Сферы должны следовать за движением пальцев.

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

Теперь добавляем сам «кубик-рубик»(можно и обычный cube) и попробуем его повертеть.

Для этого напишем простенький скрипт.

Условимся, что двигать куб, можно минимум двумя пальцами и поехали.
Перетаскиваем на форму куб, добавляем в prefabs там же добавляем ему новый скрипт и вписываем имя: «enterCube». Добавляем свойство Box Collider и устанавливаем галочку, что наш кубик — это триггер. Копируем следующий код:

enterCube.cs

Кратко о ListFinger. Он хранит в себе все зашедшие в триггер пальцы, при выходе — удаляет выходящий из списка.
Проверяем — куб действительно движется. Однако — не вертится. Думаю, не составит труда, используя Vector3.Angle найти угол поворота.

Ниже представлен результат работы на данный момент (после которого время аренды девайса прошло, и его пришлось возвращать):

Видно, что в первой части видео куб иногда бросает в разные стороны когда оба пальца слишком близко. Связано это с несовершенством датчиков, которые иногда не могут различить реальные координаты пальцев.
С точностью определения координат каждого пальца в отдельности проблем нет. Устройство реагирует явным изменением координат даже на легкое движение руки, при попытке удержать ее на одном месте.
То есть в перспективе с помощью Leap motion можно создать неплохой симулятор тетради. Настраивается он специальным пером, к которому однако не удалось прикоснутся, так как настройка была проведена задолго до нас.

Как только проект будет доведен до конца тут появится ссылка на его исходники.

Источник

Читайте также:  Приложение видеокамеры camhi как настроить
Оцените статью