GPU支持下基于粒子系统编辑器的特效技术研究

2011-07-07 03:36陈显军李心颖湛永松
图学学报 2011年6期
关键词:编辑器纹理粒子

陈显军, 李心颖, 湛永松

(1. 海口经济学院信息工程学院,海南 海口 570203;2. 桂林电子科技大学计算机科学与工程学院,广西 桂林 541004)

在计算机游戏设计领域,各种特效的模拟一 直是其研究热点之一。大多数特效现象都具有形状不规则及随机多变的特性,难以使用传统的计算机图形学方法建模。粒子系统具有能实时模拟不规则物体的优势。随着现代计算机硬件性能的提高,各种粒子系统和粒子特效的复杂度也随之提高,并成为计算机游戏开发过程中特效绘制的一种必要机制。但传统的粒子系统存在难以精确控制和运算量大的问题,导致动画师难以实时获得随心所欲的特效设计效果。

粒子系统是 Reeves[1]在 1983年所提出,其基本思路是将景物看作由不规则的、随机分布的粒子组成,每个粒子均具有大小、颜色、质量、位置、速度及生命周期等属性,随着时间推移,粒子不断运动和改变形状,而且此过程中不断有新粒子加入和旧粒子消失,各粒子状态的改变导致整个粒子群形态的改变。之后,Perry[2]建立了一个增强的粒子系统,即利用动态变化的几何体代替静态的基本图元和像元来实现粒子的实时绘制,并且还在系统中加入了火焰蔓延效果模拟。Beaudoin[3]在上述系统的基础上,通过加入形体方程来模拟火的造型,并提出了在多边形上实现火焰蔓延的算法。Lee[4]在构建模型中则考虑了风场和坡度等影响因子,然后用传统的粒子系统方法实现了火焰在地形上的蔓延效果。King[5]构建了一种基于粒子系统的实时模拟系统,通过textured splats的方法绘制粒子,有利于大大减少绘制所需的粒子数。湛永松[6]提出一种流体力学模型结合粒子系统的卡通烟雾实时模拟算法,通过为粒子属性引入浓度函数和作用半径,从而只需少量粒子就可快速获得烟雾浓度场分布,并使用代表动画师个人风格的卡通图元进行纹理贴图以实现卡通化效果。Wei[7]用textured splats原理实现了火焰的绘制,并利用 LBM(Lattice Boltzmann Model)模型的线性和逻辑性特征来增强火焰模拟的物理真实感和绘制实时性。

在另一方面,随着计算技术和集成电路技术的发展,图形硬件的更新速度迅猛。自从NVidia公司在 1999年提出 GPU(Graphics Processing Unit)的概念后,其发展速度极大超越了摩尔定律。GPU内部像素级的纹元能够参与编程运算,在某种程度上模拟了类似于Pixel Plane处理单元的部分功能,而且向着通用计算[8]的方向发展。基于 GPU 的通用计算(General-Purpose Computation on Graphics Hardware, GPGPU)即是利用 GPU来实现矢量、矩阵的基本代数运算,然后在这个基础上完成一些相对复杂的运算,如雅克比迭代、偏微分方程、线性方程组的求解,从而实现对复杂应用问题的处理[9-10]。

为了提高粒子系统的可控性并改善计算机游戏特效的生成速率,本文提出一种 GPU支持下通过粒子系统编辑器实现的特效生成技术。通过粒子系统编辑器有效提高粒子系统制作的可控性,并在图形处理器 GPU上对大规模粒子进行仿真和绘制,以保持实时的渲染帧率,最终确保了特效设计的可控性和实时性要求。

1 系统框架

本文所使用的粒子系统编辑器是基于OGRE图形引擎开发,具有两个主要功能:首先是对粒子系统的生命周期、系统最多允许粒子数、是否进行渲染排序、粒子系统渲染属性、粒子发射器的形状和个数、粒子发射器的发射方向和发射方式、发射频率等行为属性进行实时编辑;其次是设定粒子系统中所有粒子的某些公共行为属性,包括粒子的初始速度范围、粒子加速度及其变化方式、粒子个体的生命周期、单粒子的纹理贴图等。通过粒子系统编辑器能对粒子系统的各种属性进行所见即所得的实时编辑,从而提高了特效开发过程的可控性。

该系统采取基于XBOX360的GPU程序设计进行主要仿真计算,粒子的渲染绘制及物理运动模拟都由 GPU运算完成。作为一种具有专用图形管道的游戏控制台,XBOX360所使用的图形渲染API是DirectX9.0渲染库的一个改进版,其顶点渲染器(Vertex Shader)和像素渲染器(Pixel Shader)分别采用vs3.0和ps3.0标准,所包含的指令集非常完备,GPU完成通用运算的效率也更高,有利于提高特效的生成速率。系统整体框架如图1所示。针对GPU程序特定的数据流程和程序运行方式,可将该系统分成如下三个子系统。

(1)粒子系统编辑器。作为一个交互式的粒子系统开发环境,该子系统主要用于采集用户为待编辑粒子系统设置的各种参数,是系统可编辑性和可控性的直接体现,并将采集到的粒子系统的各种设置参数保存到一个粒子系统描述文件中或者直接用于粒子系统的参数设置。

(2)粒子系统生成器。通过解析粒子系统描述模板文件,该子系统负责提取各种参数设置并构建粒子系统,然后进行系统初始化。

(3)粒子系统仿真引擎。该子系统负责驱动粒子系统的仿真循环,每一循环包括状态更新、仿真模拟以及绘制渲染等3个部分。

图1 系统框架图

2 粒子系统编辑器和粒子系统生成器

粒子系统编辑器和粒子系统生成器是整个系统的前端,负责完成用户交互及仿真系统的预处理工作。 粒子系统的行为属性和渲染属性是通过粒子系统模板进行规范。该模板是通过粒子系统编辑器生成,并作为可重用的游戏特效构件。粒子系统编辑可分为离线编辑和实时编辑,前者是在PC机上运行粒子编辑器,并将编辑的结果保存到一个粒子系统描述模板文件;后者是在XBOX360上运行粒子系统编辑器以实时编辑运行中的粒子仿真子系统,根据用户指令实时调整粒子系统的各种属性,并将仿真效果实时反馈出来,从而获得所见即所得的编辑效果。

粒子系统模板是粒子系统编辑器和粒子系统生成器之间的接口,粒子系统生成器根据该模板描述构建出相应的粒子系统。粒子系统模板首先需要通过粒子模板解析器进行解析,然后解析器抽取出粒子系统的参数属性以构建粒子系统的机器表示,包括:粒子系统的状态跟踪系统结构、粒子系统的渲染属性数据结构、粒子群的状态跟踪数据结构等。由于粒子群中每个粒子的运动状态和渲染状态都是通过 GPU运算完成,因此粒子群的状态跟踪数据结构必须能被 GPU进行读写。在本系统中,通过将纹理贴图作为数据集,并将粒子群状态进行相应编码再存储到纹理贴图上,以便于 GPU在仿真过程中进行数据采集和计算结果输出。

3 粒子系统仿真引擎

粒子系统仿真引擎包括粒子系统控制器和GPU粒子模拟引擎。粒子系统控制器负责跟踪粒子系统的生命周期及随时间变化的系统渲染属性更新,同时根据粒子发射器的属性进行粒子生成和销毁。GPU粒子模拟引擎主要进行粒子运动模拟和粒子状态更新,并完成最终渲染。该仿真引擎的核心是粒子控制器对粒子系统各种状态、行为的更新过程以及 GPU端的物理运动模拟和图形渲染过程。GPU粒子模拟仿真是一个双通道过程,第一个过程主要进行粒子物理运动的仿真模拟和粒子状态的更新,并在视觉空间中对粒子进行排序;第二个过程是对排序后的粒子进行渲染。

3.1 粒子系统控制器

作为粒子系统仿真过程的控制中心,粒子系统控制器负责粒子系统各种行为的驱动和渲染属性的更新。进行跟踪的粒子系统行为主要包括粒子系统的生命周期、粒子发射器的运作等。在每一个渲染帧,粒子系统控制器都测试粒子系统的生命周期以判定仿真过程是否结束,并根据用户设定的规则驱动所有粒子发射器进行新粒子的发射和旧粒子的销毁。此外,粒子系统控制器必须为 GPU模拟仿真进行参数设置,包括作为粒子属性存储的纹理贴图的设定、渲染参数设定等。粒子系统控制器的工作流程如图2所示。

图2 粒子控制器工作流程图

3.2 基于GPU通用计算的数据输入输出

基于 GPU的通用计算所采取的数据输入输出方式是纹理贴图。通过将粒子仿真计算所得的参数进行特定编码,然后保存于纹理贴图中,以供 GPU运算时进行输入提取,而计算结果也以特定编码的纹理贴图形式输出。由于 XBOX360中像素渲染器的输出只能指派到四个渲染目标上,因此输入和输出过程所采用的纹理贴图并不相同。进行仿真计算时将粒子的位置、速度和其它的一些相关属性分别存放在不同的纹理贴图上,粒子仿真模拟引擎从位置和速度纹理贴图上读取粒子的当前位置与速度,并根据物理仿真公式计算下一帧的位置与速度,最后输出到新的位置和速度纹理贴图上。

3.3 GPU物理模拟仿真

基于 GPU的粒子系统的重要功能是使用GPU进行粒子的物理运动模拟运算和各种行为和渲染状态的更新。从图3可知本系统将粒子位置、速度和渲染状态分别编码到不同的纹理贴图中,并对计算结果中的粒子速度和空间位置进行编码,然后输出到新的纹理贴图上。粒子速度和位置的更新在第一个渲染过程的像素渲染器中完成。速度和位置的计算公式如下

上式中,Vt是上一帧的速度,Vt+Δt是当前帧待计算的速度,a为粒子加速度,tP是上一帧的位移,Pt+Δt是当前帧待计算的位移。位移也可采取式(3)计算。

在系统实现过程中,使用式(2)计算位移时,纹理贴图里存储的是位移和速度;而使用式(3)计算位移时,纹理贴图中储存的是前两帧的位移,因而不同的位移计算方法会给系统实现带来细微差异。

3.4 粒子系统状态更新

除了粒子的速度和空间位置,粒子系统中每个粒子都具有大小、朝向、材质、贴图、颜色等多个属性。这些属性可以是静态或动态,如果某些属性会发生变化,则第一个渲染过程还需要对相应的属性进行更新,例如根据粒子的年龄控制其大小、透明度、颜色等属性。

3.5 粒子系统在XBOX360上的优化

XBOX360是一种能进行高效图形处理和游戏开发的系统,其CPU和GPU具有一些有利于实时交互性计算和图形图像处理的特殊功能。XBOX360的CPU是一个三核的处理单元,每个计算内核同时包含两个硬件线程,两个内核能同时共享相同的一级缓存,使得这三个独立的处理单元能并行运算,从而提高了计算效率。此外,独立的功能模块可被分配到不同的硬件线程上以进行并行计算,例如将多个粒子系统同时指派到不同的内核线程上,从而实现并行模拟。XBOX360提供了多种不同的内存预取指令,该系统使用dcbt预取指令对粒子系统在CPU端的排序进行优化。XBOX360的GPU也提供有许多优化处理指令。在使用顶点渲染器进行物理仿真时,该系统采用了UseTextureCache=true微指令来指示GPU从纹理显存中读取顶点数据,从而允许纹理提取单元和顶点数据提取单元并行工作。另外,由于第一个渲染过程将仿真结果输出到AGP显存中的渲染目标上,但AGP显存中的纹理贴图在CPU端的处理效率较低,因此XBOX360提供了一个更高效的渲染输出指令memexport,可直接将像素渲染器输出的数据写入到一个指定的系统内存中,从而提高了系统效率。

4 实验结果及分析

图3所示为使用该系统进行粒子属性编辑的操作界面。可以看到,其界面为用户提供了易于理解的高层语义参数,允许动画师高效、直观地设定粒子系统参数,从而对粒子发射器的物理控制属性和粒子系统的渲染属性实时进行所见即所得的编辑效果。

图3 粒子系统编辑器工作界面

由于系统引入了多种优化策略,能在XBOX360上达到很高的实时帧率。此外,该系统支持多个粒子系统同时编辑和载入,从而有效简化了复杂粒子系统及粒子特效的制作过程。表1给出了本系统在不同帧率和分辨率下所需要的粒子数。可见在保持实时帧率和 720p分辨率的前提下,该系统可采用的最大仿真粒子数能达到10万以上,有力提高了特效画面的细节效果。图4所示为该系统同时渲染三个粒子特效所产生的视觉效果。可以看到,在保持较精确控制性的同时,该系统能获得实时的视觉效果,进而很好地满足了动画师对特效设计过程提出的特定需求。

表1 系统在不同帧率和分辨率下所需粒子数

图4 三个同时渲染的粒子特效

5 结 论

本文提出了一种基于粒子系统编辑器进行精确编辑,并通过 GPU完成实时渲染的的粒子特效生成方法。采用粒子系统编辑器能够提高粒子系统开发制作的可控性和精确度,基于 GPU的仿真和绘制则可保证对大规模粒子系统渲染的实时性。这两种技术相结合能确保粒子特效开发制作的可控性和实时性要求。

在未来的工作中,该系统将考虑引入一个粒子系统编辑框架,以使得任何粒子系统都可以插件的形式载入到编辑器中,从而进行更为便捷的实时编辑。

[1]Reeves W T. Particle systems-A technique for modeling a class of fuzzy objects [J]. Computer Graphics, 1983,17 (3): 359-376.

[2]Perry C H, Picard R W. Synthesizing flames and their spreading [C]//Proceedings of 5th. Eurographics Workshop on Animation and Simulation, 1994: 56-66.

[3]Beaudoin P, Paquet S, Poulin P. Realistic and controllable fire simulation [C]//Proceedings of Graphics Interface, 2001: 159-166.

[4]Lee H, Kim L, Meyer M, et al. Meshes on fire [C]//EuroGraphics Workshop on Animation, 2001: 75-84.

[5]King S A, Crawfis R A, Reid W. Fast animation of amorphous and gaseous phenomena [C]//Proceedings of Volume Graphics’99, 1999: 333-346.

[6]湛永松, 石民勇, 费广正. 基于物理模型的实时卡通烟雾模拟算法[J]. 中国图象图形学报, 2007, 14(2):261-265.

[7]Wei X, Li W, Mueller K, et al. Simulating fire with texture splats [C]//Proceedings of 13th IEEE Visualization 2002 Conference, 2002: 227-234.

[9]Harris M. Simulation of cloud dynamics on graphics hardware [C]//Proceedings of Graphics Hardware,2003: 92-101.

[10]湛永松, 杨明浩, 石民勇, 等. 基于可编程图形处理器的实时烟雾控制模拟[J]. 工程图学学报, 2008,29(4): 60-64.

猜你喜欢
编辑器纹理粒子
碘-125粒子调控微小RNA-193b-5p抑制胃癌的增殖和侵袭
司空见惯感觉烦 锁屏画面快走开
基于膜计算粒子群优化的FastSLAM算法改进
基于BM3D的复杂纹理区域图像去噪
Conduit necrosis following esophagectomy:An up-to-date literature review
你距离微信创作达人还有多远?
使用纹理叠加添加艺术画特效
车辆段收发车运行图编辑器的设计与实现
基于粒子群优化极点配置的空燃比输出反馈控制
TEXTURE ON TEXTURE质地上的纹理