iclient3d粒子特效与原生Cesium的差别

0 投票
在原生Cesium的雨、雪等特效切换为使用iclient3d无任何显示、不抛出任何异常。需要为iclient3d做什么修改才能兼容?

原特效在原生Cesium 1.72、1.69、1.54上都正常显示。
10月 22, 2020 分类:  201次浏览 | 用户: varchar 初出茅庐 (87 分)

1个回答

0 投票
 
已采纳

您好,这是咱们iClient 3D for WebGL加载雨水粒子特效的代码

// rain
            var rainParticleSize = scene.drawingBufferWidth / 80.0;
            //降雨范围
            var rainRadius = 4000.0;
            var rainImageSize = new Cesium.Cartesian2(rainParticleSize, rainParticleSize * 3.0);
            var rainGravityScratch = new Cesium.Cartesian3();
            var rainUpdate = function (particle, dt) {
                rainGravityScratch = Cesium.Cartesian3.normalize(particle.position, rainGravityScratch);
                rainGravityScratch = Cesium.Cartesian3.multiplyByScalar(rainGravityScratch, -40, rainGravityScratch);

                particle.position = Cesium.Cartesian3.add(particle.position, rainGravityScratch, particle.position);

                var distance = Cesium.Cartesian3.distance(scene.camera.position, particle.position);
                if (distance > rainRadius) {
                    particle.endColor.alpha = 0.0;
                } else {
                    particle.endColor.alpha = rainSystem.endColor.alpha / (distance / rainRadius + 0.1);
                }
            };


            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: './images/ParticleSystem/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,
            });
            scene.primitives.add(rainSystem);
            rainSystem.lodRangeScale=10000;

以及官网范例网址http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#Particle%20System_rain。需要注意降雨范围的设置

10月 23, 2020 用户: 卷饼先生 名扬四海 (2,535 分)
采纳于 11月 3, 2020 用户:varchar

构建ParticleSystem里的options参数与官网范例或有所不同。但是现在经测试,无任何显示的是iclient3d 9,换到iclient3d 10有显示,但是效果与cesium有差异,如下:

原生Cesium的

原生Cesium的

使用iclient10的使用iclient10的

您现在的意思就是粒子太大了是吗?可以设置ParticleSystem的imageSize属性,设小一些,相应的粒子就会变小
iclient10和原生Cesium的ParticleSystem仅仅是imageSize差别吗?会不会有其他问题

另外,实测官网范例用上iclient3d 9也无显示,9还不支持ParticleSystem吗?

以为10有其它问题,所以目前还需用9
...