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

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

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

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

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

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

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

Автоматическое выделение

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

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

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

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

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

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

Выбор вручную

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

Удалить запись

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

Добавить запись

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

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

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

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

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

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

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

Тип руки

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

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

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

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

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

FaceUserConstraint

Пользователь ограниченного распознавания лиц

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

Лицо прочь

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

FixedDistanceConstraint

Ограничение фиксированных расстояний

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

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

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

FixedRotationToUserConstraint

Фиксированный поворот

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

FixedRotationToWorldConstraint

Фиксированная ротация в мир

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

MaintainApparentSizeConstraint

Сохранение видимого размера

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

MoveAxisConstraint

Ось перемещения ограничений

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

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

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

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

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

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

RotationAxisConstraint

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

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

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

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

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

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

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

MinMaxScaleConstraint

Min Max Constatint

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

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

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

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

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

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

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