Упражнение. Создание интеллектуальных операций размещения объектов с помощью решателей

Завершено

Поиск решения — это один из компонентов набор средств смешанной реальности (MRTK). Давайте рассмотрим два типа решателей и их функциональные возможности.

Расположение решателей в MRTK

Решатели MRTK находятся в папке пакета SDK для MRTK. Чтобы просмотреть доступные решения в проекте, в окне проекта перейдите к >пакетам средств решения пространственных манипуляций>MRTK.

Снимок экрана, на котором показано расположение папки с решателями.

Решатель «Указатель направления»

Решатель «Указатель направления» используется, чтобы направить пользователя к объектам. Это делается следующим образом:

  1. В окне Проект перейдите к разделу Ресурсы>MRTK.Tutorials.GettingStarted>Префабы. Перетащите префаб Chevron в окно иерархии и задайте для него положение преобразования X = 0, Y = 1,5, Z = 2, чтобы разместить его рядом с объектом RoverExplorer.

    Снимок экрана, на котором показан вновь добавленный префаб «Шеврон».

  2. Переименуйте вновь добавленный объект «Шеврон» на Указатель. Затем в окне Инспектора выберите Добавить компонент, чтобы добавить DirectionalIndicator.

    Снимок экрана с добавленным компонентом решателя «Указатель направления».

  3. Настройте компоненты DirectionalIndicator и SolverHandler следующим образом:

    a. Убедитесь, что для отслеживаемого целевого объекта компонента SolverHandler задано значение Head.

    b. Назначьте объект RoverExplorer для целевого направления компонента DirectionalIndicator, перетащив его из окна Иерархия в поле Нет (преобразование).

    c. Измените Смещение вида на 0,2.

    Снимок экрана с настроенным компонентом решателя «Указатель направления».

  4. Чтобы перейти в режим Игра, нажмите на кнопку воспроизведения. Нажмите и удерживайте правую кнопку мыши при перемещении мыши влево или вправо для поворота направления взгляда.

    Обратите внимание, что когда вы отводите взгляд от объекта RoverExplorer, отобразится объект Указатель, который указывает на объект RoverExplorer.

    Снимок экрана, на котором показан вид режима воспроизведения с разделением с используемым решателем DirectionalIndicator.

Решатель «Размещение по нажатию»

Решатель «Размещение по нажатию» используется для изменения положения объектов. Это делается следующим образом:

  1. В окне Иерархия выберите объект RoverExplorer>RoverAssembly. Затем в инспекторе используйте добавление компонента для добавления компонента Tap To Place. Настройте компонент следующим образом:

    a. Убедитесь, что для отслеживаемого целевого объекта компонента SolverHandler задано значение Head.

    b. Снимите флажок Использовать стандартное смещение Surface Normal и убедитесь, что для смещений Surface Normal установлено значение 0.

    c. Установите флажок Сохранять вертикальную ориентацию.

    Снимок экрана, на котором показан добавленный и настроенный решатель «Размещение по нажатию».

  2. Затем добавьте компонент с отслеживанием состояния. В окне инспектора найдите событие On Clicked () (Нажми). Затем щелкните значок +, чтобы добавить новое событие. Настройте событие следующим образом:

    a. Назначьте объект RoverAssembly в качестве прослушивателя события On Clicked () путем перетаскивания его из иерархии в поле None (Object).

    b. В раскрывающемся списке "Нет функции" выберите TapToPlace>StartPlacement(), чтобы вызвать этот метод при активации события.

    Снимок экрана, на котором показано настроенное событие «Размещение по нажатию при начале размещения».

  3. Если объект RoverAssembly все еще выбран в окне Иерархия, в окне Инспектора выберите событие При начале размещения (). Затем щелкните значок +, чтобы добавить новое событие.

    Снимок экрана, на котором показано добавленное событие «Размещение по нажатию при начале размещения».

  4. Настройте событие следующим образом:

    a. Назначьте объект RoverAssembly в качестве прослушивателя для события При начале размещения (), перетащив его из окна Иерархия в поле Нет (объект).

    b. В раскрывающемся списке Нет функции выберите TapToPlace>float SurfaceNormalOffset, чтобы обновить значение свойства SurfaceNormalOffset при запуске события.

    c. Убедитесь, что для аргумента задано значение 0.

    Снимок экрана, на котором показано настроенное событие «Размещение по нажатию при начале размещения».

  5. В окне Иерархия щелкните правой кнопкой мыши пустое место. Выберите Трехмерный объект>Куб, чтобы создать временный объект, представляющий землю, и настройте компонент Transform следующим образом:

    • Позиция: X = 0, Y = 0,15, Z = 6
    • Поворот: X = 0, Y = 0, Z = 0
    • Масштаб: X = 10, Y = 0,2, Z = 10

    Снимок экрана, на котором показан добавленный и позиционированный временный объект земли «Куб».

  6. Чтобы перейти в режим Игра, нажмите на кнопку воспроизведения. Затем нажмите и удерживайте правую кнопку мыши при перемещении курсора вниз, пока взгляд не достигнет объекта RoverAssembly.

    Снимок экрана, на котором показан вид режима воспроизведения с разделением, когда взгляд падает на объект RoverAssembly.

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

    Снимок экрана, показывающий вид режима воспроизведения после начала размещения.

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

    Снимок экрана, показывающий вид режима воспроизведения после завершения размещения.

  9. Завершив тестирование функции в режиме Игра, щелкните объект «Куб» правой кнопкой мыши и выберите Удалить, чтобы удалить его из сцены.

    Снимок экрана, показывающий, как удалить временный объект земли «Куб».