粒子系统 您所在的位置:网站首页 独立粒子系统有哪些 粒子系统

粒子系统

2024-07-04 12:01| 来源: 网络整理| 查看: 265

现象建模中,如云、烟、水和火在现有的计算机图像合成技术下是比较困难的。这些“模糊”的物体没有光滑、清晰和闪亮的表面;相反,它们的表面是不规则的、复杂的、不清楚的。我们感兴趣的是它们在形状和外观上的动态和流体变化。它们不是刚体,它们的运动也不能用计算机图形学中常见的简单仿射变换来描述。这时候就非常有必要来认识认识今天的主角——粒子系统。

 

 

 

什么是粒子系统

 

粒子系统一种模糊对象建模的方法。粒子系统的表示与通常在图像合成中使用的表示有三个基本区别:

一个物体不是由一组定义其边界的原始表面元素(如多边形)来表示的,而是由定义其体积的原始粒子组成的云;

粒子系统不是一个静态的实体。它的粒子会随着时间的推移改变形态并移动。而且具有生命周期;

粒子系统表示的对象是不确定的,因为它的形状和形式没有完全指定。相反,随机过程被用来创建和改变一个物体的形状和外观。

在模糊对象建模中,粒子系统方法比传统的面向表面技术有几个重要的优点:

首先,一个粒子(现在把一个粒子想象成三维空间中的一个点)是一个比多边形简单得多的基本元素,多边形是表面表征中最简单的。因此,在相同的计算时间内,可以处理更多的基本图元并生成更复杂的图像。因为粒子很简单,所以也很容易进行运动模糊。在计算机图像合成中,对快速移动物体进行运动模糊处理以去除时间混叠效应一直是一个被忽视的问题。

 

第二个优点是模型定义是程序性的,由随机数控制。因此,获得一个非常详细的模型并不一定需要大量的人工设计时间,而现有的基于表面的系统通常都是这样。因为它是程序性的,粒子系统可以调整它的细节水平以适应一组特定的观察参数。与分形表面一样,对粒子系统进行放大可以显示越来越多的细节。第三,粒子系统模拟“活着”的物体,也就是说,它们会在一段时间内改变形态。很难用基于表面的建模技术来表示这种形式的复杂动力学。

 

粒子系统的基本模型

 

粒子系统是许多微小粒子的集合,它们共同代表一个模糊的对象。一段时间内,粒子在系统中生成,在系统内部移动和改变,然后在系统中死亡。

 

计算每一帧的运动序列,执行以下一系列步骤:

(1)新粒子在系统中生成;

(2)每个新粒子分配其独特的属性;

(3)任何已经存在于系统中超过规定寿命的粒子都将被消灭;

(4)剩余的粒子根据它们的动态属性进行移动和变换;

(5)存活粒子将被渲染在一个帧缓存中。

 

粒子系统可以被编程在每一步执行任何一组指令。因为它是程序性的,所以这种方法可以包含任何描述对象外观或动态的计算模型。例如:粒子的运动和变换可以与偏微分方程组的解相联系,或者粒子属性可以在统计力学的基础上赋值。因此,我们可以利用在其他科学或工程学科中发展起来的模型。

在这里,我们使用简单的随机过程作为生成框架的每一步的程序元素。为了控制粒子系统内粒子的形状、外观和动力学,模型设计者可以使用一组参数。随机选择每个粒子的外观和运动的随机过程受到这些参数的约束。通常,每个参数都指定了一个粒子的值必须在的范围,范围则通过提供其平均值和最大方差来指定。

下面我们将更详细地描述粒子系统的基本模型。

 

粒子生成

利用受控的随机过程在粒子系统中生成粒子,一个过程决定了每一段时间内进入系统的粒子数。然而,在给定的帧内,产生的粒子数是十分关键的,因为它直接影响到模糊对象的密度。

模型设计者可以选择两种方法来控制新粒子的数量。在第一种方法中,设计者控制在一帧中生成的平均粒子数及其方差。

在帧f中产生的粒子数量:

 

 

在第二种方法中,新粒子的数量取决于对象的屏幕大小。模型设计者控制每单位屏幕面积产生的粒子的平均数量及其方差。程序粒子系统可以确定一个特定帧的视图参数,计算它所覆盖的大致屏幕面积,并相应地设置新粒子的数量。

 

 

粒子属性

对于每个新生成的粒子,必须确定以下属性的值:

初始位置

初始速度

初始大小

初始颜色

初始透明度

形状

生命周期

 

粒子系统的几个参数控制粒子的初始位置。粒子系统在三维空间中的位置决定了它的原点。通过这个原点绕一个坐标系旋转的两个角给了它一个方向。一个粒子系统也有一个generation shape,它根据其原点定义了一块区域,新诞生的粒子被随机放置在其中。

粒子系统的generation shape也描述了新粒子运动的初始方向。粒子的初始速度由以下公式决定:

注:MeanSpeed和VarSpeed是粒子系统的另外两个参数,即平均速度及其方差。

为了确定一个粒子的初始颜色,粒子系统被赋予一个平均颜色和该颜色的最大偏差。颗粒透明度和颗粒大小也由平均值和最大变化决定。方程与上面给出的初速度方程相似。

 

 

粒子系统有一个参数来指定它所产生的每个粒子的形状。粒子形状可以是球形、矩形和带条纹的球形,具体形状由开发者自行实现。条纹粒子用于运动模糊粒子——在建模快速移动的物体时,这是一个非常重要的特征。

 

粒子动力学

粒子系统中的单个粒子在三维空间中移动,也会随着时间改变颜色、透明度和大小。要将一个质点从一个坐标系移动到下一个坐标系,只需将它的速度矢量加到它的位置矢量上。为了增加更多的复杂性,粒子系统还使用一个加速因子来修改粒子在帧与帧之间的速度。利用这个参数,模型设计者可以模拟重力,使粒子沿抛物线而不是直线运动。

 

粒子的颜色随时间的变化由颜色变化速率参数所规定。颗粒的透明度和大小也是用同样的方法控制的。在我们的实现中,这些变化速率对于一个粒子系统中的所有粒子都是全局的,但是我们可以很容易地想象使这个参数也是随机的。

 

粒子消亡

当一个粒子被生成时,它的生命周期是以帧来衡量的。在计算每一帧时,生命周期递减。当粒子的生命周期为零时,它就会死亡。

 

 

除了生命周期结束,其他机制也可能使粒子被杀死,因为它们对图像没有任何贡献。如果一个粒子的颜色和透明度,下降到一个指定的阈值以下,粒子可能被杀死。一个粒子如果从它的母粒子系统的原点在一个给定的方向上移动超过一个给定的距离,也可能被杀死。这种机制可以用来修剪游离在区域之外的粒子。

 

粒子渲染

一旦计算出一帧中所有粒子的位置和外观参数,渲染算法就会生成一幅图像。一般的分形问题和由更常见的图形图元(如多边形和曲面)组成的对象的渲染一样复杂。粒子可以掩盖在屏幕深度后面的其他粒子。它们可以是透明的,也可以在其他粒子上投下阴影。此外,粒子可以在场景中与表面基元建模的物体共存,并且这些物体可以与粒子相交。

 

在现有的系统中,有两个假设可以简化渲染算法。首先,假设粒子系统不会与其他基于表面的建模图元相交,因此我们的渲染算法只需要处理粒子。在后期合成阶段,使用其他技术建模的对象与粒子系统对象组合在一起。为了使一个粒子系统与其他物体相交或在后面,渲染系统将根据模型坐标空间中定义的裁剪平面将一个粒子系统的图像分割成子图像。然后在合成阶段将这些子图像与其他图像相结合。

 

 

在当前的渲染系统中,另一个简化的假设是每个粒子都可以显示为一个点光源。在这个假设的前提下,确定隐藏表面不再是一个问题。每个粒子都给它覆盖的像素增加了一点光。使另一个粒子后面的一个粒子不会被遮挡,而且会给被覆盖的像素增加更多的光。增加的光量和它的颜色取决于粒子的透明度和颜色。目前,增加的光量并不取决于粒子和观察位置之间的距离,但这将是一个简单的扩展。观察变换,粒子的大小和形状决定了哪些像素被覆盖。为了防止暂时的混叠和频闪,所有的粒子形状都被绘制抗锯齿。光线可以被许多粒子添加到一个像素中,因此渲染算法将单个的红、绿、蓝强度固定在帧缓冲区的最大强度值上,而不是让它们环绕。有了这个算法和假设,就不需要对粒子进行排序了。无论生成的顺序如何,它们都被渲染到帧缓冲区中。阴影不再是一个问题,因为粒子不反射而是发出光。

 

粒子层次结构

还有一种机制,支持粒子系统层次的形成和控制。模型设计者创建一个粒子系统,其中粒子本身就是粒子系统。当父粒子系统被变换时,它所有的子粒子系统和它们的粒子也被变换。利用母体粒子系统的平均颜色和方差来选取子代粒子系统的平均颜色和方差。每一帧产生的新粒子系统的数量是基于父粒子的生成速率。父类的其他参数同样会影响其子类的参数。用来表示层次结构的数据结构是树。

 

 

层次结构可用于对由多个粒子系统组成的复杂模糊对象进行全局控制。例如,一个云可能由许多粒子系统组成,每个粒子系统代表一个水粒子的起伏区域。一个母粒子系统可以将它们全部组合在一起,并在风和地形的影响下控制云团的全局运动和外观。

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有