#position #hololens #mrtk
#положение #hololens #mrtk
Вопрос:
Что я пытаюсь сделать: я использую MRTK2.5.1 / Hololens2 и ресурс OnlineMaps в Unity. Я хочу использовать свою руку (либо касаясь карты, либо указывая на расстоянии) для прокрутки карты. т.Е. Коснитесь / захватите карту, затем перетащите руку вокруг плоскости x / z.
Что я делал ранее: с holotoolkit / hololens1 это было легко сделать с помощью прослушивателя событий манипулирования. Событие OnManipulationChanged предоставило мне значение CumulativeDelta о том, как изменилось положение руки с начала манипуляции.
Что я пробовал в MRTK2.5: я начал с ManipulationHandler, который дает мне указатель в eventdata. Указатель-> контроллер имеет значение скорости, но это всегда 0,0,0. Я не мог видеть ничего другого очевидного, связанного со скоростью или дельта-положением предмета (руки), запускающего манипуляцию.
Скрипт PointerHandler имеет событие OnPointerDragged, но опять же не имеет свойства, похожего на скорость или дельта-положение руки.
Нужно ли мне использовать жесты?
Не ищу код, просто краткое объяснение правильного подхода для получения скорости или отклонения руки, как только рука коснулась / щелкнула по карте.
Ответ №1:
На самом деле, компонент ManipulationHandler устарел, а компонент ObjectManipulator является заменой поведения при манипулировании. Поэтому рекомендуется начать с компонента Object Manipulator, чтобы сделать вашу карту подвижной.
На ваш вопрос о том, как прокручивать карту вокруг плоскости x / z, ограничение направлено на то, чтобы каким-то образом ограничить манипуляции. Как только ограничение включено в вашем компоненте ObjectManipulator, изменения преобразования будут обработаны ограничениями, зарегистрированными в выбранном диспетчере ограничений. В вашем случае MoveAxisConstraint может удовлетворить ваши потребности, вы можете добавить MoveAxisConstraint в игровой объект из компонента диспетчера ограничений и установить Constraint On Movement
свойство компонента ограничения оси перемещения на Y Axis
. Для получения дополнительной информации о MoveAxisConstraint, пожалуйста, обратитесь к: https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_ConstraintManager.html#moveaxisconstraint
Комментарии:
1. Я не хочу, чтобы карта была подвижной, манипуляция / ObjectManipulator уже использовались для ограничения движения объекта карты. Мне нужна информация о движении руки, чтобы я мог использовать ее для определения скорости и направления прокрутки карты.
2. Я не знаком с онлайновыми картами, но если вы хотите получить исходные данные о движении вашей руки, пример Assets/MRTK / Examples / Demos /Input /Scenes / inputData / InputDataExample, предоставленный MRTK, показывает, как это сделать.