移行ガイド
このガイドでは、AR Foundation 1.0 と 2.x の違いについて説明します。
要約
- シーン内の任意の場所に
ARInputManagerを追加します。 ARCameraManagerを AR (拡張現実) カメラに追加します (これはARCameraOptionsに代わるものです)。ARSessionOriginの代わりにARRaycastManagerを介してレイキャストします。- 一部の
TryGet/TryAdd/TryRemoveAPI の名前が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 メソッドを使用します。