三维空间数字图像处理器与应用其上的能见度处理方法

文档序号:6599721阅读:123来源:国知局
专利名称:三维空间数字图像处理器与应用其上的能见度处理方法
技术领域
本发明为一种三维空间数字图像处理器与应用其上的能见度处理方法,尤指个人电脑系统中的三维空间数字图像处理器与应用其上的能见度(visibility)处理方法。
背景技术
在三维空间图像应用程序中,在一场景中的一物体藉由一三维空间图像模型来表现。例如,利用一多边形网目(polygon mesh),一个物体的表面便可藉由数个相互连接的多边形来建立起模型。而表面着色过程(renderingprocess)通常藉由转换几何基本元素(geometric primitives)上的端点来提供光栅化过程(rasterizing process)所需的模型数据。所谓光栅化一般是指根据投射至或覆盖于一像素上的几何基本元素来计算该像素于视觉空间中的像素值的过程。
请参见图1,其是一常用3D图形引擎的功能方块示意图,该3D图形引擎主要包含一转换-打光引擎(transform-lighting engine)11,用以进行几何计算;一设定引擎(setup engine)12,用以初始化该基本元素;一扫描转换器(scan converter)13,用以衍生像素座标;一色彩计算器(color calculator)14,用以产生平滑色彩;一纹理单元(texture unit)15,用以处理纹理;一透明度混色单元(alpha blending unit)16,用以产生透明与半透明的效果;一深度测试单元(depth test unit)17,用以移除由像素组成的隐藏表面;一显示控制器(display controller)18,用以准确地于显示器21上显示图像等等。该3D图形引擎接收并执行存储于指令队列10中的指令,而存储器控制器19通过存储器总线对该图形存储器20进行存取。该指令队列10是一用以存储指令数据FIFO单元,其通过系统总线自该控制器1接收该指令数据。
而在一个给定的三维空间图像场景中,可能有多个多边形同时投射在投射平面(projection plane)上的同一区域,如此一来,在此场景中将有一些基本元素无法被看见,而上述的深度测试单元(depth test unit)17便是用以移除由像素组成的隐藏表面。因此,有许多隐藏表面去除算法(hidden surfaceremoval algorithm)被发展出来,其是最广为人知的算法便是利用一个Z缓冲器来存储每一个画点(drawing point)的深度值的Z缓冲算法(Z-bufferalgorithm)。此算法的核心是关于一对于接收到每一个点的深度值与原先已存储在Z缓冲器中的深度值所进行的深度比较机制。对于在一平面(facet)上的一点(x,y),其深度值可由该平面的顶点的深度值内插而得,座标(x,y)的相对应深度值是由Z-缓冲器取得,进行一深度测试(depth test),藉由比较两深度值以决定哪一个较接近观看者。接着以较接近的深度值来更新Z-缓冲器。因此,该Z-缓冲器反应出目前为止投射面中的每一点的最接近的深度值状态。例如,假设观看者是位于Z座标原点0,而且,观看方向是朝向正Z-轴,于是,该Z-缓冲器便可保留住每一个绘点的目前为止最小的z值。
而该Z-缓冲器算法亦为现代电脑绘图系统中用以移除隐藏表面的最简单方法。Z-缓冲器算法的虚拟码(pseudocode)如下所示。
For(each polygon){For(each pixel in polygon′s projection){Calculate pixel′s z value(source-z)at coordinates(x,y);Read destination-z from Z-buffer(x,y);If(source-z is closer to the viewer)Write source-z to Z-buffer(x,y);}}已知现代3D应用的一主要问题为重复描绘(overdraw)。大部分的图形处理器都无法知道场景的哪些部分是看得见的,而哪些要在着色过程开始前先覆盖住。由于Z-缓冲器算法的核心在于每一输入像素深度值与存储于Z-缓冲器中的深度值的深度比较机制。在深度比较过程中,很多像素会被写到画面缓冲器(frame buffer)中,然后被更接近观看者的新像素重复盖过。重复描绘就是指这种画面缓冲器中像素重复写入的情形。一场景中重复描绘的数量被称为深度复杂度,代表总着色像素与可见像素的比率。例如,若一场景具有的深度复杂度为4,代表被着色像素为场景中确实可见的像素的4倍之多。在一复杂的3D场景中,大量的物件相互重叠。从深度比较机制的观点看来,以由前往后顺序的多边形(基本元素)为佳。具较大深度值的像素(远离观看者)将在深度比较处理过后被丢弃,因为较小深度值(较接近观看者)的重叠像素已被画出。否则,新的像素将被着色,并于深度缓冲器与画面缓冲器的对应像素位置中分别重新写入目前的深度值与色彩值。在可见像素中,若没有在绘图动线的早期阶段中丢弃,则该着色过程显然占用了大量的处理与存储器资源。图2为一上视绘图场景的实例。观看者的视野以虚线表示。场景中的可见物体以黑色虚线表示。如图2所示,在此实例中的大部分物体都是隐藏起来的,由于重复描绘而大幅降低了图形着色系统的效率。
传统绘图硬件试图以Z-排序来解决此问题,以消除某些多余的信息。前述方法虽可避免逐一进行像素可见度测试时所需的存储器频宽,但无法克服重复描绘的问题,仍然保留了相当大量不必要的计算与存储器需求。例如,若几何基本元素以由后往前(由远而近)的顺序描绘,会有一群像素通过可见度测试,因而发生非所欲的重复描绘。
因此,虽然Z-缓冲器算法在软件或硬件上都很容易执行,且不需要预先排序。Z-缓冲器反应出目前为止投射平面上每一点最接近的深度值状态。但如前所述,若物体的着色顺序为由后往前,则传统Z-缓冲器算法无法解决重复描绘的问题。故如何解决上述常用手段的缺失,是发展本发明的主要目的。

发明内容
本发明为一种能见度处理方法,应用于一三维空间数字图像的显示过程中,其方法包含下列步骤根据所接收的多个像素点来预先建立一深度映射函数,该深度映射函数存储有该等像素点与其相对应的参考深度值;以及接收一像素点数据并参考已建立完成的该深度映射函数来进行一能见度测试,藉以判断是否以该像素点数据对该三维空间数字图像中该像素点进行表面着色动作。
根据上述构想,本发明所述的能见度处理方法,其中该能见度测试包含下列步骤取出该像素点数据中所包含的一二维座标与一待测深度值;根据该二维座标输入该深度映射函数而对应出一参考深度值;以及比较该参考深度值与该待测深度值中何者较接近观察者的深度值,而当该参考深度值较接近观察者的深度值时,便不以该像素点数据进行表面着色动作。
根据上述构想,本发明所述的能见度处理方法,其中预先建立该深度映射函数的方法包含下列步骤将该等像素点的二维座标输入该深度映射函数而对应出相对的原始参考深度值;将该等预设参考深度值与该等像素点本身的深度值分别进行一比较与更新动作,藉以决定是否更新该深度映射函数中的该等原始参考深度值。
根据上述构想,本发明所述的能见度处理方法,其中该比较与更新动作包含下列步骤比较该原始参考深度值与该像素点本身的深度值,何者较接近观察者的深度值;当该像素点本身的深度值较接近观察者的深度值时,将该像素点本身的深度值取代该深度映射函数的该原始参考深度值而成为一新参考深度值;以及当该参考深度值较接近观察者的深度值时,维持该原始参考深度值不变。
根据上述构想,本发明所述的能见度处理方法,其中预先建立该深度映射函数的方法更包含下列步骤确认该像素点不需进行另一能见度测试后才进行该比较与更新动作。
根据上述构想,本发明所述的能见度处理方法,其中另一能见度测试为透明度混色测试。
本发明的另一方面为一种三维空间数字图像处理器,该装置包含一深度映射函数生成装置,其是根据所接收的多个像素点来预先建立一深度映射函数,而该深度映射函数中存储有该等像素点的二维座标与深度值的对应关系;一存储装置,信号连接至该深度映射函数生成装置,其供该深度映射函数存放;以及一表面着色引擎,其是将所接收到的像素点数据对该三维空间数字图像中该相对应的像素点进行一表面着色动作,而该表面着色引擎参考该存储装置中的该深度映射函数来进行一能见度测试,藉以决定是否以该像素点数据对该三维空间数字图像中该像素点进行表面着色动作。
根据上述构想,本发明所述的三维空间数字图像处理器,其中所执行的该能见度测试包含下列步骤取出该像素点数据中所包含的一二维座标与一待测深度值;根据该二维座标输入该深度映射函数而对应出一参考深度值;以及比较该参考深度值与该待测深度值中何者较接近观察者的深度值,而当该参考深度值较接近观察者的深度值时,便控制该表面着色引擎不以该像素点数据进行表面着色动作。
根据上述构想,本发明所述的三维空间数字图像处理器,其中该深度映射函数生成装置将该等像素点的二维座标输入该深度映射函数而对应出相对的原始参考深度值后,再将该等预设参考深度值与该等像素点本身的深度值分别进行一比较与更新动作,藉以决定是否更新该深度映射函数中的该等原始参考深度值。
根据上述构想,本发明所述的三维空间数字图像处理器,其中该深度映射函数生成装置所执行的该比较与更新动作包含下列步骤比较该原始参考深度值与该像素点本身的深度值,何者较接近观察者的深度值;当该像素点本身的深度值较接近观察者的深度值时,将该像素点本身的深度值取代该深度映射函数的该原始参考深度值而成为一新参考深度值;以及当该参考深度值较接近观察者的深度值时,维持该原始参考深度值不变。
根据上述构想,本发明所述的三维空间数字图像处理器,其中该深度映射函数生成装置更执行下列步骤确认该像素点不需进行另一能见度测试后才进行该比较与更新动作。
根据上述构想,本发明所述的三维空间数字图像处理器,其中另一能见度测试为透明度混色测试。
根据上述构想,本发明所述的三维空间数字图像处理器,其中更包含一画面缓冲器,信号连接至该表面着色引擎,其供该表面着色引擎进行表面着色动作时将该像素点数据写入。


本发明藉由下列附图及详细说明,可以更深入地了解图1是一常用3D图形引擎的功能方块示意图。
图2是一3D场景的上视实例示意图。
图3是本发明针对3D图形引擎所发展出来的一较佳实施例功能方块示意图。
图4是本发明初步进行深度映射函数的比较更新动作的较佳实施例的步骤流程图。
图5是本发明所发展出来于表面着色阶段中进行深度映射函数的比较更新动作的较佳实施例步骤流程图。
附图中所包含的各元件列示如下控制器1;转换-打光引擎11;设定引擎12;扫描转换器13;色彩计算器14;纹理单元15;透明度混色单元16;深度测试单元17;显示控制器18;存储器控制器19;图形存储器20;显示器21;指令队列10;深度映射函数生成装置42;存储装置43;表面着色引擎44;控制器3;转换-打光引擎31;设定引擎32;扫描转换器33;色彩计算器34;纹理单元35;透明度混色单元36;深度测试单元37;显示控制器38;存储器控制器39;图形存储器40;显示器41;指令队列30;深度映射函数生成装置42。
具体实施例方式
请参见图3,其是本发明针对3D图形引擎所发展出来的一较佳实施例功能方块示意图,其中转换-打光引擎(transform-lighting engine)31用以进行几何计算;设定引擎(setup engine)32用以初始化该基本元素;扫描转换器(scan converter)33用以衍生像素座标;色彩计算器(color calculator)34用以产生平滑色彩;纹理单元(texture unit)35用以处理纹理;透明度混色单元(alphablending unit)36用以产生透明与半透明的效果;深度测试单元(depth test unit)37用以移除由像素组成的隐藏表面;以及显示控制器(display controller)38用以准确地于显示器41上显示图像。其中表面着色引擎44是由色彩计算器(color calculator)34、纹理单元(texture unit)35、透明度混色单元(alphablending unit)36及深度测试单元(depth test unit)37所组成。而该3D图形引擎接收并执行存储于指令队列40中的指令,存储器控制器39通过存储器总线对该图形存储器30进行存取。至于该指令队列30是一用以存储指令数据的FIFO单元,其通过系统总线自该控制器3接收该指令数据。
而本发明的主要特征在于转换-打光引擎(transform-lighting engine)31与设定引擎(setup engine)32之间增设一深度映射函数生成装置(depth mapgenerator)42,其是将每一个经过转换-打光引擎(transform-lighting engine)31处理过后的像素点数据,取出代表其三维空间位置的一二维座标(X,Y)与一深度值Z来建立一深度映射函数,而该深度映射函数中主要用以存储显示画面中每个像素点的二维座标(X,Y)与其相对应的参考深度值Zr的对应关系。然由于3D图像场景大多以多个物件前后重叠构成(如图2所示),因此,为了得到整个3D图像场景的正确深度分布,当深度映射函数生成装置42于后续过程中所接收到相同二维座标(X,Y)但深度不同的像素点数据时,便将原始的参考深度值Zr与该像素点本身的深度值Z进行一比较更新动作,藉以决定是否更新该深度映射函数中的该参考深度值。而该比较更新动作主要包含下列动作(a)比较该原始参考深度值与该像素点本身的深度值,何者较接近观察者的深度值;(b)当该像素点本身的深度值较接近观察者的深度值时,将该像素点本身的深度值取代该深度映射函数的该原始参考深度值而成为一新参考深度值;以及(c)当该参考深度值较接近观察者的深度值时,维持该原始参考深度值不变。
如此一来,在所有像素点通过深度映射函数生成装置42后,便可得到一建立完成的深度映射函数(depth map)。而该深度映射函数可存放于如图所示的独立设置的存储装置43,或者是存放于定义于图形存储器30中的一临时存储器(temporary memory)中。因此,在进行后续表面着色动作(render)时,便可藉由参考该深度映射函数而省去不必要的重复描绘(overdraw)的动作。详言之,可将于进行表面着色动作时所接收到的每一像素点数据,先利用已建立完成的该深度映射函数来进行一能见度测试(visibility test),藉以判断是否以该像素点数据对该三维空间数字图像中该像素点进行表面着色动作。而该能见度测试(visibility test)主要包含下列步骤(a)取出该像素点数据中所包含的一二维座标与一待测深度值;(b)根据该二维座标输入该深度映射函数而对应出一参考深度值;以及(c)比较该参考深度值与该待测深度值中何者较接近观察者的深度值,而当该参考深度值较接近观察者的深度值时,便不以该像素数据进行表面着色动作。
而由于上述深度映射函数比较更新动作在执行时,仅需该像素点数据中的二维座标与待测深度值,而其它例如纹理(texture)、色彩(color)等数据皆被忽略,因此可大幅降低系统运算能力的消耗与存储器频宽的占用,但是,因为决定一个像素点数据是否被画上去或是被丢弃的测试并不仅有单一的能见度测试(visibility test),而是尚存在有其它例如透明度混色测试(alpha blending test)或穿透运算(operation of transparency)等各种能见度测试(visibility test)。其中透明度混色测试(alpha blending test)是将接收到的像素点数据中的透明度值(alpha value)与一参考透明度值(reference alpha value)进行比较,如果该像素点未通过此透明度混色测试时,则此像素点数据亦将被丢弃而不会去更新定义于图形存储器30中的画面缓冲器(frame buffer)与Z缓冲器(Z buffer)中的数据。
问题是,透明度值是由例如纹理映射(texture mapping)与透明度混色测试(alpha blending test)等运算中所产生。其中纹理映射需要自纹理暂存器中存取大量的纹理数据,而透明度混色需要目标图框缓冲数据,用以对来源色彩与目标色彩进行混色,为了3D绘图场景的透明度混色运算,前景物体必须与画出的背景物体混色。由于并非每一像素点的着色动作皆仅由其深度值决定,因此上述初步完成的深度映射函数并无法符合实际的需求,而为能改善此一问题,上述深度映射函数比较更新动作的较佳实施例是如图4所示的步骤流程图。对于多面体上的一点(x,y)而言,其待测深度值可由多面体顶点的深度值内插而得,而座标为(x,y)者的参考深度则可从深度映射函数中推得。利用两个深度值的比较进行一深度测试,以决定何者较接近观察者,接着以较接近的深度值来更新深度映射函数。但是,若一个像素被画出或舍弃不仅仅取决于深度测试,亦需视另一能见度测试而定时,例如上述的透明度混色测试等,则深度映射函数中座标为(x,y)的参考深度值将不会被修改,如此一来,能见度测试会留到表面着色阶段去决定。
再请参见图5,其是本发明于表面着色阶段中对于初步建立完成的深度映射函数比较更新动作的较佳实施例的步骤流程图,其主要是针对需要再进行其它例如透明度混色测试、等能见度运算的像素,并于其完成该等能见度运算后,再进行一次深度测试的比较更新动作。而原先建立完成的深度映射函数中的大部分数据并不需要被更新,因此仍可较常用手段节省大量的系统资源与存储器频宽。
综上所述,本发明利用少量信息所预先建立并暂存于存储器中的深度映射函数,可提供该表面着色引擎在执行着色动作时进行参考,如此将可省去许多不必要的过度描绘动作,进而节省大量的系统资源与存储器频宽,更可使得建立场景的速度增加。故本发明可以由本领域的技术人员任施匠思而为诸般修饰,然皆不脱离如附权利要求所欲保护的范围。
权利要求
1.一种能见度处理方法,应用于一三维空间数字图像的显示过程中,其方法包含下列步骤根据所接收的多个像素点来预先建立一深度映射函数,该深度映射函数存储有该等像素点与其相对应的参考深度值;以及接收一像素点数据并参考已建立完成的该深度映射函数来进行一能见度测试,藉以判断是否以该像素点数据对该三维空间数字图像中该像素点进行表面着色动作。
2.如权利要求1所述的能见度处理方法,其中该能见度测试包含下列步骤取出该像素点数据中所包含的一二维座标与一待测深度值;根据该二维座标输入该深度映射函数而对应出一参考深度值;以及比较该参考深度值与该待测深度值中何者较接近观察者的深度值,而当该参考深度值较接近观察者的深度值时,便不以该像素点数据进行表面着色动作。
3.如权利要求1所述的能见度处理方法,其中预先建立该深度映射函数的方法包含下列步骤将该等像素点的二维座标输入该深度映射函数而对应出相对的原始参考深度值;将该等预设参考深度值与该等像素点本身的深度值分别进行一比较与更新动作,藉以决定是否更新该深度映射函数中的该等原始参考深度值。
4.如权利要求3所述的能见度处理方法,其中该比较与更新动作包含下列步骤比较该原始参考深度值与该像素点本身的深度值,何者较接近观察者的深度值;当该像素点本身的深度值较接近观察者的深度值时,将该像素点本身的深度值取代该深度映射函数的该原始参考深度值而成为一新参考深度值;以及当该参考深度值较接近观察者的深度值时,维持该原始参考深度值不变。
5.如权利要求3所述的能见度处理方法,其中预先建立该深度映射函数的方法更包含下列步骤确认该像素点不需进行另一能见度测试后才进行该比较与更新动作。
6.如权利要求5所述的能见度处理方法,其中另一能见度测试为透明度混色测试。
7.一种三维空间数字图像处理器中,该装置包含一深度映射函数生成装置,其是根据所接收的多个像素点来预先建立一深度映射函数,而该深度映射函数中存储有该等像素点的二维座标与深度值的对应关系;一存储装置,信号连接至该深度映射函数生成装置,其是供该深度映射函数存放;以及一表面着色引擎,其是将所接收到的像素点数据对该三维空间数字图像中该相对应的像素点进行一表面着色动作,而该表面着色引擎参考该存储装置中的该深度映射函数来进行一能见度测试,藉以决定是否以该像素点数据对该三维空间数字图像中该像素点进行表面着色动作。
8.如权利要求7所述的三维空间数字图像处理器,其中所执行的该能见度测试包含下列步骤取出该像素点数据中所包含的一二维座标与一待测深度值;根据该二维座标输入该深度映射函数而对应出一参考深度值;以及比较该参考深度值与该待测深度值中何者较接近观察者的深度值,而当该参考深度值较接近观察者的深度值时,便控制该表面着色引擎不以该像素点数据进行表面着色动作。
9.如权利要求7所述的三维空间数字图像处理器,其中该深度映射函数生成装置将该等像素点的二维座标输入该深度映射函数而对应出相对的原始参考深度值后,再将该等预设参考深度值与该等像素点本身的深度值分别进行一比较与更新动作,藉以决定是否更新该深度映射函数中的该等原始参考深度值。
10.如权利要求9所述的三维空间数字图像处理器,其中该深度映射函数生成装置所执行的该比较与更新动作包含下列步骤比较该原始参考深度值与该像素点本身的深度值,何者较接近观察者的深度值;当该像素点本身的深度值较接近观察者的深度值时,将该像素点本身的深度值取代该深度映射函数的该原始参考深度值而成为一新参考深度值;以及当该参考深度值较接近观察者的深度值时,维持该原始参考深度值不变。
11.如权利要求9所述的三维空间数字图像处理器,其中该深度映射函数生成装置更执行下列步骤确认该像素点不需进行另一能见度测试后才进行该比较与更新动作。
12.如权利要求11所述的三维空间数字图像处理器,其中另一能见度测试为透明度混色测试。
13.如权利要求7所述的三维空间数字图像处理器,其中更包含一画面缓冲器,信号连接至该表面着色引擎,其是供该表面着色引擎进行表面着色动作时将该像素点数据写入。
全文摘要
本发明为一种三维空间数字图像处理器与应用其上的能见度处理方法,应用于一三维空间数字图像的显示过程中,该三维空间数字图像处理器包含有一深度映射函数生成装置、一存储装置以及一表面着色引擎,而该方法包含下列步骤该深度映射函数生成装置根据所接收的多个像素点来预先建立一深度映射函数并存放于该存储装置,该深度映射函数存储有该等像素点与其相对应的参考深度值;以及该表面着色引擎接收一像素点数据并参考已建立完成的该深度映射函数来进行一能见度测试,藉以判断是否以该像素点数据对该三维空间数字图像中该像素点进行表面着色动作。
文档编号G06T17/00GK1501326SQ02150658
公开日2004年6月2日 申请日期2002年11月15日 优先权日2002年11月15日
发明者萧建忠, 叶国炜 申请人:矽统科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1