詳しくは、 Instant Placement API 独自のアプリ内での永続レイキャスト。
前提条件
AR の基礎的なコンセプトを理解しておいてください。 と ARCore セッションを構成する方法を確認してください。
コンセプト名
特定の概念や手法の名称は、AR Foundation と Unity 用の ARCore SDK。簡単に参照できるように、以下の表にまとめています。
AR 基盤 | Unity 用 ARCore SDK |
永続レイキャスト | インスタント プレースメント |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(同等性なし) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
前提条件
このガイドでは、すでに Unity をインストールして構成していることを前提としています。そうでない場合は、以下をご覧ください。 ARCore 拡張機能の AR Foundation スタートガイド をご覧ください。
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
。
オブジェクトを配置する
新しい 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
。