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

Завершено

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

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

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

Screenshot that shows the location of the solvers folder.

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

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

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

    Screenshot that shows the newly added Chevron prefab selected.

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

    Screenshot that shows the DirectionalIndicator solver component added.

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

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

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

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

    Screenshot that shows the DirectionalIndicator solver component configured.

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

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

    Screenshot that shows the Play mode split view with DirectionalIndicator solver in use.

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

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

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

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

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

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

    Screenshot that shows the Tap To Place solver component added and configured.

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

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

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

    Screenshot that shows the Tap To Place On Placing Started event configured.

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

    Screenshot that shows the Tap To Place On Placing Started event added.

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

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

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

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

    Screenshot that shows the Tap To Place On Placing Started event configured.

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

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

    Screenshot that shows the temporary ground Cube object added and positioned.

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

    Screenshot that shows the Play mode split view, with gaze hitting the RoverAssembly object.

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

    Screenshot that shows the Play mode split view, with placing started.

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

    Screenshot that shows the Play mode split view, with placing ended.

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

    Screenshot that shows how to delete the temporary ground Cube.