专栏/CesiumforUnreal TerrainExaggeration实现笔记

CesiumforUnreal TerrainExaggeration实现笔记

2024年11月19日 02:52--浏览 · --点赞 · --评论
粉丝:4117文章:27

原教程:

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 的修改

read-normal-img

3 .2 QuantizedMeshLoader.cpp 的修改

read-normal-img

read-normal-img

3 .3 LayerJsonTerrainLoader.cpp的修改

(1)requestTileContent的定义中的修改

read-normal-img

read-normal-img

(2)requestTileContent的调用中的修改

read-normal-img

3.4 TilesetOptions.h 中对 struct TilesetContentOptions的修改

read-normal-img

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失败。

read-normal-img

2 Cesium3DTileset.h 的修改

read-normal-img

3 Cesium3DTileset.cpp 的修改

read-normal-img

4 编译项目

选中 Cesium项目,比如这里叫CesiumCode,右键生成

三、运行结果

1 Terrain Exaggeration为1.0

read-normal-img

2 Terrain Exaggeration为0.0

read-normal-img

3 Terrain Exaggeration为5.0

read-normal-img

四、问题和解决方法

(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

read-normal-img

(3)原因

待定

投诉或建议