// 接受動(dòng)態(tài)水面的數(shù)據(jù) 生成動(dòng)態(tài)的淹沒(méi)效果
export function createWaterSurface(viewer, obj, o) {
let river = useDrawRiver(o)
let maxHeight = Number(27 + o.waterHeight + o.waterDeep)
let riverHeight = Number(27 + o.waterHeight)
let timer = setInterval(() => {
riverHeight += o.rateVal
river.extrudedHeight = riverHeight
if (riverHeight >= maxHeight) {
riverHeight = maxHeight
// 清除定時(shí)器
clearInterval(timer)
}
}, 1000 / o.rate)
function useDrawRiver (item) {
let height = Number(27 + o.waterHeight)
let riverHeight = Number(27 + o.waterHeight)
const polygon = useCreatePolygonGeometry(item.position, height, riverHeight)
let river = null
river = new Cesium.Primitive({
geometryInstances: new Cesium.GeometryInstance({
geometry: polygon,
}),
appearance: new Cesium.EllipsoidSurfaceAppearance({
aboveGround: true,
}),
show: true,
asynchronous: false,
releaseGeometryInstances: false
})
const riverMaterial = new Cesium.Material({
fabric: {
type: 'Water',
uniforms: {
baseWaterColor: Cesium.Color.fromCssColorString('#475961'), // 水的基本顏色
normalMap: require("../image/waterNormal.jpg"), // 水的法線貼圖
frequency: 500.0, // 水波紋的數(shù)量
animationSpeed: 0.05, // 水的流速
amplitude: 5, // 水波紋振幅
specularIntensity: 5 // 鏡面反射強(qiáng)度
}
}
})
river.appearance.material = riverMaterial
viewer.scene.primitives.add(river) //添加到場(chǎng)景
river.appearance.material = riverMaterial
Object.defineProperty(river, 'extrudedHeight', {
get() {
return riverHeight
},
set(newVal) {
if (typeof newVal !== 'number') {
return
}
riverHeight = newVal
river._state = 3 // 重置primitive狀態(tài)觸發(fā)cesium update方法
river._appearance = undefined
river.geometryInstances.geometry = useCreatePolygonGeometry(item.position, height, riverHeight)
}
})
return river
}
function useCreatePolygonGeometry (boundary, height, extrudedHeight) {
const polygon = new Cesium.PolygonGeometry({
polygonHierarchy: new Cesium.PolygonHierarchy(
boundary.map(ele => {
return Cesium.Cartesian3.fromDegrees(ele[0], ele[1], ele[2])
})
),
height: height,
extrudedHeight: extrudedHeight,
vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
})
return polygon
}
}
動(dòng)態(tài)水面
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- MacDown為大家分享一組水面漣漪倒影動(dòng)態(tài)桌面壁紙,將這組水面漣漪倒影動(dòng)態(tài)桌面壁紙?jiān)O(shè)置為Mac電腦的壁紙后,壁紙...
- 輞川閑居贈(zèng)裴秀才迪 唐 王維 寒山轉(zhuǎn)蒼翠,秋水日潺湲。 倚杖柴門(mén)外,臨風(fēng)聽(tīng)暮蟬。 渡頭余落日,墟里...
- 今天學(xué)習(xí)了阿德勒個(gè)體心理學(xué)《超越自卑》(1932年出版)第二章:心靈與肉體。 得到的認(rèn)知是: 人的行為,是受背后信...
- 何為不透水面積? 不透水面積就是不會(huì)因?yàn)橥寥廊彼パa(bǔ)給它,幾乎沒(méi)有損失,產(chǎn)流比較快。與透水面積正好相反。一般混凝...
- 經(jīng)典的小說(shuō),沒(méi)有一個(gè)字是多余的。 好的對(duì)話,除了表面上的用意,還能產(chǎn)生其它功效。 新手寫(xiě)小說(shuō),平常怎么說(shuō),對(duì)話就怎...