一种并行的可编程运动特效绘制方法

文档序号:6375362阅读:190来源:国知局
专利名称:一种并行的可编程运动特效绘制方法
技术领域
本发明涉及图形绘制领域,尤其涉及一种并行的可编程运动特效绘制方法。
背景技术
本发明相关的研究背景简述如下
描绘虚拟场景中物体的运动是计算机图形学的一个重要领域。对运动的描绘很有多不同的样式,例如运动模糊、速度线、多重残影和运动变形等,下文统称为运动特效。一、运动模糊
运动模糊是其中一种很重要的描绘运动和在时域上反走样的方法,并在计算机动画中有广泛的应用。Sung等人提出了一个统一的框架用于讨论不同的运动模糊效果并将现有的方法分成蒙特卡洛积分的方法(COOK R. L. , PORTER T., CARPENTER L.:Distributed ray tracing. In ACM SIGGRAPH (1984), pp. 137 - 145.)、仅考虑可见性的方法(KOREIN J. , BADLER N. : Temporal anti-aliasing in computer generatedanimation. InACMSIGGRAPH (1983),pp. 377 - 388.)、修改模型几何结构的方法(CATMULL E. : An analytic visible surface algorithm for independent pixelprocessing. InACMSIGGRAPH (1984),pp. 109 - 115.)、仅考虑着色的方法(NORTON A.,ROCKffOOD A. P. , SK0LM0SKI P. T. : Clamping: A method of antialiasing texturedsurfaces by bandwidth limiting in object space. In ACM SIGGRAPH (1982),pp. I - 8.)、后处理方法(P0TMESIL Μ. , CHAKRAVARTY I·: Modeling motion blur incomputer-generated images. In ACM SIGGRAPH (1983), pp. 389 - 399.和 SHINYA M.:Spatial anti-aliasing for animation sequences with spatio-temporal filtering.InACMSIGGRAPH (1993),pp. 289 - 296.)和PRMan 的方法(COOK R. L. , CARPENTER L.,CATMULL E. : The reyes image rendering architecture. In ACM SIGGRAPH (1987),pp. 95 - 102.),详见文献综述(SUNG K.,PEARCE A. , WANG C. : Spatial-temporalantialiasing. IEEE Trans. Vis. Comp. Graph. 8, 2 (2002), 144 - 153·)。最近的研究热点在于改进运动模糊的绘制速度比如利用频域分析的方法(EGAN K.,TSENG Y. _T.,H0LZSCHUCH N. , DURAND F.,RAMAM00RTHI R.: Frequency analysis and shearedreconstruction for rendering motion blur. ACM Trans. Graph. 28, 3 (2009),93:1 - 93:13.)、着色和可见性分离的方法(RAGAN-KELLEY J.,LEHTINEN J.,CHEN J.,D0GGETT M. , DURAND F. : Decoupled sampling for graphics pipelines. ACM Trans.Graph. 30,3 (2011),17:1 - 17:17.)、高效的加速结构(H0U Q.,QIN Η. , LI ff. , GUOΒ. , ZHOU K. : Micropolygon ray tracing with defocus and motion blur. ACM Trans.Graph. 29 (2010), 64:1 - 64:10.)以及利用最新 GPU 特性的方法(ROSADO G. : Motionblur as a post-processing effect. In GPU Gems 3 (2007), p. Chapter 27.)等。在交互式绘制运动模糊领域,GPU上的随机光栅化(AKENINE-MiiLLER T.,MUNKBERG J. , HASSELGREN J. : Stochastic rasterization using timecontinuoustriangles. In Proceedings of the 22nd ACM SIGGRAPH/EUROGRAPHICS symposium onGraphics hardware (2007),GH ’07,pp. 7 - 16. 2 和 MCGUIRE M.,ENDERTON E.,SHIRLEY P.,LUEBKE D. : Real-time stochastic rasterization on conventional gpuarchitectures. In Proceedings of the Conference on High Performance Graphics(2010),HPG ’10,pp. 173 - 182.)是最近研究的重点。但是这些方法需要较高的釆样率来减少绘制结果中的噪声。基于高效缓存和重用着色计算的优化(LIKTOR G.,DACHSBACHER C. : Decoupled deferred shading for hardware rasterization. In ACMSIGGRAPH Symp. I3D (2012),pp. 143 - 150. 2)可以用来减少随机光栅化中的超釆样代价。从概念上看,这些运动模糊绘制方法在一定意义上都表现为在给定快门时间内对场景成像的积分。本发明是基于Schmid等人提出的框架,详见文献(SCHMID J., SUMNERR. W.,BOWLES Η.,GROSS Μ. : Programmable motion effects. ACM Trans. Graph. 29,4 (2010), 57:1 - 57:9.)。这个框架放弃了固定的快门时间概念,并允许在运动特效的函数中决定其操作的时间长度。 二、可编程的运动特效
Schmid 等人(SCHMID J. , SUMNER R. ff. , BOWLES H·, GROSS Μ. : Programmablemotion effects. ACM Trans. Graph. 29, 4 (2010), 57:1 - 57:9.)提出了可编程的运动特效,使动画设计师能够在运动特效函数中灵活地决定描绘运动的样式。这是通过扩展面片着色器的概念和在一段任意长的时间段内,得到关于一个模型的表面经过一个像素的所有部分的全局信息后计算运动特效。在一段时间内,一个特定的模型被像素中心“看到”的所有信息被编码成一条轨迹。这些信息是通过视线与一个四维的数据结构求交得到,这个四维将物体的运动聚合成几何的表示。另一方面,Schmid等人提出的可编程的运动特效绘制方法是基于串行计算的,计算效率偏低。一般而言,绘制一帧较复杂场景的动画将会花费数分钟至数小时。

发明内容
本发明的目的在于针对现有技术的不足,提供了一种并行的可编程运动特效绘制方法。本发明的目的是通过以下技术方案来实现的一种并行的可编程运动特效绘制方法,该方法使用三角形网格表示虚拟物体,并使用时间聚合体描述虚拟物体的运动首先在一系列离散时间点上对物体采样得到三角形网格表达,并将相邻采样中对应的边连接形成双线性曲面片。这样网格中一个三角形和相邻采样的对应三角形构成一个时间体元,一个虚拟物体的所有时间体元集合构成了一个时间聚合体;绘制时首先通过一个预计算步骤得到对应屏幕像素的每根光线与时间聚合体的交点,并连接同一个时间体元上对应的交点得到线段存储到外部文件;然后通过一个运行时绘制步骤将线段按照其交点切开,再按照用户指定的采样率细分成线元并排序,最后以用户可编程的方式对线元进行合成得到对应每个像素的颜色值。I.上述预计算步骤包括以下子步骤
I)对时间体元分批并行处理,对每个时间体元构造三角形用双线性曲面片表示,并将三角形也表达成双线性曲面片;
2)对双线性曲面片进行并行处理,通过光栅化得到双线性曲面片与对应屏幕像素的光线的交点;
3)将得到的交点按前后顺序并行排序并组装成线段,通过多路归并写入外部文件。2.上述运行时绘制步骤包括以下子步骤
1)对属于多帧动画的同一像素的线段进行分批并行处理,找出线段之间的交点并用交点切割对应的线段,通过并行前缀求和操作估计生成的线段数,再对每条线段按照用户指定的采样率细分成线元并按时间顺序并行排序,通过并行前缀求和操作估计生成的线元数;
2)对多帧动画的同一像素并行处理,对每个像素通过串行遍历的方式找到可见线元和不可见线元,再调用用户指定运动特效程序进行可编程绘制和线元合成,得到像素颜色值·并输出。本发明的有益效果是,本发明的方法利用并行计算大大加速了可编程运动特效的绘制效率,在NVIDIA GTX 570 GPU上对本发明方法的实现相比现有串行绘制方法可以获得20倍以上的性能提升。


图I是本发明中单个像素内线段之间深度冲突示意 图2是本发明中单个像素内线段之间是否相交的示意图。
具体实施例方式使用并行计算方法实现可编程运动特效绘制的技术难点在于控制内存消耗。对可编程运动特效的绘制而言,处理每个像素可能需要任意多帧数的虚拟物体信息,其数据量大大高于无运动特效时的绘制。由于并行计算硬件(如图形处理单元GPU)的内存总量是有限的,若使用常规的对同一帧画面的部分像素进行并行处理的方法,能够同时处理的像素个数被内存总量限制,这大大影响了计算的并行度。针对这一技术难点,本发明提出了一种新的按同一像素的各帧画面进行并行处理的技术方案,由于各帧画面的同一像素能够在很大程度上共用绘制所需的数据,这就提高了能够同时处理的像素数量,进而提高绘制效率。此外,本发明还提出了一种并行的解析确定线段可见性的方法,降低了得到正确绘制结果所需的线元数量,进一步降低总的计算开销。最后,本发明提出将计算切分成预计算和运行时计算部分,并将于运动特效编程无关的光栅化和线段组装运算放到预计算部分进行,并将预计算结果输出到外部文件,这样,进行一次预计算的结果可以用于不同运动特效的绘制,这也降低了调整运动特效编程时所需的得到最终绘制结果的计算量,提高了用户编辑运动特效时的绘制效率。基于以上原理,本发明提供一种并行的可编程运动特效绘制方法,该方法使用三角形网格表示虚拟物体,并使用时间聚合体描述虚拟物体的运动该方法首先在一系列离散时间点上对物体采样得到三角形网格表达,并将相邻采样中对应的边连接形成双线性曲面片,这样网格中一个三角形和相邻采样的对应三角形构成一个时间体元,一个虚拟物体的所有时间体元集合构成了一个时间聚合体;绘制过程首先通过一个预计算步骤得到对应屏幕像素的每根光线与时间聚合体的交点,并连接同一个时间体元上对应的交点得到线段存储到外部文件;然后通过一个运行时绘制步骤将线段按照其交点切开,再按照用户指定的采样率细分成线元并排序,最后以用户可编程的方式对线元进行合成得到对应每个像素的颜色值。具体来说,预计算步骤包括以下子步骤
I、对时间体元分批并行处理,对每个时间体元构造三角形用双线性曲面片表示,并将三角形也表达成双线性曲面片;
时间聚合体是时间体元的集合,时间体元是由动画序列中相邻帧内对应的三角形和对应的三角形的边形成的双线性曲面片组成的。关于时间聚合体和时间体元的表达方式可参见文献 SCHMID J. , SUMNER R. W·,BOffLES H·, GROSS M. : Programmable motioneffects. ACM Trans. Graph. 29,4 (2010), 57:1 - 57:9。虚拟场景动画序列的几何结构和拓扑结构作为两个独立数组复制到并行计算处理器的内存中。对于每个时间体元指定一个线程去组装时间体元的六个顶点索引。通过读取几何结构数组生成五个双线性曲面 片。为了简化光栅化的实现,三角形也作为一种特殊的双线性曲面片表示,因此为一个时间体元共生成五个双线性曲面片。2、对双线性曲面片进行并行处理,通过光栅化得到双线性曲面片与对应屏幕像素的光线的交点;
对时间体元生成的双线性曲面片,采用文献ZHOU K.,HOU Q., REN Z. , GONG M. , SUNX.,GUO B. : Renderants: interactive reyes rendering on gpus. ACM Trans. Graph.28,5 (2009), 155:1 - 155:11.所述的并行光栅化方法得到双线性曲面片与对应屏幕像素的光线的交点。3、将得到的交点按前后顺序并行排序并组装成线段,通过多路归并写入外部文件。为了生成线段,需要找到每个时间体元上对应的交点。这需要对交点按像素索弓丨、时间体元索引和采样时间进行并行归并排序。并行排序方法可使用现有并行计算工具提供的排序元操作,见文献 HOU Q. , ZHOU K. , GUO B. : Bsgp: bulk-synchronous gpuprogramming. ACM Trans. Graph. 27, 3 (2008), 19:1 - 19:12。排序完成后线段的顶点将会顺序的排列在一起,按照像素索引相同的相邻顶点生成线段。对于大规模场景,通过在时间体元上的并行前缀求和操作(见文献HOU Q.,ZHOUK. , GUO B. : Bsgp: bulk-synchronous gpu programming. ACM Trans. Graph. 27,3(2008), 19:1 - 19:12),得到时间体元数据生成的交点占用显存的前缀和。根据当前可用的并行计算硬件的内存总量在这个前缀和数组中找到恰好可以光栅化的最多时间体元。并根据这个信息,对时间体元进行分批处理,每次得到的线段都在内存中归并后保存到外部文件中,最后使用文献KNUTH D. : The Art of Computer Programming, Volume 3: Sortingand Searching, Section 5.4: External Sorting, second ed. Addison-ffesley, 1998,PP. 248 - 379的多路外存归并方法使得属于一个像素的所有线段都存储到一起。运行时绘制步骤读入上述步骤一得到的线段文件,将线段传输到并行计算硬件的内存中,并按下述子步骤处理
I、对属于多帧动画的同一像素的线段进行分批并行处理,找出线段之间的交点并用交点切割对应的线段,通过并行前缀求和操作估计生成的线段数,再对每条线段按照用户指定的采样率细分成线元并按时间顺序并行排序,通过并行前缀求和操作估计生成的线元数;
按同一像素的各帧画面进行并行处理,在一个像素内,如图I所示,线段之间可能会相互交叉,从而导致深度冲突。将相交的线段在交点处切分开,再使用线元遍历的方式得到正确的可见性函数。首先按像素索引、起始时间和终止时间并行排序所有的线段,如图2所示。对于每条线段,从其后开始逐条检查该线段是否与其有交点,直到线段之间的时间段没有相交后终止。当找到两条线段之间的交点时,用该交点切割对应的两条线段,并生成四条新的线段。由于无法预先知道最终输出的线段数量,需要用并行前缀求和操作计算线段数目和每个线程可以写入的首地址,在分配显存空间之后再进行真正的切割操作。由于并行前缀求和操作相对开销较小并不会输出数据,这种方法会比预留显存的方法更有效率,因为这会增加每个线程的显存消耗而减少可用的并行度。为了更好的减少显存消耗,新生成的线段仅仅保存了原始线段索引和其上的两个时间点。 对于每条线段进行并行处理,根据用户指定的采样率,在时间轴上将这些线段切成线元。对于得到的线元都会保存原先线段的索引、开始时间和结束时间。由于线元输出数目的不确定性,需要预先对线段做一次并行前缀求和操作计算总的线元数和每个线程的线元输出首地址。再对所有的线元按照像素索引和时间段索引排序,时间段索引来自线元所在的时间段。最后对于在同一个时间段内的线元用插入排序的方法,找到能够在空间上遮挡它的线元。如果没有找到,就把这个线元放在最前面。2、对多帧动画的同一像素并行处理,对每个像素通过串行遍历的方式找到可见线元和不可见线元,再调用用户指定运动特效程序进行可编程绘制和线元合成,得到像素颜色值并输出。一个可编程的特效函数可以给一个线元指定颜色、深度值和覆盖率,也可以直接丢弃线元。本发明的可编程特效函数是在预先编写的特定的特定内核。这个内核是在所有的线元上并行执行的,并且能够访问属于对应像素上所有线段生成的线元,也能够在每个线元上进行着色。首先按照所有的像素并行,对每个像素根据当前动画的帧数分裂出相应的线程数。线元根据可编程特效进行合成的。合成引擎串行地按照先时间后深度的顺序合成线元,并根据不同的可编程的特效的要求提供可见的线元或全部的线元。由于合成线元是在对应线程中串行执行的,可使用文献SCHMID J.,SUMNER R. W.,BOffLES H. , GROSS Μ.:Programmable motion effects. ACM Trans. Graph. 29, 4 (2010), 57:1 - 57:9 描述的合成方法。
实施例发明人在一台配备Intel Core2 Quad Q8200 2. 33GHz 中央处理器,NVidiaGTX570图形处理器及4GB内存的机器上实现了本发明的实施实例。附图中所示的实验结果是在640x480分辨率下绘制,但由于排版的原因可能会有裁剪。本实施实例能够在GPU上高效地绘制可编程的运动特效,如表I所示,平均每帧绘制时间大概在几秒到半分钟之间。即使考虑了前面的预处理时间,平均每帧绘制时间也不会超过几分钟,远远小于Schmid等人的方法所需的几小时的绘制时间。特别对于一个含有一百个虚拟角色和265万三角形的虚拟场景,本实施实例能够以平均25. 2秒每帧的速度绘制。表I是本实施例中对不同虚拟场景的统计。表 I:
权利要求
1.一种并行的可编程运动特效绘制方法,其特征在于,该方法使用三角形网格表示虚拟物体,并使用时间聚合体描述虚拟物体的运动该方法首先在一系列离散时间点上对物体采样得到三角形网格表达,并将相邻采样中对应的边连接形成双线性曲面片,这样网格中一个三角形和相邻采样的对应三角形构成一个时间体元,一个虚拟物体的所有时间体元集合构成了一个时间聚合体;绘制过程首先通过一个预计算步骤得到对应屏幕像素的每根光线与时间聚合体的交点,并连接同一个时间体元上对应的交点得到线段存储到外部文件;然后通过一个运行时绘制步骤将线段按照其交点切开,再按照用户指定的采样率细分成线元并排序,最后以用户可编程的方式对线元进行合成得到对应每个像素的颜色值。
2.根据权利要求书I所述的并行的可编程运动特效绘制方法,其特征在于,所述预计算步骤包括以下子步骤 (1)对时间体元分批并行处理,对每个时间体元构造三角形用双线性曲面片表示,并将三角形也表达成双线性曲面片; (2)对双线性曲面片进行并行处理,通过光栅化得到双线性曲面片与对应屏幕像素的光线的交点; (3)将得到的交点按前后顺序并行排序并组装成线段,通过多路归并写入外部文件。
3.根据权利要求书I所述的并行的可编程运动特效绘制方法,其特征在于,其特征在于,所述运行时绘制步骤包括以下子步骤 (1)对属于多帧动画的同一像素的线段进行分批并行处理,找出线段之间的交点并用交点切割对应的线段,通过并行前缀求和操作估计生成的线段数,再对每条线段按照用户指定的采样率细分成线元并按时间顺序并行排序,通过并行前缀求和操作估计生成的线元数; (2)对多帧动画的同一像素并行处理,对每个像素通过串行遍历的方式找到可见线元和不可见线元,再调用用户指定运动特效程序进行可编程绘制和线元合成,得到像素颜色值并输出。
全文摘要
本发明公开了一种并行的可编程运动特效绘制方法,由于各帧画面的同一像素能够在很大程度上共用绘制所需的数据,这就提高了能够同时处理的像素数量,进而提高绘制效率;本发明将计算切分成预计算和运行时计算部分,并将于运动特效编程无关的光栅化和线段组装运算放到预计算部分进行,并将预计算结果输出到外部文件,这样,进行一次预计算的结果可以用于不同运动特效的绘制,这也降低了调整运动特效编程时所需的得到最终绘制结果的计算量,提高了用户编辑运动特效时的绘制效率。
文档编号G06T13/00GK102945560SQ20121029702
公开日2013年2月27日 申请日期2012年8月21日 优先权日2012年8月21日
发明者侯启明, 任重, 周昆, 黄学真 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1