WLT+ASA:支援軟體的概觀
IBinder
- 將 SpacePins 系結至 Azure Spatial Anchors
IBinder
介面位於中心,由SpacePinBinder類別在這裡實作。 SpacePinBinder 是 Unity Monobehaviour,可以從 Unity 的 Inspector 或腳本進行設定。
每個 IBinder
都會 命名,因此單 IBindingOracle
一可以管理多個 IBinder
的系結。
IPublisher
- 讀取和寫入雲端的空間錨點
介面 IPublisher
會處理將空間錨點發佈至雲端,然後在稍後的會話或其他裝置上擷取它們。 IPublisher
這裡使用 PublisherASA 類別實作。 使用 Azure Spatial Anchors 擷取並擷取目前實體空間中的數據。
發佈空間錨點時,會取得雲端錨點標識碼。 此標識符可用於稍後的會話或其他裝置上,以擷取目前座標系統中雲端錨點的姿勢,以及儲存的任何屬性。 系統一律會新增屬性,以識別雲端錨點的相關聯 SpacePin。
請注意 IPublisher
, 和 PublisherASA 不知道 SpacePins 的任何資訊。 IPublisher
不知道或關心雲端錨點數據將執行哪些工作。 它提供簡化的可等候介面來發佈和擷取雲端錨點。
讀取與尋找
如果已知雲端錨點的標識碼,雲端錨點可能會由其標識符擷取。 此方法是擷取雲端錨點的最強固方式。 方法是 Read。
不過,有一些有趣的案例,裝置不知道區域內雲端錨點的標識碼,但如果可以擷取雲端錨點,其空間數據和屬性會結合以提供足夠的資訊,使其很有用。
尋找 在裝置周圍搜尋雲端錨點的區域,並傳回任何能夠識別的區域。 此程序稱為 粗略搬遷。
IBindingOracle - 共用雲端錨點標識碼
IBindingOracle 介面提供在 SpacePins 與特定雲端錨點之間保存和共用系結的方法。 具體而言,它會保存space-pin-ID/cloud-anchor-ID 配對,以及的名稱 IBinder
。
Oracle 的介面非常簡單。 若為 IBinder
,它可以 放置IBinder
的系結,也可以 取得 這些系結。 放置存放區,並取得擷取它們。 儲存和擷取的機制會留給實作 IBindingOracle 介面之具體類別的實作。
此範例會實作可能最簡單的 IBindingOracle,格式為 SpacePinBinderFile 類別。 在 Put 上,它會將 的系結寫入 IBinder
文字檔。 在 Get 上,它會從文字檔讀取它們(如果有的話),並將其饋送至 IBinder
。
ILocalPeg - Blob 標記實體空間中的位置
ILocalPeg 介面是裝置本機錨點的抽象概念。 在更完美的世界中,必要的 ILocalPegs 將由 內部管理 IPublisher
。 不過,當裝置位於錨點姿勢附近時建立時,裝置本機錨點的運作效果會更好。 IPublisher
唯一知道裝置本機錨點在需要時應放置的位置,而不是在建立它們的最佳時間。
SpacePinASA 知道何時建立其本機錨點的最佳時間。 當 SpacePin 的操作結束及其姿勢集時,SpacePinASA 會要求 IPublisher
在 所需的姿勢上建立不透明的本機釘 選。 SpacePinBinder 接著會從 SpacePinASA 提取 ILocalPeg,並將它傳遞至 IPublisher
,以用於 建立雲端空間錨點。