cesium for unreal源码编译学习(三)完整步骤

折腾了两周,总算是编译出来;

先说明安装环境:

  1. the Unreal Engine is 4.26.1;
  2.  cmake is 3.23.0-rc2;
  3. VS2019和VS2017并存;
  4. 一个建议,安装VS时,不要选择移动端,否则会从goole官方去下安卓的文件,导致安装VS失败;

参照官方文档:

​​​​​​https://github.com/CesiumGS/cesium-unreal/blob/main/Documentation/developer-setup-windows.md

1 尝试过使用vs2017和2019分别编译,但都未成功;最后一次卸载掉vs2017,再安装2019进行编译(有vs2017也不要卸载,保留,后续会用到);

cmake -B build -S . -G "Visual Studio 16 2019" -A x64

这里不要参照第一篇文章中的,默认会编译成32位的应用;如果打开之后

显示的是32,可以通过配置管理器增加x64的配置 

2 执行

cmake --build build --config Release --target install

中间会遇到 936无法保存,编码错误,使用VS的高级保存设置,修改对应的头文件编码为GB2312,在编码中的第一项;再次运行

3 这步执行完成后,执行以下代码;

第一个参数是 UE的安装路径下的文件;第二个参数是下载的源码路径;第三个参数是输出的文件夹目录;

"C:\software\ue4\engine\UE_4.26\Engine\Build\BatchFiles\RunUAT.bat" BuildPlugin -Plugin="C:\Dev\cesium-unreal-samples\Plugins\cesium-unreal\CesiumForUnreal.uplugin" -Package="C:\project\CesiumForUnreal" -CreateSubFolder -TargetPlatforms=Win64

执行此步过程中遇到了Could not find NetFxSDK install dir; this will prevent SwarmInterface from installing.  Install a version of .NET Framework SDK at 4.6.0 or higher.

此处下载安装Download .NET Framework 4.8 Developer Pack Offline Installer;

.net 4.8的dev pack,不是runtime;

另外遇到第一步写的缺少vs2017环境;我又重新安装vs2017;

最终编译通过;

4:这步就是把生成的插件拷贝到工程目录的Plugins下(单个工程生效);或者拷贝到UE安装目录下的插件目录即可生效;

### 在Unreal Engine中使用Cesium插件加载高德地图数据 #### 安装和配置Cesium for Unreal 为了在Unreal Engine项目中集成并利用Cesium来显示来自高德的地图影像,需先完成Cesium for Unreal的安装。 可以通过Epic Games Launcher中的Twinmotion部分找到Cesium for Unreal插件,并按照提示进行安装。也可以访问官方GitHub仓库获取最新版本源码编译安装[^1]。 #### 配置高德地图服务 由于Cesium默认支持多种在线地理信息服务提供商(如Bing Maps, ArcGIS Online),而直接对接中国本土服务商如高德地图则需要额外设置: 1. **申请API Key** 访问高德开放平台注册账号并创建应用以获得合法使用的密钥。 2. **自定义图层URL模板** 构建符合Cesium预期格式的Tile Map Service(TMS)或Web Map Tile Service(WMTS)请求链接字符串。对于高德而言,通常形式如下: ``` https://webrd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z} ``` 3. **实现ImageryProvider类** 编写继承于`Cesium::CustomUrlTemplateImageryProvider`的具体子类,在其中重载虚函数指定上述定制化参数。 ```cpp #include "Cesium/CustomUrlTemplateImageryProvider.h" class AGaodeMapProvider : public CustomUrlTemplateImageryProvider { public: AGaodeMapProvider(const FString& apiKey) : CustomUrlTemplateImageryProvider( TEXT("https://webrd0{x}.is.autonavi.com/appmaptile?" "lang=zh_cn&size=1&scale=1&style=7&x={X}&y={Y}&z={Z}"), /*minLevel=*/0, /*maxLevel=*/19, /*tilingScheme=*/std::make_shared<CesiumGeospatial::WebMercatorTilingScheme>(), /*rectangle=*/Rectangle::MAX_VALUE, /*apiKey=*/apiKey) {} }; ``` 4. **实例化与挂接至场景视图** 最后一步是在UE编辑器内或者蓝图脚本里新建该提供者的实体对象并将之绑定到当前世界的可视化组件上。 ```blueprint // 假设已在C++侧暴露了AGaodeMapProvider给Blueprints GaodeMapProvider = NewObject<AGaodeMapProvider>(this,TEXT("MyGaodeLayer")); if(GaodeMapProvider){ GaodeMapProvider->SetupPlayerInputComponent(PlayerController); UWorld* world = GetWorld(); if(world && CesiumEditorUtils::IsCesiumForUnrealEnabled()){ ACesium3DTileset* tileSet = ACesium3DTileset::AddNew(this,FVector(0.f)); tileSet->SetImageryProvider(GaodeMapProvider); } } ``` 通过以上步骤即可实现在基于Unreal Engine的游戏或其他虚拟环境中调用高德地图作为底图资源展示的目的。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值