Ограничивающий прямоугольник

Ограничивающий прямоугольник

Примечание

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

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

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

Пример сцены

Примеры конфигураций ограничивающих прямоугольников можно найти в BoundingBoxExamples сцене.

Bounding Box Examples

Добавление и настройка ограничивающего прямоугольника с помощью инспектора Unity

  1. Добавить в объект конфликт Box
  2. Назначение BoundingBox скрипта объекту
  3. Настройка параметров, таких как методы активации (см. раздел Свойства инспектора ниже).
  4. Используемых назначение prefabs и материалов для ограничивающего прямоугольника стиля HoloLens 2 (см. раздел стили маркеров ниже)

Примечание

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

Ограничивающий прямоугольник 1

Добавление и настройка ограничивающего прямоугольника в коде

  1. Создание экземпляра куба GameObject

    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    
  2. Назначение BoundingBox скрипта объекту с помощью функции AddComponent<> ()

    private BoundingBox bbox;
    bbox = cube.AddComponent<BoundingBox>();
    
  3. Настройка параметров (см. раздел Свойства инспектора ниже)

    // Make the scale handles large
    bbox.ScaleHandleSize = 0.1f;
    // Hide rotation handles
    bbox.ShowRotationHandleForX = false;
    bbox.ShowRotationHandleForY = false;
    bbox.ShowRotationHandleForZ = false;
    
  4. Используемых назначьте prefabs и материалы для ограничивающего прямоугольника стиля HoloLens 2. Это по-прежнему требует назначений через инспектор, так как материалы и Prefabs должны загружаться динамически.

Примечание

Использование папки "Resources" или шейдера Unity. не рекомендуется искать динамически загружаемые шейдеры, так как в среде выполнения могут отсутствовать перестановки шейдеров.

bbox.BoxMaterial = [Assign BoundingBox.mat]
bbox.BoxGrabbedMaterial = [Assign BoundingBoxGrabbed.mat]
bbox.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
bbox.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
bbox.ScaleHandlePrefab = [Assign MRTK_BoundingBox_ScaleHandle.prefab]
bbox.ScaleHandleSlatePrefab = [Assign MRTK_BoundingBox_ScaleHandle_Slate.prefab]
bbox.ScaleHandleSize = 0.016f;
bbox.ScaleHandleColliderPadding = 0.016f;
bbox.RotationHandleSlatePrefab = [Assign MRTK_BoundingBox_RotateHandle.prefab]
bbox.RotationHandleSize = 0.016f;
bbox.RotateHandleColliderPadding = 0.016f;

Пример: Установка минимального, максимального масштаба ограничивающего прямоугольника с помощью Минмаксскалеконстраинт

Чтобы задать минимальный и максимальный масштаб, используйте MinMaxScaleConstraint . Минмаксскалеконстраинт также можно использовать для установки минимального и максимального масштаба для ManipulationHandler .

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
bbox = cube.AddComponent<BoundingBox>();
// Important: BoundingBox creates a scale handler on start if one does not exist
// do not use AddComponent, as that will create a  duplicate handler that will not be used
MinMaxScaleConstraint scaleConstraint = bbox.gameObject.GetComponent<MinMaxScaleConstraint>();
scaleConstraint.ScaleMinimum = 1f;
scaleConstraint.ScaleMaximum = 2f;

Пример: Добавление ограничивающего прямоугольника вокруг игрового объекта

Чтобы добавить ограничивающий прямоугольник вокруг объекта, просто добавьте BoundingBox в него компонент:

private void PutABoxAroundIt(GameObject target)
{
   target.AddComponent<BoundingBox>();
}

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

Целевой объект

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

Переопределение границ

Устанавливает блочный объект для вычисления границ объекта.

Поведение при активации

Существует несколько вариантов активации интерфейса ограничивающего прямоугольника.

  • Активировать при запуске: ограничивающий прямоугольник становится видимым после запуска сцены.
  • Активировать по сходству: ограничивающий прямоугольник становится видимым, когда накрывающаяся рука близко к объекту.
  • Активировать по указателю: ограничивающий прямоугольник становится видимым, если он предназначен для указателя типа «рука-Ray».
  • Активировать вручную: ограничивающий прямоугольник не становится видимым автоматически. Вы можете активировать его вручную с помощью скрипта, обратившись к свойству boundingBox. Active.

Минимум шкалы

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

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

Максимально допустимый масштаб. Это свойство является устаревшим и предпочтительно добавить MinMaxScaleConstraint скрипт. Если этот скрипт добавлен, вместо ограничивающего прямоугольника будет получен максимальный масштаб.

Отображение Box

Различные параметры визуализации ограничивающего прямоугольника.

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

Маркеры

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

События

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

  • Начало вращения: срабатывает при начале вращения.
  • Поворот завершен: срабатывает при завершении вращения.
  • Масштабирование начато: активируется при запуске масштабирования.
  • Окончание масштабирования: срабатывает при завершении масштабирования.
Events

Стили обработчиков

по умолчанию при простом назначении BoundingBox.cs сценария будет показан дескриптор HoloLens 1-го стиля. чтобы использовать HoloLens 2 дескрипторы стилей, необходимо назначить соответствующие дескрипторы prefabs и материалы.

Стили маркера ограничивающего прямоугольника

ниже приведены prefabs, материалы и значения масштабирования для маркеров ограничивающего прямоугольника стиля HoloLens 2. Этот пример можно найти в BoundingBoxExamples сцене.

HandStyles 2

дескрипторы (программа установки для стиля HoloLens 2)

  • Обрабатывающий материал: баундингбоксхандлевхите.
  • Обработано извлеченный материал: баундингбоксхандлеблуеграббед.
  • Маркер масштабирования prefab: MRTK_BoundingBox_ScaleHandle. prefab
  • MRTK_BoundingBox_ScaleHandle_Slate prefab. prefab на планшетном маркере масштабирования.
  • Размер маркера масштабирования: 0,016 (1.6 cm)
  • Коэффициент масштабирования: 0,016 (делает переданный объект, который немного превышает обработку визуального элемента)
  • Маркер вращения prefab: MRTK_BoundingBox_RotateHandle. prefab
  • Размер маркера вращения: 0,016
  • Маркер поворота: 0,016 (делает переданный объект, который немного превышает обработку визуального элемента)

близость (программа установки для стиля HoloLens 2)

Отображение и скрытие маркеров с анимацией на основе расстояния от руки. Он имеет двустороннюю анимацию масштабирования.

Proximity
  • Активно воздействие на близкое использование: Включение активации с помощью маркеров с учетом расположения
  • Средний уровень сходства: расстояние для первого шага масштабирования
  • Обработайте близко близко: расстояние для второго шага масштабирования
  • Далеко масштаб: значение масштаба по умолчанию для ресурса-маркера, если руки выходят за пределы диапазона взаимодействия ограничивающего прямоугольника (расстояние, определенное выше с помощью "маркер среднего сходства"). Использовать 0 для скрытия обработчика по умолчанию)
  • Средняя шкала: значение масштаба ресурса маркера, когда руки находятся в диапазоне взаимодействия ограничивающего прямоугольника (расстояние, определенное выше с помощью маркера близкого сходства). Чтобы отобразить нормальный размер, используйте значение 1.
  • Закрытие шкалы: масштабирование значения ресурса-маркера, когда руки находятся в диапазоне взаимодействия (расстояние, определенное выше с помощью маркера близкого сходства). Используйте 1. x, чтобы отобразить больший размер)

Создание объекта, перемещаемого с помощью обработчика манипуляции

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

Manipulation Handler

Чтобы границы ограничивающего прямоугольника могли работать одинаково при перемещении с помощью ManipulationHandler дальнего взаимодействия, рекомендуется соединить свои события для манипуляции, начатой для / манипуляции , которые заканчиваются BoundingBox.HighlightWires / BoundingBox.UnhighlightWires соответственно, как показано на снимке экрана выше.

Миграция в элемент управления "границы"

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

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

Bounds Control Migrate