独自のアプリで 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
事前定義されたゲーム オブジェクト AR Session Origin と AR Session を追加します。

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

Raycast Prefab が null でない場合、ARRaycastManager はプレハブをインスタンス化し、そのポーズを ARRaycast のポーズと自動的に同期します。
AR Foundation 5.x
事前定義されたゲーム オブジェクト XR Origin と AR Session を追加します。

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

Raycast Prefab が null でない場合、ARRaycastManager はプレハブをインスタンス化し、そのポーズを ARRaycast のポーズと自動的に同期します。
AR Foundation 6.x
事前定義されたゲーム オブジェクト XR Origin と AR Session を追加します。

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.trackingState は Tracking になります。そうでない場合は、Limited から始まり、ARCore が正確な 3D ポーズを取得すると Tracking に移行します。トラッキング ステータスが Tracking になると、Limited に戻ることはありません。