本文介紹UE4中通過Cesium插架載入本地傾斜攝影模型。Cesium for Unreal外掛執行在UE環境何總執行Cesium,這樣方便做一個GIS應用。
在UE 虛幻商城中,搜尋 「Cesium for Unreal」, 然後下載外掛,下載完成後,可以點選安裝到引擎:
可以安裝到引擎,需要UE 4.26以上,筆者使用4.27版本,也可以用於UE5.
開啟UE編輯器,建立一個專案,點選選單: 編輯->外掛,搜尋 Cesium for Unreal
點選啟用。
啟用之後可能需要重啟
Cesium SunSky擴充套件了UE本身的SunSky,針對Cesium場景做了優化。
DynamicPawn 是外掛客製化的基於Cesium場景的一個Pawn物件,賦予了基於地球的運動方式,此處也不詳細說明。
實際上DynamicPawn不是必須的,也可以自己寫一個Pawn 類來進行操作。但是DynamicPawn可以進行碰撞檢測,讓鏡頭總是在地球(或者傾斜攝影的表面運動),如果是挺大場景,可能這一點比較重要。
對於較小場景,可以自己進行Pawn類的編寫適合自己的操作習慣。
首先新增一個Blank 3D Tiles Tileset 到場景中,外掛將自動新增Cesium Georeference、CesiumCameraManager、CesiumCreditSystemBPM等其它三個控制元件(如果原先沒有)
點選該物件,在該物件的詳情頁面設定載入的傾斜攝影路徑,
在【細節】面板中,查詢「Cesium」類別。
Source可以填寫傾斜攝影的來源。來源可以是Cesium ion,也可以From Url。
如果需要使用Cesium ion的線上資料,可以登入Cesium ion賬戶。通過點選【Add】按鈕,彈出【Cesium ion Assets】索引標籤,內部列表資料與線上Cesium ion賬戶內【My Assets】索引標籤中的資料一樣。因為Cesium ion資料伺服器在國外,考慮到資料使用的安全性以及頻寬流量,本文主要實踐載入本地部署資料。
本地部署的時候,source選擇From Url。
而From Url又可以是本地格式和網路格式。(本地格式:file:///C://tileset.json。網路URL地址格式:http:///tileset.json。)
比如筆者的案例中,使用本地檔案載入,輸入如下所示:
CesiumGeoreference用於設定座標系的原點。
滑鼠選擇新增的3d Tile模型,按F建聚焦該物件,然後,選擇CesiumGeoreference物件,點選按鈕「Place CesiumGeoreference Origin here」可以把原點定位到載入的模型處。
需要注意的一個選項是 「Keep World Origin Near Camera」,如果啟用改選項,在執行態下,世界座標原點會隨著鏡頭的變化而變化,從而導致所有的actor(非Geo物件)的座標都產生變化。 一般建議在小場景下,關閉次選項。 該選項的目的是在大場景下,避免物件的座標值很大,超過UE可以能夠儲存的精度。
如果場景是黑的或者較暗,可能是因為傾斜攝影地區是夜間,調整CesiumSunSky物件上的「Solar Time」屬性。
載入3d title模型後,我們可能看到模型的精度很差。
這個是因為** Maximum Screen Space Error造成的, Maximum Screen Space Error預設值是16。 ** Maximum Screen Space Error用於控制模型的精度,數值越大,精度越小,效能越好;反之,精度越大,效能越差。
選中3D title 模型,在 細節面板下->Level of Detail -> Maximum Screen Space Error可以設定值。
改選項表示是否啟用 鏡頭視椎體裁剪。 如果啟用,鏡頭看不到的tile 將會被隱藏顯示,當鏡頭看到的時候,又會重新載入,這就會導致,使用者總是會看到tile從無到有的載入過程。
但是如果不啟用,可能會導致很多tile在記憶體中不會被釋放,從而導致記憶體溢位。
https://cesium.com/learn/unreal/unreal-quickstart/
https://www.cnblogs.com/bimgis/p/16457060.html
關注公號「ITMan彪叔」 可以新增作者微信進行交流,及時收到更多有價值的文章。