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

Object manipulator

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

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

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

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

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

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

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

Using the Manipulation Handler in the Unity editor

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

Object Manipulator Structure

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тип двухручных манипуляций

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

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

Manipulation Handler

Ограничения

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

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

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

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

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

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

Физика

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

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

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

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

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

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

Сглаживание

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

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

Сглаживание рядом

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

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

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

Перемещение времени лерпа

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

Смена времени лерпа

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

Масштабирование времени леппа

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

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

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

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

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

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

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

OnHoverStarted ->OnHoverEnded

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

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

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

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

Без жесткого

No Rigid Body

С жестким

Rigid Body

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

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

Bounds Control Elastics

См. также