// 接受动态水面的数据 生成动态的淹没效果
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
// 清除定时器
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, // 水波纹的数量
animationSpeed: 0.05, // 水的流速
amplitude: 5, // 水波纹振幅
specularIntensity: 5 // 镜面反射强度
}
}
})
river.appearance.material = riverMaterial
viewer.scene.primitives.add(river) //添加到场景
river.appearance.material = riverMaterial
Object.defineProperty(river, 'extrudedHeight', {
get() {
return riverHeight
},
set(newVal) {
if (typeof newVal !== 'number') {
return
}
riverHeight = newVal
river._state = 3 // 重置primitive状态触发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
}
}
动态水面
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 辋川闲居赠裴秀才迪 唐 王维 寒山转苍翠,秋水日潺湲。 倚杖柴门外,临风听暮蝉。 渡头余落日,墟里...
- 今天学习了阿德勒个体心理学《超越自卑》(1932年出版)第二章:心灵与肉体。 得到的认知是: 人的行为,是受背后信...
- 何为不透水面积? 不透水面积就是不会因为土壤缺水而去补给它,几乎没有损失,产流比较快。与透水面积正好相反。一般混凝...