Система координат рук с подвижным скачком вслед за появившейся камерой плеера iPhone - PullRequest
0 голосов
/ 30 июня 2018

Я исправляю устаревший проект два года назад. Он использует хост Windows Unity для использования устройства Leap Motion, фиксирующего движения рук, и iPhone Player (с гарнитурой из картона) для управления тем, как порты просмотра перемещаются относительно в «игровом мире».

Теперь я обнаружил, что только когда мое устройство Leap Motion остается неподвижным (например, прижато к моей груди) и только iPhone-плеер движется с моей головой, я могу найти все в порядке. В противном случае, когда я ношу на голове как устройство Leap Motion, так и iPhone, модель руки качается вместе с движением моей головы.

Я пришел к выводу, что зафиксированное положение рук устройством Leap Motion было истолковано как положение относительно «мировой системы координации», но на самом деле оно должно быть локальным относительно моей гарнитуры (то есть камеры плеера iPhone). который появляется как игровой объект в моем хосте Windows).

Я сделал упрощенную сцену, чтобы проиллюстрировать мою ситуацию. Иерархия, когда сеть не подключена, выглядит следующим образом:

Windows End With Nothing Connected

Иерархия, когда программа Windows подключена к себе в качестве хоста:

Windows Host With Itself Connected

Когда iPhone End также подключен:

Windows Host With Both iPhone And Itself Connected

Я пытаюсь дать команду «Руки», чтобы она вращалась с «Камера (клон) / Голова», но она не работает. (На следующем рисунке «RotateWith» и «CameraFacing» - это разные испытания, позволяющие ему двигаться с «Camera (Clone) / Head».)

Inspector View Of

1 Ответ

0 голосов
/ 01 июля 2019

Похоже, что проблема вызвана тем, что камера и Leap Motion имеют разные задержки и работают с разными частотами кадров, что можно решить с помощью временной деформации . Это уже реализовано в Leap Motion и выполняется автоматически, если вы используете Leap XR Service Provider .

Подключите компонент LeapXRServiceProvider к основной камере и убедитесь, что для параметра «Режим временной деформации» установлено значение «Авто». Это скажет коду Leap Motion, чтобы компенсировать различия между рамкой отслеживания рук и рамкой Unity.

...