WLT+ASA: サポートするソフトウェアの概要
IBinder
- SpacePin の Azure Spatial Anchors へのバインド
IBinder
インターフェイスが中央にあり、ここでは SpacePinBinder クラスよって実装されています。 SpacePinBinder は、Unity の Monobehaviourで、Unity の Inspector かスクリプトから構成できます。
各IBinder
はという名前のであるため、1 つのIBindingOracle
で複数のIBinder
のバインドを管理できます。
IPublisher
- 空間アンカーのクラウドへの読み取りと書き込み
IPublisher
インターフェイスは、空間アンカーをクラウドに公開し、後のセッションまたは他のデバイスで取得します。 IPublisher
は、ここでは PublisherASA クラスで実装されます。 現在の物理空間におけるポーズ データは、Azure Spatial Anchors を使用してキャプチャおよび取得されます。
空間アンカーが発行されると、クラウド アンカー ID が取得されます。 この ID は、クラウド アンカーのポーズを現在の座標系で取得するために、後のセッションまたは他のデバイスで使用され、その ID と共に保存されているプロパティを取得できます。 システムは、クラウド アンカーに関連付けられた SpacePin を識別するプロパティを常に追加します。
注意すべきは、IPublisher
も、PublisherASAも、SpacePins ついて何も知られていないということです。 IPublisher
では、クラウドのアンカー データを使用して何が行われるかは認識されません。 クラウド アンカーの発行と取得を行うための、簡単な待機可能なインターフェイスを提供します。
読み取り対検索
クラウド アンカーの ID がわかっている場合、その ID によってクラウド アンカーが取得される可能性があります。 このメソッドは、クラウド アンカーを取得する最も信頼性の高いな方法です。 メソッドは Read です。
ただし、エリア内のクラウド アンカーの ID がデバイスで認識されないという興味深いシナリオがありますが、クラウド アンカーを取得できる場合、空間データとプロパティを組み合わせて、それらを役に立たせるだけの情報を提供します。
Find は、デバイスの周囲にあるクラウド アンカーを検索し、特定できたものを返します。 この処理は、粗い再局在化と呼ばれています。
IBindingOracle - クラウド アンカー ID の共有
IBindingOracle インターフェイスは、SpacePin と特定のクラウド アンカーとの間のバインドを保持して共有する手段を提供します。 具体的には、空間ピン ID/クラウド アンカー ID のペアをIBinder
の名前とともに保持します。
オラクルのインターフェイスは非常に簡単です。 IBinder
を指定すると、それは、IBinder
のバインドをPutするか、Getします。 それらを格納し、Get はそれらを取得します。 ストレージと取得のメカニズムは、IBindingOracle インターフェイスを実装する具象クラスの実装に任されています。
このサンプルでは、可能性のある最も単純な IBindingOracleを SpacePinBinderFile クラス という形式で実装します。 Putt では、それは、IBinder
のバインドをテキストファイルに書き込みます。 Get では、テキストファイル (使用可能な場合) からそれらを読み取り、IBinder
にフィードします。
ILocalPeg - 物理的空間での位置を示すブロブ
ILocalPeg インターフェイスは、デバイスのローカル アンカーを抽象化したものです。 より完璧な世界では、必要とされる ILocalPeg が、IPublisher
によって内部的に管理さます。 ただし、デバイスのローカル アンカーは、デバイスがアンカーのポーズの近くにあるときに作成すると、はるかに良くなります。 IPublisher
は、デバイスのローカル アンカーを作成する最適なタイミングではなく、必要なときに配置する必要がある場所のみを認識します。
SpacePinASA は、ローカル アンカーを作成するのに最適なタイミングを認識します。 SpacePin の操作が終了し、そのポーズが設定されると、SpacePinASA IPublisher
はに希望のポーズで不透明なローカルペグを作成するよう要求します。 SpacePinBinder は、SpacePinASA から ILocalPeg を取り出し、IPublisher
に渡してクラウドの空間アンカーの作成に使用します。