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