Руководство разработчика Instant Placement для AR Foundation

Узнайте, как использовать API мгновенного размещения , или постоянные трассировки лучей , в своих приложениях.

Предварительные требования

Прежде чем продолжить, убедитесь, что вы понимаете основные концепции дополненной реальности и как настроить сессию ARCore .

Названия концепций

Названия некоторых концепций и методов могут отличаться в AR Foundation и ARCore SDK для Unity. Для удобства они перечислены в таблице ниже.

Фонд AR ARCore SDK для Unity
Постоянная трассировка лучей Мгновенное трудоустройство
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Эквивалентность отсутствует) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Предварительные требования

В этом руководстве предполагается, что вы уже установили и настроили Unity. Если нет, см. раздел «Начало работы с расширениями ARCore для AR Foundation» для получения инструкций по установке и настройке.

Настройте новую сессию с помощью ARRaycastManager

Функция мгновенного размещения (постоянная трассировка лучей) доступна по умолчанию в пакете AR Foundation. Выполните следующие шаги для настройки сцены.

AR Foundation 4.x

  1. Добавьте предопределенные игровые объекты AR Session Origin и AR Session .

  2. Добавьте компонент AR Raycast Manager в игровой объект AR Session Origin .

Если Raycast Prefab не равен null, ARRaycastManager создаст экземпляр префаба и автоматически синхронизирует его положение с положением ARRaycast .

AR Foundation 5.x

  1. Добавьте предопределенные игровые объекты XR Origin и AR Session .

  2. Добавьте компонент AR Raycast Manager в игровой объект XR Origin .

Если Raycast Prefab не равен null, ARRaycastManager создаст экземпляр префаба и автоматически синхронизирует его положение с положением ARRaycast .

AR Foundation 6.x

  1. Добавьте предопределенные игровые объекты XR Origin и AR Session .

  2. Добавьте компонент AR Raycast Manager в игровой объект XR Origin .

Если Raycast Prefab не равен null, ARRaycastManager создаст экземпляр префаба и автоматически синхронизирует его положение с положением ARRaycast .

Поместите предмет

В новой сессии ARCore выполните проверку попадания, используя ARRaycastManager.AddRaycast(Vector2, float) .

public ARRaycastManager RaycastManager; // set from the Editor Inspector.

void Update()
{
    Touch touch;
    if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
    {
        return;
    }

    if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
    {
        return;
    }

    ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
    if (raycast != null)
    {
        // You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
        
    }
}

Отслеживайте состояние отслеживания ARRaycast.

Если ARCore имеет точную 3D-позу, ARRaycast.trackingState будет иметь Tracking . В противном случае, оно начнется с Limited и перейдет в Tracking , как только ARCore получит точную 3D-позу. После того, как состояние отслеживания станет Tracking , оно не вернется к Limited .