多個(gè)用戶佩戴HoloLens就可以使用全息體驗(yàn)共享特性來獲取集合視野单绑,并且,可以與固定在空間中某個(gè)位置的同一全息對(duì)象進(jìn)行交互操作曹宴。這些都是通過空間錨共享來實(shí)現(xiàn)的搂橙。
為了在應(yīng)用中使用空間錨共享,必須要在AppxManifest文件中啟用SpatialPerception性能笛坦。
空間錨共享
命名空間:UnityEngine.VR.WSA.Sharing
類型:WorldAnchorTransferBatch
分享一個(gè)WorldAnchor区转,必須建立空間錨共享。在HoloLens掃描空間環(huán)境后版扩,用戶可以通過手動(dòng)或者編程來選擇建立一些空間錨來共享場(chǎng)景废离。空間錨對(duì)象的信息的可以被序列化并傳輸分享給其他HoloLens設(shè)備礁芦,每一個(gè)設(shè)備都可以反序列化這些信息蜻韭,并可以在空間中定位到此空間錨的位置。為了確笔量郏空間錨分享能起作用肖方,每個(gè)設(shè)備都需要掃描周邊足夠的空間,使得空間錨代表的點(diǎn)能在空間中被正確識(shí)別未状。
設(shè)置SpatialPerception性能
為了使應(yīng)用能夠使用空間映射數(shù)據(jù)俯画,SpatialPerception性能必須被啟用。
可以通過使用以下步驟開啟該功能:
1. 在Unity編輯器中司草,進(jìn)入Player Settings選項(xiàng)(Edit > Project Settings > Player)
2. 點(diǎn)擊Window Store選項(xiàng)卡
3. 展開Publish Settings選項(xiàng)活翩,并在Capabilities列表勾選SpatialPerception選項(xiàng)
注意:如果你已經(jīng)把Unity項(xiàng)目導(dǎo)出為Visual Studio項(xiàng)目,你需要重新導(dǎo)出修改后的項(xiàng)目到新文件夾或者手動(dòng)在Visual Studio中修改AppxManifest應(yīng)用清單翻伺。
Setup
下面展示的示例代碼會(huì)在開始共享空間錨之前進(jìn)行一些初始化操作:
Exporting導(dǎo)出
導(dǎo)出分享一個(gè)空間錨材泄,我們只需要一個(gè)WorldAnchor。具體的操作步驟如下:
1. 創(chuàng)建一個(gè) WorldAnchorTransferBatch
2. 添加傳輸空間錨對(duì)象
3. 開始導(dǎo)出數(shù)據(jù)
4. 當(dāng)數(shù)據(jù)可用時(shí)吨岭,處理 OnExportDataAvailable事件
5. 處理導(dǎo)出完成事件 OnExportComplete
WorldAnchorTransferBatch對(duì)象會(huì)將空間錨數(shù)據(jù)導(dǎo)出為bytes數(shù)據(jù):
當(dāng)導(dǎo)出的數(shù)據(jù)可用時(shí)拉宗,將bytes數(shù)據(jù)發(fā)送至客戶端或緩沖區(qū),使用任意方法將數(shù)據(jù)發(fā)往另一臺(tái)設(shè)備:
當(dāng)數(shù)據(jù)導(dǎo)出完成辣辫,如果我們傳輸或者序列化數(shù)據(jù)失敗旦事,就需要告訴客戶端放棄此段錯(cuò)誤的數(shù)據(jù)。如果序列化成功急灭,需要告訴客戶端可以使用導(dǎo)入使用此數(shù)據(jù):
Importing 導(dǎo)入
設(shè)備在接收到bytes數(shù)據(jù)后姐浮,我們同樣可以使用WorldAnchorTransferBatch對(duì)象將我們的全息對(duì)象放置到數(shù)據(jù)代表的物理位置上。注意:導(dǎo)入有時(shí)會(huì)出現(xiàn)短暫失敗葬馋,需要重試:
雖然可以通過導(dǎo)入遠(yuǎn)程數(shù)據(jù)卖鲤,將全息對(duì)象固定在與其他用戶相同的位置上肾扰,但是全息對(duì)象在Unity坐標(biāo)系中位置可能與其他用戶不同。
示例:HoloToolkit Sharing
你可以在GitHub上的HoloToolkit-Unity 中使用 Sharing目錄下的prefab來集成此特性