Обработчик манипуляции — MRTK2

Обработчик манипуляции

Скрипт ManipulationHandler позволяет сделать объект перемещаемым, масштабируемым и поворотным с помощью одной или двух рук. Манипуляция может быть ограничена таким образом, чтобы она допускала только определенные виды преобразования. Сценарий работает с различными типами входных данных, включая HoloLens 2 ввод с помощью рук, лучи рук, ввод жестов HoloLens (1-го поколения) и ввод иммерсивного контроллера движения гарнитуры.

Использование обработчика манипуляций

Добавьте компонент скрипта ManipulationHandler в GameObject. Не забудьте также добавить к объекту коллайдер, соответствующий его захватываемым границам.

Чтобы заставить объект реагировать на почти членораздельные входные данные руки, также добавьте NearInteractionGrabbable скрипт.

Использование обработчика манипуляций в редакторе Unity

Свойства инспектора

Структура обработчика манипуляций

Преобразование узла Преобразование, которое будет перетаскиваться. По умолчанию используется объект компонента .

Тип манипуляции Указывает, можно ли управлять объектом одной рукой, двумя руками или обеими руками.

  • Только одной рукой
  • Только двумя руками
  • Одна и двуручная

Тип манипуляции двумя руками

  • Масштабирование. Допускается только масштабирование.
  • Поворот. Допускается только поворот.
  • Перемещение масштабирования. Перемещение и масштабирование разрешены.
  • Перемещение вращение: перемещение и поворот разрешено.
  • Повернуть масштаб. Допускается вращение и масштабирование.
  • Перемещение по масштабу поворота: допускается перемещение, поворот и масштабирование.

Обработчик манипуляций

Разрешить дальней манипуляции Указывает, можно ли выполнять манипуляции с помощью удаленного взаимодействия с указателями.

Режим поворота одной рукой вблизи Указывает, как будет вести себя объект при захвате одной рукой или контроллером рядом.

Режим поворота одной рукой на дальний Указывает, как будет вести себя объект при захвате одной рукой или контроллером на расстоянии.

Параметры режима поворота одной рукой Указывает, как объект будет поворачиваться при захвате одной рукой.

  • Сохранение исходного поворота: не поворачивает объект при его перемещении
  • Сохранение поворота для пользователя. Поддерживает исходный поворот объекта для оси X/Y для пользователя.
  • Выравнивание гравитации поддерживает поворот для пользователя. Поддерживает исходное вращение объекта к пользователю, но делает объект вертикальным. Полезно для объектов с ограничивающим элементом управления.
  • Пользователь лиц. Гарантирует, что объект всегда сталкивается с пользователем. Полезно для баннеров и панелей.
  • Распознавание лицом от пользователя. Гарантирует, что объект всегда сталкивается вдали от пользователя. Полезно для баннеров и панелей, которые настроены для отображения в обратном направлении.
  • Поворот по центру объектов: работает только для шарнирных рук и контроллеров. Поворот объекта с помощью поворота руки или контроллера, но относительно центра объекта. Полезно для проверки на расстоянии.
  • Поворот точки захвата. Работает только для шарнирных рук и контроллеров. Поворачивайте объект так, как если бы он удерживался рукой или контроллером. Полезно для проверки.

Поведение выпуска При освобождении объекта укажите его поведение физического перемещения. Требует, чтобы компонент жесткой части был на этом объекте.

  • Nothing
  • Все
  • Сохранение скорости
  • Сохраняйте скорость Angular

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

  • None
  • Только ось X
  • Только ось Y
  • Только по оси Z

Использование локального пространства для ограничения Переключатель для переключения между применением ограничений в отношении оси мирового пространства или локальной оси пространства.

Ограничения на перемещение

  • None
  • Исправление расстояния от головы

Сглаживание активного Указывает, активна ли сглаживание.

Сглаживание суммы одной рукой Объем сглаживания, применяемый к движению, масштабу, повороту. Сглаживание 0 означает отсутствие сглаживания. Максимальное значение означает отсутствие изменения значения.

События

Обработчик манипуляции предоставляет следующие события:

  • OnManipulationStarted: срабатывает при запуске манипуляции.
  • OnManipulationEnded: срабатывает при завершении манипуляции.
  • OnHoverStarted: срабатывает при наведении руки или контроллера на манипулябельный объект, расположенный рядом или далеко.
  • OnHoverEnded: срабатывает, когда рука или контроллер отменяет наведение курсора на манипулябельный объект, расположенный рядом или далеко.