CN1647116A - 用于实时生成细分表面的方法和系统 - Google Patents
用于实时生成细分表面的方法和系统 Download PDFInfo
- Publication number
- CN1647116A CN1647116A CNA038082373A CN03808237A CN1647116A CN 1647116 A CN1647116 A CN 1647116A CN A038082373 A CNA038082373 A CN A038082373A CN 03808237 A CN03808237 A CN 03808237A CN 1647116 A CN1647116 A CN 1647116A
- Authority
- CN
- China
- Prior art keywords
- limit
- summit
- segmentation
- group
- subdivision
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
一种用于实时生成细分表面的方法。生成细分的面的面信息和细分数据,细分的面由大量的细分表面构成。细分的面的面信息和细分数据分别包括确定细分的面的顶点和边。两个位标记对应于细分的面的细分数据中识别的每个边。一个位标记用于识别对应的边是否正第二次被使用,另一位标记用于显示对应的边是否被使用两次。细分的面的细分数据然后用于生成细分的附加边。由细分的面的细分数据所识别的每一边被一对细分的边确定。如果一个边被使用两次和正在被第二次使用,构成边的细分的边的顺序相反。细分表面的面信息然后使用细分的面的面信息和细分数据生成,细分表面的细分数据使用细分的附加边生成。类似地,细分表面的面信息和细分数据分别包括确定细分表面的顶点和边;两个位标记对应于细分表面的细分数据中识别的每一边。在细分的面和细分表面的面信息和细分数据分别生成之后,为确定细分的面的每一边创建新的顶点。一个内部的顶点位标记被用于显示新创建的顶点是否是一个内部顶点。如果新顶点是一内部顶点,那么使用一标准(3/8,3/8,1/8,1/8)顶点加权系统,边共享相邻顶点的合成权数被减半。所有的顶点然后被替换以创建更平滑的细分的面。
Description
背景技术
本发明一般地涉及计算机图形处理。更具体地,本发明涉及用于实时生成细分表面以用于与计算机图形有关的应用中的方法和系统。
细分表面被用于创建平滑的几何表面。细分表面通过细分生成。每个细分表面开始均具有一原始的多边形表面。原始的多边形表面被细分成附加的多边形,所有的顶点根据某个规则集来移动。移动顶点的规则因方案而异。例如,一些规则包括保留旧的顶点、可选地移动它们、和引进新的顶点。
通常使用的方案之一是环状表面细分方案。环状表面细分方案是通过生成和插入附加的顶点,然后通过预先规定的加权常数移动原始顶点来实施的。细分表面随着每一细分步骤逐渐变的平滑。附加的顶点基于原始顶点生成和插入到由每一对原始顶点确定的边中间。当通过细分得到的附加的复杂几何被递归生成时,每一现有的顶点受到与它相连的其它顶点影响。除了环状表面细分方案外,大量的其它方案,诸如多面体方案可以用于生成细分表面。
细分表面经常用于计算机图形处理行业,最著名的是用于动画电影或制作。然而,由于昂贵的处理和管理成本,细分表面的使用几乎仅局限于非实时的应用,诸如图形艺术节目和电影/电视制作。
已经出现了一种方案,试图实时生成细分表面。这种方案通过管理用于创建细分的基元的几何指针和边的大型复杂数据库来实施。大型复杂数据库的使用造成代码量较大且处理效率低下。所以,需要提供一种经过改进的方法和系统,能够以更高效的方式生成细分表面,以允许这种细分表面被实时地实现和使用。
发明内容
本发明提供了一种用于实时生成细分表面以用于与计算机图形有关的应用中的方法和系统。根据本发明的一具体实施例,首先生成一细分的面的面信息和细分数据。细分的面由大量的细分表面构成。细分的面的面信息和细分数据分别包括确定细分的面的顶点和边。而且,两个位标记对应于在细分的面的细分数据中识别的每一边。位标记用于识别对应的边是否正在被第二次使用,另一位标记用于显示对应的边是否被使用两次。
细分的面的细分数据然后用于生成细分的附加边。由细分的面的细分数据所识别的每一边被一对细分的边确定。如果一个边被使用两次和正在被第二次使用,构成该边的细分的边的顺序相反。遵循第一个预先规定的一套方法,使用细分的面的面信息和细分数据,然后生成细分表面的面信息,遵循第二个预先规定的一套方法,使用细分的附加边,生成细分表面的细分数据。类似地,细分表面的面信息和细分数据分别包括确定该细分表面的顶点和边;并且两个位标记对应于在该细分表面的细分数据中识别的每条边。
在细分的面和细分表面的面信息和细分数据分别生成之后,为确定细分的面的每一边创建新的顶点。一个内部的顶点位标记被用于显示新创建的顶点是否是一个内部顶点。如果新顶点是一内部顶点,那么使用一标准(3/8,3/8,1/8,1/8)顶点加权系统,共享边相邻顶点的合成权数被减半。然后,所有的顶点被替换(replace,移位)以创建更平滑的细分的面。
参照说明书的其它部分,包括附图和权利要求,将实现本发明的其它特征和优势。本发明的其它特征和优势和本发明的各种实施例的结构和操作将在下面参照附图加以详细描述,相同的参考标记表示相同或功能类似的部分。
附图说明
图1是阐明依据本发明的示范性方法生成细分表面所要采取的步骤的流程图;
图2是显示一具有三角形形状的原始多边形表面(或细分表面)依据本发明的示范性方法被细分的示意图;
图3是阐明依据本发明的示范性方法的两个面共用一条边的示意图;
图4是阐明依据本发明的示范性方法的细分一条边的示意图;
图5是阐明如图3所示的两个面的细分结果的示意图;
图6是阐明如图3所示的两个面的细分结果和进一步阐明添加到细分面的附加边的示意图;
图7是阐明内部顶点构造的示意图;
图8是阐明用于构造内部顶点的合成权数的示意图;
图9是阐明边界/界线或外部顶点的构造的示意图;
图10是阐明用于构造一外部顶点的合成权数的示意图;
图11是阐明一内部顶点替换的示意图;
图12是阐明一外部顶点替换的示意图;以及
图13是显示使用依据本发明的两个位标记为合成权数编索引的图表。
具体实施方式
现在将描述本发明的各种具体实施例。本发明主要涉及一种用于实时生成细分表面的改进的方法。根据一具体实施例,该方法使用了多个进行过索引的基元(indexed primitive)。这些基元包括顶点阵列、被索引进这些顶点的面阵列、和细分数据。在其它的信息中,细分数据包括对由一对顶点、多个顶点、多个面、和多个特殊边所限定的边的描述。关于这些基元如何被得到和它们如何被用于生成细分表面的细节将在下面加以描述。
每个细分表面开始都是一原始的多边形表面。一个或多个原始多边形表面构成一物体,将为该物体创建一图形模型。该图形模型是对该物体的一个图形描述。每一原始多边形表面被细分成附加的多边形或细分表面。每一细分表面然后可以被看作类似于一原始多边形表面,如果需要的话,可进一步细分成更多的细分表面。实现细分的数量取决于大量因素,例如,这些因素包括设计选择。
根据一具体实施例,本发明的方法采用三个步骤生成细分表面。参照图1,该典型方法的三个步骤包括(1)生成递归的面信息,(2)创建新顶点,以及(3)替换现有的顶点。这三个步骤中的每个步骤将在下面进一步加以详细描述。
当生成递归面信息时,为每一表面或要细分的面生成面信息。根据一具体实施例,每一原始多边形表面具有三角形形状,也就是说,每一要细分的面具有三角形形状。因此,如下面将要显示的,在每一细分步骤之后生成的所有细分表面也具有三角形形状。图2显示一具有三角形形状将被细分的原始多边形表面(或细分表面)20的图。该表面或面20由三个顶点(0,1,2)确定。也就是说,面20由三条连接三个顶点(0,1,2)的特殊的边,也就是说不受顶点对(0,1)限制的边、不受顶点对(1,2)限制的边和不受顶点对(2,0)限制的边形成。一个特殊边被定义为通过连接两个和仅仅两个顶点形成的边,也就是说,一个受一对顶点限制的边。
对于每一细分步骤,附加的顶点被添加到形成面20的三条边。更具体地,现有的每个边的中间被添加一附加的顶点。如图2所示,新顶点(3,4,5)分别被添加到由顶点(0,1)对确定的边、由顶点(1,2)对确定的边和由顶点(2,0)对确定的边。相关数字(3,4,5)也被分别用于对应包含新顶点的边。例如,相关数字(3)可用于对应顶点(0,1)之间的边;相关数字(4)可用于对应顶点(1,2)之间的边,相关数字(5)可用于对应顶点(2,0)之间的边。
在每一细分步骤的过程中,面20的每一现有的边被分成两个细分的边。例如,如图2所示,边(3)被分成两个相同的细分的边,也就是,顶点(0,3)之间的细分的边和顶点(3,1)之间的细分的边;类似地,边(4)和(5)每一个也分成两个相同细分的边。
另外,在每一细分步骤的过程中,使用新创建的顶点(3,4,5),在面20的中间创建了三个新的附加边。如图2所示,新附加边是:顶点(3,5)之间附加边,顶点(3,4)之间附加边和顶点(4,5)之间附加边。这些附加边,反过来用于细分面20,结果生成附加的细分表面。参考图2,对于面20,如分别由顶点(3,1,4)、(4,2,5)、(5,0,3)和(3,4,5)所确定的四个细分表面生成。
如上所述,每一细分步骤增加了面(face)、顶点(vertices)和边(edge)的数量。通过使用一个三角形表面,诸如面20,当每一细分步骤为每一现有的面生成四个新面时,面的数量增加四倍。面的数量由下面的方程式描述:面n+1=面n×4,其中“n”描述第n个细分步骤,“n+1”描述紧跟第n个细分步骤的细分步骤。
顶点的数量按照特殊边的数量而增加。这是因为附加的顶点在每一特殊边的中央生成。下面的方程式描述在第n+1细分步骤之后的顶点的数量:顶点n+1=顶点n+边n。
当一新顶点添加到特殊边的中央时,这个新顶点连接到其它新顶点形成附加的特殊边。下面的方程式描述在第n+1细分步骤之后的特殊边的数量:边n+1=边n×2+面n×3。
而且,根据一典型方法,仅仅两个面可以连接到相同特殊边,也就是说,一特殊边最多仅被两个面共享或使用。两个面对相同边的使用是遵循某一顺序的,这将在下面进一步描述。为了跟踪每一边的状态,两个面位标记对应于形成面20的每一边。第一个面位标记用于显示对应的边是否是一个“边重复使用”,也就是说那个对应的边是否正在被第二次使用。第二个面位标记用于显示对应的边是否是“双面的”,也就是说那个对应的边是否被多个面包括或共享。另外,如下面将进一步描述的,对应于每一要细分的边都有一内部顶点位标记。当一个边被细分时,在该边的中央也创建了一新顶点。该内部顶点位标记用于显示该新创建的顶点是否是一“内部”顶点。这些位标记的使用将在下面进一步加以描述。关于这些位标记的实现,它们通常使用软件实现和用作权数表的查询指针。
简单总结,参考图2,当面20要被细分时,为将被细分的面20生成下面的面信息和细分数据:
面0(Face0)[0]:顶点(0,1,2)和
细分0(Sub0)[0]:(3,4,5)
面0[0]:顶点(0,1,2)代表由顶点(0,1,2)限定的面20;细分0[0]:(3,4,5)代表确定面20的三条边。边(3)位于顶点(0,1)之间;边(4)位于顶点(1,2)之间;以及边(5)位于顶点(2,0)之间。
细分面20生成顶点(0,1)之间的顶点(3)、顶点(1,2)之间的顶点(4)以及顶点(2,0)之间的顶点(5)。顶点的生成将在下面进一步描述。另外,由于面20被细分成四个细分表面,附加的面信息被生成。例如,继续图2,对面20的细分生成下面的面信息:
面1[0]:顶点(3,1,4)-附属元素0,面元素1,附属元素1
面1[1]:顶点(4,2,5)-附属元素1,面元素2,附属元素2
面1[2]:顶点(5,0,3)-附属元素2,面元素0,附属元素0
面1[3]:顶点(3,4,5)-附属元素0,附属元素1,附属元素2
面1[0]:顶点(3,1,4)代表由顶点(3,1,4)限定的细分表面;面1[1]:顶点(4,2,5)代表由顶点(4,2,5)限定的第二个细分表面;面1[2]:顶点(5,0,3)代表由顶点(5,0,3)限定的第三个细分表面;以及面1[3]:顶点(3,4,5)代表由顶点(3,4,5)限定的第四个细分表面。
细分之后生成的面信息的右边的信息显示细分前的面信息中的元素和用于生成细分后的面信息的细分数据。例如,为了构造面1[0],使用了细分数据细分0[0]的第一个元素边(3)、面信息面0[0]的第二个元素(1)、和细分数据细分0[0]的第二个元素边(4),产生(3,1,4);为了构造面1[1],使用了细分数据细分0[0]的第二个元素边(4)、面信息面0[0]的第三个元素(2)、和细分数据细分0[0]的第三个元素边(5),产生(4,2,5)。应该提到细分元素0代表第一个细分元素;元素以“0”开始。同样,面1[2]和面1[3]以相同的方式构造。
对于每一细分步骤,如上所述每一面20的面信息被生成。如果要采取附加的细分步骤,也就是说从原始细分表面生成的细分表面要进一步被细分,那么要细分的每一细分表面的面信息和细分数据将得如上所述生成。
现在将描述第一面位标记的使用。如上所提到的,第一面位标记用于显示一个边是否正第二次被使用(“边重复使用”)。如果该边正在被第二次使用,那么该边应该在第二次使用时以相反的顺序使用。图3是阐明两个面使用一个边的图。参考图3,有两个面由顶点(0,1,2,3)限定。第一面Face[0]由顶点(0,1,2)限定,第二面Face[1]由顶点(0,2,3)限定。边(6)是顶点(0,2)之间的边。如图3所示,边(6)由两个面Face[0]和Face[1]共享或使用。根据一典型方法,假定顺时针方向,边(6)被Face[0]以从顶点(2)到顶点(0)的顺序使用。在面Face[1]中,该顺序相反,也就是说边(6)被Face[1]以从顶点(0)到顶点(2)的顺序使用。同样,顶点(6)被两个从Face[0]和Face[1]的细分出的细分的面共享。对于顶点(6),当顶点(6)位于顶点(0,2)之间的边上时,顶点(0,2)被认为是相邻点,顶点(1,3)被认为是相对的点。
一个边重复使用由一添加到细分数据元素的字母“r”表示。一个边双面由添加到细分数据元素的字母“d”表示。边双面将在下面进一步描述。
基于图3,获得Face[0]和Face[1]的下面的面信息:
Face0[0]:顶点(0,1,2)-sub0[0]:(4,5,6d)以及
Face0[1]:顶点(0,2,3)-sub0[1]:(6r,d,7,8)
Face0[0]:顶点(0,1,2)代表组成Face[0]的三个顶点(0,1,2)。sub0[0]:(4,5,6d)代表限定Face[0]的三个边(4,5,6);“6d”指示边(6)被使用两次。
Face0[1]:顶点(0,2,3)代表组成Face[1]的三个顶点(0,2,3)。sub0[1]:(6r,d,7,8)代表限定Face[1]的三个边(6,7,8);“6r,d”指示边(6)被使用两次(也就是说被两个面共享)以及它正在被第二次使用。
如上所提到的,由下一个细分生成的边的数量遵循方程式:边n+1=边n×2+面n×3。对一个边的细分生成两个由边中央的一顶点相连的细分的边。那么第二次细分总共造成四个细分的边和三个顶点。参考图4,示出一在顶点(0,1)之间形成的边。在对该边细分之后,一新顶点(2)和顶点(0,2)和顶点(2,1)之间分别形成的两个细分的边被创建。对顶点(0,2)和顶点(2,1)之间形成的两个细分的边的细分进一步创建了两个更新的顶点(3,4)和顶点(0,3),(3,2),(2,4)和(4,1)之间分别形成的四个新细分的边。应该提到在细分一个边之后,用于描述这两个细分的边的顶点对以下列顺序保存,也就是说对于第一个细分的边,新顶点是顶点对的第二个顶点;对于第二个细分的边,新顶点是顶点对的第一个顶点。例如,在图4中,由顶点(0,1)之间的边形成的两个细分的边有下面的顶点对:分别是(0,2)和(2,1),顶点(2)是新创建的顶点。
然后细分的边以相同的顺序添加到现有的边。图5阐明如图3所示的Face[0]和Face[1]的细分结果。如图5所示,在细分之后边(4)变成两个细分的边(9)和(10);边(5)变成细分的边(11)和(12);以及边(6)变成细分的边(13)和(14)等等。如上所述,对一个边的细分也导致了一新顶点的生成,该新顶点添加在边的中央,连接两个细分的边。例如,当边(4)被细分时,新顶点(4)被创建和添加到顶点(0,1)之间的边的中央,结果连接细分的边(9)和(10)。通过以这种方式为边编索引,新创建的顶点添加到现有的顶点之后,一个边的给定的细分边的两个细分的边索引可通过把现有的边乘2和添加一偏移量来计算。
参考图5,由细分的边(s.e.)描述的两个面Face[0]和Face[1]如下所示:
Face[0]:vertices(0,1,2)-sub(4,5,6d)-s.e.(9,10),(11,12),(13d,14d)
Face[1]:vertices(0,2,3)-sub(6r,d,7,8)-s.e.(14r,d,13r,d),(15,16),(17,18)
关于Face[0],vertices(0,1,2)和sub(4,5,6d)已在上面加以解释;s.e.(9,10),(11,12),(13d,14d)确定了由Face[0]的细分生成的所有细分的边。细分的边按序以顺时针方向编号。Face[0]的细分数据中确定的每一边由一对细分的边确定。例如,边(edge)(4)由s.e.(9,10)确定。类似地,(13d,14d)表明细分的边(13)和(14)被使用两次(也就是说,为两个面共享)。这可从之前上面所述的细分的边(13)和(14)组成边(6)和边(6)被使用两次得出。同样,关于面[1],顶点(0,2,3)和细分(6r,d,7,8)已在上面解释;s.e.(14r,d,13r,d),(15,16),(17,18)确定所有从Face[1]的细分产生的细分的边。(14r,d,13r,d)表明细分的边(13)和(14)被使用两次(也就是说,被两个面共享)以及它们正在被第二次使用。细分的边再次以顺时针方向按序编号。而且,组成一共享边的细分的边的顺序相反。这是一个边正在被第二次使用的结果。例如,关于Face[1],与s.e.(13d,14d)相比,细分的edge(13)和(14)作为s.e.(14r,d,13r,d)存储。
而且,在细分的边创建之后,附加边被添加到每一细分的面。对于每一细分的面,与该细分的面对应的附加边不被从该细分的面生成的细分面外边的任何面使用,也就是说,与一细分的面对应的附加边仅被从那个细分的面生成的细分面使用。参考图6,附加边是(19,20,21,22,23,24)。两个面Face[0]和Face[1]的每一个细分成四个细分面。Face[0]和Face[1]的第四个细分面分别被附加边(19,20,21)和(22,23,24)确定。如图6所示,附加边(19,20,21)仅仅被从细分面[0]生成的细分面使用;同样,附加边(22,23,24)仅仅被从细分面[1]生成的细分面使用。
如上所示,在Face[0]和Face[1]第一次细分之前,可以得到下面的面信息和细分数据:
Face0[0]:vertices(0,1,2)-sub(4,5,6d)
Face0[1]:vertices(0,2,3)-sub(6r,d,7,8)
在Face[0]和Face[1]第一次细分之后,生成下面的面信息和细分数据:
Face1[0]:vertices(4,1,5)-sub(10,11,19d)
Face1[1]:vertices(5,2,6)-sub(12,13d,20d)
Face1[2]:vertices(6,0,4)-sub(14d,9,21d)
Face1[3]:vertices(4,5,6)-sub(19r,d,20r,d,21r,d)
Face1[4]:vertices(6,2,7)-sub(13r,d,15,22d)
Face1[5]:vertices(7,3,8)-sub(16,17,23d)
Face1[6]:vertices(8,0,6)-sub(18,14r,d,24d)
Face1[7]:vertices(6,7,8)-sub(22r,d,23r,d,24r,d)
用于“边重复使用”和“边双面”的符号已在上面作了描述。参考图6,关于与Face[0]有关的面信息,可以看出细分的边(13)和(14)和附加边(19)、(20)和(21)都被使用两次;更具体地,细分的边(13)和(14)被Face[0]和Face[1]使用,附加边(19)、(20)和(21)在从细分面[0]生成的四个细分面中使用两次。另外,关于Face[0]的面信息也显示附加边(19)、(20)和(21)如符号“r,d”所表明的正在被第二次使用的位置。
同样,关于与Face[1]有关的面信息,可以看出细分的边(13)和(14)和附加边(22)、(23)和(24)都被使用两次以及显示出它们正在被第二次使用。
Face1[0]-Face1[3]的面信息和细分数据的生成如下。关于Face1[0]-Face1[3]的面信息,如上所述,这一信息可从Face0[0]的面信息和细分数据也就是vertices(0,1,2)-sub(4,5,6d)中获得。使用上面描述的方法,Face1[0]从细分元素0、(4)、面元素1、(1)和细分元素1、(5)获得,结果产生Face1[0]:vertices(4,1,5)。类似地,Face1[1]-Face1[3]的面信息可如上述获得,产生Face1[1]:vertices(5,2,6)、Face1[2]:vertices(6,0,4)和Face1[3]:vertices(4,5,6)。
基于细分的边(s.e.)和附加边(a.e.),在第一次细分之后生成的细分数据可以构造如下。为了作为例子阐明,Face0[0]的面信息和细分数据用于生成Face1[0]、Face1[1]、Face1[2]和Face1[3]的面信息和细分数据。如上所示,在第一次细分之前可获得下面的数据:
Face0[0]:vertices(0,1,2)-sub(4,5,6d)-s.e.(9,10),(11,12),(13d,14d)-a.e.(19,20,21)。
Face1[0]的细分数据从细分的边的第一对的第二部分(10)、细分的边的第二对的第一部分(11)和第一附加边(19)获得,结果产生sub(10,11,19)。
Face1[1]的细分数据从细分的边的第二对的第二部分(12)、细分的边的第三对的第一部分(13)和第二附加边(20)获得,结果产生sub(12,13,20)。
Face1[2]的细分数据从细分的边的第三对的第二部分(14)、细分的边的第一对的第一部分(9)和第三附加边(21)获得,结果产生sub(14,9,21)。
最后,Face1[3]的细分数据从所有三个附加边(19,20,21)获得,结果产生sub(19,20,21)。
其次,每一细分的边的两个面位标记被确定。一个边的两个面位标记继续传给它的两个细分的边。这是因为细分一个边不会影响它的两个细分的边是否是双面的或重复使用的,也就是说,如果一个边是双面的,那么它的两个细分的边在细分之后也是双面的。所以,细分的边(13)和(14)的第二面位标记被设置为“d”,这是由于细分的边(13)和(14)是从被Face0[0]和Face0[1]共同使用两次的边(6)细分而来的。至于三附加边,它们在第四细分面都被使用两次和重复使用。所以,每一附加边的两个面位标记是常数。当三个附加边出现在Face1[0]-Face1[2]内时,三个附加边的第二面位标记(19,20,21)被设置为“d”,也就是双面的,而当三个附加边出现在Face1[3]内时,设置为“r,d”,也就是双面和重复使用的。
在第一次细分之后Face1[0]-Face1[3]的面信息、细分数据和相关的面位标记如上所述获得。同样,Face1[4]-Face1[7]可获得同样的信息。
对于每一细分步骤,在获得面信息和细分数据(包括相关的面位标记)之后,然后需要生成新顶点。一般地,为了细分有两种类型的顶点,也就是说内部顶点和边界/界线或外部顶点。这两种类型的顶点的细分规则略微不同。如上面提到的,当细分时,对于细分数据中的每一个边,一个顶点在一个边的中央被创建。该顶点如何产生取决于顶点位置。不同的合成权数用于不同类型的顶点。例如,如果被创建的顶点是一内部顶点,使用(3/8,3/8,1/8,1/8)顶点加权系统;如果被创建的顶点是一外部顶点,使用(1/2,1/2)顶点加权系统。用于创建内部顶点和外部顶点的方法将在下面进一步描述。
参考图7,内部顶点位于顶点坐标方格的中央,通常与六(6)个其它顶点共享边。当构造内部顶点70时,不同的顶点有不同的用途;更具体地,边上的每一顶点的3/8和每一顶点的1/8与该边共同形成一三角形。
图8阐明用于构造一内部顶点的合成权数。如图8所示,要生成的顶点(vertex)(6)是一内部顶点。顶点(6)的构造基于如下:
顶点(6)=3/8每一相邻顶点+1/8每一相对的顶点
相邻顶点是一共享边的顶点,也就是顶点(0,2),相对的顶点是剩余的三角形共享顶点,也就是顶点(1,3)。
如图8所示,由顶点(0,2)确定的边(6)被两个面也就是分别由顶点(0,1,2)和(0,2,3)确定的面共享。所以,顶点(0,2)对所创建的顶点的影响应该减半,顶点(0,2)将被添加两次。
通过数学运算,对顶点(6)计算如下:
v6=(v1+v3)/8+(v0+v2)×3/8
但是因为顶点(0,2)由于两个面而将被添加两次,顶点(0,2)的影响被减半,如下所示:
v6=(v1+v3)/8+(v0+v2)×(3/8)/2
=(v1+v3)/8+(v0+v2)×3/16
前面的计算利用把相同的顶点添加两次有效地处理了这一问题。在处理过面(Face)[0]之后,关于顶点(vertex)(6),通过下式可获得:
v6=v1/8+(v0+v2)×3/16
随后,处理Face[1]。应该提到Face[1]也有助于顶点(6),这是由于Face[1]与Face[0]共享边(6)。然后获得顶点(6)如下:
v6=(v1/8+(v0+v2)×3/16)+(v3/8+(v0+v2)×3/16)
=(v1+v3)/8+(v0+v2)×3/8
参考图9,当构造一边界/界线或外部顶点90时,使用其它的边界/界线边顶点(实线标记)的每一个的一半(1/2)。构造一外部顶点比构造一内部顶点简单。对于一外部顶点,根据定义,外部顶点位于的边仅仅被一个面使用。利用这个面,然后通过对两个边顶点求和然后对结果除二来计算外部顶点。
如图10所示,用于构造顶点(4)的合成权数为每一相邻点1/2,这是由于仅一个面使用边(4)。也就是说,顶点(0,1)的一半(1/2)被添加以创建位于边(4)中央的顶点(4)。边(4)是非双面的边,也就是它仅被Face[0]使用。
当为每一边创建一个顶点时,被创建的顶点或者是一内部顶点或者是一外部顶点。也就是说顶点位于的边或者是双面的或者是非双面的。根据被创建的顶点的性质,使用不同的合成权数。如上所述,对应于每一边有两个面位标记。第二面位标记表明一个边是否是双面。所以,通过使用每一边的第二面位标记中包含的信息,可选择使用适当的合成权数创建顶点。
而且,如上面所提到的,对应于每一顶点有一内部顶点位标记。内部顶点位标记用于显示顶点是否是内部顶点。为了构造这一内部顶点位标记,当细分一个边时第二面位标记的内容被复制。如果细分的边不是双面的,那么这种边位于一个边界或界线上。因此,当细分时,被创建在细分的边的中央的顶点也位于边界或界线。
使用图6作为一个例子,包括内部顶点位标记的面信息如下:
Face1[0]:vertices(4,1,5)-sub(10,11,19d)
Face1[1]:vertices(5,2,6i)-sub(12,13d,20d)
Face1[2]:vertices(6i,0,4)-sub(14d,9,21d)
Face1[3]:vertices(4,5,6i)-sub(19r,d,20r,d,21r,d)
Face1[4]:vertices(6i,2,7)-sub(13r,d,15,22d)
Face1[5]:vertices(7,3,8)-sub(16,17,23d)
Face1[6]:vertices(8,0,6i)-sub(18,14r,d,24d)
Face1[7]:vertices(6i,7,8)-sub(22r,d,23r,d,24r,d)
“i”表明顶点是一内部顶点。上面与图6一致,图6表明顶点(6)是特殊的内部顶点。通常在较大的网中,绝大多数顶点是内部的;在封闭的网中,所有的顶点是内部的。
在为边生成新顶点之后,现有的顶点将被替换。环状表面细分方法基于周围的与现有顶点共享一个边的顶点替换(或移动)每一现有的顶点。如果该对应的现有顶点是一内部顶点,每一输出顶点(对应于被替换的现有顶点)受对应的现有顶点和每个周围的顶点十六分之一的影响。
图11说明了对现有内部顶点进行替换的示意图。如11所示,在一典型网中的绝大多数的顶点是具有六价(vertex of six)的内部顶点。输出顶点(对应于被替换的现有顶点(0)110)受现有顶点(0)110的10/16和与现有顶点(0)110共享一个边的每一周围顶点的十六分之一的影响。换句话说,对应于被替换的现有顶点(0)110的输出顶点包括被替换的现有顶点(0)110的10/16加上每一边共享顶点(1,2,3,4,5,6)的1/16。
如果被替换的现有顶点是边界/界线或外部顶点,那么对应于该现有顶点的输出顶点仅受边界/界线上的其它顶点的影响。在这种情况下,该现有的顶点替换如下。图12阐明一外部顶点的替换。图12显示三个面,也就是Face[0]:顶点(0,1,2),Face[1]:顶点(0,2,3)和Face[2]:顶点(0,3,4)。顶点(0)120是一边界/界线顶点。所以,对应于被替换的顶点(0)120的输出顶点的合成权数是每一相邻点的1/8和顶点(0)120的3/4。
参考图12,示出一个具有五(5)个顶点(0,1,2,3,4)的网。对应于被替换的顶点(0)120的输出顶点受顶点(1,4)和顶点(0)120的影响。由于顶点(0)120是在边界上,顶点(0)120与顶点(1,4)共享一边界。如上所显示的,输出顶点的合成权数是每一相邻点1/8(或每一边界共享顶点)和被替换的顶点(0)120的6/8。在一具体实施例中,如图13所示,内部顶点位标记和第二面位标记(“双面的”位标记)用于给具有合成权数的阵列编索引。
为了完成作为外部顶点的现有顶点的替换,现有的顶点首先被复制进一个输出顶点阵列。然后,对于每一合成步骤,通过增加适当的合成权数倍数的顶点与现有顶点的差计算每一输出顶点,如下:
vout=vout+weight*(vx-vsrc)
其中vout是输出(或被替换)的顶点,vsrc是现有(或未被替换)的顶点,vx是边共享顶点。前述意味着现有顶点的一部分被移走,而共享边顶点的相同部分被合成进来。
基于这里提供的说明,对于本领域技术人员而言,用本发明的典型方法可以实现来更高效和实时地生成细分表面应该是显而易见的。如上所述的面信息和细分数据代表了相当小数量的数据,因此允许这样的信息和数据存储在最小限度的存储空间内并被更高效和实时地处理。
在一具体实施例中,根据本发明的一典型方法通过使用图形开发软件,诸如微软的Direct3D和/或计算机编程语言,诸如C和C++来实现。该典型的实现可以整体的方式或具有各种模块的模块化方式设计。典型的实现可以保存在例如一计算机可读介质诸如CD或DVD上。在下表1中提供了一阐明包括各种位标记的面信息和细分数据的数据结构的典型软件实施例。
表1struct S Vertex{
float x,y,z;};struct SFace{
unsigned short VertexIndex[3];};struct SSubFace:public SFace{
unsigned char edgeRecycle[3]:1,
edgeDoubleside[3]:1;
unsigned char vertexInterior[3]:1;};struct SPrimitive{
int faces,vertices;
SFace *faceData;
SSubFace *subData;
Svertex *vertexData;};
应当理解,本发明也可通过使用硬件实现。这种硬件可以是置于视频游戏机或图形卡中的集成电路或芯片,与计算机一起使用。例如微码或微编程指令形式的控制逻辑可用于控制这种硬件。软件和硬件的结合也可用于实现本发明。基于这里提供的说明,本领域技术人员将能够使用其它的方式和/或方法实现和实施本发明。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (40)
1.一种用于从一细分的面生成多个细分表面的方法,包括:
生成用于所述细分的面的第一组面信息和第一组细分数据,其中所述第一组面信息和第一组细分数据分别包括多个顶点和多个边;
使用所述第一组细分数据生成多个细分的边和多个附加边;
按照第一顺序使用一对经过细分的边,限定所述多个边中的每个边,其中,如果一个边被使用两次和正在被第二次使用,则按照与所述第一顺序相反的第二顺序,重新排列这对经过细分的边,这对经过细分的边限定了所述多个边中的每个边;
使用所述第一组面信息和细分数据,为所述多个细分表面中的每一个生成第二组面信息;
使用所述多个经过细分的边和所述多个附加边,为所述多个细分表面中的每一个生成第二组细分数据;
为所述多个边的每一个生成一个顶点;以及
替换所述多个顶点和为所述多个边生成的顶点。
2.根据权利要求1所述的方法,其中,为所述多个边的每一个生成所述顶点的步骤还包含:
如果所述顶点是一内部顶点以及使用(3/8,3/8,1/8,1/8)顶点加权系统,对一共享边顶点的合成权数除二。
3.根据权利要求1所述的方法,其中关于所述边是否被使用两次和正在被第二次使用的信息分别被储存在与边对应的第一和第二位标记中。
4.根据权利要求3所述的方法,其中,为所述多个边的每一个生成所述顶点的步骤还包括:
通过使用储存在所述第一位标记中的信息确定被生成的所述顶点是否是一内部顶点或外部顶点。
5.根据权利要求1所述的方法,其中:
所述多个顶点包括第一顶点、第二顶点、和第三顶点;
所述多个边包括第一边、第二边、和第三边;以及
生成所述第二组面信息的步骤还包括:
通过使用所述第一边、所述第二顶点、和所述第二边获得第一细分表面的面信息;
通过使用所述第二边、所述第三顶点、和所述第三边获得第二细分表面的面信息;
通过使用所述第三边、所述第一顶点、和所述第一边获得第三细分表面的面信息;
通过使用所述第一边、所述第二顶点、和所述第三边获得第四细分表面的面信息。
6.根据权利要求5所述的方法,其中:
所述多个细分的边包括组成所述第一边的第一对细分的边、组成所述第二边的第二对细分的边、和组成所述第三边的第三对细分的边;
所述多个附加边包括第一附加边、第二附加边、和第三附加边;以及
生成所述第二组细分数据的步骤还包含:
通过使用所述第一对细分的边中的第二边、所述第二对细分的边中的第一边、和所述第一附加边获得所述第一细分表面的细分数据;
通过使用所述第二对细分的边中的第二边、所述第三对细分的边中的第一边、和所述第二附加边获得所述第二细分表面的细分数据;
通过使用所述第三对细分的边中的第二边、细分的边的第一对的第一个、和第三个附加边获得所述第三细分表面的细分数据;以及
通过使用所述第一附加边、第二附加边、和第三附加边获得所述第四细分表面的细分数据。
7.根据权利要求1所述的方法,其中,所述第二组面信息和所述第二组细分数据分别包括用于限定所述对应的细分表面的多个顶点和边。
8.根据权利要求1所述的方法,其中,通过使用计算机软件实施所述方法。
9.根据权利要求8所述的方法,其中,所述方法被实时地实施,因此允许所述多个细分表面被实时地生成。
10.根据权利要求8所述的方法,其中,使用计算机软件实施的所述方法被储存在计算机可读介质上。
11.一种用于从一细分的面生成多个细分表面的系统,包括:
用于生成所述细分的面的第一组面信息和第一组细分数据的模块,其中,所述第一组面信息和第一组细分数据分别包括多个顶点和多个边;
用于使用所述第一组细分数据生成多个细分的边和多个附加边的模块;
用于以第一顺序使用一对细分的边限定所述多个边中的每个边的模块,其中,如果一个边被使用两次和正在被第二次使用,以与所述第一顺序相反的第二顺序重新排列这对细分的边,这对细分的边用于限定所述多个边中的每一个边;
用于使用所述第一组面信息和所述第一组细分数据为所述多个细分表面中的每一个细分表面生成第二组面信息的模块;
用于使用所述多个细分的边和所述多个附加边为所述多个细分表面中的每一个细分表面生成第二组细分数据的模块;
用于为所述多个边中的每个边生成一顶点的模块;以及
用于对所述多个顶点和为所述多个边而生成的顶点进行替换的模块。
12.根据权利要求11所述的系统,其中,用于为所述多个边中的每个边生成所述顶点的模块还包括:
一模块,用于在一共享边顶点是一内部顶点和使用一(3/8,3/8,1/8,1/8)顶点加权系统的情况下,把所述顶点的合成权数除二。
13.根据权利要求11所述的系统,其中有关所述边是否被使用两次和正在被第二次使用的信息分别被储存在与所述边对应的第一标记和第二位标记中。
14.根据权利要求13所述的系统,其中,用于所述多个边中的一个边生成所述顶点的模块还包括:
用于通过使用储存在所述第一位标记中的信息确定被生成的所述顶点是一内部顶点还是一外部顶点的模块。
15.根据权利要求11所述的系统,其中:
所述多个顶点包括第一顶点、第二顶点、和第三顶点;
所述多个边包括第一边、第二边、和第三边;以及
用于生成所述第二组面信息的所述模块还包括:
一模块,用于通过使用所述第一边、所述第二顶点、和所述第二边,获得第一细分表面的面信息;
一模块,用于通过使用所述第二边、所述第三顶点、和所述第三边,获得第二细分表面的面信息;
一模块,用于通过使用所述第三边、所述第一顶点、和所述第一边,获得第三细分表面的面信息;以及
一模块,用于通过使用所述第一边、所述第二顶点、和所述第三边,获得第四细分表面的面信息。
16.根据权利要求15所述的系统,其中:
所述多个细分的边包括组成所述第一边的第一对细分的边、组成所述第二边的第二对细分的边、和组成所述第三边的第三对细分的边;
所述多个附加边包括第一附加边、第二附加边、和第三附加边;以及
用于生成所述第二组细分数据的所述模块还包括:
一模块,用于通过使用所述第一对细分的边中的第二个边、所述第二对细分的边中的第一个边、和所述第一个附加边,获得所述第一个细分表面的细分数据;
一模块,用于通过使用所述第二对细分的边中的第二个边、所述第三对细分的边中第一个边、和所述第二个附加边,获得所述第二个细分表面的细分数据;
一模块,用于通过使用所述第三对细分的边中的第二个边、所述第一对细分的边中的第一个边、和所述第三个附加边,获得所述第三个细分表面的细分数据;以及
一模块,用于通过使用所述第一附加边、第二附加边、和第三附加边,获得所述第四细分表面的细分数据。
17.根据权利要求11所述的系统,其中,所述第二组面信息和所述第二组细分数据分别包括多个限定所述对应的细分表面的顶点和边。
18.根据权利要求11所述的系统,其中,通过使用计算机软件执行所述系统。
19.根据权利要求18所述的系统,其中,所述系统被实时运行,因此允许所述多个细分表面被实时地生成。
20.根据权利要求18所述的系统,其中,使用计算机软件实施的所述系统被储存在一计算机可读介质上。
21.一种计算机可读介质,用于储存从一细分的面生成多个细分表面的指令,其包括:
一组用于为所述细分的面生成第一组面信息和第一组细分数据的指令,其中所述第一组面信息和第一组细分数据分别包括多个顶点和多个边;
一组用于使用第一组细分数据生成多个细分的边和多个附加边的指令;
一组用于通过按照第一顺序使用一对细分的边来限定来自所述多个边中每一个边的指令,其中如果一个边被使用两次或正在被第二次使用,限定所述边的该对细分的边按照与第一顺序相反的第二顺序重新排列;
一组用于使用所述第一组面信息和细分数据为所述多个细分表面中的每一个细分表面生成第二组面信息的指令;
一组用于使用所述多个细分的边和所述多个附加边为所述多个细分表面中的每一个细分表面生成第二组细分数据的指令;
一组用于为所述多个边中的每一个边生成一顶点的指令;以及
一组用于对所述多个顶点和为所述多个边生成的顶点进行替换的指令。
22.根据权利要求21所述的计算机可读介质,其中用于为所述多个边中的每一个边生成顶点的该组指令还包括:
一组用于在一共享边顶点是一内部顶点以及使用(3/8,3/8,1/8,1/8)顶点加权系统的情况下把所述顶点的合成权数除二的指令。
23.根据权利要求21所述的计算机可读介质,其中关于所述边是否被使用两次以及正在被第二次使用的信息分别储存在与所述边对应的第一标记和第二位标记中。
24.根据权利要求23所述的计算机可读介质,其中用于为所述多个边中的每一个边生成顶点的指令还包括:
一组用于通过使用存储在所述第一位标记中的信息确定被生成的所述顶点是否是内部顶点或外部顶点的指令。
25.根据权利要求21所述的计算机可读介质,其中:
所述多个顶点包括第一顶点、第二顶点、和第三顶点;
所述边的多数包括第一边、第二边、和第三边;以及
用于生成第二组面信息的该组指令还包括:
一组用于通过使用所述第一边、所述第二顶点、和所述第二边获得第一细分表面的面信息的指令;
一组用于通过使用所述第二边、所述第三顶点、和所述第三边获得第二细分表面的面信息的指令;
一组用于通过使用所述第三边、所述第一顶点、和所述第一边获得第三细分表面的面信息的指令;以及
一组用于通过使用所述第一边、所述第二顶点、和所述第三边获得第四细分表面的面信息的指令。
26.根据权利要求25所述的计算机可读介质,其中:
所述多个细分的边包括组成所述第一边的第一对细分的边、组成所述第二边的第二对细分的边、和组成所述第三边的第三对细分的边;
所述多个附加边包括所述第一附加边、所述第二附加边、和所述第三附加边;以及
用于生成所述第二组细分数据的指令还包括:
一组指令,用于通过使用所述第一对细分的边中的第二个细分的边、所述第二对细分的边中的第一个细分的边和所述第一附加边,获得所述第一细分表面的细分数据;
一组指令,用于通过使用所述第二对细分的边中的第二个细分的边、所述第三对细分的边中的第一个细分的边和所述第二附加边,获得所述第二细分表面的细分数据;
一组指令,用于通过使用所述第三对细分的边中的第二个细分的边、所述第一对细分的边中的第一个细分的边和所述第三附加边,获得所述第三细分表面的细分数据;以及
一组指令,用于通过使用所述第一、第二和第三附加边,获得所述第四细分表面的细分数据。
27.根据权利要求21所述的计算机可读介质,其中,所述第二组面信息和所述第二组细分数据分别包括多个限定所述对应的细分表面的顶点和边。
28.根据权利要求21所述的计算机可读介质,其中,保存在所述计算机可读介质上的所述指令被实时执行,因此允许所述多个细分表面被实时生成。
29.根据权利要求21所述的计算机可读介质,其中,所述计算机可读介质是光盘或数字视频盘。
30.一种具有多个用于从一细分的面生成多个细分表面的组件的集成电路,包括:
一组件,用于为所述细分的面生成第一组面信息和第一组细分数据,其中所述第一组面信息和所述第一组细分数据分别包括多个顶点和多个边;
一组件,用于使用第一组细分数据生成多个细分的边和多个附加边;
一组件,用于通过使用一对细分的边按照第一顺序从所述多个边限定每一个边,其中如果一个边被使用两次或正在被第二次使用,限定所述边的该对细分的边按照与第一顺序相反的第二顺序重新排列;
一组件,用于使用所述第一组信息和所述第一组细分数据为所述多个细分表面中的每一个细分表面生成第二组面信息;
一组件,用于使用所述多个细分的边和所述多个附加边为所述多个细分表面中的每一个细分表面生成第二组细分数据;
一组件,用于为所述多个边中的每一个边生成一顶点;以及
一组件,用于对所述多个顶点和为所述多个边生成的顶点进行替换。
31.根据权利要求30所述的集成电路,其中用于为所述多个边中的每一个边生成一顶点的组件还包括:
一组件,用于在一共享边顶点是一内部顶点以及使用(3/8,3/8,1/8,1/8)顶点加权系统的情况下把所述顶点的合成权数除二。
32.根据权利要求30所述的集成电路,其中关于所述边是否被使用两次以及正在被第二次使用的信息分别储存在与所述边对应的第一和第二位标记中。
33.根据权利要求32所述的集成电路,其中用于为所述多个边中的每一个边生成顶点的组件还包括:
一组件,用于通过使用储存在所述第一位标记中的所述信息确定被生成的所述顶点是内部顶点还是外部顶点。
34.根据权利要求30所述的集成电路,其中:
所述多个顶点包括第一顶点、第二顶点、和第三顶点;
所述多个边包括第一边、第二边、和第三边;以及
用于生成所述第二组面信息的组件还包括:
一组件,用于通过使用所述第一边、所述第二顶点、和所述第二边获得第一细分表面的面信息;
一组件,用于通过使用所述第二边、所述第三顶点、和所述第三边获得第二细分表面的面信息;
一组件,用于通过使用所述第三边、所述第一顶点、和所述第一边获得第三细分表面的面信息;
一组件,用于通过使用所述第一边、所述第二顶点、和所述第三边获得第四细分表面的面信息。
35.根据权利要求34所述的集成电路,其中:
所述多个细分的边包括组成所述第一边的第一对细分的边、组成所述第二边的第二对细分的边、和组成所述第三边的第三对细分的边;
所述多个附加边包括第一附加边、第二附加边、和第三附加边;以及
用于生成所述第二组细分数据的组件还包括:
一组件,用于通过使用所述第一对细分的边中的第二个边、所述第二对细分的边中的第一个边和所述第一个附加边,获得所述第一细分表面的细分数据;
一组件,用于通过使用所述第二对细分的边中的第二个边、所述第三对细分的边中的第一个边和所述第二附加边,获得所述第二细分表面的细分数据;
一组件,用于通过使用所述第三对细分的边中的第二个边、所述第一对细分的边中的第一个边和所述第三附加边,获得所述第三细分表面的细分数据;以及
一组件,用于通过使用所述第一、第二和第三附加边,获得所述第四细分表面的细分数据。
36.根据权利要求30所述的集成电路,其中,所述第二组面信息和所述第二组细分数据分别包括多个限定所述对应的细分表面的顶点和边。
37.根据权利要求30所述的集成电路,其中,设置在所述集成电路上的所述多个组件被实时执行,因此允许所述多个细分表面被实时生成。
38.根据权利要求30所述的集成电路,其中,通过使用控制逻辑或硬件或两者的结合来应用所述多个组件。
39.一种具有根据权利要求30所述的集成电路的视频游戏机。
40.一种具有根据权利要求30所述的集成电路的图形卡。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/104,623 | 2002-03-20 | ||
US10/104,623 US6741249B1 (en) | 2002-03-20 | 2002-03-20 | Method and system for generating subdivision surfaces in real-time |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1647116A true CN1647116A (zh) | 2005-07-27 |
Family
ID=28452382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA038082373A Pending CN1647116A (zh) | 2002-03-20 | 2003-03-19 | 用于实时生成细分表面的方法和系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6741249B1 (zh) |
EP (1) | EP1488379A2 (zh) |
JP (1) | JP2005521168A (zh) |
KR (1) | KR100578684B1 (zh) |
CN (1) | CN1647116A (zh) |
AU (1) | AU2003220490B2 (zh) |
WO (1) | WO2003081528A2 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4913823B2 (ja) * | 2006-11-01 | 2012-04-11 | 株式会社ディジタルメディアプロフェッショナル | 拡張されたプリミティブの頂点キャッシュの処理を加速する装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606584B1 (en) * | 1999-10-29 | 2003-08-12 | Intel Corporation | Defining a neighborhood of vertices in a 3D surface mesh |
US6525727B1 (en) * | 1999-10-29 | 2003-02-25 | Intel Corporation | Rendering 3D surfaces through limit surface projections |
US6476813B1 (en) * | 1999-11-30 | 2002-11-05 | Silicon Graphics, Inc. | Method and apparatus for preparing a perspective view of an approximately spherical surface portion |
US6603473B1 (en) * | 2000-04-12 | 2003-08-05 | California Institute Of Technology | Detail data pertaining to the shape of an object surface and related methods and systems |
US6563501B2 (en) * | 2000-07-28 | 2003-05-13 | Adrian Sfarti | Bicubic surface rendering |
-
2002
- 2002-03-20 US US10/104,623 patent/US6741249B1/en not_active Expired - Lifetime
-
2003
- 2003-03-19 CN CNA038082373A patent/CN1647116A/zh active Pending
- 2003-03-19 JP JP2003579172A patent/JP2005521168A/ja active Pending
- 2003-03-19 KR KR1020047014743A patent/KR100578684B1/ko not_active IP Right Cessation
- 2003-03-19 WO PCT/US2003/008964 patent/WO2003081528A2/en active IP Right Grant
- 2003-03-19 EP EP03716800A patent/EP1488379A2/en not_active Withdrawn
- 2003-03-19 AU AU2003220490A patent/AU2003220490B2/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
WO2003081528A3 (en) | 2004-03-04 |
AU2003220490A1 (en) | 2003-10-08 |
US6741249B1 (en) | 2004-05-25 |
JP2005521168A (ja) | 2005-07-14 |
KR20040101324A (ko) | 2004-12-02 |
AU2003220490B2 (en) | 2007-11-29 |
KR100578684B1 (ko) | 2006-05-12 |
EP1488379A2 (en) | 2004-12-22 |
WO2003081528A2 (en) | 2003-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100342331C (zh) | 用于执行渲染美术品的着色器驱动编译的方法 | |
CN1324525C (zh) | 用于嵌入和检测图像中数字水印的装置和方法 | |
US6587592B2 (en) | Generating replacement data values for an image region | |
US8457405B2 (en) | Example-based procedural synthesis of element arrangements | |
CN1294456C (zh) | 执行基于模型的光刻校正的方法 | |
CN1655192A (zh) | 基于深度图像的三维图形数据的高速显像的装置和方法 | |
CN101063972A (zh) | 用于增强映像树的可视性的方法和装置 | |
CN1734503A (zh) | 使用光谱分析的伸展驱动的网格参数化 | |
CN1734499A (zh) | 通过动态规划进行修边 | |
CN1113666A (zh) | 图形边系统 | |
CN1932885A (zh) | 三维图像处理 | |
CN1719455A (zh) | 基于色彩的彩色图像的区域分割技术 | |
CN104626585A (zh) | 一种用于sla3d打印机的平面分割方法及装置 | |
CN1788283A (zh) | 镜头呈现方法和装置 | |
CN1449543A (zh) | 图像处理装置、图像处理方法和记录该方法的记录介质 | |
CN1695151A (zh) | 计算机辅助设计系统和程序 | |
CN1841388A (zh) | 光掩模的制造方法和利用光掩模制造半导体器件的方法 | |
CN1784683A (zh) | 多媒体数据的识别方法及其程序 | |
CN1612047A (zh) | 执行基于模型的光邻近校正的方法 | |
CN101038675A (zh) | 实现水墨风格渲染的方法及装置 | |
CN1311390C (zh) | 三维形状数据向单元内部数据的变换方法 | |
CN1942901A (zh) | 图像处理装置及图像处理方法 | |
CN106780393B (zh) | 基于图像集的图像去噪方法 | |
US9710943B2 (en) | 2D region rendering | |
CN1647116A (zh) | 用于实时生成细分表面的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20050727 |