cesium 添加水面特效倒影 代码
时间: 2023-09-04 12:15:38 浏览: 321
62.(cesium篇)cesium水面波纹(动态水面).zip
5星 · 资源好评率100%
下面是实现 cesium 添加水面特效倒影的代码:
```javascript
// 设置地球表面水面效果
var waterShader = "czm_material czm_getMaterial(czm_materialInput materialInput)\n\
{\n\
czm_material material = czm_getDefaultMaterial(materialInput);\n\
vec2 st = materialInput.st;\n\
st += viewerPosition.xz * 0.0001;\n\
material.alpha = 0.6;\n\
material.diffuse = 0.7 * vec3(0.3, 0.5, 0.7) + 0.3 * vec3(0.1, 0.1, 0.2);\n\
material.emission = 0.3 * vec3(0.2, 0.3, 0.4);\n\
material.normal = computeNormal(vec3(st, 0.0));\n\
material.normal = czm_normal3D * material.normal;\n\
return material;\n\
}";
Cesium.Material.addMaterialShaderSource(waterShader);
// 添加水面效果
var water = viewer.scene.primitives.add(new Cesium.Primitive({
geometryInstances : new Cesium.GeometryInstance({
geometry : new Cesium.PlaneGeometry({
vertexFormat : Cesium.VertexFormat.POSITION_ONLY,
minimum : new Cesium.Cartesian3(-1000000.0, -1000000.0, 0.0),
maximum : new Cesium.Cartesian3(1000000.0, 1000000.0, 0.0)
}),
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.WHITE.withAlpha(0.0))
},
id : 'water'
}),
appearance : new Cesium.MaterialAppearance({
material : new Cesium.Material({
fabric : {
type : 'Water',
uniforms : {
specularMap : 'Assets/Textures/waterSpecularMap.jpg',
normalMap : 'Assets/Textures/waterNormals.jpg',
frequency : 1000.0,
animationSpeed : 0.01,
amplitude : 10.0
}
}
})
})
}));
// 添加水面倒影
var reflection = viewer.entities.add({
name : 'Reflection',
position : new Cesium.Cartesian3.fromDegrees(-75.62898254394531, 40.02804946899414, 0.0),
orientation : Cesium.Transforms.headingPitchRollQuaternion(new Cesium.Cartesian3.fromDegrees(-75.62898254394531, 40.02804946899414, 0.0), new Cesium.HeadingPitchRoll(0.0, -Math.PI / 2.0, 0.0)),
model : {
uri : 'Assets/Models/CesiumBalloon/CesiumBalloon.glb',
minimumPixelSize : 128,
maximumScale : 20000,
scale : 500.0
},
reflection : true
});
```
这段代码会在地球表面添加一个水面效果,并在指定位置添加一个模型的倒影。其中,添加水面效果使用了 Cesium 的材质系统,通过设置材质的属性来实现水面效果。添加倒影使用了 Cesium 的实体系统,通过设置实体的属性来实现倒影效果。
阅读全文