曲面图像处理装置及曲面图像处理方法

文档序号:6420674阅读:196来源:国知局
专利名称:曲面图像处理装置及曲面图像处理方法
技术领域
本发明涉及一种3维计算机绘画(graphics)领域中、使用由非均匀有理B样条(NURBSNon Uniform Rational B-Spline)函数描述的图像信息来描绘3维对象(object)的曲面图像处理装置及其方法。
背景技术
在近年来的图像处理领域中,随着计算机性能的显著提高,处理可表现复杂形状的自由曲面的CAGD(Computer Aided GeometricDesign)系统或几何学模型系统增多。虽然存在几个用于形成自由曲面的表现方法,但其中,NURBS曲线或NURBS曲面具有可用少数控制点来表现平滑曲面的优点。并且,除控制点外,重量、用于操作节点(knot)等形状的参数多,可以使形状局部变化,另外,因为具有也可统一表现圆弧或直线、抛物线等圆锥曲线的好的表现能力,所以需要用NURBS数据制作的图像模块的绘制(rendering)技术。
下面,将使用该NURBS数据的绘制技术中的问题分为4个(A)-(D),顺序就各问题进行说明。
首先,作为(A),就使用NURBS数据来生成曲面图像的处理整体中的背景技术进行说明。
图3(a)及(b)是表示NURBS曲线及NURBS曲面例的图。NURBS曲线31是将参数u设为媒介变量的参数曲线,由多个控制点列32、各控制点的重量w、和作为表示伴随参数u的变化的各控制点影响力变化的节点列的节点矢量来操作曲线形状。另外,NURBS数据的各控制点32不限于NURBS曲线31上的点。
NURBS曲面33是将参数u、v作为媒介变量的参数曲面,其曲面形状与NURBS曲线31一样,由用34表示的控制点列、重量、和作为节点列的节点矢量来操作。
一般,NURBS曲面S(u、v)由(式1)来表示。
式1S(u,v)=m-1i=0n-1j=0Bi,m(u)Bj,n(v)wijQijm-1i=0n-1j=0Bi,m(u)Bj,n(v)wij----(1)]]>(式1)中,w表示重量,Q表示控制点。另外,(式1)中,将函数B称为B样条基底函数,若用de Boor-Cox的渐近式来表现该B样条基底函数,则成立(式2)、(式3)。
式2 式3Bi,k(t)=t-titi+k-1tiBi,k-1(t)+ti+k-tti+K-ti+1Bi+1,k-1(t)----(3)]]>(式2)、(式3)中,k表示次数,t表示参数,ti表示节点。
以前,在NURBS数据的图像处理中,关于这些算式的运算量非常多,存在可由要求实时性的图像处理系统表现的NURBS数据量有限的问题。并且,在将使用NURBS数据的图像处理硬件化的情况下,电路规模变大,妨碍小型化。
因此,在以3维NURBS曲面为条件下,公开了为了削减运算量而在预处理阶段进行如下处理的曲面图像处理装置(例如参照特开2001-218977号公报(第7-23页))。
在该曲面图像处理装置中,不递归地计算(式2)、(式3)的渐近式,而是一般将这些渐近式展开为3次式,通过代入节点矢量,算出用于求出B样条基底函数的系数矩阵(4×4)。对定义NURBS曲面的所有控制点列算出这些系数矩阵。另一方面,在实时处理中,边使参数u、v变化,边使用控制点数据和系数矩阵来计算NURBS曲面上的各点。
另外,在该曲面图像处理装置中,为了进一步高速化运算处理,导入将系数矩阵和将各参数u、v的差分Δu、Δv设为要素的矩阵相乘所得到的差分矩阵,在实时处理中,边使参照u、v变化,边使用控制点数据和差分矩阵及节点矢量来递归计算NURBS曲面上的各点。
下面,作为(B),说明使用NURBS曲面来进行多边形分割情况下的背景技术。
最初,对贝塞尔(Bezier)曲面或B-样条(B-Spline)曲面等参数曲面描述一般定义。作为自由曲面的种类,有贝塞尔(Bezier)曲面或B-样条(B-Spline)曲面等几种,但广泛使用NURBS曲面来作为更一般的自由曲面的表现形式。参数曲面在3维空间中,由两个媒介变量(u、v)来连续定义曲面上的点(x、y、z)。
即,对于1组媒介变量(u、v),求出1个3维坐标(x、y、z)。为了数学地记述这些关系,使用具有重量的控制点和基底函数。控制点是确定参数曲面的位置与形状框架所必需的3维坐标,其重量是表示控制点对曲面造成多大影响、或极端而言是表示如何将曲面引向控制点的参数。控制点的3维坐标与其重量用对应于媒介变量(u、v)各自的方向、具有离散的系数i、j的2维排列描述。基底函数是将这些控制点列与参数曲面的具体形状对应起来的函数。
这里,设控制点的3维坐标为<Q[i][j]>=(qx[i][j]、qy[i][j]、qz[i][j])、设控制点的重量为qw[i][j]、设u方向的基底函数为B[n][i](u)、设v方向的基底函数为B[m][i](v),则用下式来表示针对某个媒介变量组(u、v)的曲面上点的坐标<P>=(px、py、pz)。另外,下面,设记号<>表示矢量。
<P>=(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]*<Q[i][j]>)/(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]即,
px=(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]*<qx[i]][j]>)/(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]py=(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]*<qy[i][j]>)/(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]pz=(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]*<qz[i][j]>)/(∑∑B[n][i](u)*B[m][j](v)*qw[i][j]其中,设i=0、1、2、...、(I-1),i=0、1、2、...、(J-1),记号∑表示对范围i及j取和。这里,I是y方向的控制点数,J是v方向的控制点数。另外,n及m是u方向及v方向的基底函数的次数。
若将NURBS曲面作为参数曲面,则基底函数除媒介变量和次数(或阶数)外,还使用节点矢量为定义。
所谓节点矢量是将媒体变量所取值以具有曲面形状的特征的方式,具有某个间隔并从小的一方顺序排列而成的。对媒介变量u、v各自的方向,可使用不同次数和不同节点矢量来定义不同的基底函数。用u方向的节点矢量(u
、u[1]、...、u[I+n+1])及v方向的节点矢量(v
、v[1]、...、v[J+m+1])并由以下的Cox-deBoor渐近式来表示NURBS曲面的基底函数B[n][i](u)和B[m][i](v)。即,就u方向而言,为B[n][i](u)=[(u-u[i])/(u[i+n]-u[i])]*B[n-1][i](u)+[(u[i+n+1]-u/(u[i+n+1]-u[i+1]))*B[n-1][i+1](u)其中,上式中,次数n不为0。由于上式是渐近式,所以例如通过n=2的基底函数来求出n=3的基底函数。若重复,则必需n=0的基底函数,但n=0时的基底函数B[n][i](u)设为仅在u的范围在(u[i]、u[i+1])之间时取值1,此外取值0。另外,节点矢量的要素每当系数增加,则值相等或单调增加,所述渐近式中由分数表示的系数部分在分母为0的情况下被定义为0。顺便提及,所述渐近式也可用阶数来代替次数进行表现。阶数是在次数n上加上1的值。另外,v方向也一样,定义如下基底函数。
B[m][j](v)=[(v-v[j])/(v[j+m]-v[j])]*B[m-1][j](v)+[(v[j+m+1]-v)/(v[j+m+1]-v[j+1]))*B[m-1][j+1](v)那么,当将NURBS曲面进行多边形分割时,必需代入上面所示的渐近式必需的参数,并求出曲面上的3维坐标<P>=(px、py、pz)。
下面,为了简化说明,首先不用NURBS曲面而用NURBS曲线来进行说明。图19中,NURBS曲线1901的次数n=3,用由4个控制点构成的控制点列)Q
、Q[1]、Q[2]、Q[3])和要素数为8的节点矢量(u
、u[1]、...、u[7])来定义。用于描述该NURBS曲线1901的媒介变量仅为u,如下表示2维坐标<P>=(px、py)。
<P>=(∑B[n][i](u)*qw[i]*<Q[i]>)/(∑B[n][i](u)*qw[i])px=(∑B[n][i](u)*qw[i]*qx[i])/(∑B[n][i](u)*qw[i])py=(∑B[n][i](u)*qw[i]*<qy[i])/(∑B[n][i](u)*qw[i])图19及上式中在视觉上容易区分的2维空间中定义NURBS曲线,但也可定义Z坐标pz来作为3维空间中的NURBS曲线。顺便提及,若设次数为n、控制点数为I,则可由节点矢量的要素数(I+n+1)来求出节点矢量的要素数与次数及控制点数的关系。图19的情况下,为4+3+1=8。另外,图19中,描述NURBS曲线1901的节点矢量的有效范围为(u[3]、u[4])的范围。这样,为了描绘次数n=3的NURBS曲线,最少需要4个控制点。设次数n=3恒定,增加1个控制点,则节点矢量的要素也增加1个,描绘NURBS曲线的节点矢量的有效范围扩大为(u[3]、u[5])。该状态如图20所示。另外,从图19及图20可知,通常NURBS曲线不通过控制点。但是,如后所述,在节点矢量的排列表示有理贝塞尔曲线的情况下,端点处具有控制点。
下面,考虑将图19所示NURBS曲线近似为两个线段。为此,如图21所示,在NURBS曲线上取两端和中间点等3个点,用直线连结。作为媒介变量u的值,由于节点矢量的有效范围为(u[3]、u[4]),所以例如分别将例如u[3]及u[4]、和作为其中间值的(u[3]+u[4])/2代入上式,求出NURBS曲线上点的位置坐标。在将图20所示NURBS曲线2001分割成两个线段的情况下,由于节点矢量的有效范围为(u[3]、u[5]),所以例如可取u[3]、u[4]、u[5]来作为媒介变量u的值。不用说,NURBS曲线的控制点数或分割的线段数不限于本例,可自由设定。
在上述基础上,考虑将3维空间中的NURBS曲面分割成平面多边形。图22中示出最简单的NURBS曲面2201。图22中,u方向及v方向的次数都为n=m=3,u方向及v方向的控制点数都为I=J=4个,即4×4=16个。节点矢量在u方向、v方向上分别为(u
、u[1]、...、u[7])、(v
、v[1]、...、v[7]),节点矢量的要素数在u方向、v方向是都为(I+n+1)=(J+m+1)=8。描绘NURBS曲面2201的节点矢量的有效范围为(u[3]、u[4])及(v[3]、v[4])的范围。因此,例如取u[3]及u[4]、和作为其中间点的(u[3]+u[4])/2作为u值,取v[3]及v[4]、和作为其中间点的(v[3]+v[4])/2作为v值,则可求出共计9个曲面上的点。可用这9个曲面上的点来分割成4个四边形多边形。不用说,也可分割成8个三角形多边形。另外,NURBS曲面的控制点数或分割的多边形数不限于本例,也可自由设定(例如参照特开平3-201073号公报)。
下面,作为(C),说明将贝塞尔曲面等参数曲面细分后处理为微小的多边形情况下的背景技术。
现在,作为将包含参数曲面的3维对象显示在2维图像显示装置中的方法,一般使用将对象近似成多个微小平面多边形的集合体后进行绘制的方法。
另外,以NURBS曲面或贝塞尔曲面等参数曲面的形式平滑表现的对象与用三角形等多角形多边形的集合表现的对象相比,数据量少,与利用近年来迅速发展的网络来传输等的亲和性高。
作为将参数曲面分割成多边形的一般方法,使用如下方法,即在定义的参数曲面的方程式中,使媒介变量的值具有一定间隔地离散变化,直接求出参数曲面上的点,使多个邻接这些点的点彼此组合,形成平面多边形。一般将这种处理称为テツセレ-シヨン。
图30中示出作为代表性参数曲面的4阶(3次)有理贝塞尔曲面的实例。4阶(3次)有理贝塞尔曲面用如下(式4)的形式表示。
(式4) 用u、v两个独立的参数来表现参数曲面。其中,0<=u<=1、0<=v<=1。Qij(i=0、...、3、j=0、...、3)是定义贝塞尔曲面形状的控制点,在4阶(3次)的情况下存在4×4=16个点。控制点中,Q00、Q30、Q03、Q33存在于曲面上,但此外的点不存在于曲面上。各控制点除X、Y、Z分量外,还包含相当于重量的W分量。因此,曲面上的任意点P都用P(X(u、v)/W(u、v)、Y(u、v)/W(u、v)、Z(u、v)/W(u、v))表示,另外,已知贝塞尔曲面中存在凸包性,曲面完全包含于由控制点扩展的多面体中。
对象由上述参数曲面的集合来表现。下面,将构成对象的参数曲面称为补丁(patch)来进行说明。为了高精度描绘对象,也可用细小的多个多边形近似表现各补丁。但是,若处理的多边形数增大,则计算负荷变得非常大。因此,在尽可能抑制多边形生成量的同时,要求确立可高精度描绘的方法。
为此,在现有技术中,每当将曲面补丁分割成左曲面补丁与右曲面补丁时,算出分割的各补丁的平坦度,在平坦度大于允许值的情况下,再分割该补丁。另外,提议重复处理、直到所有细分割补丁的平坦度都在允许值内的方法(例如参照特开平11-007544号公报(第11-14页))。
另外,如图49所示,连结控制点的端点,生成边缘,算出从边缘的中点到表现多边形表面的曲面上的中点的矢量,将该矢量设为弦的偏移矢量。另外,也有对应于透视变换弦的偏移矢量时的标尺上的矢量长度,确定清晰度的量的方法(例如参照特开2001-52194号公报(第5页)。
下面,作为(D),说明形成细分割的曲面补丁的各控制点的法线计算的背景技术。
用NURBS曲面进行节点插入并进行参数变换的贝塞尔曲面若提供(n+1)×(n+1)个控制点,则构成双n次贝塞尔曲面。这里简称为n次贝塞尔曲面。另外,在3维计算机、绘画领域中,为了容易控制曲面,多用3维贝塞尔曲面(例如参照[计算机绘画第2版、川合慧鉴、凸版印刷株式会社综合研究所图像信息中心译、日刊工业新闻社])。
3维贝塞尔曲面一般由下示(式5)表示。(式5)中的Pij是控制点的坐标,Ji、Ki是由(式6)、(式7)表示的Bernstein函数。P(u、v)表示特定u、v(0≤u、v≤1)的自由曲面上的顶点坐标。
(式5)P(u,v)=Σi=03Σj=03PijJiKj----(5)]]>(式6)Ji=3!i!(3-i)!ui(1-u)3-i----(6)]]>
(式7)Kj=3!j!(3-j)!uj(1-u)3-j----(7)]]>贝塞尔曲面用(式5)及(式6)来直接描绘。此时,在计算曲面与其它曲面或投影面交叉的边的计算中使用反复法等,计算时间很多。
另一方面,为了比这种直接描绘方法更快地描绘,使用テツセレ-シヨン方法,即通过对特定的参数组(u、v)评价P(u、v),算出自由曲面上的点,用可连结这些点的多角形的集合来近似描绘(例如参照特开2001-331812号公报)。
或者,作为其它描绘方法,还可通过重复对邻接控制点间平均坐标来产生新的控制点的处理的所谓细分割法的方法来用多角形近似描绘(例如参照特开平11-7544号公报)。
另外,在3维计算机绘图领域中,不仅物体的形状品质、而且色彩、带阴影等的处理也是确定画质的重要要素。各曲面中的带阴影使用物体的法线,重要的是正确算出法线。
但是,在由作为曲面图像处理装置整体的计算步骤的(A)处理的背景描述中,在现有曲面图像处理装置中,因为在预处理阶段中算出各系数矩阵,所以存在NURBS数据以外的数据量增大的问题。
另外,还存在输入数据受限于3维NURBS曲面的问题。并且,在使用差分矩阵的情况下,存在各参照u、v的增量受限于恒定值(Δu、Δv)的问题。另外,若严格表现NURBS曲面,则必需有理化系数矩阵,所以必需除以算出的NURBS曲面上的各点,存在除法引起的运算量增加的问题。
下面,在描绘上述(B)的NURBS曲面的情况下,通过直接求出NURBS曲面上的点,进行多边形分割。但是,为了通过该方法计算NURBS曲面上的点的坐标,必需求出用上述Cox-deBoor渐近式表示的基底函数,存在必需非常多的运算量的问题。
另外,以前,以上参数曲面的直接多边形分割、即テツセレ-シヨン处理由CPU进行运算。但是,为了更细致真实地表现作为对象的3维对象,必需需要增大用于近似曲面的多边形分割数,对CPU的负荷变得更加大。另外,即便在由硬接线来构成将参数曲面分割成多边形的电路(テツセレ-タ)的情况下,也存在用于求出曲面上的点的运算电路的规模变大的问题。
因此,为了解决这些问题,在本发明中,不直接求出NURBS曲面上的点,而是通过边将NURBS曲面等效变换成较简单的有理贝塞尔曲面,边直接求出该有理贝塞尔曲面上的点来进行多边形分割。这是由于有理贝塞尔曲面可通过使用再分法来容易求出曲面上的控制点。另外,在通过节点插入将B样条曲线变换为区分有理贝塞尔曲线的方法中,有基于Oslo算法或Bohm的方法(例如参照[Parutzsh,H.,”AShort Proof of the Oslo Algorithm,”Comp.Aid.Geom.Des.,Vol.1,pp.95-96,1984]或[Bohm,W.,”Inserting New Knots into B-splineCurves”Comp.Aid.Des.,Vol.12,pp.199-201,1980])。
因此,若首先描述将NURBS曲面等效变换成有理贝塞尔曲面时产生的问题,则为了将NURBS曲面等效变换成有理贝塞尔曲面,可使用所谓节点插入的方法。下面,详细说明使用节点插入算法的曲面变换方法。
首先,为了简化说明,说明将NURBS曲线变换成有理贝塞尔曲线的方法。就NURBS曲线中的节点插入,已知以下的算法。即,次数为n,控制点列为(Q
、Q[1]、...、Q[I-1])(控制点数为I),当初始的节点矢量为(u
、u[1]、...、u[I+n])时(节点矢量的要素数为I+n+1),若在节点u[k]与u[k+1]之间插入1个新的节点~u(节点插入位置k),则新的控制点列(Q
′、Q[1]′、...、Q[I]′)由下式表示。
<Q′[i]>=(1-a[i]*<Q[i-1]>+a[i]*<Q[i]>
其中,在上式中,i不为0。i=0的情况如下所示。
<Q′
>=a
*<Q
>
这里,上式中包含的系数排列a[i]由下式表示。
a[i]=1(i小于k-n时)a[i]=0(i大于k+1时)a[i]=(~u-u[i])/(u[i+n]-u[i](i为此外值时)例如,设初始的控制点列为(Q
、Q[1]、Q[2]、Q[3])、设初始的节点矢量为(u
、u[1]、...、u[7]),当在节点u[3]与u[4]之间插入一个值等于u[3]的新的节点~u时,新的控制点列(Q
′、Q[1]′、...、Q[4]′)如下所示。即,因为节点的插入位置为k=3,所以系数排列为a
=1a[1]=(~u-u[1])/(u[4]-u[1])=(u[3]-u[1])/(u[4]-u[1])a[2]=(~u-u[2])/(u[5]-u[2])=(u[3]-u[2])/(u[5]-u[2])a[3]=(~u-u[3])/(u[6]-u[3])=0a[4]=0用该系列排列,构成<Q′
>=a
*<Q
>=<Q
>
<Q′[1]>=(1-a[1]*<Q
>+a[1]*<Q[1]>
<Q′[2]>=(1-a[2]*<Q[1]>+a[2]*<Q[2]>
<Q′[3]>=(1-a[3]*<Q[2]>+a[3]*<Q[3]>=<Q[2]>
<Q′[4]>=(1-a[4]*<Q[3]>+a[4]*<Q[4]>=<Q[3]>
。这表示消除初始的控制点<Q[1]>,在新的位置<Q′[1]>及<Q′[2]>处生成控制点。
但是,实际上控制点具有重量。此时,必需将控制点的位置坐标变换成同次坐标并代入上式。即,将控制点表示为2维坐标<Q[i]>=(qx[i]、qy[i]),重量为qw[i]时,同次坐标为在位置坐标上乘以重量,<Q[i]>=(qw[i]*qx[i]、qw[i]*qy[i]、qw[i])。另外,当将控制点表示为3维坐标<Q[i]>=(qx[i]、qy[i]、qz[i])时,同次坐标为<Q[i]>=(qw[i]*qx[i]、qw[i]*qy[i]、qw[i]*qz[i]、qw[i])。这样,若使用变换成同次坐标的控制点来进行上述节点插入,则因为最终的控制点列也变为同次坐标,所以为了返回通常坐标,必需用重量进行除法。
但是,当使用节点插入算法来将NURBS曲线等效变换有理贝塞尔曲线时,产生应舍去的无用控制点,并且舍去的控制点数本身因初始节点矢量的排列方法而变化。因此,仅由节点插入来将NURBS曲线简单变换为有理贝塞尔曲线中,应舍去的控制点的位置和数量不明确,以后的细分割处理变困难。
另外,下面说明将图19的NURBS曲线变换为有理贝塞尔曲线时产生无用控制点的具体例。
作为产生无用控制点的第一例,图19的NURBS曲线1901的次数n=3,用控制点列(Q
、Q[1]、Q[2]、Q[3])及节点矢量(u
、u[1]、...、u[7])来定义。即,控制点数为4,节点矢量的要素数为8。其中,对所有不同系数i、j(i<j)假设u[i]<u[j]。这里,如图23所示,1个个地将节点插入初始的节点矢量(u
、u[1]、...、u[7])中,最终的节点矢量变为(u′
、u′[1]、u′[2]、...)。这里,若满足以下关系,则生成的最终NURBS曲线形状不变地被等效变换为1个有理贝塞尔曲线。
u
=u′
u[1]=u′[1]u[2]=u′[2]u[3]=u′[3]=u′[4]=u′[5]u[4]=u′[6]=u′[7]=u′[8]u[5]=u′[9]u[6]=u′[10]u[7]=u′[11]即,因为NURBS曲线的初始节点矢量的有效范围为(u[3]、u[4]),所以该范围内的节点u[3]及u[4]分别变为复用度3地(等于次数n=3地)插入节点,得到最终的节点矢量(u′
、u′[1]、u′[2]、...、u′[11])。在本实例中,插入4个新的节点。因此,最终的控制点数也增加4个,变为8,最终的控制点列变为(Q′
、Q′[1]、...、Q′[7])。已知用这种节点排列方法定义的NURBS曲线与有理贝塞尔曲线等价,最初的NURBS曲线与形状完全一致。这里,[节点插入后的最终控制点数]为8,但由于[定义有理贝塞尔曲线的控制点数]为4,所以可知最终的控制点列中在表示有理贝塞尔曲线中有4个控制点是无用的。
另外,作为产生无用控制点的第二例,考虑增加1个初始节点矢量(u
、u[1]、...、u[8])的情况。其中,对所有不同系数i、j(i<j)假设u[i]<u[j]。为了得到有理贝塞尔曲线,与上例一样,设节点插入后的最终节点矢量(u′
、u′[1]、u′[2]、...)如下。
u
=u′
u[1]=u′[1]u[2]=u′[2]u[3]=u′[3]=u′[4]=u′[5]u[4]=u′[6]=u′[7]=u′[8]u[5]=u′[9]=u′[10]=u′[11]u[6]=u′[12]u[7]=u′[13]u[8]=u′[14]即,因为NURBS曲线的初始节点矢量的有效范围为(u[3]、u[5]),所以该范围内的节点u[3]、u[4]及u[5]分别变为复用度3地(等于次数n=3地)插入节点,得到最终的节点矢量(u′
、u′[1]、u′[2]、...、u′[14])。即,节点插入后的最终控制点数是比节点矢量要素数15小4的11。此时,将最初的NURBS曲线分割成连续的两个有理贝塞尔曲线。其中,因为该两个有理贝塞尔曲线在连接部共有1个控制点,所以定义有理贝塞尔曲线的控制点数为4×2-1=7。因此,也知这里有4个控制点是无用的。
但是,根据初始的节点矢量值的排列方法不同,应舍去的无用控制点数不限于总是4个。即,应舍去的无用控制点数随着初始节点矢量变化。这导致初始节点矢量的要素中包含值相等的节点。
即,作为产生无用控制点的第三例,有时对于不同指数i、j(i<j),包含u[i]=u[j]的节点。例如,在上例中,若考虑初始节点矢量(u
、u[1]、...、u[8])中存在u[2]=u[3]的关系的情况,则将节点插入后最终生成的NURBS曲线等效变换为连续的两个有理贝塞尔曲线中必需满足以下关系。
u
=u′
u[1]=u′[1]u[2]=u[3]=u′[2]=u′[3]=u′[4]u[4]=u′[5]=u′[6]=u′[7]u[5]=u′[8]=u′[9]=u′[10]u[6]=u′[11]u[7]=u′[12]u[8]=u′[13]即,因为NURBS曲线的初始节点矢量的有效范围为(u[3]、u[5]),且u[2]=u[3],所以对于u[3]、也包含u[2]地变为复用度3地、u[4]及u[5]也分别变为复用度3地插入节点,得到最终的节点矢量(u′
、u′[1]、u′[2]、...、u′[13])。这里,节点插入后的最终控制点数为14-4=10,但由于定义有理贝塞尔曲线的控制点数为4×2-1=7,所以可知本例中有3个控制点是无用的。
这种无用控制点的发生对将NURBS曲面等效变换为有理贝塞尔曲线的情况也完全一样。
作为产生无用控制点的第四例,说明NURBS曲面的情况,但在NURBS曲面的情况下,用2维排列来定义控制点,分别沿u方向及v方向来定义作为基底函数参数的次数及节点矢量。因此,通过分别对u方向及v方向进行节点插入,可能将NURBS曲面等效变换为有理贝塞尔曲线。
例如,NURBS曲面的控制点数为5×5=25个,设u方向及v方向的次数为m=n=3,设u方向的节点矢量为(u
、u[1]、...、u[8]),设v方向的节点矢量为(v
、v[1]...、v[8])。另外,就u方向的节点矢量而言,对于所有不同指数i、j(i<j),u[i]<u[j]成立,对于v方向的节点矢量,为v[2]=v[3],此外假设为v[i]<v[j]成立。若将节点插入后的最终的u方向及v方向的节点矢量分别设为(u′
、u′[1]、u′[2]、...)及(v′
、v′[1]、v′[2]、...),则根据此前的类推,为了等效变换为有理贝塞尔曲线,必需满足以下关系。
u
=u′
u[1]=u′[1]u[2]=u′[2]u[3]==u′[3]=u′[4]=u′[5]u[4]=u′[6]=u′[7]=u′[8]u[5]=u′[9]=u′[10]=u′[11]u[6]=u′[12]u[7]=u′[13]u[8]=u′[14]v
=v′
v[1]=v′[1]v[2]=v[3]=v′[2]=v′[3]=v′[4]v[4]=v′[5]=v′[6]=v′[7]v[5]=v′[8]=v′[9]=v′[10]v[6]=v′[11]v[7]=v′[12]v[8]=v′[13]
因此,节点插入后的最终控制点数在u方向上为11个,在v方向上为10个,所以为11×10=110个。另一方面,定义有理贝塞尔曲线的控制点数在u方向上为7个,在v方向上为7个,所以为7×7=49个。因此,应舍去的无用控制点为110-49=61个。
如上所述,当将NURBS曲面变换为有理贝塞尔曲线时,在节点插入过程中产生无用控制点。
另外,由于初始节点矢量的排列方法、尤其是初始节点矢量的有效范围中的节点复用度不同,该无用控制点数变化,所以必需一般化这些规则。
并且,通过节点插入最终变换为有理贝塞尔曲线的控制点数据被传输到基于后级的再分法的多边形分割处理块,但再分处理中必需的控制点最好仅为定义有理贝塞尔曲线的控制点,不需要不定义有理贝塞尔曲线的控制点。因此,必需事先从节点插入后的最终控制点中去除不定义有理贝塞尔曲线的控制点,减少数据量。
接着,在(C)所示细分割处理中的例如特开平11-007544号公报(第11-14页)中,因为每次细分割曲面补丁时必需算出平坦度,所以存在曲面图像处理装置中平坦度的计算负荷非常大的问题。
另外,在上述特开2001-52194号公报(第5页)中,不能将弦的偏移矢量用作检测形成对象轮廓边缘的补丁(后面称为轮廓边缘形成补丁来进行说明)的指标。
下面,在(D)的构成贝塞尔曲面的各控制点的法线计算中,通过所述[计算机绘画第2版、川合慧鉴、凸版印刷株式会社综合研究所图像信息中心译、日刊工业新闻社]方法,曲面上的点直接提供(u、v)等参数,算出曲面上的顶点,使用途中得到的中间点,算出生成的曲面上的点的法线。另外,记述曲面补丁的各控制点的法线计算在四个角的点或邻接的控制点一致的情况下,判断一致并避免计算,但未公开如何避免等具体方法。
另外,在上述特开平11-7544号公报的方法中,为了算出曲面上的法线,使用一般式导致计算时间变得很长。另外,使用ク-ンズ的补丁,法线为近似计算。
并且,在上述特开2001-331812号公报或特开平11-7544号公报的方法中,当最终生成图像时,在仅使用位于曲面上的控制点的情况下,即便对无用的控制点,在途中也进行法线计算,产生运算量增加的问题。

发明内容
本发明鉴于上述问题,其第一目的在于提供一种在使用NURBS数据作为图形信息的图像处理中、可更高速且高品质地进行绘制的曲面图像处理装置。
另外,本发明的第二目的在于提供一种在使用NURBS数据并通过节点插入变换为有理贝塞尔数据后、即便在通过再分法进行多边形分割的运算步骤中,也能更有效地降低图像处理中的运算量的曲面图像处理装置。
并且,本发明的第三目的在于提供一种即便在通过再分法进行曲面的多边形分割的情况下,也能更有效进行曲面的分割处理并减轻运算处理的曲面图像处理装置。
另外,本发明的第四目的在于提供一种即便在使用位于贝塞尔曲面等曲面上的控制点信息来进行法线计算的情况下、也能通过适于作为顶点的曲面四个角的控制点的法线计算的方法,来有效算出正确的法线的曲面图像处理装置。
为了解决上述问题,根据本发明的曲面图像处理装置,用作为3维对象的形状数据的NURBS数据,在画面上描绘所述3维对象,其特征在于具备数据变换单元,将由NURBS曲线及NURBS曲面形成的所述NURBS数据参数变换为形成有理贝塞尔曲线及有理贝塞尔曲面的有理贝塞尔控制点数据;曲面分割单元,将该数据变换单元变换的所述有理贝塞尔控制点数据所构成的有理贝塞尔曲面补丁细分割成多个曲面补丁;和描绘单元,用所述曲面补丁来描绘所述3维对象。
因此,虽在NURBS数据不变时不能将运算量进行大的细分割,但通过配备将NURBS数据参数变换为贝塞尔数据的数据变换部,可有效减轻曲面图像处理装置中的3维对象描绘处理中的运算量,可以较短时间内进行高精度的描绘处理。
另外,根据本发明的曲面图像处理装置,所述NURBS数据由控制点列与节点矢量构成,所述数据变换单元具备节点插入部,用节点插入算法,进行将所述节点矢量插入所述控制点列的运算;和控制点修整部,从该节点插入部的运算生成的控制点列中包含的控制点内删除无用的控制点。最好是,所述节点插入部在从所述NURBS数据中包含的初始节点矢量及初始控制点列变换为表示所述有理贝塞尔控制点数据的最终节点矢量及最终控制点列的过程中,搜索位于所述最终节点矢量的特定位置上的节点的指数,所述控制点修整部用搜索到的所述指数,删除所述最终节点矢量的特定控制点。
因此,因为适当删除NURBS数据参照变换到贝塞尔数据的参数变换处理中产生的无用控制点,所以进行细分割处理,故减少了多余的运算,可进行有效的3维对象的描绘处理。
并且,根据本发明的曲面图像处理装置,所述曲面分割单元还配备面积算出部,用定义构成所述对象的各曲面补丁形状的所述有理贝塞尔控制点数据,算出通过透视变换构成的2维图形的带符号面积;和检测部,根据所述带符号面积的值,检测所述曲面补丁是否是形成作为所述对象轮廓部的轮廓边缘的曲面补丁,或所述曲面分割单元还具备细分割级确定部,对应所述检测部检测是否是形成所述轮廓边缘的曲面补丁的结果、和所述面积算出部算出的所述曲面补丁在屏幕上的所述带符号面积的值,确定所述曲面补丁的细分割级。
因此,检索构成由细分割单元细分割的有理贝塞尔曲面轮廓部的轮廓边缘,提高形成轮廓边缘的曲面补丁的细分割级,同时,降低不形成轮廓边缘的曲面补丁的细分割级,由此省略以前多余的细分割运算,同时,通过将边缘部细分割成高级,由此可更高精度地进行描绘处理。另外,在细分割级的确定中,通过使用带符号面积的值,可更有效地进行曲面补丁的细分割。
并且,根据本发明的曲面图像处理装置,所述曲面图像处理装置还具备法线算出单元,用所述有理贝塞尔曲线的所述有理贝塞尔控制点数据,算出各控制点的法线,所述法线算出单元具备选择部,在算出距作为所述曲面补丁的四个角的第一控制点的第4控制点的法线时,对成为法线计算对象的第一控制点选择相邻的两个控制点;和算出部,分别算出所述第一控制点与所述相邻两个控制点之间的矢量,算出被算出的两个所述矢量的外积(?),并算出归一化后的外积,作为所述第一控制点的法线,最好是,所述选择部在算出距作为所述曲面补丁的四个角的第一控制点的第4控制点的法线时,在距邻接所述第一控制点的第二控制点的第四控制点中至少一个变为退缩后与所述第一控制点相同的坐标的情况下,选择与成为法线计算对象的第一控制点邻接、且与所述第一控制点坐标不同的两个控制点,所述算出部分别算出所述第一控制点与所述选择部选择的两个控制点之间的矢量,算出两个所述矢量的外积,并算出归一化后的外积,作为所述第一控制点的法线。
因此,在细分割处理后的曲面补丁的控制点的法线计算中,因为退缩到其它控制点的控制点在法线矢量的计算中未被选择,所以可更正确地进行构成有理贝塞尔曲面的各控制点的法线计算,可更高精度地进行3维对象的亮度等描绘处理。
另外,本发明不仅可实现为上述曲面图像处理装置,而且还可实现为将该曲面图像处理装置配备的单元构成步骤的曲面图像处理方法、由计算机等实现该曲面图像处理方法的程序,不用说,也可经DVD、CD-ROM等记录媒体或通信网络等传输媒体来使该程序流通。


图1是实施形态1中曲面图像处理装置的功能框图。
图2是表示实施形态1中曲面图像处理装置的整体处理的流程图。
图3(a)是表示NURBS曲线一例的图。
图3(b)是表示NURBS曲面一例的图。
图4(a)是表示3次有理贝塞尔曲线一例的图。
图4(b)是表示3次有理贝塞尔曲面一例的图。
图5是3维欧几里德空间中的3次有理贝塞尔曲线的区段例。
图6是表示对3次有理贝塞尔曲线的区段使用影射空间中的递推(de Casteljau)算法来进行区段分割的一例的图。
图7是用16个控制点数据来表示3次有理贝塞尔曲面补丁的参考图。
图8是对形成有理贝塞尔曲面补丁的参数u方向的区段使用步骤205的处理来进行分割的结果的有理贝塞尔曲面补丁的参考图。
图9是对有理贝塞尔曲面补丁、进而对参数v方向的区段使用步骤205的处理来进行分割的结果的有理贝塞尔曲面补丁的参考图。
图10是表示将4个曲面补丁变换为多边形数据的实例图。
图11是表示实施形态2中的曲面图像处理装置的具体处理流程图。
图12是根据实施形态3的曲面补丁分割处理部的结构框图。
图13是表示区段分配部的具体处理流程图。
图14是根据实施形态4的数据变换部的功能结构框图。
图15是说明对有理贝塞尔曲线使用再分法的图。
图16是简略表示定义有理贝塞尔曲面的控制点的图。
图17是说明对有理贝塞尔曲面使用再分法的图。
图18是说明对有理贝塞尔曲面使用再分法的图。
图19是说明对有理贝塞尔曲线使用再分法的图。
图20是表示NURBS曲线一例的图。
图21是表示NURBS曲线一例的图。
图22是说明现有的NURBS曲面的线段近似的图。
图23是说明现有的NURBS曲面的多边形分割的图。
图24是说明基于节点插入的曲面变换的原理图。
图25是说明根据实施形态4的无用控制点的特定的图。
图26是说明根据实施形态4的无用控制点的特定的图。
图27是说明根据实施形态4的无用控制点的特定的图。
图28是说明根据实施形态4的控制点修整方法的图。
图29是表示实施形态5中曲面补丁分割处理部的功能框图。
图30是表示作为参数曲面的4阶(3次)有理贝塞尔曲面实例的图。
图31是表示根据实施形态5的轮廓边缘检测部中的处理流程图。
图32(a)是表示通过透视变换控制点构成的两个三角形带符号面积是同符号情况实例的图。
图32(b)是表示两个三角形带符号面积是不同符号情况实例的图。
图33(a)是表示实施细分割前的补丁实例的图。
图33(b)是表示实施1级细分割后的补丁实例的图。
图33(c)是表示实施2级细分割后的补丁实例的图。
图34是表示根据实施形态5的细分割级确定部的处理流程图。
图35(a)是示出表示带符号面积的最大值与轮廓边缘形成补丁的细分割级的对应关系的表格一例的图。
图35(b)是示出表示带符号面积与细分割级的对应关系的表格一例的图。
图36(a)是表示实施细分割前的对象一例的图。
图36(b)是表示对应于细分割级来细分割构成对象的各补丁之后的对象一例的图。
图37是表示根据实施形态6的轮廓边缘检测部的处理流程图。
图38(a)是表示全部控制多边形向外的情况一例的图。
图38(b)是表示全部向里的情况一例的图。
图38(c)是表示控制多边形中混合存在向外和向里的多边形情况一例的图。
图38(d)是表示控制多边形中混合存在向外和向里的多边形情况一例的图。
图39是表示根据实施形态6的细分割级确定部的处理流程图。
图40是示出表示实施形态6中轮廓边缘形成补丁的带符号面积与细分割级的对应关系的表格一例的图。
图41是表示细分割级确定部中的处理流程图。
图42(a)是表示在u、v任一轴方向上都基本不必分割的补丁的一例的图。
图42(b)是表示在u轴方向上必需细分割的补丁的一例的图。
图42(c)是表示在v轴方向上必需细分割的补丁的一例的图。
图42(d)是表示在u、v轴方向上必需细分割的补丁的一例的图。
图43是将弯曲参数C与细分割级对应的表格。
图44是表示实施形态7中曲面图像处理装置的结构一例的图。
图45(a)是说明通过方法1来确定最大细分割级的方法的图。
图45(b)是说明通过方法2来确定最大细分割级的方法的图。
图46是示出表示曲率参数与最大细分割级的对应关系的表格一例的图。
图47是示出表示补丁的带符号面积与细分割级的对应关系的表格一例的图。
图48是表示实施形态8中曲面图像处理装置的结构一例的图。
图49是说明现有技术中的曲面分割方法的图。
图50是表示根据实施形态9的法线计算部的结构的功能框图。
图51是表示根据实施形态9的曲面图像处理装置另一结构的框图。
图52是表示根据实施形态9的法线算出部的处理步骤的流程图。
图53是表示邻接法线算出对象的控制点的控制点未退缩情况下的法线矢量的实例的图。
图54(a)是说明邻接法线算出对象的控制点P00的控制点退缩情况的参考图。
图54(b)是说明邻接法线算出对象的控制点P00的控制点退缩情况的参考图。
图54(c)是说明邻接法线算出对象的控制点P00的控制点退缩情况的参考图。
图55(a)是表示记载存储器中存储的控制点及顶点坐标的列表一例的图。
图55(b)是表示记载存储器中存储的控制点及法线数据的列表一例的图。
具体实施例方式
下面,用附图来说明根据本发明的曲面图像处理装置。另外,在下述实施形态1-3中对具有用NURBS数据生成曲面图像的处理的整体特征的曲面图像处理装置100进行说明。
(实施形态1)图1表示实施形态1中曲面图像处理装置100的功能框图。
该曲面图像处理装置100具备输入NURBS数据的数据输入部101、对NURBS数据实施坐标变换的坐标变换部102、控制各描绘帧的动画数据的动画控制部103、将NURBS数据变换为有理贝塞尔数据的数据变换部104、细分割有理贝塞尔曲面补丁的曲面补丁分割处理部105、对分割后的曲面补丁的控制点算出法线矢量的法线计算部106、对分割后的曲面补丁实施透视变换的透视变换部107、及对曲面补丁进行绘制处理的绘制处理部108。
另外,根据本发明的曲面图像处理装置100不限于图1的结构,只要具备坐标变换部102、数据变换部104及曲面补丁分割处理部105即可,其它处理部可设为任意的构成要素。
首先,说明根据本发明实施形态1的曲面图像处理装置100中的NURBS数据和有理贝塞尔控制点数据及其处理方法。
形成NURBS曲线及NURBS曲面的NURBS数据由NURBS控制点、各控制点的重量(weight)及节点矢量这3个要素构成。形成有理贝塞尔曲线及有理贝塞尔曲面的有理贝塞尔控制点数据由有理贝塞尔控制点及各控制点的重量这2个要素构成。
通常,若使用3维欧几里德空间中的通常坐标系,则NURBS数据及有理贝塞尔控制点数据的任意控制点和重量由P(x、y、z)与w的组合来表示。
另一方面,将重量分量w视为1个坐标的坐标系被称为同次坐标系,可表示为P(X、Y、Z、w)。由同次坐标系表现的空间被称为射影空间。在由射影空间中的P(X、Y、Z、w)来表现3维欧几里德空间中的点P(x、y、z)时,两者之间成立下述(式8)的关系。
式8P(X,Y,Z,w)=P(wx,xy,wz,w)=wP(x,y,z,1)(8)在本实施形态1中,以后对于NURBS数据及有理贝塞尔控制点数据,将控制点与重量统一称为控制点数据,用射影空间中的同次坐标系并以P(X、Y、Z、w)的形式来处理。
对于以上构成的曲面图像处理装置100,用图2说明其动作。图2是表示本实施形态1中曲面图像处理装置100的整体处理的流程图。
最初,数据输入部101将NURBS数据输入坐标变换部102(S201)。
接着,动画控制部103算出当前帧中的动画数据。这里,动画数据例如由表示当前帧的经过时刻信息的时间信息、包含摄像机位置信息的视点、包含摄像机方向信息的视线、和包含光源种类或位置、强度信息的光源信息等构成(S202)。
之后,坐标变换部102使用从动画控制部103输入的动画数据的视点、视线的信息,对NURBS数据实施模型变换、视野变换、3维空间中的剪切(clipping)处理,算出视野坐标系中的NURBS数据(S203)。
接着,数据变换部104对形成NURBS数据的各NURBS曲线,通过插入节点,变换为由区段构成的区间有理贝塞尔曲线(S204)。另外,后面描述该区间有理贝塞尔曲面的说明。并且,通过节点插入将B样条曲线变换为有理贝塞尔曲线的方法,有如上述[Parutzsh,H.,”AShort Proof of the Oslo Algorithm,”Comp.Aid.Geom.Des.,Vol.1,pp.95-96,1984]或[Bohm,W.,”Inserting New Knots into B-splineCurves”Comp.Aid.Des.,Vol.12,pp.199-201,1980]所示,有Oslo算法或基于Bohm的方法。
另外,曲面补丁分割处理部105由NURBS数据算出多个有理贝塞尔曲面补丁,进行区间有理贝塞尔曲面的细分割处理(S205)。该分割处理在本实施形态1中用递推(de Casteljau)算法来进行分割。
接着,曲面补丁分割处理部105用从当前视点到有理贝塞尔曲面补丁的距离来判断曲面补丁的细分割结果、各曲面补丁是否具有充分的平坦度,在必需再次分割处理的情况下,再次进行有理贝塞尔补丁的分割处理(S206为否),另一方面,在充分细分割所有有理贝塞尔曲面补丁的情况下(S206为是),透视变换部107将各有理贝塞尔曲面补丁近似变换为以控制点数据为顶点的多边形数据(S207)。
之后,法线计算部106算出细分割后的各多边形数据的控制点的法线矢量(S208),由透视变换部107进行将3维坐标变换为屏幕上的2维坐标的透视变换(S209),接着,由绘制处理部108进行各多边形数据的配置、描绘,完成3维对象的描绘处理(S210)。
另外,对每个描绘帧反复执行所有步骤的处理,一旦所有描绘帧的绘制完成,则结束一系列处理。
NURBS曲面由非均匀(Non Uniform)有理(Rational)B样条曲线的集合形成。例如图3(b)中,NURBS曲面33由将参数u、v设为媒介变量的双向NURBS曲线的集合构成。
另外,图4(a)及(b)是表示3次有理贝塞尔曲线及有理贝塞尔曲面一例的图。图4(a)中,由多个控制点数据42来操作3次有理贝塞尔曲线41的形状。一般将具有最小构成要素的有理贝塞尔曲线称为区段,n次区段由(n+1)个控制点数据形成,尤其是第1和第(n+1)个控制点数据是曲线上的点,称为端点。例如,3次区段由4个控制点数据构成,第1和第4个控制点数据是端点。并且,将连接区段的曲线称为区间有理贝塞尔曲线。
图4(a)中,P0、P1、P2是端点,P0P1、P1P2的区间是区段。这样,通过连续提供端点,可表现平滑的区间有理贝塞尔曲线。另外,3次有理贝塞尔曲线41与NURBS曲线一样,是将参数u设为媒体变量的参数曲线,由(式9)提供。
式9P(u)=(1-u)3P0+3u(1-u)2P1+3u2(1-u)P2+u3P3(9)(式9)中,P0、P1、P2、P3表示控制点数据。使用该有理贝塞尔曲线的运算比NURBS运算简单,可用较小规模的电路来进行硬件化。
图4(b)中,有理贝塞尔曲面补丁43是将参数u、v设为媒介变量的参数曲面,该曲面形状与有理贝塞尔曲线41一样,由以44代表的控制点数据来进行操作。一般,可通过参数u、v的双向区段集合来定义有理贝塞尔曲面补丁。n次有理贝塞尔曲面补丁的控制点数据为(n+1)×(n+1)个,补丁的4个角的点为端点,即曲面上的点。图4中,R0、R1、R2、R3为端点,是3次有理贝塞尔曲面补丁43上的点。
从上述可知,换言之,在S204中,根据NURBS数据算出多个有理贝塞尔曲面补丁。另外,定义NURBS数据的参数u、v与定义通过S204的变换算出的3次有理贝塞尔曲面补丁的参数u、v未必一致。
接着,说明曲面补丁分割处理部105用递推(de Casteljau)算法来分割有理贝塞尔曲面补丁的方法。
图5是3维欧几里德空间中的3次有理贝塞尔曲线51的区段例。图5中,B1、B2、B3、B4是形成有理贝塞尔区段51的控制点,B1、B4是端点。这里,设控制点B1、B2、B3、B4的重量分别为w1、w2、w3、w4。
一般,在3维欧几里德空间中若使用有理递推(de Casteljau)算法,则1个区段51在将以wi+1*t∶wi*(1-t)的比率内分连接各控制点的直线B1B2、B2B3、B3B4的点设为C1、C2、C3,其中0<t<1、i=1、2、3、4,并设各自的重量w′i=wi*(1-t)+wi+1*t,并且,将以w′i+1*t∶w′i*(1-t)的比率内分直线C1C2、C2C3的点设为D1、D2,其中i=1、2、3,并设各自的重量w”=w′i*(1-t)+w′i+1*t,并且,将以w”i+1*t∶w”i*(1-t)的比率内分直线D1D2的点设为B5,其中i=1、2,并设为W5=w”i*(1-t)+w”i+1*t的情况下,已知B5为区段51上的点,算出的w5成为B5的重量。这里,B1、C1、D1、B5是区段B1B5的控制点,B5、D2、C3、B4是区段B5B4的控制点。
在本实施形态的步骤44中,因为在同次坐标系中处理控制点数据,所以使用例如[Gerald E.Farin著,原孝成等译,共立出版,“NURBS从射影几何学到实务”,PP119-122]所示射影空间中的递推(de Casteljau)算法。另外,在本实施形态中,使用t=1/2。
图6是在影射空间中的3次区段中使用递推(de Casteljau)算法的实例。图6中,B1、B2、B3、B4是形成区段61的控制点数据,B1、B4为端点。
在步骤205中,对于区段61,将把直线B1B2、B2B3、B3B4内分成1/2(1-1/2)的点(即中点)设为C1、C2、C3,另外,将直线C1C2、C2C3的中点设为D1、D2,并将直线D1D2的中点设为B5时,B5为区段61上的点。
结果,将区段61分割成B1B5和B5B4两个区段。新形成的区段B1B5的控制点为B1、C1、D1、B5,区段B5B4的控制点为B5、D2、C3、B4。
这样,在根据本实施形态1的曲面补丁分割处理部105中,通过使用同次坐标系并在射影空间中的递推(de Casteljau)算法中使用t=1/2,分割处理所需运算不必乘法和除法,仅移位运算和加法即可,所以可大幅度高速化分割处理。
图7是用16个控制点数据来表示3次有理贝塞尔曲面补丁71的参考图。图7中,P1、P2、P3、P4是端点,各端点是曲面补丁上的点。
图8是对形成图7的有理贝塞尔曲面补丁71的参数u方向的区段,使用步骤205的处理来进行分割的结果的有理贝塞尔曲面补丁的参考图。
步骤205中,尤其是分割区段P3P4的点P6和分割区段P1P2的点P5成为有理贝塞尔曲面补丁71上的点。即,有理贝塞尔曲面补丁71被分割成以P1、P5、P6、P3为端点的有理贝塞尔曲面补丁81和以P5、P2、P4、P6为端点的有理贝塞尔曲面补丁82这两个补丁。
图9是对图8的有理贝塞尔曲面补丁81和82、进而对参数v方向的区段使用步骤205的处理来进行分割的结果的有理贝塞尔曲面补丁的参考图。
这里,重新算出有理贝塞尔曲面补丁上的点P7、P8、P9,将有理贝塞尔曲面补丁81分割成以P7、P9、P6、P3为端点的有理贝塞尔曲面补丁91和以P1、P5、P9、P7为端点的有理贝塞尔曲面补丁92,将有理贝塞尔曲面补丁82分割成以P9、P8、P4、P6为端点的有理贝塞尔曲面补丁93和以P5、P2、P8、P9为端点的有理贝塞尔曲面补丁94。
图10中示出将图9中的4个曲面补丁变换为多边形数据的实例。将曲面补丁91、92、93、94变换为以曲面上的控制点数据为顶点的共计8个多边形数据。
因此,因为这些多边形数据的顶点是射影空间中的点,所以为了进行绘制,必需变换成3维欧几里德空间中的点。
通常,将从射影空间中定义的坐标到3维欧几里德空间中定义的坐标的变换称为射影变换。另外,将从3维欧几里德空间中定义的坐标到2维屏幕坐标的变换称为透视变换。根据(式4),将射影空间中同次坐标P(wx、wy、wz、w)射影变换为3维欧几里德空间中的通常坐标P(x、y、z)的式子由(式10)提供。
式10P(x,y,z,l)=P‾(X,Y,Z,w)w----(10)]]>另一方面,因为多边形数据的顶点已由坐标变换部102变换成视野坐标,所以视点为原点,视线为Z轴。因此,将3维欧几里德空间中的多边形数据的顶点透视变换成屏幕坐标系的式子由(式11)提供。
式11
(xs,ys)=R(xz,yz)+(xo,yo)----(11)]]>在(式11)中,P=(x、y、z)是多边形数据的任意顶点,R是从视点到屏幕的距离,So=(xo、yo)表示屏幕坐标的原点,Ps=(xs、ys)表示透视变换后的屏幕坐标中的多边形数据的顶点。
在步骤209中,如此使用(式12),一起进行对步骤208中得到的多边形数据各顶点的射影变换和透视变换(S209)。
式12(xs,ys)=R(xwzw,ywzw)+(xo,yo)]]>=R(xz,yz)+(xo,yo)----(12)]]>因此,在本实施形态中,可省略伴随射影变换的重量的除法。并且在步骤210中,在使用当前的光源信息来对多边形数据进行阴影(shading)处理或纹理映射(texture mapping)处理等绘制处理之后,为了下一帧的描绘处理,返回步骤202。
如上所述,根据本发明的实施形态1,设置数据变换部104及曲面补丁分割处理部105,在由步骤204将NURBS数据变换为有理贝塞尔控制点数据后,在步骤205中分割有理贝塞尔曲面补丁,从而与直接运算NURBS曲面并进行绘制的情况相比,不会增大控制点数据以外的数据,可由较少的运算量来绘制NURBS曲面。
另外,坐标变换部102事先将NURBS数据变换为视野坐标系,所以不必对有理贝塞尔曲面补丁细分割后的有理贝塞尔控制数据进行视野变换,可削减关于坐标变换的整体运算量。
并且,通过在同次坐标系中处理NURBS数据及有理贝塞尔控制点数据的控制点与重量,作为控制点数据,可以一起进行透视变换部107中的绘制处理前的射影变换与透视变换,所以可省略伴随射影变换的重量的除法,可高速绘制NURBS曲面。
并且,为了得到充分的对多边形的近似结果,即使曲面补丁分割处理部105在重复有理贝塞尔曲面补丁的细分割的情况下,细分割所需的运算也可仅由移位运算和加法来实现,所以减轻了处理负担,在根据本发明的曲面图像处理装置100中,可高速得到平滑高画质的NURBS曲面的绘制结果。
另外,在实施形态1中,坐标变换部102对从数据输入部101输入的NURBS数据进行视野坐标变换,但也可事先不进行视野坐标变换,而对形成曲面补丁分割处理部105得到的分割后的有理贝塞尔曲面补丁的有理贝塞尔控制点数据进行视野坐标变换。
(实施形态2)下面,用附图来说明本发明的实施形态2。
本实施形态2中的曲面图像处理装置100的功能框图与上述实施形态1一样,其特征在于将动画控制部103算出的动画数据输入到坐标变换部102及数据变换部104中。
首选用图11来说明本实施形态2的曲面图像处理装置100的动作。在本实施形态2中,与本发明的实施形态1一样,就NURBS数据及有理贝塞尔控制点数据面议,将控制点和重量统一称为控制点数据,使用射影空间中的同次坐标系来进行处理。
图11是表示实施形态2中的曲面图像处理装置100的具体处理流程图。
首先,数据输入部101将NURBS控制点、各控制点的重量、节点矢量构成的NURBS数据输入数据变换部104(S1101)。
接着,数据变换部104对形成从数据输入部101输入的NURBS数据的各NURBS曲线,通过插入节点,变换为由区段构成的区间有理贝塞尔曲线(S1102)。
接着,动画控制部103算出当前帧中的动画数据。(S1103)。
另外,坐标变换部102使用从动画控制部103得到的当前帧的动画数据的视点、视线的信息,对形成数据变换部101算出的各区段的有理贝塞尔控制点数据进行造型变换、视野变换、3维空间中的剪取处理,算出形成视野坐标系中的区段的有理贝塞尔控制点数据(S1104)。
接着,曲面补丁分割处理部105对步骤1104中得到的视野坐标系中的区段构成的有理贝塞尔曲面补丁,通过在射影空间中的递推(de Casteljau)算法中使用t=1/2来进行计算,分割有理贝塞尔曲面补丁(S1105)。
另外,曲面补丁分割处理部105用从当前视点到有理贝塞尔曲面补丁的距离来判断当前的分割结果是否充分,在必需再次分割处理的情况下,返回步骤1105(S1106)。
在充分细分割所有有理贝塞尔曲面补丁的情况下(S1106为是),透视变换部107将细分割后的各有理贝塞尔曲面补丁的控制点数据变换为作为顶点的多角形数据(S1107),由法线计算部106来计算各多边形数据的控制点的法线矢量(S1108)。
之后,透视变换部107对得到的多边形数据的各顶点一起进行射影变换和透视变换(S1109),另外,绘制处理部108使用当前的光源信息来对多边形数据进行荫影处理或纹理映射处理等绘制处理(S1110)后,为了下一帧的描绘处理,返回步骤1101。另外,步骤1102之前的处理作为预处理,仅执行1次,对每个描绘帧反复执行从步骤1103到步骤1110的处理。
如上所述,根据本发明的实施形态2的曲面图像处理装置100,设置数据变换部104、坐标变换部102及曲面补丁分割处理部105,作为事先预处理,数据变换部104将NURBS数据变换为有理贝塞尔控制点数据,NURBS对象的形状不随时刻变化,即不进行形状变形动画的情况下,在每个帧的描绘处理中,只要执行步骤1103以后的处理即可,可大幅度削减对每个描绘帧进行的处理中的运算量。即,可构成边平滑地将高画质的NURBS数据变换为贝塞尔曲面并进行细分割、可实时绘制的高性能的曲面图像处理装置100。
另外,在本实施形态2中,以不进行形状变形动画的情况为前提,但即使在进行形状变形动画的情况下,若作为预处理而在步骤1102中对所有关键帧数据(所有时刻的NURBS数据)进行向有理贝塞尔控制点数据的变换,则可得到同样的效果。
另外,在本实施形态2中,坐标变换部102对数据变换部104得到的有理贝塞尔控制点数据进行视野坐标变换,但也可事先不进行视野坐标变换,而对形成曲面补丁分割处理部105得到的分割后的有理贝塞尔曲面补丁的有理贝塞尔控制点数据进行视野坐标变换。
(实施形态3)下面,说明本实施形态3的曲面图像处理装置100。另外,本实施形态3中的曲面图像处理装置100的功能框图与上述实施形态1一样,所以省略其详细说明。
图12是根据本实施形态3的曲面补丁分割处理部105的结构框图。曲面补丁分割处理部105配备区段分配部1201及至少1个以上的区段分割部1202。
下面,说明曲面图像处理装置100的曲面补丁分割处理部105的结构和其动作。
区段分割部1202输入将参数u、v设为媒介变量的形成3次区段的4个控制点数据,通过对这4个控制点数据在射影空间中的递推(de Casteljau)算法中使用t=1/2,输出形成分割后的2个3次区段的7个控制点数据。例如,若将形成图5中的区段51的4个控制点数据B1、B2、B3、B4输入区段分割部1202,则输出形成两个区段B1B5及B5B4的7个控制点数据B1、C1、D1、B5、D2、C3、B4。
这里,在由数据变换部104得到的有理贝塞尔曲面补丁71内,既可以任何顺序来进行对参数u方向的4个区段的处理,也可同时进行处理。另外,在参数u方向的分割处理结束后的有理贝塞尔曲面补丁81或82中,既可以任何顺序来进行对参数v方向的7个区段的处理,也可同时进行处理。另外,在将有理贝塞尔曲面补丁81和82设为一例的不同有理贝塞尔曲面补丁之间,既可以任何顺序来进行对参数u及v方向的区段的处理,也可同时进行处理。
下面,用图13来说明区段分配部1201的处理。图13是表示区段分配部1201的具体处理流程图。
首先,区段分配部1201从形成数据变换部104得到的有理贝塞尔曲面补丁的区段中选择1个等待分割处理的区段(S1301)。
接着,区段分配部1201对选择到的区段,判断相同补丁内的其它区段是否正由任一区段分割部1202进行处理(S1302)。区段分配部1201在未在处理中的情况下(S1302为否),则区段输入处理等待状态的任一区段分割部1202(S1305)。
另一方面,在处理中的情况下(S1302为是),区段分配部1201判断选择的区段是否为v方向(S1303)。在不是v方向的情况下(S1303为否),将区段输入处理等待状态的任一区段分割部1202中(S1305)。
另外,在区段是v方向的情况下(S1303为是),区段分配部1201判断在与选择到的区段相同补丁内的u方向的相同级的分割处理是否全部结束。在结束的情况下(S1304为是),区段分配部1201将区段输入处理等待状态的任一区段分割部1202中(S1305)。
另一方面,在分割处理未结束的情况下(S1304为否),维持选择到的区段分割处理等待状态不变,返回步骤1301。区段分配部1201重复以上处理,直到不是分割处理等待状态的区段为止。
如上所述,根据本发明的实施形态3,通过设置配备1个以上区段分配部1201、和曲面补丁分割处理部105,该曲面补丁分割处理部105至少具有一个以上由形成1个3次有理贝塞尔曲面的有理贝塞尔控制点数据来算出形成分割后的2个3次有理贝塞尔曲面的有理贝塞尔控制点数据的区段分割部1202,并通过并行执行可同时处理的区段的分割处理,由此可高速实现曲面补丁的分割处理,所以可构成可平滑地实时绘制高画质NURBS曲面的高性能的曲面图像处理装置100。
另外,在上述实施形态1-3中,数据输入部101输入的NURBS数据既可使用保存在存储媒体中的数据,也可使用经由网络传输来的数据。
另外,在上述实施形态1-3中,曲面补丁分割处理部105对递推(de Casteljau)算法使用t=1/2,但也可使用t=1/(2的n次方)(其中,n为正整数)。并且,曲面补丁分割处理部105在沿参数u方向进行分割后,沿参数v方向进行分割,但也可在沿参数v方向进行分割后,沿参数u方向进行分割。
另外,在上述实施形态1-3中,透视变换部107将各有理贝塞尔曲面补丁变换为以曲面上的控制点数据为顶点的多角形数据,但也可变换为以不在曲面上的控制点数据为顶点的多角形数据(例如在曲面补丁91的分割中,变换为以P3、P7、P9、P6以外的控制点数据为顶点的多角形数据。)。
另外,多边形数据的所有顶点不必是控制点数据。例如,在曲面补丁91的分割中,也可变换为直线P3P9及直线P6P7的交点和以4个角的控制点数据为顶点的4个多角形数据。
并且,虽以各有理贝塞尔曲面补丁单位进行向多边形数据的变换,但也可变换为跨跃补丁的多边形数据。例如,将曲面补丁91、92、93、94变换为P4P3P1、P4P1P2两个多边形数据。
(实施形态4)下面,说明根据实施形态4的曲面图像处理装置100。
在本实施形态4的曲面图像处理装置100中,当曲面补丁分割处理部105细分割曲面补丁时,不像以前那样直接求出NURBS曲面上的点,而是由数据变换部104将NURBS曲面等效变换为有理贝塞尔曲面,求出曲面上的控制点后,进行细分割。因此,产生数据变换部104在节点插入时生成无用控制点的问题,但本实施形态4的曲面图像处理装置100解决了该问题。
图14是根据本实施形态4的数据变换部104的功能结构框图。
在本实施形态4中,数据变换部104具备节点插入部1401、控制点剪取部1402及有理贝塞尔控制点数据确定部1403。
输入数据变换部104的NURBS模型数据是记述NURBS曲面的模型数据。这里,NURBS模型数据不包含NURBS曲面上的点的位置坐标,作为表示NURBS曲面的信息量可以说为最小限度。故,施加于传输NURBS模型数据的数据传输系统上的负荷小。
节点插入部1401进行节点插入,将定义NURBS曲面的u方向及v方向的节点矢量最终变换为1个以上的有理贝塞尔曲面。
另外,节点插入部1401边插入节点,边更新控制点列,节点插入部1401的最终输出输出定义与输入的NURBS模型数据定义的NURBS曲面形状完全一致的有理贝塞尔曲面的控制点列。
但是,从节点插入部1401输出的控制点列包含没有定义有理贝塞尔曲面的无用的控制点。控制点剪取部1402是删除该无用控制点、仅将必要的控制点传输到后级的曲面补丁分割处理部105的块。因此,控制点剪取部1402输出的有理贝塞尔控制点数据是不包含无用控制点的数据。这里,有理贝塞尔控制点数据是定义有理贝塞尔曲面的控制点列,但在NURBS模型数据是NURBS曲线数据的情况下,变为定义有理贝塞尔曲线的控制点列。将该有理贝塞尔控制点数据传输到后级的曲面补丁分割处理部105。
曲面补丁分割处理部105使用输入的有理贝塞尔控制点数据,依次求出有理贝塞尔曲面上的点。这样,通过曲面补丁分割处理部105来将有理贝塞尔曲面近似为平面多边形的集合体。
并且,虽未图示,但由曲面图像处理装置100的显示部将3维多边形显示在2给显示器上。另外,在有理贝塞尔控制点数据定义有理贝塞尔曲线的情况下,曲面补丁分割处理部105将有理贝塞尔曲线近似成多个线段的集合体。
下面,描述本实施形态4的控制点剪取部1402从节点插入后的控制点列中删除无用的控制点的方法。
设记述NURBS曲面的初始节点矢量为(u
、u[1]、...、u[I+n])及(v
、v[1]、...、v[J+m])。这里,n及m是对媒介变量u、v定义的基底函数的次数。I及J是u及v方向的控制点数。由这些节点矢量定义的NURBS曲面为了等效变换为有理贝塞尔曲面,实施节点插入,将最终得到的节点矢量设为(u′
、u′[1]、...、u′[I′+n])及(v
、v[1]、...、v[J′+m])。这里,u方向及v方向的最终控制点数为I′+n+1及J′+m+1。这些控制点包含不定义有理贝塞尔曲面的无用控制点。
对于初始节点矢量,描绘NURBS曲面的有理范围是(u[3]、u[I+n-3])及(v[3]、v[J+m-3])的范围。通过节点插入来复用该范围的节点,若复用度等于次数,则意味着最初的NURBS曲面被变换为有理贝塞尔曲面。
图24表示对NURBS曲面的u方向的节点矢量进行节点插入、控制点列变化的状态。在图24的实例中,u方向的次数为n=3,对节点矢量的有效范围的开始节点u[3]进行复用。这里,假设对u方向的节点矢量的最初部分(u
、u[1]、u[2]、...)而言,值都不同,在单调增加的情况下,最终生成的(u′
、u′[1]、u′[2]、...)满足以下关系。
u
=u′
u[1]=u′[1]u[2]=u′[2]u[3]=u′[3]=u′[4]=u′[5]
最初,当插入值等于u[3]的节点~u=u′[4]时,因为节点插入位置为k=3的位置,所以系数排列如下。
a
=1a[1]=(~u-u[1])/(u[4]-u[1])=(u[3]-u[1])/(u[4]-u[1])a[2]=(~u-u[2])/(u[5]-u[2])=(u[3]-u[2])/(u[5]-u[2])a[3]=(~u-u[3])/(u[6]-u[3])=0a[4]=0因此,生成的控制点列为<Q′
>=a
*<Q
>=<Q
>
<Q′[1]>=(1-a[1]*<Q
>+a[1]*<Q[1]>
<Q′[2]>=(1-a[2]*<Q[1]>+a[2]*<Q[2]>
<Q′[3]>=(1-a[3]*<Q[2]>+a[3]*<Q[3]>=<Q[2]>
<Q′[4]>=(1-a[4]*<Q[3]>+a[4]*<Q[4]>=<Q[3]>
从而,删除控制点<Q[1]>,生成新的控制点<Q′[1]>及<Q′[2]>。其中,虽定义NURBS曲面的控制点用具有指数i、j的2维排列表示,但这里为了简化说明,仅由u方向的1维表现。即便这样简化也不丧失一般性。并且,当插入值等于u[3]的节点~u=u′[5]时,因为节点插入位置为k=4的位置,所以系数排列如下。
a
=1a[1]=1a[2]=(u[3]-u[2])/(u[4]-u[2])a[3]=0a[4]=0使用该排列,生成的控制点列为<Q″
>=a
*<Q′
>=<Q′
>=<Q
>
<Q″[1]>=(1-a[1]*<Q′
>+a[1]*<Q′[1]>=<Q′[1]>
<Q″[2]>=(1-a[2]*<Q′[1]>+a[2]*<Q′[2]>
<Q″[3]=(1-a[3]*<Q′[2]>+a[3]*<Q′[3]>=<Q′[2]>
<Q″[4]=(1-a[4]*<Q′[3]>+a[4]*<Q′[4]>=<Q′[3]>=<Q[2]>
由此,意味着生成新的控制点<Q”[2]>。
接着,以下表示新的控制点<Q”[2]>是最初的NURBS曲面上的开始点。将u=u[3]代入Cox-deBoor的渐近式,递归求出NURBS曲面的基底函数。首先,对于n=0,为B
[3](u[3])=1B
[i](u[3])=0(i不是3)。
用上式,对于n=1,为B[1][2](u[3])=1B[1][i](u[3])=0(i不是2)。
再用上式,对于n=2,为B[2][1](u[3])=(u[4]-u[3])/(u[4]-u[2])B[2][2](u[3])=(u[3]-u[2])/(u[4]-u[2])B[2][i](u[3])=0(i不是1或2)。
再用上式,对于n=3,为B[3]
(u[3])=(u[4]-u[3])/(u[4]-u[1])*B[2][1](u[3])B[3][1](u[3])=(u[3]-u[1])/(u[4]-u[1])*B[2][1](u[3])+(u[5]-u[3])/(u[5]-u[2])*B[2][2](u[3])B[3][2](u[3])=(u[3]-u[2])/(u[5]-u[2])*B[2][2](u[3])B[3][i](u[3])=0(i大于3)。
由此,NURBS曲面的开始点将系数排列取为~a[i]=1-a[i],~a′[i]=1-a′[i]则<P(u[3]>=B[3]
(u[3])*<Q
>+B[3][1](u[3])*<Q[1]>
+B[3][2](u[3])*<Q[2]>
=~a′[2]*~a[1]*<Q
>
+(~a′[2]*~a[1]+~a′[2]*a[1])*<Q[1]>
+a′[2]*a[2]*<Q[2]>
=<Q″[2]>
。故,由于最初的NURBS曲面的开始点与变换为有理贝塞尔曲面的控制点<Q”[2]>一致,所以两个控制点<Q”
>及<Q”[1]>是无用的。
另外,作为其它实例,说明图25所示初始节点矢量的要素排列包含复用度的情况。对于u方向的节点矢量的最初部分(u
、u[1]、u[2]、...)而言,在u[2]=u[3]的情况下,最终生成的节点矢量(u′
、u′[1]、u′[2]、...)满足以下关系。
u
=u′
u[1]=u′[1]u[2]=u′[3]=u′[2]=u′[3]=u′[4]当插入值等于u[2]及u[3]的节点~u=u′[4]时,因为节点插入位置为k=3的位置,所以系数排列如下。
a
=1a[1]=(~u-u[1])/(u[4]-u[1])=(u[2]-u[1])/(u[4]-u[1])a[2]=(~u-u[2])/(u[5]-u[2])=0a[3]=(~u-u[3])/(u[6]-u[3])=0a[4]=0使用该排列,生成的控制点列为<Q′
>=a
*<Q
>=<Q
>
<Q′[1]>=(1-a[1])*<Q
>+a[1]*<Q[1]>
<Q′[2]>=(1-a[2])*<Q[1]>+a[2]*<Q[2]>=<Q[1]>
<Q′[3]>=(1-a[3])*<Q[2]>+a[3]*<Q[3]>=<Q[2]>
<Q′[4]>=(1-a[4])*<Q[3]>+a[4]*<Q[4]>=<Q[3]>
另一方面,因为不是定义最初的NURBS曲面的0的基底函数为B[2][1](u[3])=(u[4]-u[3])/(u[4]-u[2])=1
B[3]
(u[3])=(u[4]-u[3])/(u[4]-u[1])*B[2][1](u[3])B[3][1](u[3])=(u[3]-u[1])/(u[4]-u[1])*B[2][1](u[3]),所以另一方面,NURBS曲面的开始点变为<P(u[3])>=B[3]
(u[3]*<Q
>+B[3][1](u[3])*<Q[1]>
=(1-a[1])*<Q
+a[1]*<Q[1]>
=<Q′[1]>
与控制点<Q′[1]>一致。故此时仅1个控制点<Q′
>是无用的。
另外,如图26所示,作为初始节点矢量的要素排列包含复用度的其它实例,对于u方向的节点矢量的最初部分(u
、u[1]、u[2]、...)而言,考虑u[3]=u[4]的情况。在该情况下,最终生成的节点矢量(u′
、u′[1]、u′[2]、...)满足以下关系。
u
=u′
u[1]=u′[1]u[2]=u′[2]u[3]=u[4]=u′[3]=u′[4]=u′[5]当插入值等于u[3]及u[4]的节点~u=u′[5]时,因为节点插入位置为k=4的位置,所以系数排列如下。
a
=1a[1]=1a[2]=(~u-u[2])/(u[5]-u[2])=(u[3]-u[2])/(u[5]-u[2])a[3]=(~u-u[3])/(u[6]-u[3])=0a[4]=(~u-u[4])/(u[7]-u[4])=0使用该排列,生成的控制点列为<Q′
>=a
*<Q
>=<Q
>
<Q′[1]>=(1-a[1])*<Q
>+a[1]*<Q[1]>=<Q[1]>
<Q′[2]>=(1-a[2])*<Q[1]>+a[2]*<Q[2]>
<Q′[3]>=(1-a[3])*<Q[2]>+a[3]]*<Q[3]>=<Q[2]>
<Q′[4]>=(1-a[4])*<Q[3]>+a[4]*<Q[4]>=<Q[3]>
另一方面,若求出NURBS曲面的开始点,则有<P(u[3])>=B[3][1](u[3]*<Q[1]>+B[3][2](u[3])*<Q[2]>
=(1-a[2])*<Q[1]+a[2]*<Q[2]>
=<Q′[2]>
与控制点<Q′[2]>一致。故此时2个控制点<Q′
>及<Q′[1]>是无用的。
通过以上实例,若对次数n=3进行一般化,则对于节点插入后变为无用的控制点,以下关系成立。即,最终生成的控制点列为(Q′
、Q′[1]、...、Q′[I′-1]),最终生成的节点矢量为(u′
、u′[1]、...、u′[I′+3]),如图27所示,对于开始描绘NURBS曲面的节点u′[3]而言,(u′[j]、...、u′[3]、...、u′[k])共(k-j+1)个节点的值等于u′[3],用大于复用度3来进行复用,控制点(Q′
、Q′[1]、...、Q′[k-4])共(k-3)个控制点是无用的。
另外,不仅在NURBS曲面的开始点、而且在结束点生成无用的控制点。此时,若考虑控制点列及节点矢量的系数的关系为逆向,则可完全一样删除无用的点。即,对于最终生成的控制点列为(Q′
、...、Q′[I′-2]、Q′[I′-1]),最终生成的节点矢量为(u′
、...、u′[I′+2]、u′[I′+3]),如图28所示,对于结束描绘NURBS曲面的节点u′[I′]而言,(u′[j]、...、u′[I′]、...、u′[k])共(k-j+1)个节点的值等于u′[I′],用大于复用度3来进行复用,控制点(Q′[j]、...、Q′[I′-2]、Q′[I′-1])共(I′-j)个控制点是无用的。
另外,在以上说明中,描述了对u方向的控制点列删除无用控制点的方法,但对v方向的控制点列也可同样适用。另外,实际上控制点具有重量,但若使用对位置坐标乘以重量的同次坐标,则可使用上述删除无用控制点的方法。
另外,这里说明基于再分法的有理贝塞尔曲面的多边形分割。首先为了容易理解,描述有理贝塞尔曲线。如图15所示,考虑对有理贝塞尔曲线使用再分法,并近似成多个线段的情况。图15的有理贝塞尔曲线的次数为n=3,由4个控制点((Q
、Q[1]、Q[2]、Q[3])来定义。设各控制点的重量为qw[i]。其中,i=0、1、2、3。如图15所示,有理贝塞尔曲线是将控制点Q
及Q[3]设为两端的曲线。在本实施例的再分法中,首先在两个相邻控制点的正中间位置上取新的点(R
、R[1]、R[2])。其中,坐标计算使用向位置坐标乘以重量的同次坐标来如下进行。
rw[0*<R
>=(qw
*<Q
>+qw[17<Q[1]>)/2rw[1]*<R[1]>=(qw[1]*<Q[1]>+qw[2]*<Q[2]>)/2rw[2]*<R[2]>=(qw[2]*<Q[2]>+qw[3]*<Q[3]>)/2其中,rw
=(qw
+qw[1])/2rw[1]=(qw[1]+qw[2])/2rw[2]=(qw[2]+qw[3])/2并且,若在这些中间位置上取新的点(S
、S[1]),则其坐标为sw
*<S
>=(rw
*<R
>+rw[1]*<R[1]>)/2sw[1]*<S[1]>=(rw[1]*<R[1]>+rw[2]*<R[2]>)/2其中,sw
=(rw
+rw[1])/2sw[1]=(rw[1]+rw[2])/2。并且,若在这些中间位置上取新的点T
,则其坐标为tw
*<T
>=(sw
*<S
>+sw[1]*<S[1]>)/2
其中,tw
=(sw
+sw[1])/2若如上所述进行计算,则将最初的有理贝塞尔曲线分割成由控制点(Q
、R
、S
、T
)构成的有理贝塞尔曲线1501和由控制点(T
、S[1]、R[2]、Q[3])构成的有理贝塞尔曲线1502这两个连续的有理贝塞尔曲线的区段,最终的点T
变为最初的有理贝塞尔曲线上的点。因此,最初的有理贝塞尔曲线可能近似为线段(Q
、T
)及线段(T
、Q[3])两个线段。并且,在分割成细的线段并想提高近似精度的情况下,对分割后的有理贝塞尔曲线1501及202再次使用再分法,反复分割即可。这样,再分处理与反复进行乘法及加法、用[2]的除法来求出NURBS的基底函数的运算相比,非常简单。
从以上对有理贝塞尔曲线的再分法类推,可通过对有理贝塞尔曲面的再分法来进行多边形分割。在曲面的情况下,控制点变为具有对应于媒介变量u、v的指数i、j的2维排列。即,控制点表示为Q[i][j]。用图16来说明在有理贝塞尔曲面中使用再分法来进行多边形分割的方法。
图16虽未示出有理贝塞尔曲面本身,但是简略表示定义有理贝塞尔曲面的控制点的图,u方向及v方向上次数都为n=m=3,控制点数为4×4=16个。图16中,4个角的控制点(Q
、Q[3]
、Q[3][3]、Q
[3])是有理贝塞尔曲面上的点。
在对该有理贝塞尔曲面使用再分法中,首先将控制点的指数j的值固定在0,用4个控制点(Q
、Q[1]
、Q[2]
、Q[3]
)来使用上述再分法。由此,生成由控制点(Q
、R
、S
、T
)构成的有理贝塞尔曲线1601、和由控制点(T
、S[1]
、R[2]
、Q[3]
)构成的有理贝塞尔曲线1602,并求出最初的有理贝塞尔曲线上的新的点T
。图16中仅示出该点T

接着,使用将指数j增加1后的4个控制点(Q
[1]、Q[1][1]、Q[2][1]、Q[3][1]),使用再分法,同样计算控制点。由此,得到控制点(Q
[1]、R
[1]、S
[1]、T
[1])和(T
[1]、S[1][1]、R[2][1]、Q[3][1])。其中,这些点是在计算过程中产生的中间数据,因为本来Q
[1]及Q[3][1]不是最初有理贝塞尔曲面上的点,所以生成的控制点T
[1]也不是最初有理贝塞尔曲面上的点。并且,重复相同的处理,直到指数j变为3。图17示出此前生成的28个控制点,其中T
、T
[3]是最初贝塞尔曲面上的新的点。另外,图17中,位于有理贝塞尔曲面上的控制点标记○印记。
并且,将上述u方向的由再分法生成的控制点分成下示的7个控制点的组,对各组沿v方向分别再次使用再分法。
(Q
,Q
[1],Q
[2],Q
[3])(R
,R
[1],R
[2],R
[3])(S
,S
[1],S
[2],S
[3])(T
,T
[1],T
[2],T
[3])(S[1]
,S[1][1],S[1][2],S[1][3])(R[2]
,R[2][1],R[2][2],R[2][3])(Q[3]
,Q[3][1],Q[3][2],Q[3][3])如图18所示,若对最初的组(Q
、Q
[1]、Q
[2]、Q
[3])使用再分法,则得到控制点(Q
、Q′
、Q
[1]、Q′
[1])和(Q′
[1]、Q
[2]、Q′
[2]、Q
[3])。这里,Q′
[1]是最初贝塞尔曲面上的点。同样,对其它组也使用再分法,最终得到7×7=49个控制点,将最初的有理贝塞尔曲面分割成由4×4=16个控制点定义的4个小的有理贝塞尔曲面。另外,在分割的各小的有理贝塞尔曲面的控制点中、位于角上的4个控制点是最初的有理贝塞尔曲面上的点。即,得到9个有理贝塞尔曲面上的点。图18中,对这些有理贝塞尔曲面上的控制点标记○印记。使邻接这些有理贝塞尔曲面上的点的点彼此结合,从而可构成平面多边形。另外,在进一步分割成细的多边形并想提高近似精度的情况下,也可对分割后的有理贝塞尔曲面再次使用再分法。
根据以上本实施形态4的曲面图像处理装置100的曲面补丁分割处理部105中的再分处理中,控制点剪取部1402删除无用的控制点,所以运算量比直接求出NURBS曲面上的点少。因此,通过使用本实施形态4中所述的不定义有理贝塞尔曲面的无用控制点的删除方法,可有效地将提供的NURBS曲面的控制点列变换为再分处理可使用的有理贝塞尔曲面的控制点列。
(实施形态5)下面,说明本发明的曲面图像处理装置100的曲面补丁分割处理部105中的处理。用实施形态5-8来说明曲面补丁分割处理部105的处理。
下面,参照附图来说明根据本发明实施形态5的曲面图像处理装置100的曲面补丁分割处理部105。
图29是表示实施形态5中曲面补丁分割处理部105的功能框图。
在本实施形态5中,曲面补丁分割处理部105具备形状输入接收部2901、轮廓边缘检测部2902、细分割级确定部2903及细分割部2904。下面,详细说明各自的功能。
形状输入接收部2901接收视点信息和作为关于描绘的对象形状的信息的对象形状信息的输入,视点信息包含由数据变换部104将球坐标系中的表现变换为作为定义成视点的坐标系的视点坐标系的视野变换矩阵、及通过透视变换将视点坐标系的表现变换为2维屏幕上定义的坐标系的透视变换。
对象形状信息从数据变换部104输入,包含定义构成对象的补丁形状的控制点的坐标(同次坐标系表现)、和作为关于邻接各补丁的补丁的信息的邻接补丁信息。邻接补丁信息的表现方法不特别限定。例如有如下方法,即,对各补丁提供指数(index),作为邻接补丁信息,顺序排列并表现在参数空间v=0、u=1、v=1、u=0中邻接的补丁的指数。在不存在邻接补丁的情况下,只要赋予-1等特别指数即可。另外,对象形状信息也可包含描绘中利用的补丁的属性信息、例如顶点法线矢量或纹理坐标信息等。
轮廓边缘检测部2902判断构成由形状输入接收部2901取得的对象的各补丁是否是形成轮廓边缘的补丁。另外,为了保持判断结果,对各补丁定义表示该补丁是否是轮廓边缘形成补丁的识别符(后面称为边缘识别符),例如通过用0初始化,表示0不是轮廓边缘形成补丁。
图31是表示根据本实施形态5的轮廓边缘检测部2902中的处理流程图。下面,说明轮廓边缘检测部2902中的处理流程。
首先,对于各补丁,轮廓边缘检测部2902的透视变换部2902a使用视点信息中包含的视野变换矩阵及透视变换矩阵,透视变换控制点中存在于曲面上的4个顶点Q00、Q30、Q03、Q33,变换为屏幕上的坐标(S3102)。
接着,带符号面积算出部2902b算出通过变换到屏幕上的4个顶点所形成的2维图形的带符号面积(S3103)。通常,通过下述的(式13)求出由2维平面上的3个顶点A(ax、ay)、B(bx、by)、C(cx、cy)构成的三角形的带符号面积S。另外,设带符号面积为正的情况下,该三角形为向外的面,在负的情况下为向里的面。
式13S=12axay1bxby1cxcy1...(13)]]>将透视变换4个顶点Q00、Q30、Q03、Q33后的屏幕上的坐标分别设为R00(r00x、r00y)、R30(r030x、r03y)、R03(r03x、r03y)、R33(r33x、r33y),则将由4个顶点构成的图形分成R00、R30、R03与R30、R33、R03两组三角形,通过下式算出带符号面积S0、S1。
S0=(r00x*r30y+r03x*r00y+r30x*r03y-r03x*r30y-r30x*r00y-r00x*r03y)/2S1=(r30x*r33y+r03x*r30y+r33x*r03y-r03x*r33y-r33x*r30y-r30x*r03y)/2这里,*为乘。在屏幕上4个顶点处于图32(a)的位置关系的情况下,带符号面积S0及S1为相同符号,但在图32(b)的情况下为不同符号。
因此,轮廓边缘检测部2902对各补丁,将带符号面积保持在不同的存储区域(未图示)中,以便能区别正负值。并且在S0、S1为相同符号的情况下,将相加后的值保持在存储区域中。另外,在本实施形态5中,将4个顶点分成R00、R30、R03与R30、R33、R03两组三角形,但除引之外的方法,例如分成R00、R33、r03与R00、R30、R33的组即可,可以同样的步骤进行处理。
接着,轮廓边缘检测部2902比较存储各补丁的带符号面积值的存储区域以外的保持确保的带符号面积最大值的存储区域(未图示)的值与S3103中算出的带符号面积(S3104)。另外,若带符号面积大,则更新最大值,将更新后的值写入存储区域中。这里,在与最大带符号面积的比较中使用带符号面积S0、S1的绝对值之和。即,将S3103中算出的正的带符号面积设为Ap、将负的面积设为Am,将存储在存储区域中的带符号面积的最大值设为MAXA时,进行以下处理。
(1)算出带符号面积的绝对值和Ap+|Am|。
(2)若Ap+|Am|>MAXA,则设MAXA=Ap+|Am|。
若对构成对象的所有补丁完成以上处理,则移动到S3105(S3101为是)。
之后,轮廓边缘检测部2902参照算出的各补丁的带符号面积,在正负值都不为0的情况(图32(b)的情况)下,作为该补丁形成轮廓边缘,将边缘识别符设为1,移动到下一补丁的判断(S3106)。
另外,轮廓边缘检测部2902在S3106中正负任一值都为0的情况下,移动到S3107。
接着,轮廓边缘检测部2902通过比较该补丁的带符号面积的符号与使用邻接补丁信息参照的邻接补丁的带符号面积的符号,判断是否是轮廓边缘形成补丁(S3107)。
之后,轮廓边缘检测部2902在该补丁与邻接的补丁的带符号面积的符号不同时(S3107为否),则可知在两个补丁之间存在表面与里面的边界,可判断为是轮廓边缘形成补丁。因此,若该补丁与相邻的4个补丁的带符号面积的乘积值为负,则判断为是轮廓边缘形成补丁,将边缘识别符设为1(S3108)。
另一方面,若所有邻接补丁符号相同(S3107为是),则判断为不是轮廓边缘形成补丁(S3109)。另外,在不存在邻接补丁(在本发明的实施形态中,向邻接补丁信息提供-1)的情况下,作为该补丁形成边缘,将识别符设为1。若轮廓边缘检测部2902对所有补丁完成上述处理,则移动到细分割级确定部2903的细分割级的确定处理。另外,将轮廓边缘检测部2902算出的各补丁的带符号面积及边缘识别符发送到细分割级确定部2903。
细分割级确定部2903使用轮廓边缘检测部2902算出的各补丁的带符号面积及边缘识别符,可确定细分割级。
以多边形集合来近似曲面补丁的方法大致有以下两种。
第1个方法中,首先根据分割补丁的步幅(事先通过任何方法确定),分割uv参数空间,产生格子点。之后,算出生成的格子点在3维空间上的坐标,连结这些顶点,生成多边形。
第2个方法是生成分割补丁的控制点并递归地重复上述动作以生成多边形的方法。将前者称为镶嵌(tessellation)算法,将后者称为再分算法。
在本实施形态5中,将用再分算法将补丁沿u、v方向进行2分割的操作设为1级,将其次数定义为细分割级,但也可适用于镶嵌算法。例如,也可准备象级1为分别沿u、v轴方向10分割参数空间、级2为20分割等将级与分割数对应起来的表格。另外,使用作为代表再分算法的上述递推(de Casteljau)算法来细分割贝塞尔曲线的说明如上所述。
图33(a)中示出使用再分法之前的补丁的实例,图33(b)及(c)分别示出将再分法对补丁使用到级1、级2的情况实例。图33(b)中,形成4个子补丁,在图33(c)中,形成16个子补丁。
图34是表示细分割级确定部2903的处理流程图。下面,参照图34来详细说明各步骤。
轮廓边缘形成补丁由于在描绘时形成对象轮廓,所以与此外的补丁相比,期望分割得细。但是,因为轮廓边缘形成补丁的带符号面积有变小的倾向,所以若根据面积大小来确定细分割级,则有可能不能分割得细。因此,在本实施形态5中,使用轮廓边缘检测部2902算出的带符号面积的最大值来确定轮廓边缘形成补丁的细分割级(固定值)。通过使用带符号面积的最大值,可实现细分割要求与对象远离视点而进行非常小的显示的情况下降低细分割级的要求都成立。
具体而言,首先,细分割级确定部2903准备图35(a)那样记述表格存储部2903a中存储的带符号面积的最大值与轮廓边缘形成补丁的细分割级的对应关系的表格3501,比较该表格3501与轮廓边缘检测部2902算出的带符号面积的最大值,确定轮廓边缘形成补丁的细分割级(S3401)。另外,在图35(a)中,MAi(i=0、...、4)是带符号面积最大值的阈值。
接着,细分割级确定部2903首先参照边缘识别符,对构成对象的各补丁判断该补丁是否是轮廓边缘形成补丁(S3403)。在边缘识别符为1的情况下(S3403为是),则是轮廓边缘形成补丁,所以马上确定细分割级(S3404)。
另一方面,细分割级确定部2903在边缘识别符为0、不是形成轮廓边缘的补丁的情况下(S3403为否),参照该补丁的正的带符号面积来确定细分割级。原因在于在负的带符号面积大的情况下,该补丁向里、即从视点不能看见的区域非常大,没有必要分割。具体而言,将图35(b)所示表格3502记录在表格存储部2903a中,通过参照该表格3502,确定细分割级(S3405)。另外,在图35(b)的表格3502中,Ai(i=0、...、4)是带符号面积最大值的阈值。继续上述处理,直到对所有补丁完成上述处理(S3402)。
另外,在本实施形态5中,轮廓边缘形成补丁的细分割级根据带符号面积的最大值来决定成固定值,但与此外的补丁一样,准备图35(b)等表格3502,根据带符号面积来确定。此时,期望除用于通常补丁中的表格外,将轮廓边缘形成补丁用的表格记录在存储部2903a中。另外,期望将带符号面积的阈值设定得低。另外,如上所述,必需注意带符号面积有可能非常小的问题。
细分割部2904根据细分割级确定部2903确定的细分割级,用再分算法来细分割各补丁。之后,若在邻接补丁之间细分割级不同,则由于在补丁之间产生间隙,所以细分割部2904还进行补偿该间隙的处理,但该方法不特别限定。
另外,例如有在产生的间隙中新生成多边形的方法。图36(a)中示出细分割前的对象实例,图36(b)中示出实施细分割后的对象实例。在图36(b)的实例中,生成对象轮廓的轮廓边缘形成补丁被分割到级2,其它补丁对应于在屏幕上的面积被分割到级0或级1。因此,通过检测是否是轮廓边缘,可更精密描绘曲面图像。
如上所述,根据本实施形态5的曲面图像处理装置100,透视变换构成对象的补丁的控制点中存在于补丁上的4个顶点,算出通过变换后的顶点构成的图形的带符号面积。接着,参照算出的带符号面积的符号,由轮廓边缘检测部2902来判断各补丁是否是形成轮廓边缘的补丁。之后,根据判断的结果与带符号面积,由细分割级确定部2903来确定各补丁的细分割级。
通过以上处理,可对应于屏幕上的补丁的面积,适当控制细分割级,同时,生成边缘部分平滑的对象。另外,因为在实施细分割处理之前仅执行一次细分割级的确定,所以与每次细分割时算出平坦度并确定是否分割的现有技术相比,计算量少。另外,通过在轮廓边缘形成补丁的判断中也使用带符号面积,可将计算负荷抑制到最小限度。
另外,本实施形态5的曲面图像处理装置100在仅使用存在于补丁上的控制点来进行多边形近似和描绘的情况下特别有效。
(实施形态6)下面,参照附图来说明根据本实施形态5的曲面图像处理装置100。另外,在本实施形态6中的曲面图像处理装置100的功能结构与上述实施形态5一样,但轮廓边缘检测部2902及细分割级确定部2903的处理不同。下面,详细说明各功能。
另外,本实施形态6的曲面图像处理装置100在使用定义补丁的形状的所有控制点来进行多边形近似和描绘的情况下特别有效。另外,形状输入接收部2901与实施形态5一样,接收包含视野变换矩阵及透视变换矩阵的视点信息和包含关于对象形状的信息与相邻补丁信息的对象形状信息的输入。
图37是表示根据本实施形态6的轮廓边缘检测部2902中的处理流程图。
首先,与仅透视变换存在于补丁上的控制点的实施形态6不同,透视变换所有控制点(在4阶(3次)有理贝塞尔曲面的情况下为16个顶点)(S3702),变换到2维屏幕上。这里,若连结邻接的控制点,则在图30所示2维屏幕上生成3×3=9个图形。以后,将生成的图形称为控制多边形。
接着,对各曲面补丁,通过与实施形态5一样的方法算出确保各存储区域而生成的所有控制多边形的带符号面积,以能区别带符号面积的正负值(S3703)。另外,在算出的值为正的情况下,加到存储正的面积的存储区域的值上,在负的情况下,加到存储负的面积的存储区域的值上。若对9个控制多边形完成处理,则移动到S3704。
补丁的形状由控制点来定义,由于贝塞尔补丁中存在凸包性,所以通过使用控制多边形,可判断该补丁是否是轮廓边缘形成补丁。例如,图38(a)中,所有控制多边形向外,图38(b)中,全部向里,所以可判断为不是轮廓边缘形成补丁。另一方面,图38(c)(d)中由于向外的控制多边形与向里的控制多边形混合存在,所以可判断为是轮廓边缘形成补丁。
若轮廓边缘检测部2902的带符号面积算出部2902b算出的控制多边形的带符号面积中仅包含正或负之一的值,则不是轮廓边缘形成补丁,若相反包含正负双方的值,则可判断该补丁是轮廓边缘形成补丁。
因此,轮廓边缘检测部2902从上述存储区域中取得相加的正负带符号面积的值,算出乘积,进行是否为0的判断(S3704)。若乘积不为0(S3704为否),判断为是轮廓边缘形成补丁(S3705),将边缘识别符设为1。
另外,若相加后的正负带符号面积的乘积为0,IS3704为是),则轮廓边缘检测部2902判断为不是轮廓边缘形成补丁(S3706)。对所有补丁使用以上处理(S3701),通过结束所有补丁的处理,结束处理。
图39是表示根据本实施形态6的细分割级确定部2903的处理流程图。
首先,细分割级确定部2903参照轮廓边缘检测部2902提供的边缘识别符,调查该补丁是否是轮廓边缘形成补丁(S3902)。在实施形态5中,轮廓边缘形成补丁的细分割级恒定,但在本实施形态6中,参照带符号面积来进行确定。此时,为了缓和上述带符号面积变小的问题,将正负带符号面积的绝对值和用作指标。
接着,细分割级确定部2903在表格存储部2903a中保持图40所示将轮廓边缘形成补丁用的带符号面积与细分割级对应的表格4000,参照该表格4000,与该补丁的带符号面积相比,确定细分割级(S3903)。另外,这里虽未说明,但与实施形态5一样,参照构成对象的补丁的最大带符号面积,确定轮廓边缘形成补丁的细分割级也可。另外,细分割级确定部2903也可不准备图40的表格4000、而准备与轮廓边缘形成补丁以外的补丁一样将正的带符号面积与细分割级相对应的表格,确定细分割级。另外,在不是轮廓边缘的情况下(S3902为否),细分割级确定部2903对于边缘识别符为0的补丁,与实施形态5一样,参照通常的表格,确定细分割级(S3904)。
有时期望u、v轴方向的细分割级可独立设定,以便如果例如为圆柱这样的对象,则不必沿旋转轴方向那么细地分割。但是,在此前描述的算法中,对u、v轴方向设定相同的细分割级。因此,下面,说明使用算出的控制多边形的带符号面积来分别确定u、v轴方向的细分割级。
轮廓边缘检测部2902与上述方法一样,透视变换定义补丁形状的所有控制点,生成控制多边形,算出各控制多边形的带符号面积。对应符号来将算出的控制多边形的带符号面积加到存储区域上。之后,根据所有控制多边形的处理结束时刻的存储区域的值来判断是否是轮廓边缘。并且,在本发明中,不仅将带符号面积的和、而且将各控制多边形的带符号面积的值分别保持在存储区域(未图示)中。在4阶(3次)贝塞尔补丁(参照图30)中,在9个存储区域中保持各控制多边形的带符号面积。将这些值送到细分割级确定部2903。
图41是表示本方法的细分割级确定部2903中的处理流程图。
首先,轮廓边缘检测部2902参照边缘识别符,调查各补丁是否是轮廓边缘形成补丁(S4102)。在是轮廓边缘形成补丁的情况下(S4102为是),根据正负带符号面积的绝对值和,参照轮廓边缘用表格,确定uv方向轴的细分割级(S4103)。因此,对于轮廓边缘形成补丁,u、v轴方向变为相同的细分割级。其中,也可对轮廓边缘形成补丁使用后述方法,在u、v轴方向上独立确定细分割级。此时,需要注意有可能轮廓边缘部分变得不平滑。
参照图42来说明边缘识别符为0时的轮廓边缘检测部2903的处理。图42(a)-(d)表示控制多边形分别集合成的曲面。图42(a)的任一控制多边形的形状都类似,面积也基本相等。因此,认为该补丁在u轴方向、在v轴方向都不那么弯曲。
另一方面,可知在图42(b)中,控制点Q10、Q11、Q13、Q20、Q21、Q22、Q23偏向控制点Q30、Q31、Q32、Q33一方,在u轴方向弯曲。这表示图42(b)的补丁必需沿u轴方向进行细分割。
同时,可知在图42(c)中,必需沿v轴方向进行细分割,在图42(d)中,必需沿u、v轴方向进行细分割。利用这些性质,在本方法中,将存在于u、v各个轴方向上的控制多边形的面积比用作表示补丁弯曲程度的指标,确定细分割级。后面将表示弯曲程度的指标称为弯曲参数。
首先,细分割级确定部2903调查构成补丁的控制多边形的带符号面积是否全为负(S4104),若为负(S4104为是),则将该补丁的细分割级确定为0(S4105),移动到下一补丁的处理。
另外,细分割级确定部2903调查构成补丁的控制多边形的带符号面积是否全为负,在不是负的情况下(S4104为否),接着算出存在于u轴方向上的控制多边形的面积比(S4106)。具体而言根据以下步骤。
(1)取得由控制点Qj0及Qj1(j=0、...、3)形成的3个控制多边形的带符号面积的值。
(2)若将(1)取得的带符号面积的值设为A0、A1、A2,则求出其中最大值AMAX与最小值AMIN。
(3)计算下式,求出弯曲参数Cu0。
Cu0=AMAX/AMIN(4)用由Qj1、Qj2(j=0、...、3)形成的控制多边形及由Qj2、Qj3(j=0、...、3)形成的控制多边形,进行同样处理,分别算出Cu1、Cu2。
(5)平均(3)及(4)的值,算出细分割级确定中使用的弯曲参数Cu。
Cu=(Cu0+Cu1+Cu2)/3另外,这里使用所有控制多边形来求出面积比,将其平均设为弯曲参数,但不限于此。例如,也可仅使用与边界线v=0、v=1相邻的控制多边形来算出弯曲参数,求出其平均。相反,也可仅使用与u轴平行的边界线不邻接的控制多边形来算出。
另外,细分割级确定部2903根据S4106中算出的弯曲参数,确定u轴方向的细分割级(S4107)。此时,细分割级确定部2903在表格存储部2903a中保持图43所示将弯曲参数C与细分割级相对应的表格4301,通过与算出的值相比较,可确定细分割级。另外,在图43中,Ci(i=0、...、4)是弯曲参数的阈值。
之后,细分割级确定部2903对沿v轴方向邻接的3个控制多边形进行与S4106及S4107一样的处理(S4108及S4109)。之后,确定v轴方向的细分割级。继续上述处理,直到对所有补丁进行了上述处理(S4101)。通过使用以上说明的方法,根据本发明的曲面图像处理装置100可分别独立确定u、v轴方向的细分割级。
另外,细分割部2904根据由细分割级确定部2903确定的细分割级,细分割各补丁。之后,在补丁之间产生间隙的情况下,还进行补偿间隙的处理。
这样,根据本实施形态6的曲面图像处理装置100,通过透视变换构成各补丁的所有控制点,变换为屏幕坐标系,算出由此形成的所有控制多边形的带符号面积。轮廓边缘检测部2902根据算出的带符号面积来判断是否是轮廓边缘形成补丁,对应判断结果和带符号面积,细分割级确定部2903确定细分割级。
因此,即便是使用定义补丁形状的所有控制点来进行多边形近似的方法,也可在抑制多边形数量增大的同时,生成边缘部分平滑的对象。另外,在实施细分割之前仅执行一次细分割级确定部2903的处理即可,与现有技术相比,计算量少。并且,通过仅追加一点处理就可判断轮廓边缘形成补丁,从计算负荷方面看是非常有效的。
(实施形态7)下面,参照附图来说明根据本实施形态7的曲面图像处理装置100。图44是表示本实施形态7中曲面图像处理装置的结构一例的图。另外,本实施形态7的曲面图像处理装置100除实施形态5中说明的单元外,其特征在于还配备最大细分割级确定部4401。
另外,通过配备最大细分割级确定部4401,即便屏幕上的面积大,也不分割不必细分割的补丁,可进一步抑制多边形数。下面详细说明各功能,但与图1一样的附加相同序号,省略说明。另外,在本实施形态7中,说明仅使用定义构成对象的补丁形状的控制点中存在于补丁上的顶点来进行多边形近似的情况,但在使用所有控制点来近似的情况下也可同样使用。图44中,形状输入接收部2901及轮廓边缘检测部2902的处理与实施形态5一样,将各补丁的带符号面积与是否是轮廓边缘形成补丁的判断结果发送到细分割级确定部2903。
例如,即便屏幕上的面积非常大,但若是平坦的补丁,则不必进行细分割。因此,最大细分割级确定部4401取得对象形状信息,对构成对象的各补丁算出表示何种程度弯曲的指标,确定最大细分割级。以后,将表示何种程度弯曲的指标称为曲率参数。
下面说明最大细分割级确定部4401确定该曲率参数的两种方法。任一指标都利用由控制点扩展的多面体是补丁形状的粗略近似。另外,因为以下处理以球坐标系中实施,所以不必进行视野变换或透视变换。
方法1参照图45(a),是最大细分割级确定部4401算出由存在于补丁上的控制点扩展的平面与此外的控制点之间的距离并确定曲率参数的方法。具体而言根据以下步骤。
(1)求出由控制点Q00、Q30、Q03扩展的平面的方程式α0。
(2)通常,通过下式求出平面αa*x+b*y+c*z+d=0与3维空间上的点P(x0、y0、z0)之间的距离L。这里,*为乘。
式14L=|ax0+by0+cz0+d|a2+b2+c2...(14)]]>用上式,算出(1)中求出的平面α0与控制点Q01、Q02、Q10、Q11、Q12、Q20、Q21之间的距离I01、I02、I10、I11、I12、I20、I21。
(3)求出由控制点Q01Q30、Q01Q33、Q01Q03扩展的平面的方程式α1。
(4)算出(3)中求出的平面α1与控制点Q12、Q13、Q21、Q22、Q23、Q31、Q32之间的距离I12′、I13′、I21′、I22′、I23′、I31′、I32′。
(5)分别算出连结控制点Q03与Q30及Q00与Q33的对角线长度d0、d1。
(6)解下式,算出曲率参数C。
I0=I01+I02+I10+I11+I12+I20+I21I1=I12′+I13′+I21′+I22′+I23′I31′+I32′C=(I0+I1)/(d0+d1)另外,这里,将对应于扩展的平面算出距离的控制点分成两个组,但该方法不特别限定。例如,也可对各平面求出与不在平面上的所有控制点的距离,确定曲率参数。相反,也可是仅使用代表点(例如在控制点中位于中央的Q11、Q12、Q21、Q22)的方法。
在方法2中,参照图45(b),最大细分割级确定部4401算出连结控制点的端点的线段长度与相邻控制点之间的距离和,确定曲率参数。具体而言根据以下步骤。
(1)算出连结控制点Q0i与Q3i的线段长度di。
(2)算出连结沿u方向相邻的控制点Qji与Q(j+1(i的线段长度Iij(j=0、...、2)。
(3)解下式,算出Ci。
Ci=(Ii0+Ii1+Ii2)/di(4)重复(1)-(3)的处理,求出C0、C1、C2、C3。
(5)算出连结控制点Q0i与Q3i的线段长度di′。
(6)算出连结沿v方向相邻的控制点Qij与Qi(j+1)的线段长度Iij′(j=0、...、2)。
(7)解下式,算出Ci′。
Ci′=(Ii0′+Ii1′+Ii2′)/di′(8)重复(5)-(7)的处理,求出C0′、C1′、C2′、C3′。
(9)根据(4)和(8)中求出的值,算出平均,设为曲率参数。
C=(C0+C1+C2+C3+C0′+C1′+C2′+C3′)/8另外,这里,对使用控制点形成的所有线段进行处理,确定曲率参数,但该方法不特别限定,例如也可仅在边界线上(u=0、u=1、v=0、v=1)进行处理并确定。
接着,最大细分割级确定部4401准备图46所示表示曲率参数与最大细分割级的对应关系的表格4601,与算出的C进行比较,确定其补丁的最大细分割级。另外,图46中,εi(i=0、...、4)是曲率参数的阈值。对所有补丁进行上述处理。将算出的最大细分割级发送到细分割级确定部2903。
细分割级确定部2903使用轮廓边缘检测部2902算出的各补丁的带符号面积与边缘识别符,确定细分割级,但此时,也考虑最大细分割级确定部4401确定的最大细分割级。因此,准备补正图35(b)的图47的表格4701,对应从最大细分割级确定部4401发送的最大细分割级,更新细分割级的栏。另外,细分割级确定部4401使用更新后的表格,按与实施形态5一样的步骤来确定细分割级。
另外,在图47中,MAXL是可从最大细分割级确定部4401发送的最大细分割级,CLIP(x)表示在(x)的值大于0的情况下为该值,在(x)小于0的情况下为0。
细分割部2904对应于细分割级确定部2903确定的细分割级,细分割各补丁,进行补偿间隙的处理。
这样,根据本实施形态7的曲面图像处理装置100,最大细分割级确定部4401事先确定各补丁的最大细分割级。由此,例如可避免例如无限接近平坦的不必进行细分割的补丁的多余分割,可更有效生成多边形,近似对象的形状。另外,最大细分割级确定部4401的处理在输入对象形状信息的时刻仅进行一次即可,可以最小限度的计算负荷来实现。
(实施形态8)下面,参照附图来说明根据本实施形态8的曲面图像处理装置100。
图48是表示本实施形态8中曲面图像处理装置的结构一例的图。图48的曲面图像处理装置100的曲面补丁分割处理部105除实施形态5中说明的处理部外,其特征在于配备初始细分割部4801。通过配备该初始细分割部4801,在确定细分割级之前,可以小的补丁单位来确定细分割级,可更柔性地进行对象的多边形近似。下面,详细说明各功能,但与图1一样的附加相同序号,省略说明。
形状输入接收部2901接收视点信息及对象形状信息的输入。将取得的数据发送到初始细分割部4801。
在对象由多个补丁构成的情况、或仅由非常大的补丁构成的情况下,若在其中设定细分割级,则整体上仅粗分割或过度细分割的可能性提高,难以进行柔性的级控制。因此,初始细分割部4801在确定细分割级之前事先实施数级的细分割。细分割级确定部2903对数级分割后的各补丁确定细分割级。初始细分割部4801确定细分割级数的方法不特别限定。既可事先确定级数,也可对应于构成对象的补丁个数来确定。或者,透视变换构成对象的初始补丁,算出带符号面积,由最小值来确定细分割级。
另外,初始细分割部4801的细分割方法在仅使用定义各补丁形状的控制点中位于补丁上的点来对对象进行多边形近似的情况下,既可使用镶嵌算法,也可使用再分算法。在使用所有控制点的情况下,因为必需细分割后的补丁的控制点,所以必需进行使用上述递推(deCasteljau)算法的再分处理。
根据通过以上方法确定的细分割级,仅以相同级来细分割构成对象的所有补丁。将细分割后的补丁数据发送到轮廓边缘检测部2902。
轮廓边缘检测部2902、细分割级确定部2903、细分割部2904对初始细分割部4801细分割后的所有补丁进行处理,生成多边形近似后的对象。另外,本实施形态8中的曲面图像处理装置100也可具备最大细分割级确定部4401。
这样,根据本实施形态8的曲面图像处理装置100,初始细分割部4801在确定细分割级之前对构成对象的各补丁进行数级细分割。之后,对于通过细分割生成的补丁,使用轮廓边缘检测部2902或细分割级确定部2903来确定细分割级。因此,即便是由非常少的补丁数构成的对象、或仅由非常大的补丁构成的对象,也可柔性设定细分割级,在抑制多边形数增大的同时,可生成边缘部分平滑的对象。
(实施形态9)下面,用实施形态9来说明根据本发明的曲面图像处理装置100的法线计算部106中的有理贝塞尔曲面的各控制点的法线计算的处理。另外,该法线计算中确定贝塞尔曲面的纬度、亮度等。
图50是表示根据本实施形态9的法线计算部106的结构的功能框图。
法线计算部106具备输入在由数据变换部105变换为贝塞尔数据后的贝塞尔曲面的各控制顶点坐标的控制顶点输入部5001、算出各控制顶点的法线矢量的法线算出部5002、及对透视变换部107进行控制点输出的控制点输出部5003。
另外,法线算出部5002中具备判断部5002a,判断控制点是否退缩,是否是成为法线矢量算出对象的控制点。
图51是表示曲面图像处理装置100的另一结构的框图,具备实际进行法线矢量的计算处理的CPU5101、I/O5102、存储贝塞尔曲面的控制点信息的存储器5103。另外,存储器5103保持存储图55所示表格信息的表格存储部5103a。
图52是表示根据本实施形态9的法线算出部5002的处理步骤的流程图。
首先,控制顶点输入部5001从曲面补丁分割处理部105输入构成贝塞尔曲面的控制点Pij(0≤i、j≤3)(S5201)。控制点的信息通过I/O5102,记录在存储器5103中。另外,该控制点的信息如上所述从键盘输入也无妨,通过记录在记录媒体上的资料的读入部输入也可以。
图55(a)及(b)表示记载存储器5103中存储的控制点及顶点坐标的列表5501、记载控制点及法线的列表5502的一例。另外,列表中记载的控制点既可以贝塞尔曲面的一个补丁输入,也可以多个补丁进行输入。并且,输入多个贝塞尔曲面也无妨。
法线算出部5002算出从控制顶点输入部5001输入的控制点的法线矢量,但最初判断部5002a对输入的控制点P00判断是否退缩为相邻的控制点。即,判断P00与P01、或P00与P10是否一致(S5202)。
在任一控制点都未退缩而不一致的情况下(S5202为否),法线算出部5002算出相邻控制点间的差分矢量。即,算出差分矢量(P10-P00)与差分矢量(P01-P00)(S5203)。
接着,法线算出部5002算出差分矢量的外积(P10-P00)×(P01-P00)(S5205),归一化后,算出控制点P00的法线(S5205)。以下所示(式15)中,示出法线算出部5002算出法线的式子。这样,将算出的法线作为各控制点的法线矢量存储在存储器5103中。
式15(P10-P00)×(P01-P00)|(P10-P00)×(P01-P00)|...(15)]]>之后,法线算出部5002确认是否算出贝塞尔曲面4个角的顶点的法线(S5206),在未算出所有顶点的法线的情况下(S5206否),再次重复S5202以后的处理,在法线算出部5002算出4个角的顶点的法线的情况下(S5206为是),结束一系列处理。
图53中,示出法线算出对象的控制点邻接的控制点未退缩情况下的差分矢量5301(P10-P00)、差分矢量5302(P01-P00)、差分矢量的外积5303(P10-P00)×(P01-P00)的实例。
另一方面,法线算出部5002在作为控制点的P00与P01、P00与P01之一或双方退缩并一致的情况下,使用附近的控制点来算出法线(S5206为是)。在这样相邻的控制点退缩的情况下,用图54(a)、(b)、(c)来说明。
另外,根据本实施形态9的法线算出部5002的判断部5002a进行判断,在P00与P01一致、P00与P10不一致的情况下,算出差分矢量(P10-P00)、和差分矢量(P11-P00)。并且,进行判断,若P11与P00一致,则在按P12、P13、P21、P22、P23、P31、P32、P33的顺序搜索与P00不一致的点后,算出搜索点与P00之间的差分矢量。
图54是说明与法线算出对象的控制点P00相邻的控制点退缩的情况的参考图。
图54(a)中,示出P00与P01一致情况的实例。差分矢量5401是(P10-P00),差分矢量5402是(P11-P00),法线矢量5403是这些矢量的外积(P10-P00)×(P11-P00)。
图54(b)中,示出当P00与P01一致时,用其它差分矢量来算出P00的法线矢量的实例。成为法线计算对象的两个差分矢量所成角度比规定角度小的情况、或作为法线矢量算出对象的控制点P00与成为差分矢量算出对象的控制点的距离比规定距离短的情况下,为了正确算出法线矢量,还考虑如图54(b)所示,使用差分矢量5404及差分矢量5405,算出法线矢量5406。
或如图54(c)所示,法线算出部5002在使P00与P01不一致,P00与P10一致的情况下,算出差分矢量5408(P01-P00)与差分矢量5407(P11-P00),法线矢量5409变为这些矢量的外积(P11-P00)×(P11-P00)。另外,若P11与P00一致,则与前面一样,判断部5002a进行判断,按P21、P31、P12、P22、P32、P13、P23、P33的顺序搜索与P00不一致的点后,算出搜索点与P00之间的差分矢量。
另外,判断部5002a判断为在P00、P01、P10一致的情况下,通过P02与P00、P20与P00算出差分矢量(P20-P00)与差分矢量(P02-P00)。并且,在P02与P00一致的情况下,按P03、P21、P31、P32、P33的顺序进行搜索。在P20与P00一致的情况下,按P30、P12、P13、P23、P33的顺序搜索。之后,在搜索到不一致的点后,进行判断,算出搜索点与P00之间的差分矢量。
另外,在全部控制点在一条曲线上、或退缩到一个点上的情况下,因为不同贝塞尔曲面,所以即使从描绘对象中删除也无妨。
控制点输出部5003输入由法线计算部106计算的法线的信息。或者,保存在存储器203中。图55(b)表示保存在存储器203中的法线数据的存储例。另外,图55(a)及(b)中,示出独立管理控制点的顶点坐标与法线的状态,但不用说,也可统一管理。
另外,将根据本实施形态9的法线计算部106算出的控制点的数据用于透视变换部107及绘制处理部108中的3维图像的描绘处理中。
如上所述,根据本实施形态9的法线计算部106即使在成为法线计算对象的相邻控制点退缩的情况下,法线算出部5002也可正确有效地计算贝塞尔曲面的控制点的法线矢量。另外,在仅使用位于贝塞尔曲面上的控制点来进行3维图像的描绘处理的情况下,不必进行关于曲面内部的控制点的法线计算。
产业上的可利用性根据本发明的曲面图像处理装置可用作在3维计算机绘图领域中、使用NURBS曲面或贝塞尔曲面等自由曲面来描绘3维对象的曲面图像处理装置,例如,可适用于在画面中显示3维对象的便携终端、汽车导航装置、携带游戏机、电视等娱乐装置中。
权利要求
1.一种曲面图像处理装置,使用作为3维对象的形状数据的NURBS数据,在画面上描绘所述3维对象,其特征在于具备数据变换单元,将由NURBS曲线及NURBS曲面形成的所述NURBS数据进行参数变换,变换为形成有理贝塞尔曲线及有理贝塞尔曲面的有理贝塞尔控制点数据;曲面分割单元,将该数据变换单元变换的所述有理贝塞尔控制点数据所构成的有理贝塞尔曲面补丁细分割成多个曲面补丁;和描绘单元,用所述曲面补丁来描绘所述3维对象。
2.根据权利要求1所述的曲面图像处理装置,其特征在于还具备坐标变换单元,对所述NURBS数据实施坐标变换,用所述3维对象的视点信息来变换为视野坐标系中的NURBS数据。
3.根据权利要求2所述的曲面图像处理装置,其特征在于所述坐标变换单元还对所述有理贝塞尔控制点数据实施坐标变换,用所述视点信息来变换为视野坐标系中的有理贝塞尔控制点数据。
4.根据权利要求1所述的曲面图像处理装置,其特征在于在同次坐标系中处理所述NURBS数据及所述有理贝塞尔控制点数据。
5.根据权利要求1所述的曲面图像处理装置,其特征在于所述曲面分割单元对形成所述有理贝塞尔曲面补丁的所述有理贝塞尔控制点数据使用射影空间中的递推(de Casteljau)算法,反复进行线性插值,该线性插值使用由(2的n次方分之1)∶(1-(2的n次方分之1)之比(其中n为正整数)内分的内分点,并算出新的有理贝塞尔控制点数据,并用该新的有理贝塞尔控制点数据来分割所述有理贝塞尔曲面补丁。
6.根据权利要求1所述的曲面图像处理装置,其特征在于所述曲面分割单元至少具备一个以上的分割处理部,由形成1个n次有理贝塞尔曲线的有理贝塞尔控制点数据来算出形成分割的两个n次有理贝塞尔曲线的有理贝塞尔控制点数据。
7.根据权利要求1所述的曲面图像处理装置,其特征在于所述NURBS数据由控制点列与节点矢量构成,所述数据变换单元具备节点插入部,用节点插入算法,进行将所述节点矢量插入所述控制点列的运算;和控制点调整部,从该节点插入部的运算生成的控制点列中包含的控制点内,删除无用的控制点。
8.根据权利要求7所述的曲面图像处理装置,其特征在于所述节点插入部在从所述NURBS数据中包含的初始节点矢量及初始控制点列变换为表示所述有理贝塞尔控制点数据的最终节点矢量及最终控制点列的过程中,搜索位于所述最终节点矢量的特定位置上的节点的指数,所述控制点调整部用搜索到的所述指数,删除所述最终节点矢量的特定控制点。
9.根据权利要求7所述的曲面图像处理装置,其特征在于所述控制点调整部当对所述NURBS数据的次数为3、所述最终控制点列为以I为整数的(Q
、Q[1]、...、Q[I-1])、所述最终节点矢量为(u
、u[1]、...、u[I+3])、开始描绘所述NURBS数据的节点u[3],(u[j]、...、u[3]、...、u[k])的(k-j-1)个的节点值与u[3]相等并用复用度3以上来复用化时,删除所述最终控制点列中(Q
、Q[1]、...、Q[k-4])的(k-3)个控制点。
10.根据权利要求7所述的曲面图像处理装置,其特征在于所述控制点调整部当对所述NURBS数据的次数为3、所述最终控制点列为以I为整数的(Q
、...、Q[I-2]、Q[I-1])、所述最终节点矢量为(u
、...、u[I+2]、u[I+3])、所述NURBS数据的描绘结束的节点u[I],(u[j]、...、u[I]、...、u[k])共(k-j+1)个节点值与u[I]相等并用复用度3以上来复用化时,删除所述最终控制点列中(Q[j]、...、Q[I-2]、Q[I-1])共(I-j)个控制点。
11.根据权利要求7所述的曲面图像处理装置,其特征在于构成所述控制点列的各控制点具有重量,所述节点插入部在同次坐标系下操作所述控制点列。
12.根据权利要求7所述的曲面图像处理装置,其特征在于所述节点插入部对位于所述节点矢量特定范围内的各要素插入节点,以便以特定复用度来被复用。
13.根据权利要求1所述的曲面图像处理装置,其特征在于所述曲面补丁是多边形数据,所述描绘单元将多个所述多边形数据变换成象素数据,描绘所述3维对象。
14.根据权利要求1所述的曲面图像处理装置,其特征在于所述曲面分割单元还配备面积算出部,用定义构成所述对象的各曲面补丁形状的所述有理贝塞尔控制点数据,算出通过透视变换构成的2维图形的带符号面积;和检测部,根据所述带符号面积的值,检测所述曲面补丁是否是形成作为所述对象轮廓部的轮廓边缘的曲面补丁。
15.根据权利要求14所述的曲面图像处理装置,其特征在于所述曲面分割单元还具备细分割级确定部,对应所述检测部检测的是否是形成所述轮廓边缘的曲面补丁的结果、和所述面积算出部算出的所述曲面补丁在屏幕上的所述带符号面积的值,确定所述曲面补丁的细分割级。
16.根据权利要求15所述的曲面图像处理装置,其特征在于所述细分割级确定部还特定所述面积算出部算出的带符号面积的最大值,并根据特定的所述带符号面积的最大值来确定形成所述轮廓边缘的曲面补丁的所述细分割级。
17.根据权利要求15所述的曲面图像处理装置,其特征在于所述面积算出部还算出通过透视变换定义构成对象的各曲面补丁形状的所有控制点而构成的各2维图形的带符号面积,所述细分割级确定部根据所述面积算出部算出的所述曲面补丁的2维图形的所述带符号面积值的绝对值之和,确定形成所述轮廓边缘的曲面补丁的所述细分割级。
18.根据权利要求15所述的曲面图像处理装置,其特征在于所述细分割级确定部对定义构成对象的各曲面补丁的第1轴和第2轴,分别独立确定细分割级。
19.根据权利要求18所述的曲面图像处理装置,其特征在于所述面积算出部还参照通过透视变换定义构成对象的各曲面补丁形状的所有控制点来构成的2维图形中、邻接第1轴方向(及第2轴方向)的所述2维图形,分别算出参照的所述2维图形的带符号面积,所述细分割级确定部对应算出的所述带符号面积的最大值与最小值之比,确定第1轴方向的细分割级,并参照邻接第2轴方向的所述2维图形,分别算出参照的所述2维图形的带符号面积,对应算出的所述带符号面积的最大值与最小值之比,确定第2轴方向的细分割级。
20.根据权利要求15所述的曲面图像处理装置,其特征在于所述曲面分割单元还具备初始细分割部,在所述细分割级确定部确定构成对象的各曲面补丁的细分割级之前,实施大于1级的细分割。
21.根据权利要求15所述的曲面图像处理装置,其特征在于所述细分割级确定部确定的所述细分割级,将沿第1轴及第2轴方向每次细分割用再分算法构成对象的各曲面补丁的操作设为1级,或将沿所述第1轴或所述第2轴任一方向进行1次细分割的操作设为1级,所述细分割级是所述细分割的操作次数。
22.根据权利要求14所述的曲面图像处理装置,其特征在于所述面积算出部算出所述有理贝塞尔控制点数据中、通过透视变换存在于补丁上的有理贝塞尔控制点所构成的2维图形的带符号面积,所述检测部使用该带符号面积来检测是否是形成轮廓边缘的曲面补丁。
23.根据权利要求14所述的曲面图像处理装置,其特征在于所述检测部还比较对第一曲面补丁算出的所述2维图形的所述带符号面积的正负符号、和对邻接所述第一曲面补丁的曲面补丁算出的所述2维图形的所述带符号面积的正负符号,若为不同符号,则检测为该曲面补丁是形成轮廓边缘的曲面补丁。
24.根据权利要求14所述的曲面图像处理装置,其特征在于所述检测部将由所述面积算出部算出、通过透视变换定义构成所述对象的各曲面补丁形状的所有控制点而构成的2维图形的带符号面积,用作判断是否是形成轮廓边缘的曲面补丁的指标。
25.根据权利要求14所述的曲面图像处理装置,其特征在于所述面积算出部还在算出通过透视变换定义构成对象的各曲面补丁形状的所有控制点而构成的各2维图形的带符号面积后,再算出该正负符号不同的面积的总和,所述检测部若在所述面积算出部算出的所述正负符号不同的面积的总和某一个为0时,检测为不是形成轮廓边缘的曲面补丁。
26.根据权利要求14所述的曲面图像处理装置,其特征在于所述曲面分割单元还具备最大细分割级确定部,事先确定构成对象的各曲面补丁的最大细分割级。
27.根据权利要求26所述的曲面图像处理装置,其特征在于所述最大细分割级确定部根据定义构成对象的各曲面补丁形状的控制点中、存在于所述曲面补丁上的所述控制点所扩展的平面与未存在于所述曲面补丁上的所述控制点之间距离、与连结存在于所述曲面补丁上的所述控制点的对角线长度之比,确定所述各曲面补丁的最大细分割级。
28.根据权利要求26所述的曲面图像处理装置,其特征在于所述最大细分割级确定部算出连结定义构成对象的各曲面补丁形状的控制点中、存在于所述曲面补丁上的所述控制点的线段长度,对存在于所述曲面补丁上的所述控制点之间的所述控制点,算出相邻的所述控制点之间的距离和,对应算出的所述距离和与所述线段的长度之比,确定所述各曲面补丁的最大细分割级。
29.根据权利要求14-28之一所述的曲面图像处理装置,其特征在于构成所述对象的所述曲面补丁是有理贝塞尔曲面。
30.根据权利要求1所述的曲面图像处理装置,其特征在于所述曲面图像处理装置还具备法线算出单元,用所述有理贝塞尔曲线的所述有理贝塞尔控制点数据,算出各控制点的法线,所述法线算出单元具备选择部,在算出从作为所述曲面补丁的四个角的第一控制点的第4控制点的法线时,选择与成为法线计算对象的第一控制点相邻的两个控制点;和算出部,分别算出所述第一控制点与所述相邻两个控制点之间的矢量,算出被算出的两个所述矢量的外积,并算出归一化后的外积,作为所述第一控制点的法线。
31.根据权利要求30所述的曲面图像处理装置,其特征在于所述选择部在算出从作为所述曲面补丁的四个角的第一控制点到第4控制点的法线时,在从邻接所述第一控制点的第二控制点到第四控制点中至少一个变为退缩后与所述第一控制点相同的坐标的情况下,选择与成为法线计算对象的第一控制点邻接、且与所述第一控制点坐标不同的两个控制点,所述算出部分别算出所述第一控制点与所述选择部选择的两个控制点之间的矢量,算出两个所述矢量的外积,并算出归一化后的外积,作为所述第一控制点的法线。
32.根据权利要求30所述的曲面图像处理装置,其特征在于所述选择部在算出从作为所述曲面补丁的四个角的第一控制点到第4控制点的法线时,在邻接成为法线计算对象的第一控制点的控制点退缩的情况下,还选择与该控制点邻接并不退缩的控制点。
33.根据权利要求30所述的曲面图像处理装置,其特征在于所述选择部在所述算出部算出的两个法线矢量所成角度小于规定角度的情况下,还选择其它控制点。
34.根据权利要求30所述的曲面图像处理装置,其特征在于所述选择部不选择距离成为法线计算对象的第一控制点小于规定距离的控制点。
35.根据权利要求30所述的曲面图像处理装置,其特征在于所述选择部在算出所述贝塞尔曲面的四个角的控制点的法线时,比较4个角的控制点中成为法线计算对象的第一控制点和从与该第一控制点邻接的第2控制点到第四控制点的坐标,在这些坐标不同的情况下,选择邻近4个角的控制点之一(P00)的两个控制点(P01、P10),所述算出部分别算出邻接所述第一控制点(P00)的两个控制点(P01、P10)与所述第一控制点P00之间的矢量,算出两个所述矢量的外积,并算出归一化后的外积,作为所述控制点的法线,所述选择部在所述第一控制点P00与同其相邻的两个控制点P01、P10中至少一个坐标相同的情况下,选择附近的未退缩的控制点,所述算出部算出所述第一控制点与附近控制点之间的矢量、及所述第一控制点与所述两个控制点P01、P10中未退缩的控制点之间的矢量,并算出已算出的两个所述矢量的外积,算出归一化后的外积,作为所述控制点的法线。
36.一种曲面图像处理装置,用作为3维对象的形状数据的NURBS数据,在画面上描绘所述3维对象,其特征在于具备数据变换单元,将由NURBS曲线及NURBS曲面形成的所述NURBS数据进行参数变换,变换为形成有理贝塞尔曲线及有理贝塞尔曲面的有理贝塞尔控制点数据;曲面分割单元,将该数据变换单元变换的所述有理贝塞尔控制点数据所构成的有理贝塞尔曲面补丁细分割成多个曲面补丁;和描绘单元,用所述曲面补丁来描绘所述3维对象,所述曲面分割单元还配备面积算出部,计算用定义构成所述对象的各曲面补丁形状的所述有理贝塞尔控制点数据、通过透视变换构成的2维图形的带符号面积;检测部,根据所述带符号面积的值,检测所述曲面补丁是否是形成作为所述对象轮廓部的轮廓边缘的曲面补丁;和细分割级确定部,根据所述检测部检测是否是形成所述轮廓边缘的曲面补丁的结果、和所述面积算出部算出的所述曲面补丁在屏幕上的所述带符号面积的值,确定所述曲面补丁的细分割级。
37.根据权利要求36所述的曲面图像处理装置,其特征在于所述检测部还比较对第一曲面补丁算出的所述2维图形的所述带符号面积的正负符号、和对邻接所述第一曲面补丁的曲面补丁算出的所述2维图形的所述带符号面积的正负符号,若为不同符号,则检测为该曲面补丁是形成轮廓边缘的曲面补丁。
38.一种曲面图像处理方法,用作为3维对象的形状数据的NURBS数据,在画面上描绘所述3维对象,其特征在于包含数据变换步骤,将由NURBS曲线及NURBS曲面形成的所述NURBS数据进行参数变换,变换为形成有理贝塞尔曲线及有理贝塞尔曲面的有理贝塞尔控制点数据;曲面分割步骤,将该数据变换步骤变换的所述有理贝塞尔控制点数据所构成的有理贝塞尔曲面补丁细分割成多个曲面补丁;和描绘步骤,用所述曲面补丁来描绘所述3维对象。
39.根据权利要求38所述的曲面图像处理方法,其特征在于所述NURBS数据由控制点列与节点矢量构成,所述数据变换步骤中,具备节点插入步骤,用节点插入算法,进行将所述节点矢量插入所述控制点列的运算;和控制点调整步骤,从该节点插入步骤的运算生成的控制点列中包含的控制点内删除无用的控制点。
40.根据权利要求38所述的曲面图像处理方法,其特征在于在所述分割处理步骤中,还包含面积算出步骤,计算用定义构成所述对象的各曲面补丁形状的所述有理贝塞尔控制点数据、通过透视变换构成的2维图形的带符号面积;和检测步骤,根据所述带符号面积的值,检测所述曲面补丁是否是形成作为所述对象轮廓部的轮廓边缘的曲面补丁。
41.根据权利要求40所述的曲面图像处理方法,其特征在于所述分割处理步骤中,还包含细分割级确定部,根据检测是否是形成所述轮廓边缘的曲面补丁的结果、和所述面积算出步骤中算出的所述曲面补丁在屏幕上的所述带符号面积的值,确定所述曲面补丁的细分割级。
42.根据权利要求38所述的曲面图像处理方法,其特征在于还包含法线算出步骤,使用所述有理贝塞尔曲面的所述有理贝塞尔控制点数据,算出各控制点的法线,在所述法线算出步骤中,包含选择步骤,在算出从作为所述曲面补丁的四个角的第一控制点到第4控制点的法线时,选择与成为法线计算对象的第一控制点相邻的两个控制点;和算出步骤,分别算出所述第一控制点、和所述相邻两个控制点之间的矢量,算出被算出的两个所述矢量的外积,并算出归一化后的外积,作为所述第一控制点的法线。
43.一种用于曲面图像处理装置中的程序,使用作为3维对象的形状数据的NURBS数据,在画面上描绘所述3维对象,其特征在于包含数据变换步骤,将由NURBS曲线及NURBS曲面形成的所述NURBS数据进行参数变换,变换为形成有理贝塞尔曲线及有理贝塞尔曲面的有理贝塞尔控制点数据;曲面分割步骤,将该数据变换步骤变换的所述有理贝塞尔控制点数据所构成的有理贝塞尔曲面补丁细分割成多个曲面补丁;和描绘步骤,用所述曲面补丁来描绘所述3维对象。
44.根据权利要求43所述的程序,其特征在于所述NURBS数据由控制点列与节点矢量构成,所述数据变换步骤中,具备节点插入步骤,用节点插入算法,进行将所述节点矢量插入所述控制点列的运算;和控制点调整步骤,从该节点插入步骤的运算生成的控制点列中包含的控制点内删除无用的控制点。
45.根据权利要求43所述的程序,其特征在于在所述分割处理步骤中,还包含面积算出步骤,用定义构成所述对象的各曲面补丁形状的所述有理贝塞尔控制点数据,算出通过透视变换构成的2维图形的带符号面积;和检测步骤,根据所述带符号面积的值,检测所述曲面补丁是否是形成作为所述对象轮廓部的轮廓边缘的曲面补丁。
46.根据权利要求45所述的程序,其特征在于所述分割处理步骤中,还包含细分割级确定部,根据检测是否是形成所述轮廓边缘的曲面补丁的结果、和所述面积算出步骤中算出的所述曲面补丁在屏幕上的所述带符号面积的值,确定所述曲面补丁的细分割级。
47.根据权利要求43所述的程序,其特征在于还包含法线算出步骤,使用所述有理贝塞尔曲面的所述有理贝塞尔控制点数据,算出各控制点的法线,在所述法线算出步骤中,包含选择步骤,在算出从作为所述曲面补丁的四个角的第一控制点到第4控制点的法线时,选择与成为法线计算对象的第一控制点相邻的两个控制点;和算出步骤,分别算出所述第一控制点与所述相邻两个控制点之间的矢量,算出被算出的两个所述矢量的外积,并算出归一化后的外积,作为所述第一控制点的法线。
全文摘要
本发明的曲面图像处理装置(100)具备输入NURBS数据的数据输入部(101)、对NURBS数据实施坐标变换的坐标变换部(102)、控制各描绘帧的动画数据的动画控制部(103)、将NURBS数据变换为有理贝塞尔数据的数据变换部(104)、细分割有理贝塞尔曲面补丁的曲面补丁分割处理部(105)、对分割后的曲面补丁的控制点算出法线矢量的法线计算部(106)、对分割后的曲面补丁实施透视变换的透视变换部(107)及对曲面补丁进行绘制处理的绘制处理部(108)。
文档编号G06T17/30GK1499447SQ200310114369
公开日2004年5月26日 申请日期2003年11月12日 优先权日2002年11月12日
发明者上崎亮, 西村明夫, 小林忠司, 望月义幸, 濑川香寿, 山仓诚, 西尾一孝, 荒木均, 西村健二, 二, 司, 夫, 孝, 寿, 幸 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1