如何用CesiumJS完成截图、录像与数据导出:完整自检指南
【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium
CesiumJS 截图、录像、数据导出三件事,前提条件各不相同。本文从前置检查讲起,再按"先数据、后画面、再批量"的顺序,把时机选择和参数默认值一次说清。
✅ 动手前先自检
导出成败由三个前置条件决定,按顺序确认:场景是否完全加载(地形、模型、影像层不再是占位状态);相机位置和角度是否就位;渲染质量档位是否符合预期(分辨率缩放档位直接影响输出清晰度)。任何一项没到位,后面截到、录到、导出的内容都会带着这个瑕疵。
📦 三种导出格式怎么选:GeoJSON、CZML、KML
按后续用途挑格式,三种够用:
- GeoJSON:适合点、线、面等几何要素,通用地图工具好接入
- CZML:适合需要完整保留时间动态行为、实体属性与时间信息的场景
- KML:适合与 Google Earth 等第三方工具对接
建议先导出数据、再做截图和录像。数据是主体,画面素材是配套。
📸 截图:时机比参数更重要
截图要等场景完全渲染之后进行。CesiumJS 会把当前帧渲染到 Canvas,再经toDataURL转成 PNG 图像数据串,这个过程是自动的,真正的变量在"什么时候截":实体或地形还在加载时截,图里会缺东西;相机还在移动时截,落点未必是你想要的角度。先让场景稳定下来,再触发截图。
🎬 录像帧率和分辨率怎么定
默认用 30fps,除非你明确需要更高帧率。录像是靠MediaRecorder把渲染过程实时编码成视频文件,30fps 是文件大小与流畅度的平衡点。调整方向跟硬件性能走:机器高端先加分辨率;性能吃紧就先降分辨率,再降帧率,别反过来。录像与渲染相关的可调参数,可参考 Scene.js 源码。
🔁 用脚本实现多角度自动截图
需要一批视角图时,手动逐张截不现实。做法是用脚本控制相机位置:依次飞到每个预设机位,等该视角渲染稳定后再截一张。每个机位复用同一套截图流程,差异只在相机落点。
⚠️ 常见失败原因速查
- 截图空白或元素缺失:截得太早,场景没加载完,回到第一节自检
- 录像卡顿:录制参数超出硬件性能,先降分辨率或帧率
- 导出数据缺字段:格式与数据内容不匹配,如时间动态没写进 CZML、属性在 GeoJSON 里没有对应结构
- 输出清晰度低于预期:检查渲染质量档位,它决定截图的输入质量
导出前自查清单
- 场景加载完成、相机就位、质量档位符合预期
- 截图在渲染稳定后触发,不在动画或移动过程中
- 录像默认 30fps,分辨率与硬件匹配
- 格式按用途选:几何用 GeoJSON、时间动态用 CZML、第三方对接用 KML
- 批量出图靠脚本驱动相机,每个机位出一张
【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考