首  页   最新日志    火人论坛        火人作品    编程园地    网络日志    网友作品     留言本本     关于火人
用户登陆
用户:
密码:
 

站点日历
73 2019 - 4 48
 123456
78910111213
14151617181920
21222324252627
282930




日志搜索

 标题   内容

 
 
DelphiX作的调色板动画(附源码) 仔仔成长日记(一)爸爸我来了
晴天 两种引擎的火焰粒子系统演示
   [分类:编程园地][发表日期:2005-12-20] [发表:huasoft[查看:85027]

按此在新窗口打开图片
这是分别用Asphyre的SpriteEngine和AspyreParticle引擎制作的火焰粒子系统例子
注:粒子系统在现今的图形、游戏编程中有着广泛的应用,它能有效地模拟烟火、爆炸、烟雾、水纹以及一些特殊的光影效果,它对图形、游戏编程有着巨大的推动作用
希望有兴趣的朋友能提供更多更炫的粒子效果,互相交流,共同进步。

点击下载此文件


粒子系统概述
80年代初就有人提出了Particle System的方法(时间?人物?待查...),主要用来解决由大量按一定规则运动(变化)的微小物质组成的大物质在计算机上的生成与显示的问题。Particle System的应用相当广泛,大的可以模拟原子弹爆炸,星云演化,小的则可以模拟水波、火焰、烟火、云雾等等,而这些自然现象用常规的图象算法(如调色板动画、动画贴图、基于多边形的渲染、光线跟踪渲染)是很难逼真再现的。

Particle System可以说是一种基于物理模型来解决问题的方法,Imagic认为它的核心不是在于如何显示,而是在于对微小物质模型的规则提取。比如在水波算法中,能够总结出X0'=(X1+X2+X3+X4)/2-X0这个公式(参见Ripple一文),才是整个算法的精华所在。只有基于物理模型的方法,才能模拟出随机而逼真的自然景象。

粒子运动(变化)的规则可以很简单也可以很复杂,这取决你所模拟的对象。举例来说,在对FireWorks(烟火)的模拟中,我们可以让烟火由上百个小的粒子组成,每个粒子都具有以下一些属性及其规则(对各个属性施加不同的规则,就可以获得不同形态的烟火): 

Coordinate(坐标)
在烟火爆炸的时刻,每个粒子都有一个相同的初始坐标,随着时间的推移,粒子的新坐标将由它的旧坐标和加速度来求得 
Velocity(速度)
每个粒子都有一个随机产生的初始速度,粒子的新速度由加速度和空气阻尼来求得 
Acceleration(加速度)
在烟火中,每个粒子的加速度都等于重力加速度 
Color(颜色)
粒子颜色取决于粒子的速度或生命值的大小 
Life(生命值)
每个粒子都有一个初始的随机生命值,这个值将随着时间的推移而逐渐减小,直到等于0 

你会发现,Particle System中的粒子与类的概念有些类似,实际上你完全可以将它当成类来处理,一个粒子就是一个类的实例对象,只不过有时在涉及程序优化的具体细节上,你需要放弃使用类,而使用简单而快速的紧凑代码。

Particle System虽然在处理大量单独粒子的运动(变化)上很有用处,但是一涉及到需要考虑粒子间相互作用的场合,因为这时的计算量呈粒子数量的指数级增长,它就显得有些力不从心了。比如在模拟有相互引力作用下的大量星体的运动,大量粒子的相互碰撞等。




[本日志由 huasoft 于 2005-12-21 10:27 PM 编辑]

引用这个评论 dream_yu 于 2006-02-09 03:47 PM 发表评论: 
有没有这个粒子火焰的C++的源码啊

 

发表评论
发表: 用户:  密码:   注册?  
验证码    
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 

Copyright © 2006 All rights reserved. Design by huosoft

电话:13974847258    QQ群:7155339
Powered by L-Blog V-Blog 2004-2005