`
zhyt710
  • 浏览: 202627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

粒子系统原理

阅读更多

原文出处:http://www.cnblogs.com/SweetDream/archive/2006/03/02/340982.html

原文如下(有删减)

 

粒子系统主要用来解决由大量按一定规则运动(变化)的微小物质组成的大物质在计算机上的生成与显示的问题。

每个粒子需要一些属性来和其他粒子区别。通常在一个系统中的所有粒子有一个相同的属性集。

有一些适用于粒子的典型属性:

1. 位置( Position ):粒子在哪里。

处理运动粒子的每个粒子系统都需要知道每个粒子的位置。

2. 速度 (Velocity) :包括速率 (speed) 和方向 (direction)

位置的改变依赖于速度。速度是一个矢量表明系统由多快和粒子的运动方向。每一时间间隔,速度用于改变粒子位置。

3. 加速度 (Acceleration)

    和速度作用于位置一样,加速度作用于速度。粒子的加速度通常适用于外力作用。外力经常是重力,或者是粒子间的引力或斥力。

4. 生命值 (Life)

    每个粒子都有着自己的生命值,随着时间的推移,粒子的生命值不断减小,直到粒子死亡(生命值为 0 )。一个生命周期结束时,另一个生命周期随即开始,有时为了使粒子能够源源不断地涌出,必须使一部分粒子在初始后立即死亡。

5. 衰减 (Decay)

    就象人会衰老一样,每个粒子也有它自己的生命周期, Decay 就是用来控制粒子生命周期的一个物理量。

 

性能和需要

  高级粒子系统可能会需要大量的代码,所以设计好数据结构是非常重要的。此外必须牢记如果设计欠佳,粒子系统会大幅降低刷新率,并且大多数的性能问题是由粒子系统带来的内存管理问题引起的。

  设计粒子系统时首先应该明白粒子系统大大增加每帧的可见多边形数量。每个粒子可能需要四个顶点和两个三角形。以此计算,一个场景中的 2,000 个可见的雪花粒子将增加 4,000 个可见的三角形。又因为大多数粒子是运动的,我们不能预先计算顶点缓冲,所以每一帧,定点缓冲都需要被改变。

技巧在于只执行尽量少的内存操作 ( 分配和释放 ) 。这样,如果一个粒子在一定时间后消亡,不要急着从内存中释放。相反,用一个标志来记录它是死亡还是重生 ( 重新初始化 ) 。然后当所有的粒子都被标为死亡时,释放整个粒子系统。 ( 包括系统中的所有粒子 ) ,如果系统是定常的,那么使系统保持存活。如果你想要重建系统或只想假入一个新的粒子,你应该根据粒子所属的系统使用相应的默认设置 / 属性来自动初始化粒子。

 

粒子系统最基本思想:

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

分享到:
评论
1 楼 zhyt710 2011-11-14  
package {
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.filters.ColorMatrixFilter;
import flash.net.URLRequest;
import flash.utils.setTimeout;

public class ShadowSolution extends Sprite {
public function ShadowSolution() {

stage.scaleMode = StageScaleMode.NO_SCALE;;
stage.align = StageAlign.TOP_LEFT;

var sp:Sprite = new Sprite;
this.addChild(sp);

var loader:Loader = new Loader;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function():void {
var swf:MovieClip = loader.contentLoaderInfo.content as MovieClip;
sp.addChild(swf);
});
loader.load(new URLRequest("bearshadow.swf"));

var loader1:Loader = new Loader;
loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, function():void {
var swf:MovieClip = loader1.contentLoaderInfo.content as MovieClip;
sp.addChild(swf);
});
loader1.load(new URLRequest("roleshadow.swf"));

var rLum:Number = 0.2225;
var gLum:Number = 0.7169;
var bLum:Number = 0.0606; 

sp.filters = [new ColorMatrixFilter([
rLum, gLum, bLum, 0, 0,
rLum, gLum, bLum, 0, 0,
rLum, gLum, bLum, 0, 0,
0, 0, 0, 1, 0])];

}
}
}

相关推荐

    粒子系统概述

    讲述粒子系统的基本概念、基本原理以及实现过程,对于想了解粒子系统的初学者提供一个引导。

    flex 粒子系统宣讲

    flex 粒子系统宣讲 ppt(只提供学习)

    XNA环境下粒子系统的飘雪仿真

    介绍了粒子系统的基本原理和XNA平台的工作原理,阐述了在XNA平台下建立模拟雪花物理模型的技术和实现雪花飘落运动可视化仿真的可行性方法。通过参考现实中的飘雪场景,研究现实中雪花飘落的运动,在.NET开发平台下,利用...

    GPU粒子系统的原理与实现.pdf

    GPU粒子系统的原理与实现.pdf

    《粒子滤波原理及Matlab应用 》程序代码

    黄小平编著的《粒子滤波原理及应用》——Matlab仿真书中代码。本书主要介绍粒 子滤波的基原理及其在非线性系统中应用。为方便读者快速掌握本书主要介绍粒 子滤波的基原理及其在非线性系统中应用。为方便读者快速掌握...

    论文研究-基于粒子系统的虚拟战场环境特殊效果模拟 .pdf

    基于粒子系统的虚拟战场环境特殊效果模拟,蒋道琛,汪继文,粒子系统是虚拟战场环境仿真中对不规则动态形状物体建模的最有效的方法之一。而文中深入研究了粒子系统的基本原理,应用粒子系统

    基于OGRE粒子系统的烟花模拟

    拟,首先研究OGRE粒子系统的核心原理,以及粒子脚本语言和材质脚本语言,结合纹理映射的方法,提出一种基于OGRE粒子系统 的烟花模拟方法,最后在该图像渲染引擎下实现了多种烟花效果。由于该方法采用脚本语言,...

    粒子系统演示

    这是一个粒子系统喷射粒子的程序代码,可以帮助opengl初学者学习粒子系统的基本原理

    基于粒子系统与OPENGL实现喷泉效果

    阐述了粒子系统方法的基本原理,基于粒子系统方法,运用物体动力学分析了现实中喷泉的运动,设计并 实现了一个基于 Vc++和OpenGL的喷泉粒子系统.为增强喷泉的真实效果,运用 了伪粒子粘度的方法.实验结 果表明...

    烟花特效opengl程序

    一个用C++写的烟花燃放的特效程序,采用粒子系统原理,渲染利用opengl

    多粒子系统角动量投影的新方法

    多粒子系统角动量投影的新方法,潘峰,高 明,在Heine-Stieltjes对应原理的基础上,介绍一种关于带有任意自旋多粒子系统角动量投影的新方法. 该方法通过推广Heine-Stieltjes多项式的Stieltj

    研究论文-基于OGRE粒子系统的喷泉模拟.pdf

    在粒子系统的基本理论结构上研究了面向对象的图形渲染引擎(OGRE)粒子系统的核心原理以及粒子脚本语言. 提出了一种基于OGRE粒子系统的喷泉模拟方法,在该图形渲染引擎下实现了多种喷泉效果. 使用这种简本语言使...

    论文研究-基于粒子系统的瀑布模拟.pdf

    以粒子系统为基础、线元为基本绘图单位,应用牛顿运动定律分析并建立瀑布运动方程,进行了瀑布场景的模拟。采用包围盒与粒子聚类检测相结合的方式以及参考射线反射原理实现了瀑布与障碍物的碰撞,并运用OpenGL中的...

    在VC++开发平台下的OpenGL

    在vc++平台下,采用OpenGL,根据粒子系统原理,在场景内绘制喷泉。

    论文研究-利用粒子滤波原理求解非线性方程组.pdf

    系统地介绍粒子滤波算法的基本原理及其优化算法的实现过程。将非线性方程组的求解问题转化为函数优化问题,并建立基于粒子滤波算法求解非线性方程组的优化模型。通过仿真实例验证所提方法的有效性。实验结果表明该...

    煤矿通风系统三维模拟关键技术研究及其实现

    文章主要对地理信息系统(GIS)在煤矿通风系统三维模拟关键技术及其实现进行了系统地研究,提出了巷道三维数据模型,建立了巷道的空间拓扑关系与空间属性数据库,通过对传统的粒子系统原理进行改造实现了巷道中的风流模拟...

    粒子滤波在单目标跟踪多目标跟踪电池寿命预测中的应用-粒子滤波原理及应用仿真.doc

    推荐一本学习粒子滤波原理的好资料《粒子滤波原理及应用仿真》,本手册主要介绍粒子滤波的基本原理和其在非线性系统的应用。同时本手册最大的优点是介绍原理和应用的同时,给出实现例子的matlab代码程序,方便读者...

    化工园区虚拟试验中碎片分布情况可视化研究

    因此在虚拟试验的应用背景下,结合粒子系统原理,对化工园区储罐爆炸后碎片散布情况进行了可视化研究。通过分析轨迹方程,获得了碎片飞行轨迹的相关结论,以此为基础实现了园区虚拟试验系统,并结合案例进行了分析...

    基于粒子系统的火灾特效仿真研究 (2011年)

    阐述了粒子系统的基本原理,在对粒子系统的研究基础上,分析了通过预定义和自定义的方法创建和设置火灾模拟效果,论述了在Visual C + + 6.0环境下Vega火灾模拟效果应用编程,实现了Vega中基于粒子系统的火灾效果的模拟,...

    基于粒子和纹理绘制的火焰合成原理

    摘要:现有的火焰合成算法多数都是基于粒子系统,其主要缺点是运算量大。本文先用少量粒子勾勒火焰的外轮廓线,再用纹理绘制的方法填充火焰纹理。这样既利用了粒子系统形成轮廓线的真实感,又避免大量的粒子状态运算...

Global site tag (gtag.js) - Google Analytics