1.Cesium for UE插件编译
2.DEM数字高程数据切片Cesium
3.UE5 ubuntu:环境搭建到打包项目以及部署像素流
4.Cesium地形切片--CTB(cesium-terrain-builder)填坑指南
5.Cesium之简介以及离线部署运行篇
6.UE4项目同时使用Cesium和nDisplay插件打包报错LINK2005 tinyxml2的源码问题解决
Cesium for UE插件编译
Cesium for Unreal作为Cesium Native的扩展,它构建在C++类库基础上,编译提供了强大的源码3D地理空间处理功能,如3D Tiles传输流、编译Gltf解码编码、源码精确的编译表白神器代码源码3D运算和地理坐标系统支持。因此,源码使用Cesium for Unreal前,编译先要编译Cesium Native,源码它还是编译其他渲染引擎插件的基石,如Cesium for Unity和Cesium for Omniverse等。源码
自己编译和定制UE的编译Cesium插件需要一定的技术基础,主要包括:理解并修改C++代码的源码能力,尤其是编译基本的调试技巧;熟悉Visual Studio(VS)环境;掌握HTTP网络协议;具备UE插件开发知识,以及WebGIS的源码基本原理,包括理解WMTS协议和地图加载逻辑。虽然看起来要求较多,但通过逐步教程,这个过程其实并不复杂。
两篇文章详尽地阐述了编译、打包和源码修改的步骤,成功实现在天地图或Geoserver的WMTS上加载。以下是相关的技术资源:
无需关注公众号,直接获取编译教程内容即可。
DEM数字高程数据切片Cesium
在处理DEM数字高程数据切片时,首要解决的环境问题涉及基础环境配置、GDAL版本选择与错误处理。确保使用官方推荐的GDAL版本(2.2),遵循正确顺序安装依赖(sqlite3、lcx 源码 下载tiff、proj),避免遇到如FlushCache override错误等问题。服务代理设置中,需注意GZIP压缩可能导致的RangError错误,推荐不修改源码,以保持性能稳定。
在Cesium场景中加载地形时,通过获取DEM数据、安装切片工具(CTB)并发布服务的流程实现。对于获取DEM数据,推荐使用地理空间数据云,提供国内米精度的数字高程信息。Cesium-terrain-builder作为切片工具,适配Cesium需求,支持加载切片成果至Cesium场景中。
对于小白用户,采用Docker容器安装Cesium-terrain-builder更为便捷,确保版本与仓库分支(master-quantized-mesh)匹配,支持Cesium两种地形格式。安装前,需确保基础环境(如Debian最小环境)与工具准备(版本选择为3.4.2,避免更新至3.8引发错误)。
源码安装时,下载最新源码后需切换至特定分支或应用PR以确保兼容性。编译正式切片服务时,配置响应头中GZIP以优化数据传输。同时,拉链网站源码处理跨域访问问题,确保CORS设置,以实现服务的广泛可用性。
UE5 ubuntu:环境搭建到打包项目以及部署像素流
搭建Ubuntu与UE5.1环境,至打包项目及部署像素流的过程 基于Ubuntu ..3版本,UE5.1源码版或预编译版本(预编译版本可能缺少部分sh文件,需通过源码版链接补全) 具体步骤如下: 系统安装 通过Rufus制作启动盘 开发环境配置 商店安装开发支持软件,Rider快捷栏内方便调用 Rider初始化设置,试用版本选择 安装支持插件,SSH命令行用于远程连接服务器,与win系统通信需额外安装winscp软件 UE5.1安装 使用winscp传输并解压下载的UE5.1安装包,按照官网指示安装toochain 使用终端运行解压命令 下载并替换缺失的toolchain工具包,解决官网版本的不完整性 通过管理员运行指令生成Toolchain,完成UE5.1安装 特殊情况解决 权限不足问题,给文件夹最高权限解决 安装Vulkan驱动,nvidia-smi命令检查安装状态,根据提示安装工具 项目创建与打包 启动UE编辑器,源码版需注意文件夹内容变化与正确运行命令 创建并直接打包蓝图程序或C++项目,解决打包权限错误,给UE文件夹最高权限 创建UE C++ + cesium + WebUI + PixelStreaming + 自定义插件项目,传输、编译、替换信息,编译打包并部署像素流 解决项目加载失败、EngineAssociation问题,调整相关设置后重新编译,解决文件权限与方法重复定义错误,再次编译后运行测试与打包,muduo源码分析最后部署像素流 整个流程涉及系统环境搭建、软件配置、项目创建与打包,直至像素流部署,关键在于正确配置环境、解决权限与依赖问题,确保项目顺利运行与打包。Cesium地形切片--CTB(cesium-terrain-builder)填坑指南
面临全中国Cesium地形数据制作需求,原计划使用cesiumlab进行操作,但处理数千张DEM数据时,面临性能和数据管理问题,导致项目效率低下。
随后发现CTB(cesium-terrain-builder)工具,能有效提升处理速度,且不占用个人办公资源,便于数据处理与后期发布。然而,使用过程中遇到编译问题,GDAL环境部署后,CTB的cmake编译不通过,经排查后发现是GDAL版本与CTB需求不符,调整至GDAL-2.4.4后,问题解决。
在验证CTB使用效果时,发现cesium无法直接使用CTB输出的gzip压缩地形文件,为了解决瓦片压缩问题,通过修改CTB源代码,将CTBZFileOutputStream改为CTBFileOutputStream,virtualbox源码分析完成对输出文件格式的调整,使cesium能直接利用输出结果进行数据展示。
对于多数据同时处理问题,采用Python脚本按顺序处理文件夹下数据,并结合GDAL生成虚拟数据集(vrt)的方法,以简化层.json文件的合并过程,提升工作效率。最终,通过此方案,不仅成功解决了技术难题,还有效提升了项目处理效率,实现自动化与标准化流程。
Cesium之简介以及离线部署运行篇
Cesium 是一款开源的基于JavaScript的3D地图引擎,它使用WebGL渲染,支持多种地图展示形式,包括3D、2D和2.5D,并具备强大的图形绘制、高亮显示和触摸操作功能,兼容大部分浏览器和移动设备。然而,由于其依赖WebGL,因此对浏览器版本有一定的要求。
Cesium的主要优势包括:
1. **高度灵活性**:用户可以自由绘制图形和高亮显示区域。
2. **兼容性**:支持多种浏览器和移动设备,确保了广泛的使用范围。
3. **丰富的API**:提供了丰富的JavaScript API,支持各种地图操作和数据集成。
4. **交互性**:具备良好的触摸支持,提高了用户体验。
然而,Cesium也有一些缺点:
1. **依赖WebGL**:要求浏览器支持WebGL,限制了某些旧浏览器的使用。
2. **资源消耗**:由于3D渲染的需求,Cesium对硬件和网络资源的需求相对较高。
在离线部署和运行Cesium时,首先需要下载并解压Cesium的编译文件(Build文件夹和源代码Source文件夹)到项目目录。然后,在HTML文件中引入Cesium所需的CSS和JS文件,即可在本地运行Cesium的地图应用。
创建地图和展示代码通常涉及以下几个步骤:
1. **初始化Cesium环境**:设置基本的Cesium环境配置,如视图、场景等。
2. **加载数据**:加载地图数据,如地形、道路、建筑物等。
3. **创建地图容器**:在HTML中定义一个用于展示Cesium地图的容器。
4. **集成代码**:将上述步骤的代码集成到HTML文件中,并确保CSS和JS文件正确链接。
通过上述步骤,可以实现在本地环境下离线运行Cesium地图应用,无需依赖网络连接。
UE4项目同时使用Cesium和nDisplay插件打包报错LINK tinyxml2的问题解决
当在UE4项目中同时使用Cesium和nDisplay插件时,可能会遇到LINK tinyxml2的问题。该错误的根源在于,这两个插件各自使用了不同版本的tinyxml2.lib。
为解决此问题,我们只需采取一个简单的步骤:将nDisplay插件中的tinyxml2.lib文件复制并替换Cesium插件中的同名文件。在完成4.版本的打包操作后,项目即可正常运行。
对于UE5.2的情况,解决方案略有不同。首先,需前往GitHub下载与引擎版本匹配的Cesium插件源代码,并将其放置在项目目录的plugins文件夹下。接着,移除市场中下载的Cesium插件,替换项目目录下的tinyxml2.lib文件。完成编译后,项目打包并运行将无误。
具体操作如下:
1. 首先,定位并复制引擎目录中nDisplay插件文件夹内的tinyxml2.lib文件。
2. 接着,找到并替换Cesium插件文件夹内的tinyxml2.lib文件。
3. 此时,项目将成功打包,问题得以解决。
Unity3DCesium加载大地图
Cesium 是一个地球可视化平台,提供数据切片、数据分发、三维可视等功能,支持 JS、Unity、Unreal、O3DE、Omniverse 等平台。为了在 Unity 中加载大地图,首先需要创建一个 3D (URP) 或 3D (HDRP) 项目,确保 Unity Editor 版本为 .3.2f1 或更高,使用 Cesium for Unity 插件。添加注册表信息、下载插件后,连接到 Cesium ion 并添加 Token。接着,添加世界地图,如果地图显示不全,可以调整远裁剪平面的位置。通过添加动态相机,用户可以通过鼠标和方向键控制相机位置和姿态。
对于地图切片,首先下载并安装 CesiumLab,使用客户端进行 fbx 文件的切片操作。如果切片失败,可能是因为文件中包含相机或灯光,使用 Blender 删除后重新导出。生成的切片文件需要 tileset.json 文件进行加载。在 Cesium ion 或 CesiumLab 服务中预览切片,调整方位后,将所需数据加载至 Unity 场景中。本地切片也可以直接加载至场景。
加载切片后,调整地图方位,可通过 CesiumLab 预览参数或直接修改 tileset 文件中的 transform 参数。添加对象时,使用 CesiumGlobalAnchor 组件确保对象独立于相机运动,同时可以创建子场景,根据激活半径、纬度、经度和高度调整场景范围。通过 Visual Studio 打开 CesiumForUnityNative.sln 文件,编译 C++ 代码,确保 Cesium 功能正常运行。
在修改 Native 代码案例中,打开 CesiumForUnityNative.sln 文件,修改 CesiumCreditSystemImpl.cpp 文件,编译源码后,可以观察到 Dll 文件的修改日期变化。最后,对比修改前后,底部的文字消失,这表明代码已成功修改。
uniapp app端 + cesium + mars3d 开发指北 (四)
在uniapp中利用Cesium和Mars3D开发时,有人提到通过npm包引入Cesium是最便捷的方法。动态引入的优点在于提升编译速度,这也是uni官方推荐的方式。然而,直接从`node_modules`导入时,可能会遇到控制台报错的情况,尽管理论上可以运行,但实际操作中需要解决这个问题。
首先,通过`npm install cesium --save`安装Cesium包,然后按照npm上的示例进行项目引入。在尝试运行项目时,会遇到报错。查看源码发现,报错可能与缺少`CESIUM_BASE_URL`这个全局变量有关。由于uniapp自动获取路径语法出错,我们需要手动设置这个变量,指向Cesium的静态资源文件夹。
源码中提供了`setBaseUrl`这个API,用于设置静态资源路径。根据Cesium的逻辑,我们需要设定一个指向导入Cesium源码文件夹的路径。这样,即使uniapp自动获取路径功能出问题,我们也能确保Cesium正确加载所需的资源。
实测发现,有两种导入方式都能成功:一种是直接import引入并设置Cesium跨域和replaceAll的polyfill。这样,Cesium在uniapp的app端能正常渲染和运行。
总的来说,虽然直接import引入Cesium需要额外注意跨域和polyfill的设置,但通过正确的路径配置,这一方式在uniapp app端开发中是可行的。