移行ガイド
このガイドでは、AR Foundation 1.0 と 2.x の違いについて説明します。
要約
- シーン内の任意の場所に
ARInputManager
を追加します。 ARCameraManager
を AR (拡張現実) カメラに追加します (これはARCameraOptions
に代わるものです)。ARSessionOrigin
の代わりにARRaycastManager
を介してレイキャストします。- 一部の
TryGet
/TryAdd
/TryRemove
API の名前がGet
/Add
/Remove
に変更されました。 GetAllXXX
はtrackables
プロパティになりました。- 追加、更新、削除イベントが 1 つのイベントに統合されました。このイベントには、追加、更新、削除されたすべてのトラッカブルのリストが含まれます。
イベント
AR Foundation 1.0 の各トラッカブルマネージャーでは、各トラッカブルの追加、更新、削除イベントを提供していました。2.x の各トラッカブルマネージャーでは、単一のイベントがフレームごとに 1 回だけ呼び出されます。このイベントには、前回のフレーム以降のすべての変更 (追加、更新、削除) が含まれます。
例:
1.0 | 2.0 |
---|---|
ARPlaneManager.planeAdded 、ARPlaneManager.planeUpdated 、ARPlaneManager.planeRemoved |
ARPlaneManager.planesChanged |
セッション相対データ
AR Foundation 1.0 の多くのトラッカブルには "セッション相対データ" (BoundedPlane
や XRReferencePoint
など) がありました。これらに直接アクセスすることはできなくなりました。そのすべてのメンバーは、AR Foundation トラッカブルのプロパティになりました。
例:
トラッカブル | 1.0 アクセサー | 2.0 アクセサー |
---|---|---|
ARPlane |
boundedPlane.Id |
trackableId |
Try の削除
いくつかの API では、TryGet
または TryAdd
スタイルが使用されていました。参照型を処理するメソッドでは、Try
プレフィックスが削除されました。
例:
1.0 | 2.0 |
---|---|
ARPlane.TryGetPlane(trackableId) |
ARPlane.GetPlane(trackableId) |
ARReferencePoint.TryAddReferencePoint |
ARReferencePoint.AddReferencePoint |
ARReferencePoint.TryAttachReferencePoint |
ARReferencePoint.AttachReferencePoint |
bool ARReferencePoint.TryRemoveReferencePoint |
bool ARReferencePoint.RemoveReferencePoint |
トラッカブルの列挙
これまで、トラッカブルマネージャーには、すべてのトラッカブルの List
を取得する方法がありました (ARPlaneManager.GetAllPlanes
や ARReferencePointManager.GetAllReferencePoints
など)。現在は、以下の例のように、foreach
で使用できる trackables
という共通のプロパティがあります。
var planeManager = GetComponent<ARPlaneManager>();
foreach (var plane in planeManager.trackables) {
// 平面で何かを実行します
}
このプロパティは、ガベージを生成したり、ボックス化が発生したりしない TrackablesCollection
を返します。
ARSubsystemManager の削除
2.0 では、ARSubsystemManager
が削除されました。これまで、これは各サブシステムへのアクセスを提供するシングルトンでした (サブシステムとは、AR プラットフォームへの低レベルのインターフェースです)。ただし、一部のサブシステムは、ARPlaneManager
など、MonoBehavior
によっても同時に管理されていました。そのため、操作またはサブスクライブの対象となるオブジェクトについて混乱が生じていました。現在、各サブシステムには、そのサブシステムへのアクセスを提供するだけでなく、その生存期間も管理するマネージャーコンポーネントがあります。
これまで ARSubsystemManager
を使用していた場合は、いずれかのマネージャーで同様の機能を探してください。
1.0 サブシステム | 2.0 マネージャー |
---|---|
XRPlaneSubsystem |
ARPlaneManager |
XRReferencePointSubsystem |
ARReferencePointManager |
XRDepthSubsystem |
ARPointCloudManager |
XRSessionSubsystem |
ARSession |
XRInputSubsystem |
ARInputManager (New) |
XRCameraSubsystem |
ARCameraManager (New) |
XRRaycastSubsystem |
ARRaycastManager (New) |
ARInputManager
これまで、ポーズトラッキングは暗黙的に常に有効になっていました。現在、これを有効にするには、シーン内に ARInputManager
コンポーネントが必要です。ARInputManager
は、任意の GameObject
にアタッチできます。
ARInputManager
を使用すると、入力トラッキングが有効になります。以前と同様に、TrackedPoseDriver
ではポーズデータが使用されます。
ARCameraManager と ARCameraOptions
ARCameraManager
を使用すると、XRCameraSubsystem
が有効になります。これがないと、背景レンダリングを使用したり、ライトの推定情報を取得したりすることができません。このコンポーネントは Unity カメラに配置する必要があります。通常は、ARSessionOrigin
の親であり、背景レンダリングを実行するカメラに配置します。
ARCameraBackground
には、ARCameraManager
コンポーネントが必要になりました。
以前は ARCameraOptions
コンポーネントにあったオプション (フォーカスモードやライト推定モードなど) は、現在、ARCameraManager
にあります。ARCameraOptions
にはなくなりました。
ARPointCloudManager
1.0 では、ARPointCloudManager
は単一の点群を管理していました。現在は、他のトラッカブルマネージャーと同様に、点群のコレクションを管理できるようになりました。ARCore や ARKit などの一部の AR プラットフォームには、現在も単一の点群しかありません。ただし、他のプラットフォーム (将来的にサポート) では、複数の点群が生成されます。
その結果、ARPointCloudManager.pointCloud
プロパティはなくなりました。trackables
プロパティを反復処理することで、他のトラッカブルマネージャーと同様に点群を列挙できます。
ARRaycastManager
レイキャスティング API は以前と同じですが、新しいコンポーネントである ARRaycastManager
に移動しました。以前は ARSessionOrigin
にありました。レイキャストを実行する必要がある場合は、ARSessionOrigin
と同じ GameObject
に ARRaycastManager
がアタッチされていることを確認し、そのコンポーネントで Raycast
メソッドを使用します。