AR 기초용 인스턴트 게재위치 개발자 가이드

앱에서 Instant Placement API 또는 영구 레이캐스트를 사용하는 방법을 알아보세요.

기본 요건

계속 진행하기 전에 기본 AR 개념ARCore 세션 구성 방법을 이해해야 합니다.

개념 이름

AR Foundation과 Unity용 ARCore SDK 간에 특정 개념과 메서드의 이름이 다를 수 있습니다. 아래 표에 이러한 내용이 정리되어 있으니 참고하시기 바랍니다.

AR 기반 Unity용 ARCore SDK
영구 레이캐스트 인스턴트 게재위치
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(상응하지 않음) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

기본 요건

이 가이드에서는 Unity를 이미 설치하고 구성했다고 가정합니다. 설치되어 있지 않다면 AR Foundation용 ARCore 확장 프로그램 시작하기를 참고하여 설치 및 설정 단계를 확인하세요.

ARRaycastManager으로 새 세션 구성

인스턴트 배치 (영구 레이캐스트)는 AR 기초 패키지와 함께 즉시 사용할 수 있습니다. 다음 단계에 따라 장면을 설정합니다.

AR Foundation 4.x

  1. 사전 정의된 게임 객체 AR Session OriginAR Session를 추가합니다.

  2. AR Raycast Manager 구성요소를 AR Session Origin 게임 객체에 추가합니다.

Raycast Prefab이 null이 아니면 ARRaycastManager는 prefab을 인스턴스화하고 ARRaycast의 포즈와 포즈를 자동으로 동기화합니다.

AR Foundation 5.x

  1. 사전 정의된 게임 객체 XR OriginAR Session를 추가합니다.

  2. AR Raycast Manager 구성요소를 XR Origin 게임 객체에 추가합니다.

Raycast Prefab이 null이 아니면 ARRaycastManager는 prefab을 인스턴스화하고 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.trackingStateTracking입니다. 그렇지 않으면 Limited로 시작하고 ARCore가 정확한 3D 포즈를 취하면 Tracking로 전환됩니다. 추적 상태가 Tracking가 되면 Limited로 되돌아가지 않습니다.