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

アプリ内で Instant Placement API または永続レイキャストを使用する方法を学習する。

前提条件

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

コンセプト名

AR Foundation と ARCore SDK for Unity では、特定のコンセプトやメソッドの名称が異なる場合があります。これらを以下の表にまとめていますので、参考にしてください。

AR 基盤 ARCore SDK for Unity
永続レイキャスト インスタント プレースメント
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(同等のものはありません) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

前提条件

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

ARRaycastManager を使用した新しいセッションの設定

Instant Placement(永続的なレイキャスト)は、AR Foundation パッケージですぐに使用できます。シーンをセットアップする手順は次のとおりです。

AR Foundation 4.x

  1. 事前定義されたゲーム オブジェクト AR Session OriginAR Session を追加します。

  2. AR Raycast Manager コンポーネントを AR Session Origin ゲーム オブジェクトに追加します。

Raycast プレハブが null でない場合、ARRaycastManager はプレハブをインスタンス化し、そのポーズを ARRaycast のポーズと自動的に同期します。

AR Foundation 5.x

  1. 事前定義されたゲーム オブジェクト XR OriginAR Session を追加します。

  2. AR Raycast Manager コンポーネントを XR Origin ゲーム オブジェクトに追加します。

Raycast プレハブが 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 には戻りません。