一种可交互的非匀质半透明物体绘制方法

文档序号:6565039阅读:351来源:国知局

专利名称::一种可交互的非匀质半透明物体绘制方法
技术领域
:本发明涉及图形绘制
技术领域
,尤其涉及一种非勻质半透明物体的绘制方法。
背景技术
:半透明物体的绘制与物体的次表面散射现象密切相关。次表面散射是指光线进入物体的表面时与物体材质相互作用产生散射,并从表面的另一个点离开该物体。光的次表面散射效果对于许多材质,特别是半透明材质(如大理石,玉,皮肤等)的真实再现起着十分重要的作用。然而,由于这种散射现象的复杂性,快速而精确的渲染这些材质非常困难。现存的方法在效率或者其他方面总存在各种缺陷。半透明物体绘制的标准方法是蒙特卡罗方法,包括路径追踪和光子映射法等,可以通过按方向模拟基本的物理散射来计算出单个光子在散射材质中的轨迹。只要有计算出足够多的轨迹,该方法就可以模拟出任意精度的图像。然而,即便是对于均一材质的物体,蒙特卡罗方法的运算量也是极其大的,往往渲染一帧就需要数小时的计算;对于非勻质材质的物体,计算量更加大,这就注定了它只能离线计算。蒙特卡罗方法可参考D0RSEY,J.,EDELMAN,A.,JENSEN,H.W.,LEGAKIS,J.,ANDPEDERSEN,H.K.1999;Modelingandrenderingofweatheredstone.InACMSIGGRAPH,225-234.PHARR,M.,ANDHANRAHAN,P.2000;Montecarloevaluationofnon-linearscatteringequationsforsubsurfacereflection.InACMSIGGRAPH,75-84.Li,H.,PELLACINI,F.,ANDTORRANCE,K.E.2005;Ahybridmontecarlomethodforaccurateandefficientsubsurfacescattering.InEurogr.SymposiumonRendering,283-290JENSEN,H.W.,ANDCHRISTENSEN,P.H.1998.Efficientsimulationoflighttransportinscenceswithparticipatingmediausingphotonmaps.InACMSIGGRAPH,311-320。由于蒙特卡罗方法的大运算量,实际中人们往往采用各种近似计算。首个有效近似即为偶极子扩散逼近BSSRDF。该方法尽管速度十分快,但是一方面BSSRDF的精度有限,另一方面它只能渲染均一材质的物体。然而,该方法仍然被广泛应用,这是由于其低计算量和易实现性。该方法可以用来加速蒙特卡罗方法,也可以用来改善渲染质量;在预计算光线追踪方法中,该方法可以成为实时方法。该方法可以参考以下论文JENSEN,H.W.,MARSCHNER,S.R.,LEVOY,M.,ANDHANRAHAN,P.2001.Apracticalmodelforsubsurfacelighttransport.InACMSIGGRAPH,511-518;H.W.JensenandJ.BuhIer,Arapidhierarchicalrenderingtechniquefortranslucentmaterials.ACM,2002,pp.576-581;H.W.Jensen,S.R.Marschner,M.Levoy,andP.Hanrahan,Apracticalmodelforsubsurfacelighttransport.AGM,2001,pp.511—518。由于上述各种方法的缺陷性,基于扩散方程求解的绘制方法被广泛应用。扩散方程最早由在参与介质理论中提出,进入散射材质的光线,其光子运动由以下三个函数决定吸收系数函数μ和散射系数函数Qs'分别给出了单位距离内材质吸收和散射光子的个数,相函数^(成斤)给出了光子从5到i的概率。由这三个函数便可确定物体中从任意一点X到任意方向治的光照。给定物体Ω,边界条件3Ω和物体的光学属性(吸收系数μ和散射系数Os')物体内部的光通量^(X)可以由如下扩散方程描述V.(AT(x)Vp(x))-μ(χ)φ(χ)=0,χeΩ,其中,V.是散度算子,V是梯度算子,κ(χ)=[μ(χ)+σ3'(χ)]-1。扩散方程描述了光线照射在半透明物体上时物体内部的辐射通量(光通量)分布情况。用扩散方程来描述半透明物体的次表面散射基本步骤是对物体进行空间网格剖分,按建立好的空间网格离散原扩散方程并在所有的离散点上建立起线性系统;以入射光线为边界条件求解该线性系统可以得到物体内部的光通量分布,最后通过一个查询函数便可通过光通量和入射光线的计算得到该物体表面的出射光线。现有的线性系统构造方法有两种有限差分法(FDM)和有限元方法(FEM)。第一个提出了基于扩散方程的能够实时渲染非勻质材质物体的方法是有限差分法。该方法将物体剖分成六面体网格(6-拟正则多面体网格),然后自然地基于该网格用FDM离散拉普拉斯算子和梯度算子,利用多重网格加速技术和GPU的高并行计算,达到了实时渲染。该方法在效率和交互性(允许用户动态编辑光学材质甚至进行简单的几何形变)上有着很大的优势,然而,该方法有三个缺陷第一、六面体网格只能很小心的手动建立,这造成了实际应用中的困难;第二、由于使用了较为规则的六面体网格,该方法只能表示几何形状较为简单的物体(如没有尖锐拐角等);第三、FDM的离散精度不够高,这使得这种离散方法只适用于较为规则的物体和一定范围内变动不剧烈的物体光学系数。在此基础上,后人改用四面体网格来表示空间物体,然后用同样的方法建立线性系统,由于四面体网格可以很方便的自动生成,而且四面体表达任意几何形状的能力较强,所以克服了六面体网格的前两个缺陷。但由于FDM本身没有变,第三个缺陷仍然无法避免。四面体网格上的有限元方法FEM则完全避免了上述缺陷。用蒙特卡罗路线追踪法得到的结果作为真实解参照,可以看出FEM比FDM更为精确。为了得到FEM线性系统的解,该方法在每一个四面体内部对每一对顶点进行了数值积分。该方法的主要优势在于求解精度十分高,而且即便物体离散的四面体形状很差,该方法的误差依然很小。另一方面,该方法的速度远远快于蒙特卡罗方法(一般在数十秒到数百秒)。但是相对于有限差分法,该方法速度仍然较慢,并不能达到实时渲染或交互式渲染。关于扩散方程的相关文献可以参考=WANG,J.,ZHAO,S.,TONG,X.,LIN,S.,LIN,Z.,DONG,Y.,GU0,B.,ANDSHUM,H.-Y.2008.Modelingandrenderingofheterogeneoustranslucentmaterialsusingthediffusionequation.ACMTrans.Graph.27,1,1-18;ARBREE,A.,WALTER,B.,ANDBALA,K.2010.Heterogeneoussubsurfacescatteringusingthefiniteelementmethod.IEEETrans.Vis.Comp.Graph..08Sep.2010,IEEECSDig;WANG,Y.,WANG,J.,H0LZSCHUCH,N.,SUBR,K.,YONG,J.-H.,ANDGUO,B.2010.Real-timerenderingofheterogeneoustranslucentobjectswitharbitraryshapes.ComputerGraphicsForum29,497-506。
发明内容本发明针对在游戏、电影以及相关领域中的半透明物体的高精度高效率绘制问题,提出了一种可交互的非勻质半透明物体绘制方法。本发明的目的是通过以下技术方案来实现的一种可交互的非勻质半透明物体绘制方法,该方法通过离散散度方法离散化扩散方程来建立线性系统,并通过并行多重网格加速技术和GPU加速来求解线性系统。进一步地,所述通过离散散度方法离散化扩散方程来建立线性系统,包括以下子步骤(1)输入物体模型的四面体表达;(2)输入物体的半透明材质信息并映射到每个四面体中;(3)在四面体网格上利用离散散度方法离散化扩散方程,得到线性系统。进一步地,所述通过并行多重网格加速技术和GPU加速来求解线性系统,包括以下子步骤(1)使用并行方法选取网格的最大独立点集作为下一层网格的点(独立点集指所有的点均未在网格上直接相连的点集);(2)在新一层的网格上重构网格边;(3)重复⑴⑵直到达到用户指定的网格层数或网格顶点数;(4)构造不同层次图上的线性系统及插值公式;(5)在得到的各个层图上依次求解线性系统得到所求的光通量,直到得到原网格上每个顶点上的光通量;(6)利用(5)所求的光通量和扩散方程边界条件最终得到绘制的颜色。本发明的有益效果是,本发明的方法可以高效地绘制任意形状任意复杂材质的半透明物体。本发明通过推导扩散方程的离散表达以及并行多重网格加速算法与GPU加速,解决了非勻质半透明物体的交互绘制问题,第一个允许用户交互式的对物体进行切割操作,同时支持交互式材质编辑等其他操作。本发明可以较方便地嵌入到Autodesk3dsMax等商业产品中。具体实施例方式本发明可交互的非勻质半透明物体绘制方法需要解决的基本问题为,一、如何合理的离散扩散方程;二、如何求解扩散方程使速度达到交互级别。本发明基于现有的扩散方程求解方法,该方法通过离散散度方法离散化扩散方程来建立线性系统;通过并行多重网格加速技术和GPU加速来求解线性系统。具体阐述如下1、通过离散散度方法离散化扩散方程来建立线性系统,包括如下子步骤1.1得到输入物体模型的四面体表达物体的四面体网格化已经有较多成熟的方法;用户可以利用三角形面网格配合一些自动四面体网格化的工具得到物体的四面体表达。如论文H.SiandK.Gaertner,"Meshingpiecewiselinearcomplexesbyconstraineddelaunaytetrahedralizations,"inProceedingsofthe14thInternationalMeshingRoundtable,sep2005,pp.147-163中所述的方法。1.2输入物体的半透明材质信息并映射到每个四面体中物体的半透明材质信息包括吸光因子μ,均散光因子σJ。材质信息均以三维纹理(三维数组)的形式输入,本子步骤在每个四面体中心通过线性插值的方法得到对应该四面体的材质系数。1.3在四面体网格上离散扩散方程,得到线性系统已知扩散方程V(at(x)V<p[X))-/j(x)<p(x)=0,XeQ,和边界条件cp(x)+2A^(x)(V<p(x)■n(x))=4/(1-Fdr)q(x\xgSQ,其中,V.是散度算子,V是梯度算子,K(X)=レ(x)+os'(x)r1,u是吸光因子(输入),Os'是均散光因子(输入),q(x)是表面入射点X的扩散入射光线(输入),Ft和Fd,是扩散Fresnel传播系数和反射系数,其计算方法可见于论文JENSEN,H.W.,MARSCHNER,S.R.,LEVOY,M.,ANDHANRAHAN,P.2001.Apracticalmodelforsubsurfacelighttransport.InACMSIGGRAPH,511-518,是表面点x的法向量,A=(1+Fdr)/(I-Fdr)。设非勻质半透明物体由四面体网格表示,该网格可以由其顶点集合Ix1,X2,...}表达。假定物体的光学属性(吸收系数P和散射系数Os')是分段常数函数,即在每个四面体内为常数(第2步已经得到了这个值)。在四面体网格上利用离散梯度算子和散度算子并经过适当变换后,我们可以得到如下线性系统Mcp=b,(1)b是向量,按如下方法计算'O,若1是内点A=若i是边界点,、3ズ(レ、)Si是直接与i邻接的三角形面的面积。M是稀疏矩阵,按如下方法计算'"4Z^o0y-+^)'若i是内点““j_4Z,一.A+ゆ⑷+■,若丨是边界点Mij=4(0^.,其中_9]=-X啡湖;I似ICOtも,tG(i,j,k,l)表示包含边Ixi,Xj}的所有四面体,xk,ち是另外两个顶点,四面体t中包含边{xk,X1I地两个面的ニ面角,|klI是{xk,X1I的长度。2、通过并行多重网格加速技术和GPU加速来求解线性系统由于非勻质材质和几何形状的复杂性,物体的四面体网格需要十分紧密(几十万到上百万个四面体)才能精确的表示物体的性状。直接求解扩散方程离散好的线性系统即使是高度并行速度仍然较慢。本发明使用引入一种基于GPU的并行多重网格算法来加速线性系统的求解。该算法的基本思路是先构建好物体四面体网格的粗网格表示,在较粗的网格上求解对应的线性系统,得到的解插值到细网格上作为该网格上线性系统的初值,然后迭代求解从而达到加速效果。假设={P0,E0I表示原始网格(由顶点集和边集构成)。我们分两步来从&构造G1+1。第一步计算P1的独立点集(任意两个顶点没有直接相连),第二步进而添加部分点并构造该层的边。不同层次的图构造好之后,我们再构造不同层次上的线性系统。最后,我们的求解过程非常直观先在较粗的层次上求解该层的线性系统(可使用双共轭梯度法求解),将求得的解插值到较细的层次上,再以该解为初值迭代求解该层的线性系统,如此依次进行直到得到第0层,也就是原始网格上的解(第0层用预处理共轭梯度法求解)。所有过程均可在GPU上高效并行实现。2.1使用并行方法选取网格的最大独立点集作为下一层网格的顶点初始化P1+1为空并令为P1,然后迭代的从Q1+1中移除点并添加到Pw中。首先为(^1中的任意顶点生成一个随机数,然后以i的编号为低位、其对应的随机数为高位对每个顶点压缩得到一个32位编码hp在每步迭代中,对中的任意顶点1,令队(1)表示顶点i在第1层中直接相邻的顶点集合(一环领域),Γ(i)=N1(I)ΠQ1+1表示顶点i第1层的一环邻域集合中也在第1+1层的点集。如果i的编码码Iii小于等于所有的Γ(i)中的顶点的编码,则将i添加至Pw并将i和Γ⑴从Q1+1移除。持续这个过程直到为空。容易看到,这样生成的P1+1满足两个条件第一、对于任意顶点ie(P1-Pw),i至少有一个一环邻域点在Pw中。第二、Pw中的每一对顶点都不在G1中直接相连。第一个条件保证了下一节将要用的插值格式的精度,第二个条件保证了上述算法可以容易地并行计算。2.2在新一层的网格上重构网格边第1+1层的两个顶点i,j若在第1层G1是二环相邻的,则它们之间需要添加边(i,j)。可按以下过程实现对于P1-Pw的任意顶点i,并行地判断,如果任意两点均在第1+1层且在i的一环邻域中,则添加连接它们的边到4+1。以上所得到的继承图可能存在这样一个问题两个三环相邻的点可能被同时保留到Gw中,但是它们的连接关系却丢失了。这个问题可以这样解决对于第1层的每一条边由P1-Pw中的顶点构成的边(i,j),如果N1(I)ηN1(J)ηρ1+1为空,就标记点i,j;它们需要在第1+1层相连。所有被标记的顶点组成一个新的候选集仏+1,对于这个候选集应用独立点集算法并将选出的点添加到Pw中。重复上述过程,直至新的候选集为空。需要注意的是,经过图的加强Pw将不一定是P1的独立点集。除了要连接G1中二环相连的点外,还要包含原来就一环相连的点。2.3重复上面两个子步骤2.1,2.2直到达到用户指定的网格层数或网格顶点数。重复2.1,2.2来构造不同层次的网格顶点与边,结束条件可以是用户指定的网格层数,也可以是用户指定的最稀疏网格上的顶点个数。2.4构造不同层次图上的线性系统及插值公式。假设顶点i在第1层满足如下线性方程权利要求1.一种可交互的非勻质半透明物体绘制方法,其特征在于,该方法通过离散散度方法离散化扩散方程来建立线性系统,并通过并行多重网格加速技术和GPU加速来求解线性系统。2.根据权利要求1所述可交互的非勻质半透明物体绘制方法,其特征在于,所述通过新的扩散方程离散方法来建立线性系统,包括以下子步骤(1)输入物体模型的四面体表达;(2)输入物体的半透明材质信息并映射到每个四面体中;(3)在四面体网格上利用离散散度方法离散化扩散方程,得到线性系统。3.根据权利要求1所述可交互的非勻质半透明物体绘制方法,其特征在于,所述通过并行多重网格加速技术和GPU加速来求解线性系统,包括以下子步骤(1)使用并行方法选取网格的最大独立点集作为下一层网格的点(独立点集指所有的点均未在网格上直接相连的点集);(2)在新一层的网格上重构网格边;(3)重复(1)(2)直到达到用户指定的网格层数或网格顶点数;(4)构造不同层次图上的线性系统及插值公式;(5)在得到的各个层图上依次求解线性系统得到所求的光通量,直到得到原网格上每个顶点上的光通量;(6)利用(5)所求的光通量和扩散方程边界条件最终得到绘制的颜色。全文摘要本发明公开了一种可交互的非匀质半透明物体绘制方法,该方法支持物体模型的切割,材质编辑等操作,所有操作均可交互式地进行。本发明主要有两个技术突破与创新第一、通过提出一种新的扩散方程求解方法,克服了之前方法的缺点;第二、通过一种并行多重网格加速技术,使得绘制过程可以达到交互乃至实时级别。整个求解过程高度并行化并且十分容易在GPU上实现,其绘制结果与耗时较多的有限元方法绘制结果几乎完全一致。文档编号G06T19/00GK102402798SQ20111027125公开日2012年4月4日申请日期2011年9月14日优先权日2011年9月14日发明者任重,周昆,孙鑫,李冬平,郭百宁申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1