要用cesium做个三维热力图的效果,但在网上没找到现成的方案,摸索了很久,最终的实现思路如下:
1、通过heatmapjs库生成二维热力图,拿到canvas;
2、canvas的rgb像素值转hsl,将h分量作为该像素点的高度值的参考(即越红高度越高);
3、将整个canvas划分,获取每个顶点的坐标值(经纬度+通过2中得到的高度);
4、通过3中的坐标创建三角网,参考:
cesium 绘制自定义geometry、三角面_liuqing0.0的博客-CSDN博客_cesium geometry
主要需要处理position的values、st的values、和indices这三个属性的值。
我的思路是求出每个像素块的四个顶点的经纬度坐标,高度为周围的像素的h分量值的平均值;
每个像素块绘制两个三角形,如:左下--左上--右上 + 右上--左下--右下,当然顺序可以自己定义,只要保持每个三角形的起点与上一个三角形的终点连续就行;
5、将二维热力图作为三角网的材质贴图,并将三角网添加进场景;
贴图参考:文章来源:https://www.toymoban.com/news/detail-522516.html
Cesium学习笔记-工具篇20-PrimitiveTexture自定义渲染-贴图【转】 | PNG文章来源地址https://www.toymoban.com/news/detail-522516.html
到了这里,关于Cesium 三维热力图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!