计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

基于大规模粒子系统的实时喷泉模拟(1)

2014-02-16 01:09
导读:计算机应用论文论文,基于大规模粒子系统的实时喷泉模拟(1)样式参考,免费教你怎么写,格式要求,科教论文网提供的这篇文章不错: 摘 要 本文实现了一种新的喷泉模拟方法,与传统的在CPU上实现
摘 要 本文实现了一种新的喷泉模拟方法,与传统的在CPU上实现算法不同的是,本文算法完全基于计算机图形硬件(GPU)来实现,利用图形硬件的大规模并行计算能力,显著的增加了模拟喷泉的粒子数量,提高了渲染速度,同时减轻了CPU的负载,使整个三维场景的绘制更加高效。 关键词 粒子系统;GPU;实时;喷泉模拟 0 引言 自然景物的模拟一直是计算机图形学的研究热点之一。粒子系统被公认为是模拟自然景物中运动模糊物体非常有效的一种图形生成算法。目前,在这一领域已经有较多的算法和理论,1983年,Reeves 首先提出了粒子系统为模糊物体建模的方法[1]。1990年,Karl Sims在超级计算机上实现了粒子系统的并行算法[2]。随着计算机图形硬件的快速发展,图形处理器(GPU)的计算能力大大增强,在GPU上进行大规模的并行计算成为可能[3]。 2004年,Lutz latta在个人计算机的GPU上实现了并行的粒子系统,能实时处理1,000,000个粒子,并首次提出了大规模粒子系统的概念[4,5]。 2006年,许楠等也在GPU上实现了大规模的粒子系统,用26万个粒子实现了对雨景的模拟[6]。 喷泉的模拟是粒子系统的典型应用,最近对喷泉的研究比较活跃,马骏等利用粒子系统,采用离线渲染的方法来模拟喷泉[7,8],赵静谧以粒子系统为基础,采用Line方式渲染粒子,结合纹理映射实现了喷泉的实时模拟,其实现的喷泉,粒子数量较小,速度只有20帧/秒[9]。方建文等利用了GPU的硬件加速功能,以CPU和GPU相结合,实现了对喷泉的实时模拟,在粒子规模小于10,000个的情况下能满足实时的要求[10]。 在做虚拟校园时,我们要模拟一个较大的喷泉,由三组喷泉组成,共72个水柱,为了逼真的模拟喷泉效果,本文采用完全基于GPU的大规模粒子系统,在普通的计算机上,用了大约76,500个粒子,利用GPU大规模并行计算的能力,实现了喷泉的实时模拟。1 粒子系统简介1.1经典粒子系统介绍[1]粒子系统的绘制包括以下几个步骤: (1)粒子的产生:产生新的粒子加入系统中; (2)粒子的初始化:设置每个粒子的属性,如初始位置、方向、颜色、透明度、生命周期等; (3)粒子的消亡:从系统中删除那些已经超过生命周期的粒子; (4)粒子的运动:按粒子的动态属性改变位置和其它属性; (5)粒子的绘制:绘制并显示由有生命的粒子组成的图形。 上述几个步骤不停循环,形成了物体动态变化过程。1.2 大规模粒子系统介绍 大规模粒子系统是相对经典的粒子系统而言,由于经典的粒子系统在数量上受到10,000个粒子的限制,而完全在图形硬件(GPU)上实现的粒子系统,在处理1,000,000个粒子的时候仍能满足实时的要求,这种完全在图形硬件上实现的粒子系统被称为大规模粒子系统。 大规模的粒子系统采用并行算法,提高了并行处理能力,主要在GPU上实现,减轻了CPU的负载,提高了GPU的利用率,大大减小了CPU到GPU的数据传输,从而极大的改善了粒子系统的实时性。下面详细介绍如何用大规模粒子系统来实时模拟一个真实的喷泉。2 喷泉的模拟 喷泉由多个水柱组成,每个水柱可看成由很多个小水珠组成,每个小水珠可由一个粒子来模拟,本文称之为喷泉粒子。喷泉的模拟按图1所示的步骤进行:图1 喷泉粒子处理流程图2.1 喷泉粒子的属性和存储 喷泉粒子由位置(Position)、生存时间(Tol)、速度(Velocity)、颜色组成。 图2 粒子属性存储示意图 这些属性如图2所示,均以Texture的形式存储在显存中,Texture是由Pixel组成的矩阵,每个Pixel由RGRB四个浮点数分量组成,GPU处理数据时,一次可以输入一个或多个Texture,处理后输出一个Texture,结合硬件的特点,便于并行处理,我们把这三组数据保存在不同的Texture中,就有了图2所示的三组Texture。每组两个Texture,循环的用做输入和输出,称之为双缓存。2.2 喷泉粒子的产生 在GPU编程中,存储空间的分配和回收不如CPU对内存的管理那么方便,不太适合动态分配,因此创建固定大小的Texture,比如1024 * 256个像素,先在内存中建立一个索引表,为Texture的每一个Pixel设置一个标志,表示这个Pixel是否保存有效的粒子信息。这个索引表的初始值全部为零,表示场景中没有任何粒子,分配新粒子时,从索引表中找到为零的值,然后设置各个Texture对应的Pixel的值,再把索引标志的值设为1。 产生新粒子时,按预先设置的产生粒子的速度和与上次产生粒子的时间间隔,可计算出本次应该产生的粒子数。2.3 喷泉粒子的初始化
上一篇:蜜网中基于Linux平台的蜜罐技术的研究(1) 下一篇:没有了