`
zhyt710
  • 浏览: 206404 次
  • 性别: 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])];

}
}
}

相关推荐

    android游戏开发基础模拟粒子系统

    一、粒子系统原理 粒子系统的基本思想是将复杂的效果分解为许多简单的元素,每个元素称为一个粒子。这些粒子具有自己的属性,如位置、速度、颜色、大小和生命周期。通过改变这些属性,可以创造出各种动态效果。粒子...

    粒子系统概述

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

    基于粒子系统的三叶玫瑰动态烟花模拟

    本文介绍了一种利用粒子系统原理来实现三叶玫瑰动态烟花模拟的技术。该技术不仅能够模拟出逼真的三叶玫瑰形状的烟花,还能确保模拟过程具有良好的实时性能。 #### 粒子系统 粒子系统是一种用于模拟不规则模糊物体...

    基于粒子系统的雨雪效果

    这个项目对于学习OpenGL图形编程和粒子系统原理的人来说非常有价值,它提供了一个实际的实现案例,有助于理解如何在实际项目中运用这些概念。通过分析和修改代码,可以进一步学习和改进雨雪效果,例如增加光照效果、...

    OpenGL粒子系统大作业之灿若繁星

    总的来说,“OpenGL粒子系统大作业之灿若繁星”是一个综合了计算机图形学、OpenGL编程、粒子系统原理和交互设计的项目。它不仅展示了开发者对OpenGL和粒子系统技术的掌握,还体现了艺术与技术的完美融合。通过这样的...

    delta3d中函数控制particlesys(粒子系统)的osg文件

    1. **粒子系统原理**:粒子系统是一种基于对象的模拟技术,通过大量简单的元素(粒子)动态组合,形成复杂的效果。每个粒子都有自己的属性,如位置、速度、颜色、大小、生命周期等,通过更新这些属性,可以实现动态...

    粒子系统源码 粒子系统源码

    粒子系统在计算机图形学中是一种广泛应用的...通过研究这些源码,开发者可以深入理解粒子系统的实现原理,并能根据需求自定义粒子效果。无论是对游戏开发者还是图形编程爱好者来说,这些源码都是一份宝贵的学习资料。

    xna粒子效果

    二、粒子系统原理 粒子系统是一种模拟复杂动态现象的简化模型,通过大量简单个体(粒子)的运动和交互来表现出火焰、烟雾、水流、爆炸等复杂视觉效果。每个粒子代表一个微小的图形元素,它们有自己的属性,如位置、...

    opengl 粒子系统

    1. **粒子系统原理**: - 每个粒子都有自己的生命周期,通常会随着时间的推移而改变其位置、颜色、大小等属性。 - 粒子系统由大量粒子组成,每个粒子的行为都遵循一定的规则或算法。 - 在本例中,雪花粒子被模拟...

    基于DirectX的火焰粒子系统

    在本文中,我们将深入探讨DirectX的基本概念,火焰粒子系统的原理,以及如何使用Visual Studio(VS)进行程序开发。 首先,了解DirectX:DirectX是由微软开发的一系列接口,专为加速Windows操作系统上的多媒体应用...

    易语言源码HGE粒子.rar

    2. 粒子系统原理: 粒子系统是一种模拟自然现象的技术,它通过大量微小的图形——粒子,来模拟和渲染出如爆炸、火焰、水波、烟雾等复杂动态效果。每个粒子都有自己的属性,如位置、速度、生命周期、颜色变化等,...

    osg粒子系统包括喷泉雨雪效果

    《osg粒子系统:创造视觉奇迹》 在计算机图形学领域,粒子系统是一种强大的工具,用于模拟复杂的视觉效果,如喷泉、雨、雪等自然现象。OpenSceneGraph(osg)是一个开源的3D图形库,提供了丰富的功能,其中包括粒子...

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

    GPU 粒子系统的原理与实现 GPU 粒子系统是一种高效的图形生成算法,用于模拟不规则模糊物体,例如火、烟、云、雾、落叶、水流等。在传统的粒子系统实现方法中,存在着时间消耗过大的问题,无法满足实时系统的需要。...

    opengl 粒子系统 火焰效果 c源码

    在烟花效果中,粒子系统被用来模拟烟花升空、绽放的整个过程,而在此基础上,作者将这个原理应用到火焰效果的实现上。 火焰效果的实现通常包括以下几个关键步骤: 1. **粒子生成**:首先,粒子需要在特定位置生成...

    OpenGL粒子系统之雪花飘飘

    OpenGL粒子系统是计算机图形学中的一个重要概念,常用于创建各种动态效果,如爆炸、火焰、烟雾、水滴等。在这个“OpenGL粒子系统之雪花飘飘”的项目中,作者通过OpenGL实现了真实的雪花模拟,还加入了配乐和可控制的...

    flash粒子系统简要说明

    下面将详细阐述Flash粒子系统的基本概念、工作原理、关键属性以及如何进行实际操作。 一、基本概念 粒子系统是一种模拟自然现象的技术,通过大量微小的图形元素(粒子)组合成复杂动态效果。在Flash中,粒子可以...

    基于粒子系统的精灵火

    【基于粒子系统的精灵火】 粒子系统是一种在计算机图形学中广泛使用的模拟复杂视觉效果的技术,如烟雾、火焰、水、雪花等。在本项目"基于粒子系统的精灵火"中,我们将探讨如何利用粒子系统来创建逼真的火焰特效,...

    粒子系统----喷泉

    在计算机图形学中,粒子系统是一种用于模拟复杂视觉效果的技术,尤其适用于表示那些难以精确建模的...理解并掌握粒子系统的工作原理和实现方法,对于提升游戏开发、动画制作以及其他视觉艺术领域的专业技能至关重要。

    粒子系统

    下面将详细阐述粒子系统的原理、实现方式以及在实际中的应用。 粒子系统的基本思想是将复杂的视觉现象分解为大量简单、独立的个体——粒子。每个粒子都有其特定的状态,如位置、速度、颜色、大小、生命周期等。通过...

Global site tag (gtag.js) - Google Analytics