ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CesiumJS 导出功能 3 种方式一次说清:截图、录像、数据导出

CesiumJS 导出功能 3 种方式一次说清:截图、录像、数据导出 CesiumJS 导出功能 3 种方式一次说清截图、录像、数据导出【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium做 CesiumJS 可视化项目成果总要带出去放进汇报 PPT、发给评审看动态、或者归档成数据给下游工具继续用。CesiumJS 导出就围绕这三件事展开——截一张静态图、录一段动态视频、把地理数据本体存下来。它们解决的问题不同成本和体积也差得多截图只有几百 KB 到几 MB录像动辄几十 MB数据文件则和场景大小无关、几乎不占空间。下面按你想要什么来讲每种方式怎么调参数、容易踩什么坑都放在对应小节里。先想清楚你的成果要存还是要动判断标准很简单。接收方不需要交互、不需要时间变化一张图就够了发微信、发邮件都不费劲。接收方要感受相机飞行、车辆移动、时间轴播放这类过程才值得付出录像的体积代价。而如果你的目标是让同事换个工具还能继续编辑这批点位、轨迹和样式那要导的是数据本体跟画面无关。很多人一开始想录个屏算了结果视频又大又模糊最后发现其实一张高质量截图加几个角度就够用了。所以先定需求再动手能省不少返工。存一张图CesiumJS 截图这样调最省事CesiumJS 的画面本来就画在一个 Canvas 里截图本质就是让浏览器把这格画面导成图片Canvas 自带的toDataURL之类的接口就能拿到 PNG 或 JPEG 数据不需要装任何插件。工程上要调的主要是三件事分辨率画布多大就出多大的图。场景的pixelRatio在 Scene.js 中定义会按比例放大实际渲染像素出图前调高它出来的图会明显更细腻代价只是那一下渲染稍慢适合归档和印刷场景。时机务必等场景完全渲染完再截。Cesium 的瓦片、模型是陆续加载的急着截很容易拍到黑块和缺角。稳妥做法是等一次完整的渲染回调后再截为什么这么做——就是为了保证画面和你在浏览器里看到的一致。角度需要多个视角时先写一组相机位姿目标点、高度、俯仰角存成列表程序循环把相机设过去、渲染一帧、截一张。批量截图怎么做相机位姿存成一张表上面提到的多视角如果不止两三个就变成批量任务了。做法是把每个视角写成一条记录经度、纬度、高度、俯仰、旋转外加文件名。然后循环执行定位相机 → 等渲染完成 → 截图 → 换下一个最后一次性打包输出。这样有几个好处第一所有图的机位是确定的下次重跑能像素级复现方便做版本对比第二批量过程可以挂到定时任务或 CI 里数据更新后自动出新图不用人盯着。常见坑是两个。一是镜头切换后没等场景稳定就截画面还是上一帧解决办法就是每个视角都等一帧渲染完成二是批量时忘了控制画布尺寸出图大小忽大忽小。把位姿表当成截图配方来管理批量导出这件事就没有技术难度了纯体力活而已。录一段动态CesiumJS 录像的参数怎么定录像的思路是用浏览器的 MediaRecorder 这类接口把画布的输出实时编码成视频文件常见输出是 WebM必要时再转成 MP4。调参就抓三个点帧率一般选 30fps。它比 60fps 文件小一半左右而人眼对 3D 漫游场景基本感知不到差别只有录快速甩镜头时才考虑 60。时长先把相机脚本、时间轴范围跑通确认哪段最值得看再正式录。录一整段 10 分钟的漫游最后剪掉 9 分钟的是最常见的浪费。码率在够看的前提下取低值。评审看的是整体效果和动线码率给太高只会让文件翻倍给太低画面会发虚中间取个平衡就行。还有一个容易被忽略的点录像期间如果同时还在加载大量瓦片和模型主线程压力大会出现掉帧。正式录之前先用 75% 分辨率试录一遍确认流畅了再开全分辨率比录完了重录省时间。导出数据本体GeoJSON、CZML、KML 三种格式怎么选前面两条线导的都是画面这条线导的是数据。CesiumJS 里 GeoJSON、CZML、KML 三种格式都有对应的数据源GeoJsonDataSource.js、CzmlDataSource.js、KmlDataSource.js读和写是同一套结构所以导出时直接按各自规范生成文本即可。三种格式怎么挑看你的数据动不动GeoJSON最通用QGIS、ArcGIS、各大 Web GIS 都认。适合静态的点、线、面加上少量属性。数据没有时间维度的话默认选它为什么——后续不管换什么工具都不会有格式障碍。CZMLCesium 自家的时间序列格式在 GeoJSON 的基础上多了时间属性、可用时间段availability这些概念。只要你的实体带时间动态——轨迹回放、按时间显隐、变化的属性——就用它别的格式表达不了这些。KML对接 Google Earth 等桌面工具时的桥梁。属性多、样式复杂的场景下会有信息损耗KML 的样式体系比 Cesium 的实体属性窄所以一般只用在需要给别人用 Earth 看的场景。导出参数与质量出图前的最后检查三条线共用几个质量开关出图或录像前过一遍分辨率与pixelRatio出图质量的第一变量。日常分享 1 倍就够归档、打印、投影上大屏再调高按需付出成本。时间定住场景里如果有时间驱动的实体截图前把时钟停在目标时刻录像前确认时间轴范围。否则同一批数据导两次结果对不上。图层归位截图前确认底图、标注、辅助图层处于要展示的状态临时调试用的东西坐标网格、调试模型关掉再截。文件命名带日期、版本、视角名。三个月后回来看一堆image1.png没人知道哪张对应哪个版本。最后留个可落地的动作先拿你当前场景做最小验证——截一张图、录 10 秒片段、导一份 GeoJSON 各存一份把三种产物发给一个同事看。他打开即懂、不需要你解释的画面才是这次 CesiumJS 导出真正合格的输出。【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表