Away3d的粒子系统做雨雪效果

时间:2021-05-23 20:19:24

  最近被安排了做雨雪的效果,由于公司使用的是Away3D引擎,所以只有从这个里面入手了。

雪花效果要求:

  1.随便Camera在什么地方都能看到雪;

  2.不能只是Camera前面有一层,远处也要有。不然感觉就像是只在窗户外面有一点雪,也就是说粒子动

画的范围要广;

  3.性能考虑,不能多余2000个粒子。

解决办法:

  后面通过对ParticleAnimator的了解,跟随摄像头可以通过增加ParticleFollowNode和ParticleBillboard

来实现效果。这2个Node基本实现了我要的效果,但是遇到了2个异常现象:

  1.在Camera移动过程中,如果粒子Mesh的中点不在Camera视锥里面,整个粒子系统就会消失,经过调

试发现是ParticleMesh的Bounds没有实时更新,因为这个粒子系统的实现是通过AGAL在GPU里面运算实现

动画,内存里面的BOUNDS就没有更新,Camera进行视锥裁剪的时候就会过滤掉。暂时找不到什么好办法,

我就直接particleMesh.id="Particles",然后在MeshNode.as中对这个mesh的id进行判断就不会出现粒子突然

全部消失的现象了。

  2.给ParticleBillboardNode传参new Vector3D(0,1,0),粒子系统又消失。这个很费解,通过各种调试查

错都找不到原因,偶然一次注释掉了ParticleBillboardState.as中:

  //_matrix.appendRotation(-comps[1].w*MathConsts.RADIANS_TO_DEGREES, comps[1]);

就运行正常了。难道又是Away3D的BUG,这个只有后面慢慢研究什么原因了,会不会有什么不良影响也暂不

清楚。