webgl粒子雨水特效

0 投票

在场景中第一次添加和第一次移除都正常,第一次移除完之后进行第二次添加就报错了

代码是按照官网示例上的代码

var rainSystem = new Cesium.ParticleSystem({
        modelMatrix: new Cesium.Matrix4.fromTranslation(scene.camera.position),
        speed: -1.0,
        lifetime: 10.0,
        emitter: new Cesium.SphereEmitter(rainRadius),
        startScale: 1.0,
        endScale: 1.0,
        image: '../image/rain.png',
        emissionRate: 3000.0,
        startColor: new Cesium.Color(1, 1, 1, 0.8),
        endColor: new Cesium.Color(1, 1, 1, 0.8),
        imageSize: rainImageSize,
        updateCallback: rainUpdate,
        performance:false,

    });
    rainSystem.loadRangeScale=100000;


    $('#rain').click(function () {
        if ($(this).prop('checked') === true) {
            scene.primitives.add(rainSystem);
        } else {
            scene.primitives.remove(rainSystem);
        }
    })

4月 16 分类:  72次浏览 | 用户: j490365867 初出茅庐 (65 分)

1个回答

0 投票
 
已采纳
您好,移除之后就相当于把这个对象销毁了,再次创建就会报错,您可以不用移除他,不想要的时候可以设置scene.primitives._primitives.show = false,想要其显示则设置scene.primitives._primitives.show = true
4月 16 用户: 卷饼先生 名扬四海 (4,649 分)
采纳于 4月 16 用户:j490365867
您好,我设置false之后移动相机,再设置show,雨水还是在原来的地方,当前相机视角没有雨水了
再次设置show的时候同时设置rainSystem.modelMatrix = new Cesium.Matrix4.fromTranslation(scene.camera.position)
多谢,解决了!
...