創建與實景精確對齊的 3D 內容
這篇文檔將介紹如何將虛擬物體準確地擺放在現實空間的某個位置,在 AR 體驗中與現實空間精確對齊。
開始之前
- 參考文件 我的定位庫可以使用了嗎? 確認定位庫已正確創建並添加 Mega Block。
- 在場景中 添加 Mega 跟蹤目標。
- 準備好 Unity 項目裡要使用的 3D 資產。
附註
以下內容及工具僅適用於使用 EasyAR Mega 開發 Unity 應用的過程。
如果您在開發小程序,請參考 使用 Unity 編輯器創建並上傳標注(小程序開發)。
如果您不在開發 Unity 應用,但希望查看 Mega 建圖結果,請參考 Mega 使用指南中的 預覽3D 實景網格。
如果您不在開發 Unity 應用,但需要模擬運行查看定位效果,請參考 Mega 使用指南中的 模擬運行效果預覽。
本文內容需要工程中已經導入如下 Unity 包:
com.easyar.sensecom.easyar.mega
Block 實景數據
在 Mega 開發中,可以使用多種實景數據來輔助擺放 3D 內容:
Block 網格模型

全景圖(含空間模型遮擋)

附註
部分數據不支援全景圖。
LCC 3D 高斯潑濺

附註
LCC 3D 高斯潑濺數據只有在使用其域設備採集並完成建圖後的使用場景中才可用。
啟用編輯器工具
首先需要在編輯器中 添加 Mega 跟蹤目標,然後選擇跟蹤目標,點擊 Create Editor Tool 按鈕。

提示
如果應用需要在腳本中創建跟蹤目標而非編輯器內創建,可以在編輯器內擺放完成後,把跟蹤目標和/或其子物體記錄下來,在運行時通過腳本配置跟蹤目標並把子物體掛載到跟蹤目標下。
檢查服務信息並連接服務。

重要事項
連接前需要檢查 API Key 的權限。
- 如果服務的 Type 是
Block,需要保證使用的 API Key 有權限訪問Mega Block服務,以及SpatialMap服務。 - 如果服務的 Type 是
Landmark,則需要保證 API Key 有權限訪問Mega Landmark服務。

權限不足時,會看到連接服務驗證失敗的錯誤信息。

如果 target 數據來源已正確 配置,正常連接服務之後,可以看到數據更新時間及 block 編輯器數據的控制界面。

提示
如果 target 數據來源留空,正常連接服務之後,可以看到服務中的 block 數據列表,選擇需要使用的 block 之後同樣可以進入 block 編輯器數據的控制界面,且 target 數據來源會被自動填寫。

編輯器工具的數據存儲於 EasyAR.Mega.EditorTool 節點下,刪除該節點等價於刪除編輯器工具的數據。

注意
不能直接修改 EasyAR.Mega.EditorTool 節點的內容,尤其不能修改該節點的 Transform,否則可能導致編輯器工具無法正常工作或跟蹤時內容顯示位置錯誤。
載入 block 模型
點擊 block 資料下的第一個選擇框,這會啟動 block 編輯器資料的載入過程,載入後可以在 Scene 視窗中看到當前 block 的 mesh。

提示
- block mesh 是與 block 追蹤目標空間對齊的,可以直接在模型上擺放 3D 內容。
- block mesh 會根據相機位置切換 LOD,使用時需保持聯網以避免 LOD 切換失敗。
- block mesh 儲存於工具節點下,僅存在於編輯器模式,不會被打包進最終應用。
將 3D 內容掛載至 block 節點下
加載 block 模型後,將 3D 內容掛載至場景中的 Block 節點下,作為其子節點。

注意
- 3D 物件不能擺放在
EasyAR.Mega.EditorTool節點之下,這個節點僅用於編輯器工具,在部分情況會被自動刪除或重建。
重要事項
- 3D 物件必需擺放在 block 節點之下,以確保在運行時虛擬內容的渲染位置是正確的。
精確擺放 3D 內容
透過完成以下步驟可以將虛擬內容準確地擺放在現實空間中。
根據 block 網格模型擺放
在場景中對著 block mesh 調整 3D 內容的位置和旋轉,將其調整至期望的位置和朝向。
提示
- 編輯器進入 play 模式後,block mesh 仍然可用,但不會根據相機位置切換 LOD。
- block mesh 存儲於工具節點下,僅存在於編輯器模式,不會被打包進最終應用。
[可選] 根據全景圖擺放
點擊 Panorama Preview Marker 選擇框可以顯示全景標記。

附註
- 部分資料不支援全景圖。
- 全景圖清晰度預設非高清,如有需要需聯繫商務獲取更高清晰度的全景圖。
點擊任意一個全景標記,就可以在其位置進行全景下的擺放。您可以通過點擊不同的全景標記切換全景,以確認 3D 內容在不同視角下的位置都是準確的。

提示
- 使用全景標記擺放內容時,基於 mesh 的空間模型遮擋依舊有效。
- 編輯器進入 play 模式後,該功能仍然可用,但基於 mesh 的空間模型遮擋精度受 LOD 切換禁用影響。
- 全景圖標記及全景圖資料存儲於工具節點下,僅存在於編輯器模式,不會被打包進最終應用。
[可選] 根據 LCC 3D 高斯潑濺擺放
附註
本段內容適用於使用其域設備採集並完成建圖後的使用場景。使用其它設備建圖結果中不包含 LCC 3DGS 數據。
如果您使用了 LCC 3D 高斯潑濺(其域 LCC)功能,可以對照 3DGS 調整模型位置。LCC 數據的使用可以參考 加載 LCC 數據並與 Mesh 對齊。
實景數據缺陷對內容擺放的影響
如果加載的 Block 模型不水平怎麼辦
在 Hierarchy 面板中選擇需要調整的 block 節點,在 Inspector 面板中修改 Rotation 直到模型的朝向在 Unity 編輯器中看起來正確。
block 節點在世界坐標系下的 Transform 不會影響 block 的本地坐標系,也因此不會影響作為 block 子節點 3D 內容的渲染結果。它的 Transform 和最終的顯示效果無關。
注意
不能修改 block 節點下 EasyAR.Mega.EditorTool 的 Transform,否則可能導致編輯器工具無法正常工作或跟蹤時內容顯示位置錯誤。
如果加載的 Block 模型有破碎,缺損的部分怎麼辦
在三維重建過程中,若受採集視角覆蓋不全的影響,生成的密模型中可能會出現破碎或缺損的部分。

面對不完整的模型,若破碎/缺損部分的 3D 內容對齊精度要求並不高,可以通過點擊全景標記對照全景圖的方式來擺放 3D 內容。之後可以通過點擊附近不同的全景標記位置來驗證效果。

若破碎/缺損部分的 3D 內容對齊精度要求非常高,則需要通過補充更新或無損全量更新進行地圖的補充或更新。一般來說這樣的區域意味著採圖過程中沒有覆蓋,在這樣的區域內部 Mega 定位效果會受到影響,僅在編輯器中對齊 3D 內容是不夠的。
後續步驟
- 透過使用 session 驗證工具模擬運行進一步驗證擺放的準確性。
- 為場景添加準確的環境遮擋以增強 AR 的真實感。





