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

자체 앱에서 Instant Placement API 또는 지속적인 레이캐스트를 사용하는 방법을 알아보세요.

기본 요건

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

개념 이름

특정 개념과 메서드의 이름은 AR Foundation과 Unity용 ARCore SDK 간에 다를 수 있습니다. 참고를 위해 아래 표에 나열되어 있습니다.

AR Foundation 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가 프리탸를 인스턴스화하고 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가 됩니다. 그러지 않으면 ARCore에 정확한 3D 포즈가 지정되면 Limited로 시작하고 Tracking로 전환됩니다. 추적 상태가 Tracking가 되면 Limited로 되돌아가지 않습니다.