课件和讲义第七章粒子系统_第1页
课件和讲义第七章粒子系统_第2页
课件和讲义第七章粒子系统_第3页
课件和讲义第七章粒子系统_第4页
课件和讲义第七章粒子系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 粒子系统混合1一、混合在正常情况下,任何绘制操作不是被完全丢弃,就是完全覆盖原来的颜色值,这取决于深度测试的结果。如果打开了OpenGL的混合功能,那么下层的颜色值就不会被清除,而是和上层的颜色值进行某种程度的组合。混合主要涉及到对alpha值的操作。混合是发生在光栅化并转化为像素之后,但在最终将像素绘制到帧缓冲区之前发生的。alpha值可以用于alpha测试,根据片段值决定接受或拒绝这个片段。如果不启用混合,每个新片段将会按照alpha=1,即不透明的形式来覆盖帧缓冲区中已经存在的颜色值。一、混合1组合颜色glEnable(GL_BLEND);Cf=(Cs*S)+(Cd*D)其中,C

2、f是最终计算产生的颜色,Cs是源颜色,Cd则是目标颜色,S和D分别是源和目标混合因子。这些混合因子是用glBlendFunc(GLenum S,GLenum D)函数进行设置的。void glBlendFunc(GLenum S,GLenum D)一、混合1组合颜色常量常量RGB混合因子混合因子Alpha混合因子混合因子GL_ZERO(0,0,0)0GL_ONE(1,1,1)1GL_SRC_COLOR(Rs,Gs,Bs)AsGL_ONE_MINUS_SRC_COLOR(1,1,1)-(Rs,Gs,Bs)1-AsGL_DST_COLOR(Rd,Gd,Bd)AdGL_ONE_MINUS_DST_C

3、OLOR(1,1,1)-(Rd,Gd,Bd)1-AdGL_SRC_ALPHA(As,As,As)AsGL_ONE_MINUS_SRC_ALPHA(1,1,1)-(As,As,As)1-AsGL_DST_ALPHA(Ad,Ad,Ad)AdGL_ONE_MINUS_DST_ALPHA(1,1,1)-(Ad,Ad,Ad)1-AdGL_CONSTANT_COLOR(Rc,Gc,Bc)AcGL_ONE_MINUS_CONSTANT_COLOR(1,1,1)-(Rc,Gc,Bc)1-AcGL_CONSTANT_ALPHA(Ac,Ac,Ac)AcGL_ONE_MINUS_CONSTANT_ALPHA(1,1

4、,1)-(Ac,Ac,Ac)1-AcGL_SRC_ALPHA_SATURATE(f,f,f)*,f=min(As,1-Ad)1一、混合1组合颜色举例:glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);这个函数的意思是告诉OpenGL接受源颜色并将这个颜色的RGB值与Alpha值相乘,然后把这个结果加上目标颜色乘以“1减去源颜色的Alpha值”的结果。例如,如果颜色缓冲区中已经有一种红色(1.0f,0.0f,.0.f,0.0f),这是目标颜色(Cd)。如果在这上面用一种Alpha值为0.6的蓝色(0.0,0.0f,1.0f,0.6f)画了一些东西,

5、最终颜色的计算如下:Cd=目标颜色=(1.0f,0.0f,.0.f,0.0f)Cs=源颜色=(0.0,0.0f,1.0f,0.6f)S=源Alpha值=0.6D=1-源Alpha值=1-0.6=0.4带入Cf=(Cs*S)+(Cd*D)得到Cf=(0.0,0.0f,1.0f)*0.6+(1.0f,0.0f,.0.f)*0.4一、混合2改变混合方程式默认的混合方程式是Cf=(Cs*S)+(Cd*D),可以使用下面的函数改变混合方程式。void glBlendEquation(GLenum mode);mode常量常量方程方程GL_FUNC_ADDCf=(Cs*S)+(Cd*D)GL_FUNC_S

6、UBTRACTCf=(Cs*S)-(Cd*D)GL_FUNC_REVERSE_SUBTRACTCf=(Cd*D)-(Cs*S)GL_MINCf=min(Cs,Cd)GL_MAXCf=max(Cs,Cd)粒子系统2二、粒子系统1粒子系统概述粒子系统是一种模拟像烟雾、灰尘、火焰、雨等自然现象的技术统称。这些自然现象的共性是它们都是由大量的小粒子组成的,并按照不同现象的特性进行特定形态的整体运动。1.更新每一个粒子的属性。这一步通常包含一些数学计算(从简单计算到复杂计算,复杂性取决于要模拟的自然现象的复杂度)。2.渲染粒子 在CPU上更新粒子需要OpenGL驱动从GPU内存中复制顶点缓冲器中的内容到

7、CPU中(在独立显卡中这意味着要通过PCI总线传输数据)。 更新粒子属性意味着在不同的数据项中运行相同的数学运算,这是一个GPU最擅长的典型的分布式计算的例子,而如果运行在CPU上则意味着要串行运行整个过程。二、粒子系统2粒子系统的组成(1)粒子属性:粒子系统中每一个粒子都有一系列的属性,如质量、位置、颜色、亮度、尺寸、速度、加速度、生命等,其中有些属性随着时间不断地发生变化。(2)粒子生命:粒子系统中每一个粒子都有生命周期,在一定的时间周期内,粒子经历“产生”“活动”“死亡”的生命历程。(3)粒子运动:粒子系统中每一个粒子在存活期间都要按照某一种方式进行运动,一般运动方式通过随机函数取得,从

8、而保证粒子运动中的状态不一致性。(4)粒子绘制:绘制粒子是构建场景的最后一步,我们通常假设粒子不具有阴影,单个粒子也不反射光线,通常绘制粒子时需要经过以下步骤:二、粒子系统2粒子系统的组成Step1:分析物体静态特性,定义粒子属性。Step2:分析物体运动规律,建立粒子属性变化动态特性。Step3:为系统中粒子做初始化工作。Step4:根据粒子属性变化动态改变其属性值。Step5:删除系统中已死亡的粒子。Step6:绘制粒子。实例项目喷泉3三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉三、实例项目喷泉实例项目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论