一种计算机仿真场景渲染方法

文档序号:6370704阅读:220来源:国知局
专利名称:一种计算机仿真场景渲染方法
技术领域
本发明涉及计算机应用技术,特别是涉及一种计算机图形处理中的计算机仿真场
景渲染方法。
背景技术
目前,计算机仿真系统为了提升其场景的真实度以及对用户的带入感程度,在其渲染系统中都引入了粒子系统来模拟各种自然现象。粒子系统是三维计算机图形学中模拟一些现实中具有模糊现象场景的技术。对于这些模糊现象,使用其它传统的渲染技术难以实现具有真实感的视觉效果。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等。粒子系统技术的出 现也为3D游戏的画质提升带来了质的飞跃。粒子系统不仅可以带给用户更多更为真实的游戏体验,激发玩家的兴趣,并且愈加成为每一款游戏在技能烘托、场景渲染中不可分割的重要组成部分。现有的粒子系统中由两个处理器,即中央处理器(CPU)和图形处理器(GPU),来协助实现场景的渲染。将一个粒子系统从出生到渲染到屏幕的整体过程如图I所示,包含以下内容I. CPU负责粒子的发射、属性更新,以及向显存传输已经计算完毕各项属性的粒子。2. GPU负责将计算好属性的粒子进行坐标变换、光栅化操作,最终渲染到屏幕上来。3.每帧都循环执行上图所示的整体流程,就完成了粒子系统从出生到渲染到屏幕的整体流程。上述传统的粒子系统方案存在一个主要的缺点是粒子系统的整体性能不够高效,CPU与GPU的负载不均衡。在现有技术下整个系统对CPU的压力过大,CPU承载了粒子系统的绝大部分计算操作,而且没有发挥出GPU的计算性能,除渲染操作外,GPU基本没有其他工作。具体原因有以下几点I.粒子发射阶段CPU需要不断的出生新的粒子和杀死已经死亡的粒子。出生粒子对应着内存申请操作,杀死粒子对应着内存释放操作,对内存频繁反复的申请和释放操作对CPU的开销来说是比较大的。2.粒子的属性更新阶段CPU需要对每个粒子的属性都按照时间进行更新操作,在更新过程中,CPU需要执行大量的浮点运算操作,而这些运算会消耗掉CPU非常多本来用于执行其他运算的宝贵时间。3.粒子的注册渲染阶段由于目前大部分的粒子系统都采用的公告板渲染技术,即每个粒子的最终渲染都需要四个顶点进行描述。在这一阶段需要计算每个粒子的各个顶点的位置、纹理坐标等其他属性,需要进行大量的浮点运算操作。然后需要向GPU申请一块同等大小的显存,并且需要执行数据从内存到显存的传输工作,反复的数据传输也会降低系统性能。4. GPU渲染阶段进行坐标变换与光栅化操作,相对于CPU来说负载过小。在粒子数量不多的情况下,上述传统的粒子系统实现方案可以很好地仿真场景的渲染工作,但是如果有大规模的粒子渲染需要,例如雨、雪等,这种方式对整体的性能影响就会比较大。由此可见,采用传统的粒子系统来实现计算机仿真场景的渲染,存在渲染效率低的问题。

发明内容
有鉴于此,本发明的主要目的在于提供一种计算机仿真场景渲染方法,该方法的 渲染效率高。为了达到上述目的,本发明提出的技术方案为一种计算机仿真场景渲染方法,该方法包括以下步骤a、中央处理器CPU在粒子系统初始化的时候创建粒子初始数据,并将所述初始数据通知给图形处理器GPU;b、在每个渲染帧中,所述CPU将当前帧相对于创建所述初始数据时的时间偏移量通知给所述GPU,所述GPU根据所述时间偏移量和所述初始数据,确定当前帧用于场景渲染的粒子属性信息,并根据当前确定的所述粒子属性信息,将当前帧的粒子显示到场景观察设备的屏幕上。综上所述,本发明提出的计算机仿真场景渲染方法,在利用粒子系统进行渲染时,利用GPU来负责粒子的更新工作,如此可减少CPU的工作量,同时可发挥GPU的优势,提高渲染效率。


图I为使用现有粒子系统实现计算机仿真场景渲染的过程示意图;图2为本发明实施例一的方法流程示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。考虑到当有大规模的粒子渲染需要时,粒子的更新需要大规模的浮点单元运算操作,而相对于CPU而言,GPU的浮点计算单元数量很多,更适合做此项工作。基于此,本发明的核心思想是将各帧粒子属性的计算操作转移到GPU中实现,由GPU根据CPU创建的初始粒子数据和各帧当前的时间偏移参数,来确定各帧的粒子属性,这样,可以将CPU从繁杂的浮点计算中解放出来,同时,也可以最大限度地避免CPU对内存的频繁读写、申请和释放操作,使得在访问内存读取数据时的等待时间降到最低,另外,也可以减少CPU与GPU之间频繁反复的数据传输,这样,GPU还可以使用静态显存来存放粒子数据,提高对显存的读取和计算速度。图2为本发明实施例一的方法流程示意图,如图2所示,该方法包括以下步骤
步骤201、中央处理器CPU在粒子系统初始化的时候创建粒子初始数据,并将所述初始数据通知给图形处理器GPU。本步骤中,粒子系统在初始化时创建粒子初始数据的具体方法,同现有粒子系统,在此不再赘述。步骤202、在每个渲染帧中,所述CPU将当前帧相对于创建所述初始数据时的时间偏移量通知给所述GPU ,所述GPU根据所述时间偏移量和所述初始数据,确定当前帧用于场景渲染的粒子属性信息,并根据当前确定的所述粒子属性信息,将当前帧的粒子显示到场景观察设备的屏幕上。较佳地,所述场景观察设备为摄像机。本步骤中,与现有粒子系统所不同的是,这里在每个渲染帧CPU只需要将所述时间偏移量通知给GPU,由GPU根据该时间偏移量和初始数据,完成粒子属性的更新。如此,一方面可以使CPU不需要再为粒子更新而进行大量的浮点运算和频繁地内存申请与释放操作,相应地,内存与显存之间也不存在粒子更新所致的大量数据传输,因而也不会降低系统性能,另一方面也可发挥出GPU的浮点计算优势,实现CPU与GPU的负载均衡。另外,这里,GPU进行当前帧的粒子属性的确定时,是根据时间偏移量和初始数据进行得到的,这样,粒子系统数据在初始化后就不再改变,因此GPU可以使用静态显存保存数据,而GPU对静态显存比动态显存有着更快的访问速度,并且可以避免由于数据量大时高速缓存的命中率变低所致的需要反复读写内存的问题,省去了 CPU与GPU数据的传输开销。本步骤中,GPU确定当前帧用于场景渲染的粒子属性信息的具体方法,除确定粒子的位置信息的方法之外,其他属性信息如色彩等的确定为本领域技术人员所掌握,在此不再赘述。较佳地,对于当前帧需要显示的一个粒子,可以采用下述方法确定其用于显示的最终位置信息。步骤xl、根据所述时间偏移量,按照Δ1 = V* At,计算粒子i在当前巾贞的粒子自身位置偏移量△〗,其中,V为所述初始数据中指定的粒子i的粒子移动速度,At为所述时间偏移量。本步骤用于计算在当前帧粒子i的自身位置偏移量步骤x2、根据所述粒子自身位置偏移量Al,按照Al' =Λ1+Ρ,计算粒子i在当前帧的粒子位置总偏移量Al'。其中,所述粒子i所属粒子系统在笛卡尔坐标中的对应区域的最小坐标为(fBoxLenght, fBoxLength, fBoxLength),最大坐标为(2fBoxLenght,2fBoxLength,2fBoxLength),所述fBoxLength为预设的粒子系统的边界边长,该参数也在所述初始数据中指定的,所述P为与所述粒子系统绑定的场景观察设备在当前帧在所述笛卡尔坐标中的位置。本步骤用于计算考虑了场景观察设备后粒子i在当前帧的位置总偏移量,这样,此后,可以基于此来计算粒子在当前帧相对于场景观察设备的相对位置。这里需要说明的是,本实施例中,没有将所述粒子i所属粒子系统在笛卡尔坐标中的对应区域放在坐标原点上,而是使该区域放在最小坐标为(fBoxLenght,fBoxLength, fBoxLength),最大坐标为(2fBoxLenght, 2fBoxLength, 2fBoxLength)的位置上,如此,可以确保经过偏移量计算后,粒子所在位置的范围都是正数,可以方便地得到[O,fBoxLength]的取值范围,否则还需在GPU中进行多余的处理。因此,本实施例中对粒子系统在笛卡尔坐标中的对应区域进行上述位置限定,是为了实现的简单,在实际应用中不限于此。步骤x3、对所述粒子位置总偏移量Al'取模,将取模后的所述粒子位置总偏移量与所述初始数据中指定的所述粒子i的粒子初始位置相加,得到粒子i在当前帧的相对位置I,所述粒子初始位置为所述粒子i在所述笛卡尔坐标中的初始位置。本步骤中计算得到的粒子的相对位置,由于每一帧的相对位置是不断变化的,因此当场景观察设备移动时,可以实现一种场景观察设备在粒子系统中进行穿梭的感觉。步骤x4、根据所述粒子i在当前帧的所述相对位置1,按照I' =1+P,得到粒子i在当前帧的粒子最终位置r 。本步骤所计算得到的粒子最终位置r可以将已确定相对位置的粒子系统移动绑 定到场景观察设备上,即可以使粒子能够跟随场景观察设备(观察者的眼睛)进行移动,以便观察者通过场景观察设备看到渲染效果。进一步地,为了使场景观察设备的屏幕上显示尽可能大面积的粒子系统,以达到更好的渲染效果,这里可以考虑引入一个固定偏移系数来计算粒子最终位置,该固定偏移系统用于将粒子系统尽可能多地显示在所述场景观察设备的可视域内。基于该目的,对于当前帧需要显示的一个粒子,可以采用下述方法确定其用于显示的最终位置信息步骤yl、根据所述时间偏移量,按照Al = V* At,计算粒子i在当前巾贞的粒子自身位置偏移量Al,其中,V为所述初始数据中指定的粒子i的粒子移动速度,At为所述时间偏移量。本步骤同上述步骤xl,在此不再赘述。步骤y2、根据所述粒子自身偏移A I,按照Al' =A I+P+ y,计算粒子i在当前中贞的粒子总偏移量Al',其中,所述粒子i所属粒子系统在笛卡尔坐标中的对应区域的最小坐标为(fBoxLenght, fBoxLength, fBoxLength),最大坐标为(2fBoxLenght, 2fBoxLength,2fBoxLength),所述fBoxLength为预设的粒子系统的边界边长,所述P为与所述粒子系统绑定的所述场景观察设备在当前帧在所述笛卡尔坐标中的位置,所述Y为所述初始数据中指定的用于调整所述场景观察设备中所显示渲染场景大小的固定偏移系数。步骤y3、对所述粒子总偏移量Al'取模,将取模后的所述粒子总偏移量与所述初始数据中指定的所述粒子i的粒子初始位置相加,得到粒子i在当前帧的相对位置1,所述粒子初始位置为所述粒子i在所述笛卡尔坐标中的初始位置。步骤y4、根据所述粒子i在当前帧的所述相对位置I、所述P和所述Y,按照r =i+p+y,得到粒子i在当前帧的粒子最终位置r。上述方法中,由于在计算粒子总偏移量Al'和粒子最终位置I'时,考虑了固定偏移系数,因此可以将尽可能多粒子系统挪到所述场景观察设备中,以达到更好的全场景的粒子渲染效果(如下雨、雪之类场景)综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种计算机仿真场景渲染方法,其特征在于,该方法包括以下步骤 a、中央处理器CPU在粒子系统初始化的时候创建粒子初始数据,并将所述初始数据通知给图形处理器GPU; b、在每个渲染帧中,所述CPU将当前帧相对于创建所述初始数据时的时间偏移量通知给所述GPU,所述GPU根据所述时间偏移量和所述初始数据,确定当前帧用于场景渲染的粒子属性信息,并根据当前确定的所述粒子属性信息,将当前帧的粒子显示到场景观察设备的屏幕上。
2.根据权利要求I所述的方法,其特征在于,所述粒子属性信息包括粒子最终位置信息;对于当前帧用于场景渲染的每个粒子i,确定所述粒子最终位置的方法包括 根据所述时间偏移量,按照Al = V* At,计算粒子i在当前帧的粒子自身位置偏移量Al,其中,V为所述初始数据中指定的粒子i的粒子移动速度,At为所述时间偏移量; 根据所述粒子自身位置偏移量Al,按照Al' =A1+P,计算粒子i在当前帧的粒子位置总偏移量Al',其中,所述粒子i所属粒子系统在笛卡尔坐标中的对应区域的最小坐标为(fBoxLenght, fBoxLength, fBoxLength),最大坐标为(2fBoxLenght, 2fBoxLength,2fBoxLength),所述fBoxLength为预设的粒子系统的边界边长,所述P为与所述粒子系统绑定的场景观察设备在当前帧在所述笛卡尔坐标中的位置; 对所述粒子位置总偏移量Al'取模,将取模后的所述粒子位置总偏移量与所述初始数据中指定的所述粒子i的粒子初始位置相加,得到粒子i在当前帧的相对位置1,所述粒子初始位置为所述粒子i在所述笛卡尔坐标中的初始位置; 根据所述粒子i在当前帧的所述相对位置1,按照r =1+P,得到粒子i在当前帧的粒子最终位置r。
3.根据权利要求I所述的方法,其特征在于,所述粒子属性信息包括粒子最终位置信息;对于当前帧用于场景渲染的每个粒子i,确定所述粒子最终位置的方法包括 根据所述时间偏移量,按照Al = v*At,计算粒子i在当前帧的粒子自身位置偏移量A 1,其中,V为所述初始数据中指定的粒子i的粒子移动速度,At为所述时间偏移量; 根据所述粒子自身位置偏移Al,按照Al' =A1+P+Y,计算粒子i在当前帧的粒子位置总偏移量Al',其中,所述粒子i所属粒子系统在笛卡尔坐标中的对应区域的最小坐标为(fBoxLenght, fBoxLength, fBoxLength),最大坐标为(2fBoxLenght, 2fBoxLength,2fBoxLength),所述fBoxLength为预设的粒子系统的边界边长,所述P为与所述粒子系统绑定的所述场景观察设备在当前帧在所述笛卡尔坐标中的位置,所述Y为所述初始数据中指定的用于调整所述场景观察设备中所显示渲染场景大小的固定偏移系数; 对所述粒子位置总偏移量Al'取模,将取模后的所述粒子总偏移量与所述初始数据中指定的所述粒子i的粒子初始位置相加,得到粒子i在当前帧的相对位置1,所述粒子初始位置为所述粒子i在所述笛卡尔坐标中的初始位置; 根据所述粒子i在当前帧的所述相对位置I、所述P和所述Y,按照I' =1+P+Y,得到粒子i在当前帧的粒子最终位置r 。
4.根据权利要求I至3所述的任一方法,其特征在于,所述场景观察设备为摄像机。
全文摘要
本发明提供了一种计算机仿真场景渲染方法,包括中央处理器CPU在粒子系统初始化的时候创建粒子初始数据,并将所述初始数据通知给图形处理器GPU;在每个渲染帧中,所述CPU将当前帧相对于创建所述初始数据时的时间偏移量通知给所述GPU,所述GPU根据所述时间偏移量和所述初始数据,确定当前帧用于场景渲染的粒子属性信息,并根据当前确定的所述粒子属性信息,将当前帧的粒子显示到场景观察设备的屏幕上。采用本发明可提高渲染效率。
文档编号G06T1/00GK102722859SQ20121017699
公开日2012年10月10日 申请日期2012年5月31日 优先权日2012年5月31日
发明者于静波 申请人:北京像素软件科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1