魔兽世界里有一种效果,一小块乌云漂浮到敌人的头顶,然后从乌云里划出一道道的闪电,向敌人劈去~
现在的游戏里,普遍都会存在类似的魔法效果,于是自己想先写一下试一试。但是,用普通的粒子系统生成的云非常难看。听公司里的同事说,魔兽世界里的云就是一个模型,不过这种模型云可能对美工的要求会很高。前天又听azure说可以用模型粒子发射器发射粒子来代替模型,仔细的想了一下,还是用模型粒子发射器比较划算。虽然OGRE自带的发射器并不支持,但是却很容易在OGRE原有的发射器基础上扩展得到。扩展出模型粒子发射器后,我们光效系统的表现力又提高了不少:)
所谓的模型粒子发射器,就是把模型的顶点作为发射粒子的粒子源。这种发射器有两个属性,一个是要作为发射器的模型的文件名,另一个是对模型的缩放系数。在初始化时,发射器会加载指定的模型,但是我们只对它的顶点数据感兴趣,而忽略其它数据。获取模型所有顶点的坐标,然后可以用顶点坐标乘以缩放系数来调整它们的空间位置。最后,在发射器初始化粒子时,从一系列的顶点中随机的选一个,用这个坐标作为偏移量加上发射器的坐标,再用得到的坐标作为粒子的初始位置就OK了~
这样一来,用模型发射器发射出来的粒子群就有了模型的轮廓。这时我们要想表现一个云团的效果,只需作出一个云团的粗模,然后用它做发射器向外发射烟雾粒子就行了。
下面是在做试验时的一些截图:
1、图中右边的粒子群是用左边的模型做为发射器的结果,粒子的速度为0,粒子发射出来后停留在模型的顶点处,将模型的轮廓描绘了出来。

2、一团会放闪电的积雨云,云团是用模型发射器做出来的。这只是我做的试验,如果模型和粒子的纹理做的足够好,云团的表现会更好。
