网页功能: 加入收藏 设为首页 网站搜索  
Particle System Overview [粒子系统概述]
发表日期:2007-01-16作者:[转贴] 出处:  


早认识Particle System还是从OverClock的主页上(当时叫DirectX Guide,现在已改名为Fractal3D,http://fractal3d.yeah.net),当时上面介绍了一个老外研究出来的水波算法。如果你是搞图形编程的,你就会知道如果用常规的精确算法在电脑上实时模拟水波的形态,几乎可以说是不可能,但是运用这个算法却能在一台配置极差的电脑上实现这一景象,的确是让我感到非常惊讶。但要知道,越是效率高的代码越是难于理解,一开始,我简直搞不明白为什么简单的几行代码就可以实现这种效果,研究了好几天,这才恍然大悟、茅塞顿开(用释加摩尼的话说是大彻大悟,用马克思的话说是量变引起质变),使我对Particle System有了最初之体验。

实,老外在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中的粒子与C++中类的概念有些类似,实际上你完全可以将它当成类来处理,一个粒子就是一个类的实例对象,只不过有时在涉及程序优化的具体细节上,你需要放弃使用类,而使用简单而快速的紧凑代码。

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

文只是对Particle System的一些简要介绍,要深入理解Particle System,还是需要多看一些例子,编一些程序。下面是Imagic为你准备的程序和文章,希望对你能有所帮助。

 

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 Particle System Overview [粒子系统概述]
本类热点文章
  Particle Fire [粒子火焰]
  wu反走样(Anti-aliased)直线
  反走样技术之一 —— Wu像素
  粒 子 系 统
  3D 粒子系统
  Real-time Cloth Deformation [实时变形..
  Ripple [水波]
  碰撞检测和粒子的交互作用
  Particle System Overview [粒子系统概..
  wu像素
  图象特效-等离子体(Plasma)
  制作爆炸效果
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00334