アプリ内で 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
事前定義されたゲーム オブジェクト AR Session Origin と AR Session を追加します。
AR Raycast Manager コンポーネントを AR Session Origin ゲーム オブジェクトに追加します。
Raycast プレハブが null でない場合、ARRaycastManager
はプレハブをインスタンス化し、そのポーズを ARRaycast
のポーズと自動的に同期します。
AR Foundation 5.x
事前定義されたゲーム オブジェクト XR Origin と AR Session を追加します。
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.trackingState
は Tracking
になります。
それ以外の場合は、Limited
で開始され、ARCore の正確な 3D ポーズが確立されると Tracking
に移行します。トラッキング状態が Tracking
になると、Limited
には戻りません。