首页 > 考试技巧 >

粒子系统的烟花动画设计

2020-03-30 13:25:02

  在计算机图形技术中,将随机分布的粒子集合构成的景物形象定义成粒子系统,粒子本身是构成景物形象的最简单图元,通过局部图元的特征和动态的变化展现出整个景物环境的变化,于是就能够展现出随机性,动态性以及模糊性等特征,因此粒子系统被认为至今为止最为成功的一种能够模拟不规则且具有模糊印象的图形算法,对自然界的雪花,雾气,烟花,火焰,烟等景象能够很少的模拟,粒子系统构建的影响通过渲染能够展现出非常真实,现在很多好莱坞电影以及游戏制作中,粒子系统图形算法得到了广泛的应用,一起看看吧!

粒子系统的烟花动画设计

  1 粒子系统基础概念

  粒子系统本身是一个集合体,因为现实世界中很多景观都是模糊的,而且还具有流动变化的属性,粒子系统就是将这种模糊又变化的粒子组成一个结合,形成粒子系统,这个系统具有离散和连续两大属性,通过粒子对空间的充斥和运动,且粒子之间相对独立,同时相互不能穿透,在时空上具有一定的变化,同时拥有颜色,亮度,形状以及立体体积的外观形象以及具有运动的特性和生命周期。其中颜色及亮度及形状会随着时间的变化而变化;粒子在不同的应用环境中会具有不同的属性,比如在雾气中,就和在烟花中的属性就有偏差,每个粒子都会有生命周期,所谓粒子生命周期包括新生,活动和死亡,在粒子的生命周期里,粒子从形状和运动状态会发生变化,这个变化过程是随即的,因为粒子系统本身就是描述模糊景物,因此涉及到粒子的各种参数是随机的,包括初始值也要随机。目前粒子模型主要有两种,一种是虚拟,另一种就是实体,无论是虚拟还是实体都具有模糊特征,比如虚拟的雪花,烟雾,实体景物中的人和动物的运动等。对于简单的模糊景物就能够通过改变动力学方程参数值来模拟动态效果,复杂景物就需要对这个物体进行分割,然后针对每一个小部分列出动力学方程,然后针对每个部分来进行帧计算,再绘制成整体。

  2 烟花粒子系统分析

  2.1 烟花粒子模型系统分析

  因为烟花的形状是千差万别的,但是都具有一些基本的特征,因此在烟花粒子建模方面就应该把握住核心特征,并且结合不同的烟花形状来设置不同的参数来实现,比如现在厂家的烟花形状就有球状,风车状,天女散花状以及菊花状等,这些不同形状的烟花实际上仅仅需要通过设置不同的参数和动态模型就能够实现不同的燃放效果。烟花粒子模型的主要模式就是分成两个部分,一个就是燃放点,另一个就是爆炸点,无论是燃放点和爆炸点都是随机的,不过这个随机过程分为横向和纵向之分,一般燃放点都是屏幕的下方,爆炸点会有两种情况,一种是爆炸点和燃放点一致,另一种就是爆炸点和燃放点的轨迹一致,但是这个爆炸点是在屏幕的上方,结合烟花的燃放模式,所以在烟花模型的主要特征上来分析,那就是在燃放点不会释放所有粒子,只要将一个粒子向空中运动,并给这些粒子赋初始值,另一种就是在空中爆炸,此时通过设置不同的初始值来展现烟花粒子的不同形状,同时通过纹理映射技术来让烟花粒子展现出立体效果。

  (1)天女散花模型

  这个烟花粒子系统模型的燃烧点和爆炸点是结合的,因此燃放和爆炸运动轨迹初始点是同一个点,粒子要在第一帧产生,在随后时空里要对粒子的属性进行随机设置,保证一定粒子数。如果太少就不会产生天女散花的效果,而数目太多,处理速度变慢,就会影响实时效果。因为烟花在燃放过程中会出现不同的形状,如果和现实一样太过于困难,通过设置不同粒子形状能够解决这一问题。并将这些不同的粒子形状按照(1、2、……n)序列号设置,并对这些粒子使用随机函数赋值,同时初始值就应该映射纹理,提升粒子的三维属性。目前粒子初始形状公式为:形状=int(形状均值+rand(形状方差));对于这个公式中的int函数是定义粒子的初始属性。而下面的位置,速度和颜色公式则主要定义粒子在空间变化的属性。

  位置公式:位置P(fi)=P(fi-1)+ V(fi -1)dt

  速度公式:速度V(fi)=V(fi-1)+ adt

  颜色公式:颜色C(fi)=C(fi-1)+ △Cdt

  粒子存活时间公式:生存期L(fi)=L(fi-1)-1

  小a是粒子运动的加速度,△C则是粒子的颜色变化比率,生存期的公式设置的目的就是让粒子产生到消亡能有一个时间上和变化上的界定。

  (2)牡丹和激光模型

  这个模型是让粒子在空中燃放,粒子在初始帧产生之后,在后面的运动中不会再产生新粒子,其中粒子的属性,活动及消亡条件如同天女散花模型,然后将球状的烟花模型投影到平面,再加上变化的纹理映射,再结合BillBoarding技术就能够得到类似牡丹或者激光的烟花模型。

  2.2 烟花粒子系统的实现

  (1)烟花粒子系统基本数据结构

  structfire_point t {

  float tdir; //定义运动粒子方向

  float tspeed; ;//初始速度

  float tr,g,b;//初始基本颜色属性

  float tx,y; ;//粒子随机坐标位置

  };

  structfirework

  {

  int ttype; ;//定义烟花的形状模型

  float tx,y; ;//燃放位置

  float tt; ;//粒子存活时间

  float tdir;

  int tflag,counter;

  structfire_point tfp[MAX_POINTS];//爆炸粒子

  structfirework k*next; ;//进入下一个烟火

  };

  (2)烟花粒子系统的生成步骤

  以下简单探讨一下天女散花烟花模型的绘制,其一在燃烧点添加烟花粒子;其二给初始粒子赋值;其三绘制初始烟花粒子;其四根据虚拟时间对每一帧的烟花粒子通过公式赋予不同的属性;其五粒子在运动过程中添加纹理映射;其六粒子生存期值减1;其七部分烟花粒子消亡;其八随机产生新的烟花粒子;其九绘制新的烟花粒子。图3是通过烟花模拟示意图。

  3 总结

  通过对天女散花等烟花粒子系统模型的应用,同时结合了纹理映射和BillBoarding 技术能够有效的展现出四种烟花的燃放过程,这四种燃放模型具有一定的通用性,只需要改变不同的参数就能够达到不同的效果,同时利用了OpenGL显示列表的绘图功能,进一步优化了程序的性能,实现了基本的三维效果和实时性。

考试第一网 Copyright © 2020

本站所有信息整理自互联网,如果侵犯了您的权力,请联系我们删除(cqmuci023@foxmail.com)。