Cesium 水面材质效果
支持颜色、波纹大小、透明度、反射率、扭曲、高度的各种参数调整
法线图
<!DOCTYPE html>
<html lang="en">
<head>
<title>水面倒影</title>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"
/>
<!-- <script src="water.js"></script> -->
<script src="https://cesium.com/downloads/cesiumjs/releases/1.96/Build/Cesium/Cesium.js"></script>
<link
href="https://cesium.com/downloads/cesiumjs/releases/1.96/Build/Cesium/Widgets/widgets.css"
rel="stylesheet"
/>
<style>
html,
body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="map" style="width: 100%; height: 100%"></div>
</body>
</html>
<script type="module">
import WaterPrimitive from "./WaterPrimitive.js";
import { GUI } from "./lil-gui.module.min.js";
Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzMGM5NjQ3OC1iNzI5LTQ1OGUtOGU4NC1lNjA1OTQ0OWFmYWMiLCJpZCI6NDU4NzgsImlhdCI6MTY2Nzk2MTM2Mn0.whkwTff2Jku7dVOpt5V4zrTTW8m-BV1fJQDeBsbmZn8";
//设置全局对象
var viewer = new Cesium.Viewer("map");
const positions = [
Cesium.Cartographic.fromDegrees(
-75.59967741159785,
40.04091766662355,
76.37856662343563
),
Cesium.Cartographic.fromDegrees(
-75.59955207631664,
40.036827420667116,
71.6963743893841
),
Cesium.Cartographic.fromDegrees(
-75.59376378325359,
40.0367060679407,
83.98039248519758
),
Cesium.Cartographic.fromDegrees(
-75.5936186712503,
40.03959922674249,
82.13316846253008
),
Cesium.Cartographic.fromDegrees(
-75.59550520685805,
40.04082628776817,
84.00794582002823
),
];
const bbb = viewer.scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(1728517),
})
);
viewer.flyTo(bbb);
const aaa = new WaterPrimitive({
scene: viewer.scene,
positions: positions,
height: 81,
rippleSize: 100,
});
const gui2 = new GUI();
const waterParams = {
波纹大小: 50.0,
透明度: 0.9,
反射率: 0.3,
扭曲: 3.7,
高度: 81,
};
function waterParamsUpdate() {
aaa.rippleSize = waterParams['波纹大小'];
aaa.waterAlpha = waterParams['透明度'];
aaa.reflectivity = waterParams['反射率'];
aaa.distortionScale = waterParams['扭曲'];
aaa.height = waterParams['高度'];
}
gui2
.add(waterParams, "波纹大小")
.min(0)
.max(300)
.onChange(waterParamsUpdate);
gui2
.add(waterParams, "透明度")
.min(0)
.max(1)
.onChange(waterParamsUpdate);
gui2
.add(waterParams, "反射率")
.min(0)
.max(1)
.onChange(waterParamsUpdate);
gui2
.add(waterParams, "扭曲")
.min(0)
.max(8)
.onChange(waterParamsUpdate);
gui2
.add(waterParams, "高度")
.min(70)
.max(100)
.onChange(waterParamsUpdate);
</script>
着色器代码
可联系 QQ: 297467136