CesiumJS导出功能:截图、录像、KMZ三种结果一次拿齐

发布时间:2026/9/11 8:00:39

CesiumJS导出功能:截图、录像、KMZ三种结果一次拿齐 CesiumJS导出功能截图、录像、KMZ三种结果一次拿齐【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium做汇报、留证、交接时你常需要把 CesiumJS 场景变成可交付的文件一张当前视角的截图、一段相机飞行录像或一份能塞进 Google Earth 的地理数据。CesiumJS 的导出路径恰好覆盖这三类结果——画面导出走 Canvas 与 MediaRecorder数据导出走内置的Cesium.exportKml全部在浏览器端完成无需服务端。 能力边界总览先分清哪些是库原生提供的、哪些要你自己拼。画面类导出截图/录像依赖 WebGL Canvas 的标准能力数据类导出依赖 Entity 集合KML 序列化在 exportKml.js 里实现。注意Cesium3DTileset、Primitive 这类图层对象不在exportKml的输入范围内。能力输入输出适用场景截图渲染完成的 canvasPNGDataURL 字符串或 Blob汇报配图、问题留证录像场景持续渲染 相机动画WebM 视频文件演示回放、方案汇报KML/KMZ 数据导出dataSource.entities集合.kml文本或.kmz压缩包向 Google Earth、GIS 工具交接实体数据GeoJSON/CZML无原生导出函数需自行序列化JSON 文本矢量分析、时间动态数据存档 最短路径跑通以截图为例从 0 到拿到第一张图只要四步打开 CesiumJS 页面构造 Viewer 时加一行contextOptions: { webgl: { preserveDrawingBuffer: true } }——它告诉 WebGL 每帧渲染后保留画面缓冲否则下一帧会清屏你截到的就是空白。调用viewer.camera.flyTo把相机定位到目标视角并监听viewer.camera.moveEnd等视角稳定。调用截图拿到 PNG 的 DataURLviewer.scene.render(); const dataUrl viewer.canvas.toDataURL(image/png);检查dataUrl是否为非空data:image/png开头的字符串然后用URL.createObjectURL或直接赋给a download落盘。录像同理换掉第 3 步用viewer.canvas.captureStream(30)拿到画面流喂给MediaRecorder即可。数据导出则直接对已加载的 DataSource 调Cesium.exportKml一个示例见下文场景拆解。 按场景拆解用法汇报材料里嵌入当前视角解决什么问题截图要在渲染完成时抓抓到半透明加载帧或空白帧汇报图就废了。具体做法在camera.moveEnd回调里执行scene.render()再调canvas.toDataURL(image/png)把相机停稳和立即抓帧绑在一起。关键参数toDataURL的格式参数固定传image/png因为汇报图需要无损、支持透明底若场景有半透明材质PNG 比 JPEG 少一次色带失真。相机飞行过程的演示录像解决什么问题静态图讲不清相机轨迹和时序需要把flyTo过程录成视频。具体做法调用canvas.captureStream(30)生成 MediaStream再用new MediaRecorder(stream, { mimeType: video/webm })开始录制在相机动画结束后调用recorder.stop()并在ondataavailable里收集 Blob。关键参数帧率建议 30fps再高体积近翻倍肉眼差异很小timeslice不传即可默认按内部缓冲切块避免小文件碎片。实体数据交接给 Google Earth解决什么问题项目里用 Entity 描述的点位、路径、模型要交给第三方 GIS 工具KML/KMZ 是兼容性最高的格式。具体做法加载 DataSource 后调用官方示例同款流程把模型等外部文件打进 KMZ参考 export-kml 沙盒示例const { kmz } await Cesium.exportKml({ entities: dataSource.entities, kmz: true, modelCallback: modelCallback, });关键参数实体里含ModelGraphics时modelCallback是必填的回调要把 glTF 换成 COLLADA.dae路径并把.dae与贴图通过externalFiles挂进 KMZ缺回调会直接抛 RuntimeErrorkmz: true让库用 zip 把 KML 和外部文件打包单文件交付最省事。⚖️ 关键参数与取舍参数建议取值理由副作用preserveDrawingBuffer需要截图/录像就传true关闭时帧渲染完即清屏toDataURL只能拿到空白默认false见 Context.js 的选项说明缓冲常驻显存低端设备内存占用上升长期开着可能轻微拖累帧率captureStream帧率30fps再高体积近翻倍而飞行镜头的肉眼差异很小帧率低于场景实际刷新率时快速转场会有轻微跳帧exportKml的kmz含外部资源时传trueKML 引用本地相对路径对方机器路径对不上就丢图KMZ 单包交付避免此问题压缩打包有耗时实体和纹理多时 Promise 等待变长贴图引用方式小图用 data URI大图走Resource.fetchBlob外挂库里对 data URI 会抓成 Blob 塞进 KMZtexture_${n}.pngdata URI 本身还比二进制大约 33% 体积贴图原样进包KMZ 体积随纹理尺寸线性增长️ 高频坑位与排查现象toDataURL返回的图片是纯黑或纯透明。原因preserveDrawingBuffer为默认false抓帧时缓冲已清。处理构造 Viewer 时开启该选项并务必在camera.moveEnd之后调用scene.render()再截图。现象实体含 3D 模型时exportKml报 RuntimeError。原因库里遇到ModelGraphics但未收到modelCallback直接抛错。处理补上回调返回 COLLADA 相对路径并把模型与贴图文件注册进externalFiles。现象KMZ 导出后体积远超预期几 MB 变成上百 MB。原因billboard 或 label 的贴图是 data URI被整体打包进 KMZ。处理大图改走Resource.fetchBlob外挂引用或先把贴图压缩到实际显示尺寸再导出。现象录像文件播放卡顿、丢帧严重。原因主线程每帧还跑着后处理和复杂材质编码帧跟不上渲染。处理录制前降低场景复杂度关postProcessStages中的增强效果或把渲染分辨率降半再录。 适用与不适用场景适合场景以 Entity 为主、交付目标是图片/视频/KML 类静态文件、且全程可跑在浏览器里的项目。不适合需要导出Cesium3DTileset或 Primitive 图层——exportKml只接受 Entity 集合3D Tiles 的交接要直接拷贝 tileset 资源需要时间动态数据的完整存档——CesiumJS 没有原生 CZML 导出得自己按 CZML 结构序列化 Entity 的时间属性工作量明显大于 KML需要服务端批量出图——浏览器方案受同源与内存限制批量渲染应改用 headless 方案逐视角出图。取舍一句话画面导出用 Canvas 标准 API 最稳数据导出只有 KML 是库内一站式完成的其余格式按目标系统选 GeoJSON 或 CZML 自行组装。CesiumJS 的导出核心就三条线Canvas 出图、MediaRecorder 出片、exportKml出数据。 按先保缓冲、再等视角稳定、最后抓结果的顺序操作三类交付物都能一次拿齐。【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/11 7:55:39

3款开源Web版ER图工具实战指南:MySQL正向/逆向工程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 9:15:49

Java SE大富翁游戏源码:Swing实战与注释驱动教学

简介:这是一份面向Java初学者与移动应用开发入门者的经典游戏项目源码,完整实现了J2ME平台下的大富翁手机游戏,涵盖游戏逻辑、界面交互与资源管理全流程。压缩包共89个文件,包含16个核心Java源文件(含详细中文注释&…

2026/9/11 9:15:49

C语言选择结构:if-else与switch-case实战指南

1. 项目概述:C语言选择结构入门作为一名有十年嵌入式开发经验的工程师,我经常遇到刚入门的同事在条件判断上栽跟头。选择结构作为程序设计的三大基本结构之一,是C语言从"顺序执行"迈向"智能判断"的关键转折点。Day5的内容…

2026/9/11 9:15:49

项目管理深度解析(三十九)——项目管理团队的秘诀

摘要:本文围绕项目管理团队的组建、协作与成长展开,重点剖析团队协作的三大秘诀——目标对齐、稳定沟通、信任授权,并结合企业级订单中台重构案例给出目标对齐会的落地方法与会议议程模板。文章还梳理了团队冲突的处理思路、团队成长的持续动…

2026/9/11 9:15:49

AR(p)平稳性证明全解析:从特征根到Companion矩阵

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 9:15:49

UNIAPP跨平台录音组件开发与优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 9:10:49

RAG上线崩塌真相:多路召回+Rerank+权限卡控实战指南

1. 这不是模型的问题,是知识库“呼吸系统”没装好你花两周时间搭好了RAG流程,本地Demo跑得飞起:上传PDF、切块、embedding入库、query一输,答案精准得像抄了标准答案。可一上线,客服同事反馈:“问‘报销流程…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码