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

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

В настоящее время следующие элементы UX MRTK поддерживают диспетчер ограничений:

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

Диспетчер ограничений может работать в двух режимах:

  • Автоматический выбор ограничения
  • Выбор ограничения вручную

Автоматический выбор ограничения

Auto Selection

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

Добавление ограничения в игровой объект

Эта кнопка позволяет добавить компонент ограничения непосредственно из инспектора диспетчера ограничений. Здесь должны отображаться все типы ограничений в проекте. Дополнительные сведения см. в ограничениях преобразования .

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

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

Выбор ограничения вручную

Manual Selection

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

Удаление записи

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

Добавление записи

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

Добавление нового ограничения

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

Ограничения преобразования

Ограничения можно использовать для ограничения манипуляций каким-то образом. Например, для некоторых приложений может потребоваться поворот, но также требуется, чтобы объект оставался в вертикальном положении. В этом случае можно добавить объект RotationAxisConstraint и использовать его для ограничения поворота до поворота оси Y. MRTK предоставляет ряд ограничений, которые описаны ниже.

Кроме того, можно определить новые ограничения и использовать их для создания уникального поведения манипуляций, которое может потребоваться для некоторых приложений. Для этого создайте скрипт, наследующий от TransformConstraint и реализующий абстрактное свойство ConstraintType и абстрактный метод ApplyConstraint. При добавлении нового ограничения к объекту он должен ограничивать манипуляцию таким образом, как он был определен. Это новое ограничение также должно отображаться в автоматическом выделении диспетчера ограничений или добавить раскрывающийся список ввода в ручном режиме.

Все ограничения, предоставляемые MRTK, имеют следующие свойства:

Тип руки

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

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

Тип близкого взаимодействия

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

  • Ближнее: ограничение будет использоваться во время манипуляции ближнего взаимодействия (если выбрано).
  • Дальнее: ограничение будет использоваться во время манипуляции дальнего взаимодействия (если выбрано).

FaceUserConstraint

Constraint Face User

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

Лицо прочь

Объект сталкивается с пользователем, если имеет значение true.

FixedDistanceConstraint

Constraint Fixed distances

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

Преобразование ограничений

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

FixedRotationToUserConstraint

Fixed Rotation

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

FixedRotationToWorldConstraint

Fixed rotation to the world

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

MaintainApparentSizeConstraint

Maintain Apparent size

При присоединении этого ограничения к объекту независимо от того, насколько далеко объект находится от пользователя, он будет поддерживать тот же очевидный размер для пользователя (т. е. он будет принимать ту же пропорцию поля представления пользователя). Это можно использовать для обеспечения того, чтобы панель листа или текста оставалась доступной для чтения во время работы. У MaintainApparentSizeConstraint него нет уникальных свойств:

MoveAxisConstraint

Constraint Move Axis

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

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

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

  • Ось X: перемещение вдоль оси X ограничено, если выбрано.
  • Ось Y: перемещение по оси Y ограничено, если выбрано.
  • Ось Z: перемещение вдоль оси Z ограничено, если выбрано.

Использование локального пространства для ограничения

Будет сдерживает относительные локальные оси преобразования управляемых объектов, если значение равно true. Значение по умолчанию: false.

RotationAxisConstraint

Constraint Rotation Axis

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

Ограничение поворота

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

  • Ось Y: поворот вокруг оси Y ограничен, если выбрано.
  • Ось Z: поворот вокруг оси Z ограничен, если выбрано.
  • Ось X: поворот по оси X ограничен, если выбрано.

Использование локального пространства для ограничения

Будет сдерживает относительные локальные оси преобразования управляемых объектов, если значение равно true. Значение по умолчанию: false.

MinMaxScaleConstraint

Min Max Constatint

Это ограничение позволяет задать минимальное и максимальное значения для масштаба манипулируемого объекта. Это полезно для предотвращения масштабирования объекта слишком маленьким или слишком большим. Ниже приведены свойства.MinMaxScaleConstraint

Минимальный масштаб

Минимальное значение масштабирования во время манипуляции.

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

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

Относительно начального состояния

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