本文介绍 UE4 中通过 Cesium 插架加载本地歪斜摄影模型。Cesium for Unreal 插件运行在 UE 环境何总运行 Cesium,这样不便做一个 GIS 利用。
装置 Cesium for Unreal 插件
在 UE 空幻商城中,搜寻“Cesium for Unreal”,而后下载插件,下载实现后,能够点击装置到引擎:
能够装置到引擎,须要 UE 4.26 以上,笔者应用 4.27 版本,也能够用于 UE5.
启用插件
关上 UE 编辑器,创立一个我的项目,点击菜单: 编辑 -> 插件,搜寻 Cesium for Unreal
点击启用。
启用之后可能须要重启
增加 Cesium SunSky
Cesium SunSky 扩大了 UE 自身的 SunSky,针对 Cesium 场景做了优化。
无关细节此处不具体阐明。
增加 Dynamic Pawn
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 定位(解决看不到)
CesiumGeoreference 用于设置坐标系的原点。
鼠标抉择增加的 3d Tile 模型,按 F 建聚焦该对象,而后,抉择 CesiumGeoreference 对象,点击按钮“Place CesiumGeoreference Origin here”能够把原点定位到加载的模型处。
须要留神的一个选项是“Keep World Origin Near Camera”,如果启用改选项,在运行态下,世界坐标原点会随着镜头的变动而变动,从而导致所有的 actor(非 Geo 对象)的坐标都产生变动。个别倡议在小场景下,敞开次选项。该选项的目标是在大场景下,防止对象的坐标值很大,超过 UE 能够可能存储的精度。
调整 CesiumSunSky(解决一片黑)
如果场景是黑的或者较暗,可能是因为歪斜摄影地区是夜间,调整 CesiumSunSky 对象上的“Solar Time”属性。
至此,模型加载实现,如下图示。
无关 3D Tile 的一些阐明
Maximum Screen Space Error
加载 3d title 模型后,咱们可能看到模型的精度很差。
这个是因为 Maximum Screen Space Error 造成的, Maximum Screen Space Error默认值是 16。 Maximum Screen Space Error用于管制模型的精度,数值越大,精度越小,性能越好;反之,精度越大,性能越差。
选中 3D title 模型,在 细节面板下 ->Level of Detail -> Maximum Screen Space Error 能够设置值。
把值改为 2 后,看到的成果:
Enable Frustum Culling
改选项示意是否启用 镜头视椎体裁剪。如果启用,镜头看不到的 tile 将会被暗藏显示,当镜头看到的时候,又会从新加载,这就会导致,用户总是会看到 tile 从无到有的加载过程。
然而如果不启用,可能会导致很多 tile 在内存中不会被开释,从而导致内存溢出。
参考文档
https://cesium.com/learn/unreal/unreal-quickstart/
https://www.cnblogs.com/bimgis/p/16457060.html