用語集
アクション /Action
アクションとは、プロキシ の一致が発生したときに実行される動作のことです。アクションは、(ユーザーが記述できる) コンポーネントの一種で、以下の 2 種類があり、それぞれ対応するゲームオブジェクトに配置できます。
アクションは QueryState の変化 (プロキシが一致するデータを取得または喪失する、プロキシのデータが更新されるなど) に対して反応します。
アプリケーションロジック /Application logic
従来のスクリプトやコンポーネントは純粋にデジタルコンテンツとやりとりしますが、現実世界にあるものを考慮したり、やりとりしたりすることはありません。Unity MARS には、アプリケーションロジックのためのスクリプトやユーティリティは用意されていません。ユーザーは既存の Unity MARS の機能に独自のロジックを追加して、アプリケーションに利用できます。
機能 /Capability
特定のシーンで必要とされる特性や性能。これには、シーンに点群データが必要かどうかの設定や、"空間の点"、"GPS 座標"、"モデル"、"平面"、"セマンティックタグ"、"音声コマンド"、"顔" などの特性を指定する TraitRequirements のリストが含まれます。機能は、ハードウェアプロバイダーまたは合成データによって提供されます。ハードウェアプロバイダーの詳細については、Functionality Injection (機能追加) を参照してください。
コンパニオンアプリ /Companion apps
スマートフォンや AR ヘッドマウントディスプレイ用のスタンドアロンの実行ファイル。これを使用することで、特定の Unity MARS 関連タスクを現場で行うことができるようになります。このタスクには、以下のようなものがあります。
- プロキシと条件の定義
- 画像マーカーと間取りのキャプチャ
- プロジェクトアセットの同期と現実世界の空間への配置
- AR データ、カメラトラッキング、および動画の記録と、Unity MARS への同期
シミュレーションビューでの比較 /Compare in Simulation View
インスペクターで定義したすべての項目の結果をシミュレーションビューで比較できます。特定のプロキシから Compare モードに入り、シミュレーションビューのデータ (サーフェスなど) にカーソルを合わせると、現在カーソルを合わせているデータと、選択したプロキシが一致しない理由についてのフィードバックがインスペクターに表示されます。
条件 /Condition
条件は、平面のサイズ、整列、セマンティックタグ (例えば、"顔"、"床"、将来のオブジェクト分類タグ) など、ワールドデータに対する具体的な要件を定義するものです。多くの場合、プロキシ には複数の条件が含まれ、各条件ではさまざまな個別要件を記述します。例えば、"大きなテーブル" プロキシには、IsPlane、PlaneSize (large)、Alignment (Horizontal+Up) といった条件を指定できます。Unity MARS には、一般的なユースケースに対応した条件が多数用意されており、独自の条件を記述するための API も提供されています。
データ ID /Data ID
あるデータがどの プロキシ に関連付けられているかを識別するために使用される、自動的に増分される一意の番号です。クエリごとに、すべての結果データに同じデータ ID が指定されます。
例えば、検出された特定の平面に関連するセマンティックタグのデータ ID は、同じサーフェスに関する情報であるため、すべて同じになります。
データベース /Database
Unity MARS によって認識されるすべてのデータの一元的なストレージの場所です。データベースには、プロバイダー と 合成オブジェクト がデータを書き込みます。MARSEntities はそこからデータを読み取り、条件に一致するデータを検索したり、アクションを実行したりします。データベースは、2 つの MARSEntities が同じ領域にコンテンツを配置しないように、データの検索、更新、"予約" を行う手段を提供します。
フェイストラッキング /Face tracking
人間の顔の特徴を追跡するテクノロジー。Unity MARS でフェイストラッキングを有効にするには、フェイストラッキングプロバイダーを使用します。このプロバイダーは顔のデータをデータベースに挿入し、条件と照合します。次に Unity MARS はランドマークとしてフェイストラッキングの特徴点にアクセスします。
顔の表情 /Facial expressions
"微笑む"、"肩をすくめる"、"口を開ける"、"眉をつり上げる" など、視覚的な状態を伝える概念に対応した単一値のタグ。Unity MARS では現在、以下の 2 つの方法で顔の表情を計算しています。
- 動画ストリーム内の視覚的ランドマークを観察する
- 顔のメッシュのブレンドシェイプを分析する
フォールバック /Fallbacks
フォールバックでは、リクエストされたプロキシを Unity MARS が見つけられない場合の対処方法を定義します。フォールバックは、解決しようとしている問題を切り分けて、考えやすくするための方法です。
力 /Force
Force (力) は、プロキシでの複雑な空間配置 (ポーズ基準、辺/サーフェス基準、占有率基準など) を設定します。力という名前は、Unity MARS が物理演算スタイルのシミュレーションを使用して、あたかも力がプロキシゲームオブジェクトの周囲にあるバネであるかのように複数の影響のバランスを取っていることから付けられています。
機能追加 (FI) /Functionality Injection
Unity MARS の各機能が互いに依存しないように切り離すための主要な方法。モジュール、コンポーネント、その他の Unity MARS 機能を通じて、共通の機能セットをサブスクライブしたり提供したりすることができます。これは、プロバイダーとそのサブスクライバーの間の契約を定義するインターフェースのペアを使用することで実現されています。これらのインタフェースにより、サブスクライバーのコードは、機能を提供するハードウェアやサービスの実装の詳細を認識していなくても、ジェネリックインターフェースを介して機能にアクセスすることができます。また、ランタイムにプロバイダーをスワップすることも可能です。機能追加を使用することで、データベースよりもコード指向な形で AR データを抽象化することができます。
ハードウェアプロバイダー /Hardware provider
ハードウェア SDK や抽象化レイヤーをラップし、機能プロバイダーとして Unity MARS にデータを供給するコード。例えば、MARS AR Foundation Providers パッケージは、AR Foundation を使用してデバイスデータをデータベースに挿入します。
頭部のポーズの推定 /Head pose estimation
ユーザーのローカル座標系において、頭部がどの位置にあり、どの方向を向いているかを判断するために使用するテクノロジー。プロバイダーによっては、このデータが 3D でネイティブに公開されている場合もあれば、2D の頭部のポーズを抽出して、その情報から 3D の位置を計算する必要がある場合もあります。
インテグレーション /Integrations
Unity MARS に機能やサポートを提供する外部の API とツールのこと。プロバイダー (例えば、ARCore や ARKit は AR のプラットフォーム依存のローカライズやマッピングをサポートするプロバイダーです) もインテグレーションですが、インテグレーションは単なるプロバイダー以上の役割を果たす場合があります。
ランドマーク /Landmark
点、ポーズ、辺、スプライン、メッシュ、境界領域、目、鼻など、空間的または幾何学的データの名前付きセット。ランドマークは位置決めや整列を行う際に非常に役立ちます。Unity MARS で使用するランドマークは、業界標準のフェイシャルランドマークという用語を略したものです。
ライブデータ /Live data
ライブデータとは、現実世界で起きていて、同時にコンピューターでも処理されている現実世界のデータです (合成データの対語)。ライブデータは、フィードなどから取得できます。
MARSEntity
Unity MARS の 3 つの主要コンストラクト (プロキシ、プロキシグループ、レプリケーター) の基本クラス。これにより、Unity で任意の種類の Unity MARS ゲームオブジェクトに適用できる機能 (データビジュアライザーなど) を作成できるようになります。
一致の評価 /Match rating
ユーザーが作成した条件や関係にデータセットがどの程度一致するかを示す 0 (失敗) から 1 (完全) の間の数値です。Unity MARS では、条件とクエリ全体の評価を集約して、これを判定しています。
一致評価は、以下のように複数のレベルにあります。
- Condition: この平面のサイズはどのくらい正確に一致しているか。
- Query]: このプロキシのすべての条件の組み合わせにどの程度一致しているか。
- Proxy Group: クエリセットのすべてのメンバーがどの程度一致しているか。
- Relation: この距離または高低差がどの程度正確に一致しているか。
モジュール /Module
Unity MARS は、互いに依存することなく動作する独立した主要機能 (データベース、機能追加など) で構成されています。これらの機能の 1 つ 1 つをモジュールと呼びます。
ポーズ /Pose
ポーズは位置と向きを記述するという点で、Unity の Transform プロパティと似ています。ただし、ポーズにはスケール情報が含まれないため、Transform とは別の一意の識別子が必要です。ポーズではスケールが除外される理由については、ワールドスケール を参照してください。
プロバイダー /Provider
一般には、MARS データベースや AR イベントの外部データソースのこと。ここでは、プロバイダーは、このデータソースを Unity MARS に実際にパイプするスクリプトを指します。
プロキシ /Proxy
MARS のプロキシは、それが現実世界に存在するものを表していることを指定するためにゲームオブジェクトに追加されるコンポーネントです。プロキシは自身にアタッチされている 条件 のセットによって定義されます。MARS データベース はプロキシを使用して、データを条件と照合します。
プロキシグループ /Proxy Group
プロキシグループは、2 つ以上のプロキシゲームオブジェクトのコレクションを子ゲームオブジェクトとして含むコンポーネントです。プロキシグループが一致するためには、各プロキシですべての条件が一致するか、いずれの条件にも不一致が発生しないことが必要です。このゲームオブジェクトにさらに 関係 を追加することで、これらのプロキシの照合に使用されるデータに対して、追加の Rule (ルール) や制約を課すことができます。
クエリ /Query
クエリとは、特定の条件セットに一致するものを検索するための、データベースに対する永続的リクエストです。これらの条件に一致するものが見つかると、クエリは指定された一連のアクションを実行します。各プロキシまたはプロキシグループは、アクティブになるとクエリを実行しますが、ほとんどの場合、ユーザーがクエリを直接扱うことはありません。
クエリの状態 /Query state
プロキシまたはプロキシグループが含まれるデータベースのデータとの照合プロセスの段階を指します。
評価設定 /Rating configuration
評価設定は、条件/関係 の最適化の程度を制御する 2 つの数値で構成されます。Center (0.001 から 0.999 の数値) または Dead Zone (0 から 0.99 の数値) として定義できます。
- Center: 考えられる一致の統計的分布内で、最適な一致と言える部分を示します。
- Dead Zone: 理想的な中心点の周辺の統計的分布のうち、どの程度までが理想的一致と見なされるかを示します。
Reasoning API
Reasoning API は、MARS データベース全体を操作できるユーザースクリプトで構成される高度な機能で、一度に 1 つのトレイトではなく、同時に複数のトレイトを処理できます。これにより、スクリプトは高度な推論を行い、データの結合、作成、変更を行うことができます。
記録データ /Recorded data
記録データとは、現実世界から取り込んで保存されたデータ。合成データセットではなく、現実世界のデータセットを参照および再生します。記録データは、コンパニオンアプリやエディターのフィードから取得できます。
関係 /Relation
2 つの子 プロキシ に一致する現実世界のデータ間の関係を評価する プロキシグループ の制約。
レプリケーター /Replicator
Replicator コンポーネントを備えたゲームオブジェクトを指します。レプリケーターにはプロキシまたはプロキシグループのどちらかが含まれます。レプリケーターは、既存のゲームオブジェクトがデータベースのデータと一致すると、指定した制限値に達するまで新しいゲームオブジェクトを継続的に作成します。レプリケーターは実質的にはプロキシとプロキシグループを "Every 向け*" ルールに変えるものです。
必須の子 /Required children
プロキシグループが一致を維持するために一致を維持する必要がある、プロキシグループ の子 プロキシ。
セマンティックタグ /Semantic tag
セマンティックタグとは、名前がデータそのものであるタイプの トレイト です。クエリを使用すると、セマンティックタグが存在するかどうかを確認できます。
シミュレーションモード /Simulation Mode
シミュレーションモードによって、シミュレーションの動作方法が変わります。ビルトイン値は以下のとおりです。
- Synthetic (合成): Unity MARS 内部でモデル化された環境を操作する場合
- Recorded (記録): 記録データに照らして Unity MARS をテストする場合
- Live (ライブ): アタッチされているカメラからの映像フィードなど、ライブデータに照らして Unity MARS をテストする場合
シミュレーションビュー /Simulation View
シミュレーションビューは、合成環境や記録済みのストリーム、ライブデバイスからのフィードなど、さまざまなデータソースに対して実行されるシーンを表示する、Unity MARS のカスタムビューです。このビューでは、データのスナップショットや経時的に変化するデータに対して、シーンがどのように反応するかを示すことができます。編集モードと再生モードのハイブリッドモードで動作するため、少しずつ再生しながら同時にコンテンツの編集も可能です。
合成データ /Synthetic data
現実世界のできごとから生成されたデータではなく、人工的に作成されたデータ。Unity MARS が合成データを使用する理由はさまざまです。現実世界に存在しないデータをアプリケーションで使用する必要があるようなユースケースでは、合成データの方が適しています (例えば、アプリケーションで壁が必要だが、デバイスが野原にある場合に、合成データを使用して壁を配置できます)。
合成データを利用することで、さまざまな条件を、デザインしやすい単一のセマンティックデータとしてまとめて作成できます (例えば、キャラクターがスポーンする合成ポイントなど)。
合成環境 /Synthetic environments
あたかもデバイスによって読み取られた物理環境であるかのように、MARS データベースにデータを追加する仮想環境。これらの環境は、Environment Manager によって読み込まれるプレハブです。
合成オブジェクト /Synthetic object
Unity MARS が現実世界のオブジェクトのように扱うゲームオブジェクト。これらのゲームオブジェクトがアクティブになると、データベース にカスタムデータが書き込まれます。
合成オブジェクトには以下の用途があります。
- この仕組みを通じて、合成環境 は現実世界の環境と同じように Unity MARS と相互作用します。
- このシミュレーションされた合成オブジェクトは、現在使用できるものよりも詳細なセマンティックタグを指定するなどの方法で、将来のプラットフォーム機能をエミュレートするために使用できます。
- 合成データを利用することで、さまざまな条件を、デザインしやすい単一のセマンティックデータにまとめて作成できます (例えば、キャラクターがスポーンする合成ポイントなど)。
トレイト /Trait
名前とタイプで定義される、プロキシの名前付きプロパティ。名前にはデータそのものを指定することができ、任意のビルトインタイプまたはカスタムタイプとペアになります。また、タイプや値とは無関係に、名前 (つまりセマンティックタグ) でトレイトが存在するかどうかをテストすることも可能です。
トレイトによって、以下が定義されます。
- MARS データベース内のすべてのデータの格納方法
- アクションと条件によって読み取られるデータ
- プロバイダーと合成オブジェクトが、データベースにデータを書き込む方法
トレイトの要件 /Trait requirement
特定の トレイト と、それが必須であるかどうかを示す true/false 値を指定します。
Unity MARS
MARS は Mixed & Augmented Reality Studio の略: Unity の拡張機能とコンパニオンアプリを組み合わせたもの。Unity MARS を使用すると、複数のデジタルデバイスで利用でき、現実世界のデータに適合するアプリケーションを作成できます。
ワールドスケール /World scale
Unity MARS が、現実世界や合成環境を基準にしてデジタルコンテンツを大きく見せたり小さく見せたりするために使用するシステムとスケールファクターの両方を指します。ゲームオブジェクトをスケールして極端に大きくしたり小さくしたりすることは、Physics やナビメッシュなど多くの Unity システムでは適切に機能しないため、多くの場面でワールドスケールが必要になります。回避策として、ゲームオブジェクトを n スケールで処理し、スケール比でレンダリングできます。