原教程:
https://www.bilibili.com/video/BV1x32sYvEVf/?spm_id_from=333.999.0.0&vd_source=27f1b20f264ddbe7d826b860b92e9569
以下是我的实现笔记:
一、Cesium Native 的修改
1 注意
在原来项目1的Plugins里有Cesium for Unreal源码,经过了编译修改。现在把它拷到了项目2的Plugins里,要修改Cesium Native里的代码的话,因为文件路径的变化,Cesium Native .sln的各个项目的属性特别是命令行的设置里还残留原来项目的路径。则要重新构建Cesium Native里的sln,步骤如下:
(1)删除 \Plugins\cesium-unreal-main\extern\bulid 文件夹
(2)重新用Cmake-gui来构建Cesium Native的 .sln,即重新生成\Plugins\cesium-unreal-main\extern\build\cesium-unreal-extern.sln及其相关文件。
2 Cesium Native 中的调用逻辑
(1)LayerJsonTerrainLoader::loadTileContent调用requestTileContent,requestTileContent 调用QuantizedMeshLoader::Load
(2)最终是要在QuantizedMeshLoader::Load中把minimumHeight&maximumHeight,乘上terrainExaggeration。
3 Cesium Native 中的代码修改
3 .1 QuantizedMeshLoader.h 的修改
3 .2 QuantizedMeshLoader.cpp 的修改
3 .3 LayerJsonTerrainLoader.cpp的修改
(1)requestTileContent的定义中的修改
(2)requestTileContent的调用中的修改
3.4 TilesetOptions.h 中对 struct TilesetContentOptions的修改
4 编译Cesium Native
(1) 保存编译,生成解决方案后,选中INSTALL,右键生成。
(2)确认:Plugins\cesium-unreal-main\Source\ThirdParty\include\Cesium3DTilesSelection\TilesetOptions.h是最新的。确认\Plugins\cesium-unreal-main\Source\ThirdParty\lib\Windows-x64\Cesium3DTilesContent.lib 和Cesium3DTilesSelection.lib是最新的。
二、Cesium for Unreal 项目sln的修改
1 重新生成.sln
删除红框的文件,选中.uproject,右键Generate Visual Studio project files,这样就更新了项目的.sln文件,否则无法使用新的 Cesium Native的库,也容易Link失败。
2 Cesium3DTileset.h 的修改
3 Cesium3DTileset.cpp 的修改
4 编译项目
选中 Cesium项目,比如这里叫CesiumCode,右键生成
三、运行结果
1 Terrain Exaggeration为1.0
2 Terrain Exaggeration为0.0
3 Terrain Exaggeration为5.0
四、问题和解决方法
(1)现象
在用UE5.1.1、Cesium for Unreal2.3.0的源码实现后,当Terrain Exaggeration设置为0.0时,DynamicPawn贴近地面漫游时,地形会出现严重闪面现象。
(2)解决方法
一个是Terrain Exaggeration设置为0.1以上来减少闪面效果;另一个是Terrain Exaggeration还是设置为0.0,同时开启Render CustomDepth Pass。
(3)原因
待定