Cesium生成高清截图
由于是项目内容,本文不涉及具体代码实现,仅记录实现思路。
刚接到这个要求的时候,感觉是伪需求。网页端本来就是数据越轻量级越好,加载浏览响应更快。仔细分析的话,其实也有点用处,相比于桌面端截取超高分辨率的图片,类似3D软件渲染图片一样;网页端可以制作一些相对低分辨率的图片,没那么精细,但是相对快,也相对够用。
桌面端生成图片
拿Blender来说,场景制作好后,用渲染器生成图片渲染时,可以看到最终图像是分块渲染的,即对每块图片进行光追生成实际场景的静态图片。即每次生成像素时均需要能够访问到全部的数据,以便和射线求教
Cesium截图
在Cesium中截高清图像时,面临以下问题:
- 场景中的数据均做了LOD处理,即三维球中的数据时通过相机位置来动态加载和淘汰的,因此没法访问所有数据,由于是网页可用资源不如桌面端,也无法访问所有数据的最精细一层,即仅可访问部分数据
- 浏览器端也不推荐进行大文件操作,比如大分辨率的图像解成4通道后,占用内存非常高,内存占用过多,会导致Cesium无法在申请足够的内存用来创建纹理等资源,当Cesium无法创建可用的资源时,弹窗报错,场景就奔溃了。网页环境中可用资源有限。