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

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

기본 요건

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

개념 이름

특정 개념과 메서드의 이름은 AR Foundation과 Unity용 ARCore SDK 간에 다를 수 있습니다. 아래 표에 쉽게 참조할 수 있도록 나열되어 있습니다.

AR Foundation Unity용 ARCore SDK
영구 레이캐스트 Instant Placement
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(동등한 항목 없음) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

기본 요건

이 가이드에서는 Unity를 이미 설치하고 구성했다고 가정합니다. 그렇지 않은 경우 설치 및 설정 단계는 AR Foundation용 ARCore Extensions 시작하기 를 참고하세요.

ARRaycastManager로 새 세션 구성

Instant Placement (영구 레이캐스트)는 AR Foundation 패키지와 함께 바로 사용할 수 있습니다. 다음 단계에 따라 장면을 설정하세요.

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 가 프리팹을 인스턴스화하고 포즈를 ARRaycast의 포즈와 자동으로 동기화합니다.

AR Foundation 6.x

  1. 미리 정의된 게임 객체 XR OriginAR Session 을 추가합니다.

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

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

객체 배치

새 ARCore 세션에서 ARRaycastManager.AddRaycast(Vector2, float)를 사용하여 Hit Test를 실행합니다.

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로 되돌아가지 않습니다.