前言
缺少前置学习使用资料,请自行查阅:[https://blog.csdn.net/weixin_44402694/article/details/123110136](https://blog.csdn.net/weixin_44402694/article/details/123110136)
以下示例使用到的公共静态资料,不建议下载,建议官网自行下载超图Build资源,示例所涉及图片会在示例使用到时提供出来。如有需要可下载:[https://download.csdn.net/download/weixin_44402694/82180350](https://download.csdn.net/download/weixin_44402694/82180350)。
特效-雨景设置。
使用
-
效果
-
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>特效 - 雨</title>
<link href="./public/Build/Cesium/Widgets/widgets.css" rel="stylesheet" />
<script
type="text/javascript"
src="./public/Build/Cesium/Cesium.js"
></script>
<style>
* {
margin: 0;
padding: 0;
}
html,
body,
#cesium-container {
width: 100%;
height: 100%;
}
.panel {
position: fixed;
left: 10px;
top: 10px;
z-index: 1;
background-color: #fff;
padding: 10px;
}
.panel .btn {
cursor: pointer;
display: none;
}
.panel .check {
cursor: pointer;
}
</style>
</head>
<body>
<div id="cesium-container" />
<div class="panel">
<p class="check">开启雨景 <input type="checkbox" /></p>
</div>
<script>
let viewer, scene
window.onload = function () {
viewer = new Cesium.Viewer('cesium-container', {
sceneModePicker: true,
navigation: false,
})
scene = viewer.scene
scene.camera.flyTo({
destination: new Cesium.Cartesian3(
-2179825.7788852383,
4380581.427298224,
4091538.107446992
),
orientation: {
heading: 0.005352643897039933,
pitch: -0.03880119222393663,
roll: 6.2831853071795845,
},
})
initBindDrawEventHandler()
}
// 初始化绑定按钮的绘制事件
function initBindDrawEventHandler() {
const check = document.querySelector('.check input')
check.addEventListener('change', () => {
viewer.scene.postProcessStages.rain.enabled = check.checked
viewer.scene.postProcessStages.rain.uniforms.density = 30 // 雨水密度
viewer.scene.postProcessStages.rain.uniforms.angle = 0 // 雨水下落角度
viewer.scene.postProcessStages.rain.uniforms.speed = 8 // 雨水下落速度
})
}
</script>
</body>
</html>