cesium绘制河流流水

var waterPrimitive = new Cesium.Primitive({
    show:false,// 默认隐藏
    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: 'staticFile/images/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,修改水面的透明度
    })
});
waters[idx]=viewer.scene.primitives.add(waterPrimitive);
效果图:

 

获取源码及支持领下红包支持下:

赞赏下:

 

 

Cesium是一个用于创建地理空间应用程序的开源GIS库。要在Cesium中实现河流流水,可以通过以下步骤进行操作。 首先,创建一个3D场景,该场景将作为河流流水的环境。使用Cesium创建一个基本的地球模型,并添加水体的纹理,以模拟河流的效果。可以使用透明度和反射参数来调整水的外观,使其看起来更像真实的河流。 接下来,使用Cesium提供的模型和几何体创建一个代表河流的可视化对象。可以使用几何体如线段或多边形来表示河流的形状,在地球模型中放置它们以模拟河流的位置和路径。可以根据实际地理数据或根据需要手动定义河流的位置和形状。 然后,在河流对象上添加动画效果以模拟流水。可以使用Cesium的动画库或自定义的动画函数来实现这一效果。通过改变河流对象的位置、形状或纹理坐标,可以模拟水在河流中的流动。可以根据需要调整动画的速度、流量和水流的涟漪效果等,以使河流看起来更加逼真。 最后,将创建的河流对象添加到场景中,并使用Cesium提供的相机控制功能定位和观察河流流水的效果。可以调整场景的光照和阴影设置,以增强河流的真实感。 总之,通过利用Cesium库中的3D场景、模型、几何体和动画功能,可以在Cesium中实现河流流水的效果。使用适当的纹理、动画和灯光设置,可以使河流看起来更加逼真和生动。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

合抱阴阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值