//绘制水面效果 function drawWater() { // this.viewer.scene.globe.depthTestAgainstTerrain = true; var waterFace = [ 110.15,34.56, 0, 110.25, 34.56, 0, 110.25, 34.54, 0, 110.15, 34.54, 0]; var waterPrimitive = new Cesium.Primitive({ show: true,// 默认隐藏 allowPicking: false, geometryInstances: new Cesium.GeometryInstance({ geometry: new Cesium.PolygonGeometry({ polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(waterFace)), extrudedHeight: 0,//注释掉此属性可以只显示水面 // perPositionHeight : true//注释掉此属性水面就贴地了 }) }), // 可以设置内置的水面shader appearance: new Cesium.EllipsoidSurfaceAppearance({ material: new Cesium.Material({ fabric: { type: 'Water', uniforms: { //baseWaterColor:new Cesium.Color(0.0, 0.0, 1.0, 0.5), //blendColor: new Cesium.Color(0.0, 0.0, 1.0, 0.5), //specularMap: 'gray.jpg', //normalMap: '../assets/waterNormals.jpg', normalMap: '../assets/images/media/waterNormals.jpg', frequency: 1000.0, animationSpeed: 0.01, amplitude: 10.0 } } }), // fragmentShaderSource: 'varying vec3 v_positionMC;\nvarying vec3 v_positionEC;\nvarying vec2 v_st;\nvoid main()\n{\nczm_materialInput materialInput;\nvec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nmaterialInput.s = v_st.s;\nmaterialInput.st = v_st;\nmaterialInput.str = vec3(v_st, 0.0);\nmaterialInput.normalEC = normalEC;\nmaterialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);\nvec3 positionToEyeEC = -v_positionEC;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nczm_material material = czm_getMaterial(materialInput);\n#ifdef FLAT\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n#else\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\ // gl_FragColor.a=0.5;\n#endif\n}\n'//重写shader,修改水面的透明度 }) }); this.viewer.scene.primitives.add(waterPrimitive); this.viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(110.2, 34.55, 6000.0), orientation: { heading: Cesium.Math.toRadians(0.0), //默认朝北0度,顺时针方向,东是90度 pitch: Cesium.Math.toRadians(-90), //默认朝下看-90,0为水平看, roll: Cesium.Math.toRadians(0) //默认0 } }); CesiumFlood.create(viewer,true,1100,500,1,true); CesiumFlood.start(); } function sub_analysis_draw(){ var options = { 'viewer':viewer, 'polygoncolor': Cesium.Color.SALMON.withAlpha(0.5), //面的颜色(可设置透明度) 'pointcolor': Cesium.Color.RED, //画面时圈点的颜色 } CesiumFlood.drawFloodDraw(options); } function sub_analysis_drawClear(){ var options = { 'viewer': viewer, //全局Cesium对象 }; CesiumFlood.floodDrawClean(options); } function sub_analysis_start(max,min,speed){ // CesiumFlood.polygon_degrees = CesiumDraw.polygonPoints; CesiumFlood.create(viewer,true,max,min,speed,true); CesiumFlood.start(); } function sub_analysis_stop(){ CesiumFlood.speed = 0; } function sub_analysis_clear(){ CesiumFlood.remove(); }