cesium結合shader系列之有倒影的流動水面

2021-10-10 19:14:11 字數 814 閱讀 2485

若僅想實現動態水面效果,利用cesium的相關介面配置material的uniforms就可以實現了。但這種方式調配出的水面相對失真,無法實現現實水面具反射周圍地物效果。為了更逼真的模擬客觀世界真實水面,需要對cesium固有的water.js檔案進行修改,即修改cesium固有shader來完善基於cesium的真實水面模擬。

1.實現原理剖析

首先是有參考價值的文章:

glsl實現水面倒影

倒影(reflections)效果的實現

shaderforge-水中倒影效果

untiy shader 水的模擬

倒影:就是將uv的v值翻轉一下,

最後利用透明度用lerp操作將原圖和倒影圖合成到一起

將此原理應用在cesium裡同樣適用。

當然,實現該效果的方法並非僅這一種,如下文所述,個人認為實則同根同源:

webgl通過shader實現逼真水面

綜合以上資訊以及cesium和three.js裡配置shader的方式可以將客觀世界真實水面模擬的方法(僅限本文所涉內容)總結為兩種,即不直接配置specularmap的方法(例如three.js裡的實現方式)和直接配置specularmap的方法,本次基於cesium的實現方式採用了後者,其中specularmap指的是每一幀三維場景,通過uv反轉將其轉變為投影,同時為了更逼真模擬客觀世界真實水面效果,需要進一步對顏色、噪音值、光照等屬性進行配置。初步效果見下圖,功能仍不完善,效果不是最佳,後續會進一步調優。

Cesium 座標系轉換

cesium中常用的座標有兩種wgs84地理座標系和笛卡爾空間座標系 世界座標 我們平時常用的以經緯度來指明乙個地點就是用的wgs84座標,笛卡爾空間座標系常用來做一些空間位置變換如平移旋轉縮放等等。二者的聯絡如下圖,笛卡爾空間座標的原點就是橢球的中心.pick 螢幕座標 cartesian 世界座...

Cesium空間座標系相互轉換

一 常用座標轉換 世界座標轉經緯度座標 var cartographic cesium.cartographic.fromcartesian cartesian 世界座標轉弧度 var longitude cesium.math.todegrees cartographic.longitude va...

Cesium中的座標系及轉換

在我們開始學習entity之前,我們首先需要先學習下cesium中的座標系,cesium中有多個座標系,在進行新增entity時經常會使用到。我們先來列舉下cesium中的座標系 wgs84經緯度座標系 沒有實際的物件 wgs84弧度座標系 cartographic 笛卡爾空間直角座標系 carte...