AR Foundation のインスタント プレースメント デベロッパー ガイド

独自のアプリで Instant Placement API(または永続的なレイキャスト)を使用する方法を学びます。

前提条件

続行する前に、AR の基本コンセプトARCore セッションを構成する方法を理解してください。

コンセプト名

特定のコンセプトとメソッドの名前は、AR Foundation と ARCore SDK for Unity で異なる場合があります。以下の表に、各項目の説明を示します。

AR Foundation ARCore SDK for Unity
永続的なレイキャスト インスタント プレースメント
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(対応する用語なし) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

前提条件

このガイドでは、Unity がすでにインストールされ、構成されていることを前提としています。インストールされていない場合は、AR Foundation 向け ARCore Extensions のスタートガイドでインストールと設定の手順をご覧ください。

ARRaycastManager を使用して新しいセッションを構成する

インスタント プレースメント(永続的なレイキャスト)は、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 のポーズと自動的に同期します。

オブジェクトを配置する

新しい 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 に戻ることはありません。