可重建几何阴影图方法

文档序号:6462555阅读:171来源:国知局

专利名称::可重建几何阴影图方法
技术领域
:本发明是有关于一种图形处理,且特别是有关于一种阴影绘图。
背景技术
:在计算机绘图中,阴影图(Shadowmapping)以及阴影锥(shadowvolumes)是二种常用的实时(real-time)阴影技术。阴影锥是FrankCrow在1977年所提出的技术,使用几何方法计算3维(3-D)物体遮光区域。此算法利用模板緩存(stencilbuffer)来计算某一像素(测试像素)是否在阴影中。阴影锥的主要优点是对于像素是准确的,反之阴影图的准确性需视紋理存储器(texturememory)大小以及如何投影阴影而定。阴影锥技术需要大量的硬件填绘时间,而其执行速度往往会比阴影图技术要慢,尤其是大规模复杂几何场景。阴影图是将阴影加入3-D计算机图像中的技术,其由LanceWilliams在1978#是出。此算法被广泛应用于预先描绘(pre-rendered)场景,以及实时(real-time)的应用中。通过光源观察点比4交遮光物与测试像素的深度,亦即测试对光源而言某个测试像素是否可见,以便建立遮光物的阴影。阴影图是一种简单有效的图像空间方法(imagespacemethod)。阴影图是阴影表现方法其中之一,其常常应用在高速需求上。然而,其遇到了锯齿问题(aliasingerror)以及深度偏移问题(depthbiasissues)。解决这两个缺点是阴影表现
技术领域
的研究课题。在阴影图中的锯齿错误可以分为二类透视锯齿错误(perspectivealiasingerrors)以及投影银齿错误(projectivealiasingerrors)。在阴影边缘放大时会发生透视锯齿错误。当光线几乎平行几何表面且延伸超出深度范围时,就会发生投影锯齿错误。大部分阴影图技术的另一个问题是深度偏移问题。为了避免错误的"自阴影"(self-shadowing)问题,William揭露一种常数深度偏移^支术,其在与真实表面(truesurface)比较之前便将其加入深度釆样中。不幸地,太多的偏移可能会导致错误的"无阴影"(non-shadowing,看起来像是遮光物浮在光线4妻收物的上方)而使阴影后退太远。实际上,直接地决定偏移值是非常难的,并且无法在每一个场景找出一个通用可接受的值。
发明内容本发明提供一种可重建几何阴影图方法,以降低"透视锯齿,,(perspectivealiasing)与"投影锯齿,,(projectivealiasing)这二种锯齿错误,并解决深度偏移而引起的错误"自阴影"(falseself-shadowing)与4晉i吴"无阴f》"(falsenon-shadowing)等问题的课题。本发明提出一种可重建几何阴影图方法。首先以光源为观察点,储存物体前表面(fonrt-facing)的多个遮光几^T形的几何信息。将测试4象素进行一致性测试,以使^人多个遮光几何形中找出相对应于测试像素的遮光几何形。其中遮光几4可形具有遮光点;以光源为,见察点,此测试^象素与该遮光点重叠。4吏用上述遮光几何形的几何信息以及测试像素的位置信息,重建遮光点的深度值。最后比较遮光点的深度值与测试像素的深度值,以完成测试像素的阴影判断。在本发明的一实施例中,上述的几何信息可以包括所述几何形的顶点坐标或者图形索引。上述一致性测试可以包括下述步骤。首先选择所述几何形其中之一,然后读取所选择几何形的几何信息,其几何信息中包括该几何形的顶点坐标(Vo.X,v。.y,v。.z)、(vpx,v!.y,v,.z)以及(v2.x,v2.y,v2.z)。接下来计算等式[p.xp.yl]=[w,<formula>formulaseeoriginaldocumentpage6</formula>,以求耳又遮光点的重心坐标丫直(Wl,w2,w3);其中(p.x,p.y,p.z)为观'J试4象素的坐标。依4居遮光点的重心坐标值(Wnw2,w3)判断所选才奪的几何形是否为一致的。若所选择的几何形判断结果为一致的,则该几〗可形为遮光几何形。在本发明的一实施例中,上述重建遮光点深度值的步骤包括计算等式r.z-[w,,,以求耳又该遮光点的深度值T.z。在本发明的一实施例中,上述重建遮光点深度值的步骤包v0.xV0Jrv0.x1——1v0.z括计算等式T.z==h,w2,w3]承V,.xv,Ji*h.x1*v>2,xv2._yiv2.xv2.y1v2.zv0.xr_1v0.z1承v2.xv2)1v2.z,以求取遮光点的深度^f直T.z。括在本发明的一实施例中,上述重建遮光点深度值的步骤包<formula>formulaseeoriginaldocumentpage6</formula>,以J^耳又遮光点本发明因以光源为观察点储存物体的前表面多个几何形的几何信息,因此可以使用该测试像素的位置信息以及所储存的几何信息,重建遮光点的深度值。获得遮光点的深度值后,便可以比较遮光点与测试像素二者的深度值,以完成该测试像素的阴影判断。本发明所述的可重建几何阴影图方法,通过减低透视锯齿与投影锯齿,可以产生精确的阴影边缘。图l是依照本发明实施例说明一种可重建几何阴影图方法的流程图。图2是依照本发明实施例说明阴影图、物体表面(部分)与测试像素的空间关系。图3A说明二个相邻接三角形TR0与TR1。图3B说明在图3A中三角形TR0与TR1的光栅化区域AR0与AR1。图3C是依照本发明说明二种采样模板的图样范例。图4A说明标准阴影图所产生的投影锯齿错误。图4B是依照本发明实施例说明可重建几何阴影图所产生的投影锯齿结果。图5A说明标准阴影图以常数深度偏移技术(深度偏移值le-3)所产生的测试场景。图5B说明标准阴影图以常数深度偏移技术(深度偏移值le-6)所产生的测试场景。图5C是依照本发明实施例说明可重建几何阴影图(深度偏移值le-6)所产生的图形深度偏移测试场景。具体实施方式为让本发明的上述特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细i兌明如下。本领域技术人员可以参照以下实施例来实现本发明。当然,下述实施例亦可以计算机程序的形式实现,并利用计算机可读取储存介质储存该计算机程序,以利计算机执行可重建几何阴影图的方法。图l是依照本发明实施例说明一种可重建几何阴影图方法的流程图。本实施例可以处理多个光源。为能简单清楚说明本实施例,以下将以单一光源为例来说明可重建几何阴影图的方法。在计算机所绘制的图形中,物体表面可以由多个几何形(例如三角形或其他几何形)所构成。本实施例将假设物体表面是由多个三角形所构成。本领域普通技术人员可以任何技术绘制上述物体表面。图2依照本发明实施例说明阴影图、物体表面(部分)与测试4象素的空间关系。从光源观点光源〗現察点(light'spointofview)可以纟会出i为景。以,存、光源(pointlightsource)而言,jt匕观察点可以是透一见投影(perspectiveprojection)。对于指向性光源(directionallight)而言,可以使用正交投影(orthographicprojection)。如图2所示,遮光物体表面包4舌三角形TR0、TR1、TR2与TR3。从上述绘制中,会撷取每一个遮光三角形(occludingtriangles)TR0TR3的信息,并将其存放在几何阴影图(geometryshadowmaps)中。亦即,以光源观点光源为观察点,-賭存某一物体的前表面的多个几何形的几何信息(步骤S110)。于本实施例中,上述几詞M言息可以包括各个几4可形的顶点坐标,例如遮光三角形TR0TR3的顶点坐标或者包括各个几何形的图形索引。在光源观察点的规范视体(lightcanonicalviewvolume)与光源碎见点空间(lightviewspace)中,此三角形的线性特性可以让我们以在点光源(和指向性光源一样)下重建这些遮光三角形。接下来进行步骤S120,将测试像素进行一致性测试,以从所有几何形中找出一遮光几何形。其中,该遮光几4可形具有遮光点(以光源为观察点的几何阴影图中,该测试像素与该遮光点重叠)。步-骤S120可以应用几何阴影图(geometryshadowmaps)从摄影观察点(cameraviewpoint)绘制场景。此处理具有三个主要构件。对于物体的每一个测试〗象素(testingpixel,例如图2中的测试像素P)而言,首先要找出从光源所看到像素的坐标(p.x,p.y,p.z)。坐标(p.x,p.y,p.z)的x与y值对应于在几何图紋理(geometrymaptexture)中的位置,并JM皮4吏用于三角形一致性测试(triangleconsistencytests)以侵_找出遮光三角形。上述步骤S120可以找出测试像素P的遮光三角形是TR0。接下来进行步骤S130,使用遮光几何形的几何信息以及测试像素的位置信息,重建遮光点的深度值。也就是使用步骤S110所储存的几何信息来重建像素P的遮光点深度值(例如图2中遮光点Pd的深度值)。接下来进行步骤S140,比较遮光点Pd的深度值与测试像素P的深度值,以完成测试像素P的阴影判断。对照于遮光三角形TRO的重建深度值,测试像素P的z值(深度值,得自光源观察点的>见范牙见体(lightcanonicalviewvolume))卄夸#皮测i式,以完成测试像素P的阴影判断。最后,绘出在阴影中或是在光亮中的所测试像素。若有多个光源,则对每一个光源使用各自不同的几何阴影图。本领域普通技术人员可以依照上述说明而实现本实施例。以下将说明图l中各步骤的详细实施范例,然而本发明的实现方式不应以此受限。图2说明从光的观察—见空间的点光源转换至光源观察点的规范视体中的指向性光源。假设在光源观察点的规范视体中的场景是由四个相邻三角形TR0、TR1、TR2与TR3所组成。首先(步骤S110),三角形TR0TR3分别被投影(projected)与光栅化(rasterized)至几何阴影图中其对应的区域AR0、AR1、AR2与AR3。在各区域AR0AR3中的每一个紋理元素(texel)包含其对应三角形的几何信息(本实施例中为顶点坐标),例如在区域AR0中的紋理元素包含三角形TR0的顶点坐标(vo.x,v。.y,Vo.z)、(Vpx,v卜y,v卜z)以及(v2.x,v2.y,v2.z)。步骤S110除了将几何信息储存在阴影图外(现有技术储存在阴影图的是深度值,而不是几何信息),步骤S110的操作几乎等同于标准阴影图。对于点光源而言将场景转换至光源观察点的规范视体(lightcanonicalviewvolume),然后在其阴影图的光栅化区域储存了三角形的三个顶点坐标。另一个方式可以从相邻接的三角形获得坐标顶点。例如在图2中,与三角形TRO相邻接的三角形TR1、TR2与TR3的6个顶点坐标均被储存在三角形TR0的光栅化区域。对于指向性光源而言,则储存指定"处理中"光源观察点的规范视体空间的顶点坐标,此观察点空间的光线平行于z轴。接下来,在可视空间(eyespace)中的可见4象素(visiblepixel)P被转换至光源观察点的规范视体坐标(p.x,p.y,p.z)。步骤S120所述一致性测试可能包括选l奪几何形(例如三角形TR0TR3)其中之一。步骤S120可能包括读取所选择几何形的几何信息(例如,若选择三角形TRO,则从几何阴影图读取区域ARO的几何信息)。上述几何信息中可以包括几何形的顶点坐标,例如三角形TR0的顶点坐标(vo.x,vo.y,v。.z)、(VlX,v!.y,Vi.z)以及(v2.x,v2.y,v2.z)。以二维(2-D)坐标(p.x,p.y),可以找出几何阴影图中对应的采样点T。在此步骤S120可能包括计算等式l:<formula>formulaseeoriginaldocumentpage11</formula>以求:f又对应于三角形TRO顶点的遮光点Pd的三维(3-D)重心坐标亏直(w!,w2,w3)。依才居遮光点Pd的重心坐才示<直(w!,w2,w3)判断所选择的几何形(三角形TRO)是否为一致的。对于每一个可见像素P,遮光三角形TRO需要被正确定位,以便接下来可以从储存在几何阴影图的几何信息重建此遮光点Pd的深度值。此处理便是所谓三角形"一致性测试"。然而,具有观'Ji式4象素坐才示(x,y)的采才羊纟丈J里图(samplingtexturemaps)不一定能返回有关挡住该测试像素P的三角形TRO的信息。若从等式l所计算获得的三个重心坐标值(wl5w2,W3)是在[0,1〗范围中(意思是此三角形挡住了该测试像素),便称此三角形测试是一致的(consistent)。否则此观'j试是不一致的(inconsistent)。若所选#^的几何形判断结果为一致的,则几何形(三角形TR0)为测试^象素P的遮光几何形。由于阴影图的有限解析度,可能导致三角形测试的不一致结果。若紋理贴图的解析度比较低,则更有可能让三角形测试结果变得不一致。图3A说明二个相邻接三角形TR0与TR1,而三角形TR0与TR1为有限解析度。图3B说明在图3A中三角形TR0与TR1的光栅化区域AR0与AR1。在有限解析度之下,区域ARO为三角形TRO的光栅化区域,而区域AR1是三角形TR1的光栅化区域。点T是采样点(sampledpoint),其具有与所测试可见像素P相同的(x,y)坐标。然而通过采样点T,本实施例所存取者为带有三角形TR0几何信息的紋理元素A。如图3B所示,采样点T本来应该在三角形TR1的光4册化区域内,然而三角形TR0的信息可能会因为有限解析度而导致错误的深度值重建(错将釆样点T视为三角形TR0的遮光点)。图3B中采样点T,亦有相似问题。以相邻接三角形的几何信息,通过采样对应点T可以找出挡住所测试像素P的遮光三角形。然而,当二个相邻区域被光栅化,邻接三角形的几何信息便可能会不能使用。为了解决这个问题,本实施例增加釆样点以包含更多三角形的几何信息,因此也增加了找出一致的三角形测试的机会。图3C是依照本发明说明二种采样才莫板(samplingkernels)T与T,的图样范例。若所测试像素P被多层几何表面所挡住,此模板亦可排序所有一致三角形测试的深度结果,并且取其最小值作为遮光点的最终深度值。以采样模板T的图样为例,除了存取带有区域ARO信息的紋理元素来计算采样点T之外,更存取带有区域ARO信息的紋理元素来计算采样点T2的深度值,存取带有区域AR2信息的紋理元素来计算釆样点T1的深度值,以及存取带有区域AR1信息的紋理元素来计算采样点T3与T4的深度值。接下来排序所有一致三角形测试的深度结果(T、Tl、T2、T3与T4的深度值),并且取其最小值作为遮光点Pd的最终深度值。对于准确性而言,选择适当的模板图样是很重要的。相较于较小模板图样而言,大一点的模板图样常常提供较高准确性。然而,包含许多采样点的较大模板可能不利于性能。图3C所示的特殊模板图样可以较少的采样而实现相近的准确性。通过设定某一测试像素的三角形一致性测试总量,更可以减少采样数对于所测试的像素P,当紋理解析度是临界的(subcritical,其将导致一些遮光三角形无法存入阴影图),这些对应三角形测试必定不一致。基于此,这些三角形测试便依照到中央三角形的加权距离的顺序而被排序,以便使用对应于"最近距离,,(closest-distance)权重值三角形信息来进行重建。当合理的假设重建遮光点是在"最近距离"三角形的相同平面,此经计算获得的加权距离可以是欧几里德几何学(Euclidean)的计算方法。在获得了正确的三角形信息后,所测试像素的遮光点深度值可以^皮重建。经由三角形插值(triangleinterpolation),遮光三角形TR0中遮光点Pd的深度值可以^皮重建。在从等式l计算出上述权重值后,步骤S130中遮光点Pd的深度值T.z可以利用下式重建<formula>formulaseeoriginaldocumentpage13</formula>(等式2)或者,结合等式1与等式2,可以获得等式3:<formula>formulaseeoriginaldocumentpage13</formula>(等式3)v2.xv2.y1步骤S130中遮光点Pd的深度值T.z可以利用等式3重建。在上述等式3中必须进行3x3矩阵的逆运算。目前图形处理单元(GraphicsProcessingUnit,GPU)硬件并未直接支持3x3矩阵的逆运算。因此我们必须将其分解成一些通常的算术逻辑运算单元(arithmeticandlogicunit,ALU)指令。然而,ALU指令集并不能保证精确性,而且可能会对逆运算结果引入更多相关的误差而影响到最终的重建深度值。为了改善上述问题,本实施例将等式3改写为下述等效的等式<formula>formulaseeoriginaldocumentpage14</formula>因此,步骤S130中遮光点Pd的深度值T.z亦可以利用等式4重建。最后通过比较遮光点Pd与像素P的光源规范视体深度值(canonicalvolumedepthvalues),亦即t匕4交T.z与p.z,可以冗成像素P的阴影判断(步骤S140)。图4A说明标准阴影图所产生的投影锯齿错误。图4A显示的场景是悬浮在底平面上方的一块四边形板,因此四边形板在底平面形成一带状阴影。图4A左下角显示所述带状阴影的局部放大图。从图4A可以很明显看出,传统标准阴影图所产生的投影锯齿错误是很明显的。相较于图4A,图4B是依照本发明实施例说明可重建几何阴影图所产生的投影锯齿结果。亦即,图4B使用了上述本发明实施例所介绍的新算法可重建几何阴影图(ReconstructableGeometryShadowMap,RGSM),做为锯齿问题的解决方案。图4B显示的场景与图4A相同。/人图4B可以4艮明显看出,本发明实施例所使用的RGSM算法所产生的投影锯齿错误很明显的得到大幅度的改善。大部分阴影图技术的另一个问题是深度偏移问题。图5A、5B与5C的图形深度偏移测试的场景相同,均是房子与栏杆。图5A说明标准阴影图以常数深度偏移技术(深度偏移值le-3)所产生的测试场景,以避免错误的自身阴影(self-shadowing)问题。亦即,其在与真实表面(truesurface)比较之前便将深度偏移值加入深度采样中。由于图5A的深度偏移值过大,导致错误的"无阴影"(non-shadowing,看起来像是遮光物浮在光线接收物的上方)现象而使阴影后退太远。实际上,直接地决定偏移值是非常难的,并且无法在每一个场景找出一个可接受的值。例如,图5B说明标准阴影图以常数深度偏移技术(深度偏移值le-6)所产生的测试场景。为了改善错误的"无阴影"现象而使用较小的深度偏移值(le-6),虽然改善了"无阴影"现象,却产生了错误的"自阴影"(self-shadowing)问题(如图5B所示)。图5C是依照本发明实施例说明可重建几何阴影图所产生的图形深度偏移测试场景。亦即,图5C使用了上述本发明实施例所介绍的RGSM算法做为深度偏移问题的解决方案。图5C的深度偏移值与图5B相同,均是le-6。从图5C可以很明显看出,本发明实施例所使用的RGSM算法可以使用极小的深度偏移值,而不会产生错误的"自阴影"问题。综上所述,本实施例可以保证像素级别的(pixel-wise)深度准确性,具有下列优点1.通过减低透视锯齿与投影锯齿,其可以产生精确的阴影边缘。其更可以在动态场景中移除阴影边缘"抖动"(jittering)现象。2.比起其他的阴影图技术,本实施例可以具有很小的深度偏移值。通过设定单一且固定的偏移值,使用RGSM的程序设计者可以符合大部分应用的需求,并且产生正确图像而避免错误的"自阴影,,(falseself-shadowing)或是错误的"无阴影"(falsenon-shadowing)问题。3.在相同输出阴影品质与高速执行的前提下,其只使用标准阴影图的少量存储器空间。以上所述〗又为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。附图中符号的简单说明如下A、B:紋理元素AR0、AR1、AR2、AR3:几何阴影图中的只于应区域P:测试<象素Pd:遮光点S110S140:依照本发明实施例说明可重建几何阴影图方法的各步骤权利要求1.一种可重建几何阴影图方法,其特征在于,包括以一光源为观察点,储存一物体前表面的多个遮光几何形的几何信息;将一测试像素进行一致性测试,以从所述多个遮光几何形中找出相对应于该测试象素的一遮光几何形;重建一遮光点的深度值;以及完成该测试像素的阴影判断。2.根据权利要求l所述的可重建几何阴影图方法,其特征在于,所述几何形包括三角形。3.根据权利要求l所述的可重建几何阴影图方法,其特征在于,所述几何信息包括所述几何形的顶点坐标或几何索引。4.根据权利要求l所述的可重建几何阴影图方法,其特征在于,该测试-像素的坐标为(p.x,p.y,p.z),而该一致性测试包括选择所述几何形其中之一;读取所选4奪的该几何形的几何信息,该几何信息中包括该几4可形的顶点坐才示(v。.x,v。.y,v。.z)、(v!.x,v.y,v!.z)以及(v2.x,<formula>formulaseeoriginaldocumentpage2</formula>以求取该遮光点的重心坐才示^f直(Wi,w2,w3);依据该遮光点的重心坐标值(W!,W2,W3)判断所选才奪的该几何形是否为一致的;以及若所选择的该几何形判断结果为一致的,则该几何形为该遮光几何形。5.根据权利要求4所述的可重建几何阴影图方法,其特征在于,重建该遮光点的深度值包括计算等式<formula>formulaseeoriginaldocumentpage3</formula>,以求耳又该遮光点的深度值T.z。6.根据权利要求4所述的可重建几何阴影图方法,其特征在于,重建该遮光点的深度值包括<formula>formulaseeoriginaldocumentpage3</formula>计算等式<formula>formulaseeoriginaldocumentpage3</formula>,以求耳又该遮光点的-果度Y直T.z。<formula>formulaseeoriginaldocumentpage3</formula>7.根据权利要求4所述的可重建几何阴影图方法,其特征在于,重建该遮光点的深度值包括计算等式T.z<formula>formulaseeoriginaldocumentpage3</formula>,以求耳又该遮光点的深度值T.z。8.根据权利要求l所述的可重建几何阴影图方法,其特征在于,该遮光几何形具有该遮光点;以该光源为观察点,该测试像素与该遮光点重叠。9.根据权利要求l所述的可重建几何阴影图方法,其特征在于,重建该遮光点的深度值需要利用该遮光几何形的几何信息以及该测试像素的位置信息。10.根据权利要求l所述的可重建几何阴影图方法,其特征在于,完成该测试像素的阴影判断是通过比较该遮光点的深度值与该测试像素的深度值。全文摘要本发明提供一种可重建几何阴影图方法。标准阴影图提供了在场景中快速且合适的绘制阴影的方法。本发明提供了新的算法可重建几何阴影图,本发明通过使用了深度值而达成上述目标,此深度值是通过由几何表面真实重建的,代替从深度贴图点采样的方法。同时,比起可以设定常数偏移值的大部分阴影图技术,此可重建几何阴影图算法使用较小的深度偏移值而能产生正确的图像而没有错误的“自阴影”或错误的“无阴影”。本发明所述的可重建几何阴影图方法,通过减低透视锯齿与投影锯齿,可以产生精确的阴影边缘。文档编号G06T15/50GK101271588SQ20081009613公开日2008年9月24日申请日期2008年5月6日优先权日2007年10月26日发明者戴庆华,杨宝光申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1