ARセッションの作成と設定
UnityでARを使用するには、まずシーン内にARセッションを作成し設定する必要があります。この記事では、ARセッションを作成・設定する主な方法を説明します。セッションの作成に成功すると、Hierarchyビューに以下の構造が表示されます:

開始前に
- ARSession 概要でセッションの基本概念、構成、ワークフローを理解してください。
デフォルト設定のセッション作成
Hierarchyビューの空白部分を右クリックし、メニューからEasyAR Sense > [ AR 機能 ] > AR Session ([ 機能 ] Preset)を選択すると、プリセットされたセッションを作成できます。セッションには、その機能に適したframe sourceとframe filterコンポーネントが事前に設定されています。
スクリプトでは、ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources)を使用してセッションを作成できます。
例:メニューからEasyAR Sense > Image Tracking > AR Session (Image Tracking Preset)を選択すると、画像トラッキング用のセッションが作成されます。

対応するスクリプトコード:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);
注意点:ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilderおよびARSessionFactory.ARSessionPreset.DenseSpatialMapBuilderプリセットを使用する場合、リソースパラメータも必要です。例(点群マテリアルを指定):
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });
エディター専用スクリプトの場合、デフォルトリソースを使用可能:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());
メニューEasyAR Sense > AR Session (Preset) > **には全てのプリセットがリストされています。

注記
同一シーンで複数セッションを同時実行すると競合が発生します。有効化された(GameObject.activeInHierarchy == true)セッションは最大1つのみ保持してください。
コンポーネントの追加
セッション作成後、必要に応じてframe sourceやframe filterコンポーネントを追加・削除できます。
Hierarchyビューで**AR Session (EasyAR)**を選択し右クリック、EasyAR Sense > [ AR 機能 ] > **から機能に適したコンポーネントを追加できます。
スクリプトでは、ARSessionFactory.AddFrameSource<Source>(GameObject, bool)でframe sourceを、ARSessionFactory.AddFrameFilter<Filter>(GameObject, ARSessionFactory.Resources)でframe filterを追加できます。
例:メニューEasyAR Sense > Image Tracking > Frame Filter : Image Trackerで選択中セッションに画像トラッカーを追加。

対応するスクリプトコード:
ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
注意
コンポーネント追加はassemble前に行う必要があります。assemble開始後または完了後にコンポーネントを追加/削除すると、セッションがBroken状態になり動作停止します。
注意点:SparseSpatialMapBuilderFrameFilterおよびDenseSpatialMapBuilderFrameFilter追加時はリソースパラメータが必要です。例(点群マテリアル指定):
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })
エディター専用スクリプトの場合:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());
frame filter作成後、ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset)でプリセット設定を適用可能です。
例:画像トラッカーをARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion設定で追加
var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);
メニュー作成時はパラメータ調整できないため、コンポーネント説明に従い個別設定が必要です。
コンポーネントの削除
セッションからコンポーネントを削除するには、Hierarchyビューで対象コンポーネントを選択しDeleteキーを押すか、スクリプトでオブジェクトを破棄(Destroy)します。
注記
コンポーネントの無効化(SetActive(false))は削除と同じ効果です。
例:セッションから画像トラッカーを削除するにはImage Trackerを選択しDeleteキー。

注意
コンポーネント削除はassemble前に行う必要があります。assemble開始後または完了後にコンポーネントを追加/削除すると、セッションがBroken状態になり動作停止します。
コンポーネント順序の影響
sessionのframe filter子ノードの順序は動作に影響しません。
sessionのframe source子ノードの順序は、assembleプロセスでの選択順序に影響します。transform順序で最初に利用可能なframe sourceのみが実際のframe sourceとして選択されます。
注記
frame sourceノードの順序変更はassemble前のみ有効です。assemble後の順序変更は実行結果に影響しません。
[オプション] 自由なセッション作成
デフォルト設定が要件を満たさない場合、自由にセッションを作成・設定できます。
メニューEasyAR Sense > AR Session (Preset) > AR Session (Empty)で空のセッションを作成可能です。
スクリプトではARSessionFactory.CreateSession()を使用:
ARSessionFactory.CreateSession();
その後、必要なframe source/frame filterコンポーネントを追加します。
例:疎空間ビルダーと密空間ビルダーを含むセッション作成コード:
var session = ARSessionFactory.CreateSession();
var group = new GameObject("Frame Source Group");
group.transform.SetParent(session.transform, false);
ARSessionFactory.AddFrameSource<XREALFrameSource>(session);
ARSessionFactory.AddFrameSource<AREngineFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<VisionOSARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<MotionTrackerFrameSource>(session);
List<GameObject> filters = new();
filters.Add(ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, resources));
filters.Add(ARSessionFactory.AddFrameFilter<DenseSpatialMapBuilderFrameFilter>(session, resources));
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder);
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder);
生成されるセッション構造:

次のステップ
実行制御
- 初期化の方法と役割を理解
- 可用性とデバイスサポートの判定方法を理解
- セッション実行制御方法を理解
コンポーネントと結果へのアクセス
- AR機能コンポーネントへのアクセスを試す
- セッション実行結果の取得方法を理解
コンポーネントリファレンス
- ARSession コンポーネントリファレンス