首页 > 其他分享 >GIS融合之路(六)-Cesium的雨雪风雷电效果

GIS融合之路(六)-Cesium的雨雪风雷电效果

时间:2024-04-19 13:34:37浏览次数:27  
标签:法线 GIS 山海 CesiumJS 雷电 可视化 Cesium

终于来到系列第六篇了,也来到大家最喜闻乐见天气效果

系列传送门:

山海鲸可视化:GIS融合之路(一)技术选型CesiumJS/loaders.gl/iTowns?

山海鲸可视化:GIS融合之路(二)CesiumJS和ThreeJS深度缓冲区整合

山海鲸可视化:GIS融合之路(三)CesiumJS和ThreeJS相机同步

山海鲸可视化:GIS融合之路(四)如何用CesiumJS做出Cesium For Unreal的效果

山海鲸可视化:GIS融合之路(五)给CesiumJS加上体积云(Volumetric Cloud)和高度雾(Height Fog)

实际上山海鲸的孪生中已经有了所有的雨雪风电效果,甚至可以直接绑定实时数据来展示天气,具体可以参照隔壁文章:

山海鲸可视化:山海鲸如何实现动态天气

实际上雨雪雷电本身在Cesium上的直接展示基本不需要做任何的特殊处理,我们可以先看下效果:

GIS下雨效果

那么和Cesium的整合有什么特别之处吗,实际上雨雪的效果就是一个粒子效果的叠加,这里并没有什么值得一提的。但Cesium本身并不支持法线贴图的输出,雪面的覆盖是需要当前的法线的,因为法线朝上的积雪的可能性是最高的。

那么Cesium中获取法线信息的方式有哪几种呢

1.倾斜摄影中可以直接通过CustomShader,只要转出来的3dtiles的顶点上有法线信息,就可以直接获取。

2.对于底图和地形,需要改写Cesium的源码修改Shader

对于1来说,一方面要求倾斜摄影转换的时候带了法线信息,同时也只能应用在倾斜摄影中当中

对于2来说,侵入性修改Cesium会导致后续的跟随升级将带来巨大的麻烦,那么剩下的选项就只有通过后处理方式获取法线了,我们现在有的信息一张ColorMap,一张DepthMap,那么留给我们的选项就只有通过dFdx和dFdy来将DepthMap转换为法线贴图。

这个过程相对简单,我们读取depthmap后直接通过以下shader代码进行处理:

vec3 vNormalW = normalize( cross(dFdy( positionW.xyz ),dFdx( positionW.xyz )) );

但由于直接的dFdx和dFdy方法输出的法线非常的闪烁,因此我们还需要在这个基础上做一次降噪让法线更加的平滑,由于我们只是用法线来做雪面覆盖,并不需要十分精确,因此我们选择采用联合双边滤波的形式来进行降噪处理,我们结合color和depth在两个维度来进行滤波,最终得到一个相对稳定的雪面覆盖结果:

 GIS下雪效果

标签:法线,GIS,山海,CesiumJS,雷电,可视化,Cesium
From: https://www.cnblogs.com/shanhaibi/p/18145702

相关文章

  • 【ArcGIS Pro SDK】ArcGIS Pro SDK Geoprocessor 仿 ArcGIS Engine Geoprocessor、IGP
    Baci.Net.ToolKit.ArcGISProGeoprocessor介绍在ArcGISProSDK(2.8)中仿ArcGISEngine中的Geoprocessor、IGPProcess。ArcGISProSDKGeoprocessor仿ArcGISEngine中的Geoprocessor实现2.8版本下的所有工具的生成。方法、参数的注释,翻译(机翻)。各个工具支持的有效的环......
  • ArcGIS Pro发布场景图层服务
    一、数据准备武汉房屋模拟数据,有楼层floor属性二、要素拉伸(可选)三、3D图层转要素类四、创建3D对象场景图层内容五、发布服务arcgispro如何如何生成三维白膜数据?如何创建可查询的三维建筑?......
  • V4L2 - Pipeline_Define & Async_Register & Pipeline_Create
       异步注册存在的根本原因就是:    注册时一定要表明subdev之间的层级关系,所以存在两个注册方向    一是以当前节点寻找下一级节点,如果下一级具备注册条件,则注册下一级节点,并指明层级关系    二是一失败后,寻找上一级节点,如果上一级指明层级关系方法被......
  • PyQGIS笔记
    PyQGIS笔记添加栅格PROJECT=QgsProject.instance()rlayer=QgsRasterLayer(file_path,name)ifnotrlayer.isValid():QMessageBox.information(self,'信息','图像图层加载失败!')else:PROJECT.addMapLayer(rlayer)#将图层添加到mapcanvas以及目录树根节点,并可以通......
  • QGIS下载影像
    插件下载在QGIS中搜索下载QuickMapServices插件再点击插件工具栏上带加号的图标按钮(下图已经加载过服务),选择Settings。选择Moreservices,点击Getcontributedpack。再点击插件工具栏上带加号的图标按钮,可以看到已经添加了一些默认的地图服务。按需要选择服务,加载区域矢量数......
  • QGIS脚本批量导出sld样式文件
    在QGIS中批量导出图层样式到SLD(StyledLayerDescriptor)文件,可以使用以下Python脚本。这个脚本将遍历项目中的所有图层,然后将它们的样式保存为单独的SLD文件。#导入必要的模块fromqgis.coreimportQgsProject#sld文件路径sld_path=r"D:\Desktop\中国沿海航......
  • docker拉取失败 Error response from daemon: Get "https://registry-1.docker.io/v2/
     解决方法:配置DNS地址用xftp打开/etc/resolv.conf更改dns地址nameserver8.8.8.8nameserver8.8.4.4保存,在xshell中重启docker  ---  sudosystemctlrestartdocker重新拉取nginx--dockerpullnginx拉取成功!!! ......
  • atcgis反距离权重插值
    前面导入盟市界、旗县界shp,还有站点经纬度、PA等级什么的我就不说了站点经纬度数据内容: 主要想做的事情是插值PA_class的内容。第一步:自定义-扩展模块-勾选这两个第二步:自定义-工具条-geostatisticalanalyst 点击geostatisticalanalyst里的  地统计向导-反距离权......
  • npm,registry,镜像源,npm切换源,yarn,cnpm,taobao,nrs
    描述我们在使用node的npm下载依赖的时候,往往下载速度很慢,那是因为npm默认的是npm处于国外的官方镜像源。所以需要切换到国内的镜像源来加速依赖下载。所以本文推荐一款简单好用npm镜像源管理器,可以方便开发者管理自己的镜像源。推荐:npm-registry-nrs......
  • Shift register
    Implementthefollowingcircuit:题目网站moduletop_module(inputclk,inputresetn,//synchronousresetinputin,outputout);reg[3:0]q;assignout=q[3];always@(posedgeclk)beginif(!resetn)beginq<......