第一次接触三维gis的开发,很多概念是不懂的,作为学习记录,那就把最近学习的结果总结下来,方便自己复盘,也为后来人引路。
一、基本概念篇
webGL 与 webGPU区别
WebGL 和 WebGPU 都是浏览器端用于图形渲染的 API,但两者在设计理念、性能、功能支持等方面有本质区别,核心差异源于技术代际和底层架构的不同。以下是关键对比:
1. 底层架构与设计目标
- WebGL基于 OpenGL ES(移动设备上的 OpenGL 简化版),是 OpenGL 的浏览器适配层,采用固定功能管线 + 可编程着色器的混合架构。设计目标是让浏览器快速支持 3D 渲染,兼容早期硬件和简单图形需求,依赖 OpenGL 的状态机模式(需要手动管理渲染状态,如绑定纹理、设置矩阵等)。
- WebGPU基于现代图形 API(如 Vulkan、Metal、Direct3D 12),是 新一代底层图形接口的统一封装,采用完全可编程管线和命令式架构。设计目标是释放现代 GPU 的算力,支持复杂 3D 场景、大规模并行计算(如物理模拟、AI 推理),并解决 WebGL 的性能瓶颈。
2. 性能与效率
-
WebGL
- 受限于 OpenGL ES 的老旧架构,存在状态切换开销大、多线程渲染支持弱、GPU 利用率低等问题。
- 仅支持单线程提交渲染命令,复杂场景下易出现卡顿(如大量 draw call 时)。
- 不支持现代 GPU 特性(如硬件光线追踪、计算着色器的高效利用)。
-
WebGPU
- 采用命令缓冲机制:可在后台线程预编译渲染命令,批量提交给 GPU,大幅减少 CPU 与 GPU 的同步开销。
- 原生支持计算着色器:能高效利用 GPU 并行算力,不仅用于渲染,还可处理非图形任务(如数据计算、机器学习)。
- 更贴近硬件底层:减少 API 抽象层的性能损耗,现代 GPU 利用率提升明显(尤其在复杂 3D 场景中,性能可能是 WebGL 的数倍)。
3. 编程模型
-
WebGL
- 基于状态机:需要手动设置大量全局状态(如当前使用的纹理、着色器程序、矩阵等),代码冗长且易出错。
- 着色器语言:使用 GLSL(OpenGL Shading Language),语法较老旧,不支持现代编程语言特性(如类、模块化)。
-
WebGPU
- 基于对象化命令式编程:通过创建「设备(Device)」「管道(Pipeline)」「命令编码器(CommandEncoder)」等对象,以函数调用方式构建渲染流程,状态管理更清晰,代码可维护性更高。
- 着色器语言:使用 WGSL(WebGPU Shading Language) ,语法类似 Rust/TypeScript,支持类型安全、模块化、函数重载等现代特性,更易编写和调试。
4. 功能支持
-
WebGL
- 仅支持基础 3D 渲染功能(如纹理、光照、简单动画),依赖扩展才能支持部分高级特性(如顶点纹理、实例化渲染)。
- 不支持硬件加速的光线追踪、复杂粒子系统、大规模并行计算等。
-
WebGPU
- 原生支持计算着色器:可直接在 GPU 上运行通用计算任务(如物理模拟、流体动力学、AI 模型推理)。
- 支持现代渲染技术:如硬件光线追踪(需设备支持)、可变 - rate 着色、纹理压缩等。
- 更好的多线程支持:可在 Worker 线程中处理渲染逻辑,避免阻塞主线程,提升页面响应速度。
5. 兼容性与应用场景
-
WebGL
- 兼容性极佳:几乎所有现代浏览器(包括旧版 Chrome、Firefox、Safari)均支持,是目前 Web 3D 渲染的「通用标准」。
- 适合场景:简单 3D 模型展示(如产品预览)、小游戏、基础数据可视化等轻量需求。
-
WebGPU
- 兼容性逐步完善:2023 年后主流浏览器(Chrome 113+、Firefox 113+、Safari 16.4+)开始支持,但仍需开启实验性开关(部分浏览器),老旧设备可能不兼容。
- 适合场景:复杂 3D 游戏、大规模科学计算可视化、Web 端 AI 推理、高性能图形应用(如虚拟仿真、元宇宙场景)。
引擎是什么,与 webGL 又有什么关系
1. 什么是引擎?
引擎(如 UE、Unity)和 WebGL 的关系,可以简单理解为 「工具」与「输出载体 / 底层接口」 的关系 —— 引擎是用于制作 3D 内容的「超级工具」,而 WebGL 是引擎将内容输出到浏览器时依赖的「底层图形接口」之一。
引擎本质上是一套集成了各种功能的开发工具集,用于 3D 内容的创作,比如:
- 图形渲染系统:负责将 3D 模型、材质、光照等转化为可视化画面;
- 物理引擎:模拟重力、碰撞、流体等物理效果;
- 动画系统:处理角色动作、物体运动;
- 音频、脚本、资源管理等模块,简化开发流程。
2. 引擎与 WebGL 的关系:「输出目标」与「底层依赖」
引擎制作的内容需要「运行在具体平台上」(如 PC、手机、浏览器),而 WebGL 是浏览器平台上的图形渲染接口,让内容能在网页中渲染。
具体实现流程为:
- 开发者用 UE/Unity 制作 3D 内容(模型、逻辑、交互等);
- 选择「Web 平台发布」(如 Unity 的 WebGL 构建、UE 的 HTML5 打包);
- 引擎会将内容编译为浏览器可识别的格式(如 JavaScript、WASM),并调用 WebGL 接口完成图形渲染;
- 最终用户在浏览器中打开网页,就能运行引擎制作的 3D 内容(无需安装客户端)。
3. 引擎不止支持 webGL
WebGL 只是引擎发布到浏览器的「可选接口之一」,现代引擎还支持:
- WebGPU:新一代浏览器图形接口,性能更强(Unity 2021+、UE 5.2 + 已开始支持);
- 其他平台接口:发布到 PC 时用 DirectX/OpenGL,发布到手机时用 Vulkan/Metal 等。
二、有哪些方案可以实现三维gis功能开发
对于三维gis地图的实现,市面上有很多成熟的产品可供选择,但一些核心功能需要收费,大家使用的时候可以根据自己的需要自行选择。
(注:市面上可用产品不是只有这些,也不代表必须用他们,仅仅是我只调研了他们。)
1. 超图(superMap)
它是国内 GIS 领域的龙头企业,在数字政府、智慧城市等多个领域有着广泛应用。其自主研发的SuperMap GIS系列基础软件,它构建了云边端一体化的产品体系,能实现二三维一体化的空间数据采集、存储、管理、分析、制图与可视化。
2. 飞渡(freedo)
飞渡研发的一系列围绕 GIS(地理信息系统)并融合 BIM、CIM 技术的数字孪生相关软件产品,核心是构建多源数据融合、高逼真可视化的空间信息应用平台,适配智慧城市、智慧工程等多个场景。
3.孪大师(CIMPro)
他是一款融合 GIS 能力的国产数字孪生开发平台。它以 GIS、BIM 等多源数据融合为核心,主打三维可视化与全流程数字孪生应用搭建,广泛适配多个行业场景。
产品对比
下面用一个表格对比一下他们的异同:
超图、飞渡 GIS、孪大师(CIMPro)均是适配 GIS 相关场景的国产软件,且都聚焦多源数据融合与三维可视化,但超图主打全栈 GIS 基础能力,飞渡侧重 GIS+BIM 的工程与城市级数字孪生落地,孪大师则以低门槛零代码适配全行业孪生项目搭建,三者在核心定位、易用性、扩展性等方面差异显著,下面从多维度展开对比,方便你按需选择:
| 对比维度 | 超图(SuperMap) | 飞渡 GIS | 孪大师(CIMPro) |
|---|---|---|---|
| 核心定位 | 国产 GIS 龙头,主打二三维一体化的全栈 GIS 平台,兼顾基础地理信息管理与数字孪生拓展能力超图软件 | 聚焦 GIS+BIM+CIM 融合的数字孪生专用平台,主打高逼真可视化与工程级数据治理 | 零代码优先的数字孪生开发平台,以轻量化操作实现 GIS 与多行业模型的融合应用搭建 |
| 核心技术亮点 | 拥有自主研发的二三维一体化内核,发布 SuperMap AgentX Server 开启 GIS “智能体时代”,支持 TB 级倾斜摄影数据直接加载,亚米级实景精度且加载速度达秒级超图软件 | 独创 “空间数据编织” 技术与 “峥嵘” 大模型,支持 120 + 格式数据互操作,AI 可自动识别 200 + 城市要素,实现毫米级建模精度与轻量化的平衡 | 搭载 PBR 材质系统,兼容 3DTiles、SHP 等格式,支持 30 多种数据源接入,可完成从城市到设备级的高逼真还原与动画制作 |
| 易用性 | 1. 文档资料极其丰富,符合国内用户使用逻辑,参考性强;2. 全系列产品内置二维与三维功能,同一产品可同时操作两类数据,降低学习成本;3. 但功能体系庞大,深度掌握其 GIS 专业分析功能需一定学习周期超图软件 | 1. 核心平台操作流程简洁,DTS 平台主打 “快速上手”,数据处理与场景搭建流程简化;2. 轻量化渲染降低终端算力门槛,普通设备也能流畅运行;3. 短板是官方说明文档较少,新手初期可能依赖案例摸索 | 1. 支持全流程零代码开发,拖拉拽即可完成场景搭建,7 天即可上手,门槛极低;2. 操作逻辑偏向通用化,无 GIS 或编程基础也能快速搭建基础项目;3. 可视化界面友好,无需复杂设置就能实现基础渲染效果 |
| 可扩展性 | 1. 生态完善,牵头组建 “空间智能创新联合体”,推动 AI 与 GIS 在水利、自然资源等行业标准化落地;2. 支持私有化部署、云部署等多种模式,适配组件、桌面、服务器等全平台;3. 提供完善的二次开发接口,适配专业 GIS 功能定制,适合深度行业系统开发超图软件 | 1. 内置 35700 类 API 接口,支持 C/S 和 B/S 架构、WebGL 和云渲染,可对接 IoT 设备、VR/AR 终端;2. 支持区块链对接、元宇宙接口预留,适配跨国协同、跨终端展示等场景;3. 但功能模块偏向工程与城市场景,跨行业定制化拓展性稍弱 | 1. 提供原创可视化 API,满足二次开发需求,同时支持私有化部署、OEM 及源码交付;2. 适配 PCZ、EXE、云渲染等多种交付方式,灵活适配不同输出需求;3. 零代码与代码开发结合的模式,既适合新手也能满足开发者定制需求 |
| 典型应用场景 | 雄安新区全域三维建模、全国 70 余个城市地上地下一体化管理,覆盖自然资源、水利、应急管理等基础 GIS 核心领域 | 北京、深圳等地智慧城市建设,机场、地铁等大型基建的施工监控与运维,桥梁等工程的质量验收与空间冲突预警 | 城市规划进度模拟、灾害演变还原、智慧园区基础监控、中小企业轻量化数字孪生项目,适配多行业通用场景 |
| 性价比 | 作为商业 GIS 平台,适合政企大型项目采购,整体成本偏高,但长期使用中其稳定的 GIS 核心能力能降低后续维护成本超图软件 | 性价比高,可帮助客户降低 30% 以上运营成本,适合中大型工程与智慧城市项目,避免数据重复建设 | 企业版年费仅为 UE 等国际引擎的 1/3,轻量化部署降低算力投入,是中小企业与初创项目的高性价比选择 |
三、完美落地:超图/孪大师/飞渡 + Unity/UE
虽然软件有一部分自带的基础 3D 可视化功能(基于 WebGL/WebGPU),但仅能满足 “业务级可视化”(如查看模型、简单漫游),无法达到 Unity/UE 的 “影视级渲染效果”,在需要 “专业 GIS 能力 + 高逼真可视化” 的场景中(如数字孪生城市、智慧园区),二者常结合使用。从而实现 1+1>2 的效果。
关键认知:他们不是替代关系,而是互补关系
- 超图 / 飞渡 / 孪大师无法替代 Unity/UE:它们的 3D 渲染能力远弱于 Unity/UE,无法实现高精度光影、物理特效等通用 3D 效果;
- Unity/UE 无法替代超图 / 飞渡 / 孪大师:它们缺乏 GIS 核心能力(如空间坐标转换、地理数据拓扑分析),也无法兼容 BIM/CIM 行业标准,无法满足智慧城市等专业业务需求;
具体协作方式总结为三种:
1. 超图 / 飞渡 / 孪大师作为 “数据底座”,Unity/UE 作为 “可视化前端”
- 流程:超图 / 飞渡负责管理地理空间数据(如城市地形、建筑 BIM、POI 信息),通过 API 将标准化数据(如 3DTiles、空间属性)推送给 Unity/UE;Unity/UE 基于这些数据搭建高逼真 3D 场景,实现交互、特效、虚拟漫游等效果。
- 例子:某数字孪生城市项目中,超图提供城市 GIS 数据底座(含地下管线、道路坐标),UE 负责渲染城市实景 3D 模型,实现管线故障的可视化预警。
2. Unity/UE 嵌入 GIS 能力(通过插件 / 接口)
- 流程:在 Unity/UE 中开发 3D 场景时,通过超图 / 飞渡提供的 SDK / 插件接入 GIS 功能(如地图加载、坐标定位),让通用 3D 场景具备专业空间分析能力。
- 例子:Unity 开发的智慧园区虚拟展厅中,嵌入超图 GIS 插件,实现园区内设备的地理坐标定位与路径规划。
3. 独立使用(无协作)
- 若场景仅需 “专业 GIS 业务”(如自然资源调查),直接用超图 / 飞渡即可(自带基础 3D 可视化能力,满足业务需求);
- 若场景仅需 “通用 3D 内容”(如虚拟展厅),直接用 Unity/UE 即可(无需 GIS 专业能力)。
四、总结
以上仅代表个人学习结果的记录,如果有纰漏还请各位大神批评指正,不要进行恶意评论。我一定虚心接受大家的建议,感谢。