Поделиться через


Манипулятор объектов — MRTK2

Манипулятор объектов

ObjectManipulator — это новый компонент для поведения манипуляции, ранее найденный в ManipulationHandler. Манипулятор объекта вносит ряд улучшений и упрощений. Этот компонент является заменой обработчика манипуляций, который будет считаться устаревшим.

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

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

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

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

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

Кроме того, манипуляции можно ограничить путем добавления компонентов ограничения манипуляции в объект . Это специальные компоненты, которые работают с манипуляциями и каким-то образом изменяют поведение манипуляции.

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

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

Структура манипулятора объектов

Общие свойства

Преобразование узла

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

Тип манипуляции

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

  • Одна рука: включает манипуляцию одной рукой, если выбрано.
  • Две руки. Включает манипуляцию двумя руками, если она выбрана.

Разрешить дальней манипуляции

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

Свойства манипуляции одной рукой

Режим поворота одной рукой вблизи

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

  • Поворот вокруг центра объекта. Объект вращается с помощью поворота руки, но относительно центральной точки объекта. Объект будет меньше перемещаться по мере поворота, но может возникнуть ощущение разрыва между рукой и объектом. Более полезно для удаленного взаимодействия.
  • Повернуть о точке захвата. Вращайте объект рукой вокруг точки захвата между большим и указательным пальцами. Он должен чувствовать, как будто объект удерживается за руку.

Режим поворота одной руки далеко

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

  • Поворот вокруг центра объекта. Вращайте объект с помощью поворота руки, но относительно центральной точки объекта. Полезно для проверки на расстоянии без перемещения центра объекта при повороте объекта.
  • Поворот о точке захвата: поворот объекта с помощью поворота руки, но о точке попадания луча указателя. Полезно для проверки.

Свойства манипуляции с двумя руками

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

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

  • Перемещение. Перемещение разрешено, если выбрано.
  • Масштабирование. Масштабирование разрешено, если выбрано.
  • Поворот: поворот разрешен, если он выбран.

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

Ограничения

Включение ограничений

Этот параметр включает связанный диспетчер ограничений. Изменения преобразования будут обрабатываться ограничениями, зарегистрированными в выбранном диспетчере ограничений.

Диспетчер ограничений

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

Перейти к компоненту

Выбор диспетчера ограничений поставляется с кнопкой Перейти к компоненту . Эта кнопка приведет к тому, что инспектор прокрутит выбранный компонент, чтобы его можно было настроить.

Физика

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

Поведение выпуска

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

  • Сохранить скорость. При освобождении объекта, если выбран этот параметр, будет сохраняться линейная скорость.
  • Сохранить Angular Скорость. При освобождении объекта, если выбран этот параметр, будет сохраняться угловая скорость.

Использование сил для ближнего манипулирования

Используются ли физические силы для перемещения объекта при выполнении почти манипуляций. Если задать для этого параметра значение false , объект будет чувствовать себя более непосредственно связанным с рукой пользователя. Установка значения true будет учитывать массу и инерцию объекта, но может казаться, что объект соединен через пружину. Значение по умолчанию — false.

Сглаживание

Сглаживание далеко

Включено ли независимое сглаживание частоты кадров для дальних взаимодействий. Удаленное сглаживание включено по умолчанию.

Сглаживание вблизи

Включено ли независимое сглаживание частоты кадров для близкого взаимодействия. Близкое сглаживание отключено по умолчанию, так как эффект может восприниматься как "отсоединение" от руки.

Активное сглаживание

Устаревшие и будут удалены в следующей версии. Приложения должны использовать SmoothingFar, SmoothingNear или их сочетание.

Время перемещения

Величина сглаживания, применяемая к перемещению. Сглаживание 0 означает отсутствие сглаживания. Максимальное значение означает отсутствие изменения значения.

Время поворота

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

Время масштабирования

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

События манипуляции

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

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

Порядок срабатывания событий для манипуляции:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Если манипуляция не выполняется, вы по-прежнему будете получать события наведений с указанным ниже порядком срабатывания:

OnHoverStarted ->OnHoverEnded

Физика и столкновения

Поведение физики можно включить, добавив компонент жесткого тела к тому же объекту, что и манипулятор объекта. Это не только позволяет настроить поведение выпуска , описанное выше, но и обеспечивает конфликты. Без компонента жесткой части столкновения не работают правильно во время манипуляции:

  • Столкновения между манипулизованным объектом и статическим коллайдером (т. е. объектом с коллайдером, но без жесткого) не работают, манипулизованный объект проходит прямо через статический коллайдер без изменений.
  • Столкновения между манипулизованным объектом и жестким корпусом (т. е. объектом с коллайдером и жестким корпусом) приводят к тому, что жесткий объект будет иметь реакцию на столкновение, но ответ является скачкчивым и неестественным. Кроме того, в объекте, с которым выполняется обработка, отсутствует реакция на столкновение.

При добавлении жесткого каркаса столкновения должны работать правильно.

Без жесткой обшивки

Нет жесткого тела

С жестким корпусом

Жесткий корпус

Эластичные (экспериментальные)

Эластичные свойства можно использовать при управлении объектами с помощью манипулятора объектов. Обратите внимание, что эластичная система по-прежнему находится в экспериментальном состоянии. Чтобы включить эластичные компоненты, свяжите существующий компонент диспетчера эластичных баз данных или создайте и свяжите новый диспетчер эластичных баз данных с помощью кнопки Add Elastics Manager .

Границы эластичных элементов управления

См. также раздел