news 2026/9/11 4:46:11

把 3D 场景带出浏览器:CesiumJS 5 种导出方式与参数怎么选

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把 3D 场景带出浏览器:CesiumJS 5 种导出方式与参数怎么选

把 3D 场景带出浏览器:CesiumJS 5 种导出方式与参数怎么选

【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium

评审要一张场景图、汇报要一段飞行视频、交付要一份数据文件——这是 CesiumJS 项目落地时最常遇到的三种需求。引擎本身不负责文件封装,但画面、时钟和数据都在手里,截图、录像、GeoJSON 导出这几件事都能直接做。

能力速览

先建立全貌:

导出目标机制产出
静态图当前帧 canvas 转码PNG
视频帧序列 + 浏览器 MediaRecorderWebM / MP4
地理数据数据源序列化GeoJSON / CZML / KML
批量图脚本循环相机位姿 + 重复截图多张 PNG
离屏批处理独立 Scene 实例渲染不受视图干扰的 PNG

如何把当前画面存成一张清晰的静态图

先等所有瓦片、模型和纹理加载完成,再取画布内容:

const url = canvas.toDataURL('image/png');

图片清晰度等于画布物理像素,想更清晰就调大容器尺寸或 devicePixelRatio,而不是事后放大。注意一点:若 canvas 上叠加过其他 2D 内容,导出图会一起带出,截图前确认场景干净。

相机运动与动画过程怎么录成视频

引擎不内置编码器,录视频靠浏览器:用canvas.captureStream()MediaRecorder按帧采样,相机沿 KML 路径飞行、实体随时钟变化时,录出的就是连续动态画面。帧率建议 30,这是文件大小和流畅度的折中点;60 帧更顺但体积接近翻倍。如果场景本身没动、时钟也没走,画面会是重复帧,录之前先确认动态源。

三种数据格式怎么选

引擎的数据源模块同时覆盖三种格式,都在packages/engine/Source/DataSources/下:GeoJSON 走GeoJsonDataSource,CZML 走CzmlDataSource,KML 由KmlDataSource负责。

  • GeoJSON:点、线、面等纯几何要素,最通用
  • CZML:在 GeoJSON 之上加时间动态,适合带时间轴的实体
  • KML:兼容 Google Earth 等第三方工具

选哪种取决于下游流程吃哪种输入,而不是哪种"更全"。

多视角、多张图时如何批量导出

做法很直接:把相机移动到预设位姿,等该视角渲染稳定,再重复调用上面的截图,循环完成。视角数量多时,可以考虑用离屏的 Scene 实例渲染而不是切换主视图,但代价是多占一份显存,只在中小规模场景划算。

参数与权衡:帧率、分辨率、格式的取舍

  • 帧率:视频默认 30,低于 24 会明显卡顿,高于 60 对大多数汇报场景没有收益
  • 分辨率:由画布物理像素决定,交付印刷用途再单独提高
  • 格式:纯几何选 GeoJSON;带时间动态选 CZML;要给外部 GIS 工具选 KML

三个常见坑:截图时机过早导致图里缺瓦片或缺模型;纹理来自跨域且未走 CORS,toDataURL会抛异常;高分辨率叠高帧率录像时,编码跟不上渲染帧率,视频会比预期卡。

下一步

核对 KmlDataSource.js 里对实体属性的支持范围,或查阅官方 API 文档确认你所在版本的导出方法名。

【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 4:45:43

agno AgentOS 如何配置 cron 定时任务并查看每次执行的历史记录?

agno AgentOS 如何配置 cron 定时任务并查看每次执行的历史记录? 【免费下载链接】agno Build, run, and manage agent platforms. 项目地址: https://gitcode.com/GitHub_Trending/ag/agno 如果你的 Agent 部署在 agno 的 AgentOS 上,需要在固定…

作者头像 李华
网站建设 2026/9/11 4:44:34

RP2040低功耗实战:从寄存器配置到230μA深度睡眠

/* 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 4:43:31

手把手指南:用 winapps 在 Linux 桌面原生打开 Windows 应用

手把手指南:用 winapps 在 Linux 桌面原生打开 Windows 应用 【免费下载链接】winapps Run Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Har…

作者头像 李华
网站建设 2026/9/11 4:43:03

qBittorrent 如何为内置搜索引擎配置 Python 运行时环境

qBittorrent 如何为内置搜索引擎配置 Python 运行时环境 【免费下载链接】qBittorrent qBittorrent BitTorrent client 项目地址: https://gitcode.com/GitHub_Trending/qb/qBittorrent qBittorrent 的内置搜索引擎(Search 选项卡)依赖一个可用的…

作者头像 李华