BoundsControl — MRTK3

Bounds control

BoundsControl предоставляет прямоугольник с автоматическим размером, а также возможности манипуляций для поворота и масштабирования.

В MRTK 2.x BoundsControl был главным образом создан средой выполнения с помощью конфигурации ScriptableObjects. В MRTK3 настройка и настройка BoundsControl значительно упрощена. Визуальные элементы и дескрипторы границ — это просто настраиваемый префаб, который BoundsControl создает экземпляр во время выполнения. Разработчики могут настраивать и настраивать готовые визуальные элементы или даже создавать новые границы с нуля. Мы предоставляем стандартные реализации визуальных элементов границ, следуя новому языку проектирования Смешанная реальность.

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

Настройка

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

Важно!

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

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

Примечание

Мы рекомендуем разработчикам использовать ObjectManipulator вместе с BoundsControl , чтобы предложить пользователям прямое манипулирование в дополнение к манипуляциям на основе возможностей. ObjectManipulator может служить StatefulInteractable для состояний наведения и фокуса, на которые реагируют ограничивающие визуальные элементы.

Префабы визуальных элементов bounds

Мы предлагаем несколько предварительно созданных визуальных элементов границ для использования с BoundsControl. Разработчикам рекомендуется создавать готовые варианты этих визуальных элементов и настраивать их в соответствии с потребностями. Анимации и состояния дескрипторов работают на платформе StateVisualizer, что позволяет разработчикам дополнительно настраивать внешний вид и внешний вид возможностей.

Стиль обработки окклюзии

Эти ограничивающие визуальные элементы предлагают упрощенный визуальный дизайн с меньшим количеством отвлекающих факторов для пользователя. Будут видны только соответствующие дескрипторы вдоль краев границ. Границы визуальных элементов контракта, расширения и изменения цвета и толщины в зависимости от намерения пользователя и хода выбора. Настоятельно рекомендуется использовать этот визуальный стиль границ.

Occluded handles

Только намерение

В некоторых контекстах дескрипторы могут быть нежелательными, и разработчики могут захотеть использовать только ограничивающие визуальные элементы в качестве восхитительного индикатора намерения пользователя. Хотя этот префаб выполняет задание, можно добиться того же эффекта с помощью любого из других визуальных элементов границ, выбрав HandleType.None. Мы обнаружили, что сжимаемые границы визуальные элементы являются удовлетворяющим и восхитительным визуальным элементом обратной связи для многих различных контекстов, а не только для обработки на основе дескрипторов.

No handles

Устаревший стиль

Эти ограничивающие визуальные элементы отображают все дескриптора и края поля. Это более точно соответствует устаревшей версии языка разработки и предыдущему поведению в MRTK 2.x; однако этот дизайн может быть более отвлекающим от пользователей из-за ненужных визуальных шумов. Кроме того, наличие дескрипторов, которые находятся перед объектом (и за ним), могут вызвать проблемы с непрямым манипулированием взглядом. Мы не рекомендуем использовать этот стиль для новых приложений, особенно тех, кто использует преимущества нацеливания взгляда.

Traditional handles

Проектирование взаимодействия

В текущей итерации мы предлагаем простое взаимодействие активации и деактивации. Щелкнув границы на месте (другими словами, выбрав объект, а не перемещая его и выпустив) маркеры можно включить и выключить. Допустимость расстояния для этой проверки может быть скорректирована, DragToggleThresholdи это поведение активации может быть включено или отключено с ToggleHandlesOnClick помощью свойства.

Bounds control toggle

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

Автоматическое вычисление границ

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

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

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

Преобразование в плоскую структуру

Flattened BoundsControl

BoundsControl также можно использовать для обработки содержимого из 2D. Если FlattenMode задано значение Auto, BoundsControl будет плоская до объемных прямоугольных границ, если объект достаточно плоский вдоль любой оси. Если объект не достаточно плоский, но вы по-прежнему хотели бы прямоугольных границ FlattenMode.Always , всегда будет плоскую границу boundsControl вдоль оси skinniest. И наоборот, FlattenMode.Never запретит плоскую структуру BoundsControl, даже если объект очень тонкий.

Параметры манипуляции

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

Поведение масштабирования может иметь Uniform значение или Non Uniform. В универсальном режиме все оси объекта масштабируются вместе, сохраняя пропорции и внешний вид. Неоднородное масштабирование позволяет независимо масштабировать каждую ось объекта.