在与二维对象的拐角相关联的单元内生成一个二维距离场的方法

文档序号:6473906阅读:201来源:国知局
专利名称:在与二维对象的拐角相关联的单元内生成一个二维距离场的方法
技术领域
本发明主要涉及计算机图形学领域,并且尤其涉及由距离场表示的二维对象的渲染。
背景技术
在计算机图形学领域,二维对象的渲染(rendering)是十分重要的。二维对象,如字符形状、企业标志以及包含在文档中的图例元素,都是作为静态图像或是作为组成一个动画的一系列帧进行渲染的。二维对象有多种表示方法,并且常常会出现这样一种情况,即对于特定的操作如渲染与编辑,一种表示方法要优于其他的表示方法。在这种情况下,就要进行从一种形式到另一种形式的转换。
尽管此处我们关注数字的字型(type),这可能是最常见最重要的二维对象了,但是下列说明适用于所有类型的二维对象。
我们从数字字型的一些基础背景开始。一种典型的拉丁字体族,如Times New Roman或Arial,包括一组字体(font),比如常规、斜体、粗体或粗斜体。每种字体包括一组单独的字符形状,称为字形(glyphs)。每种字形由它不同的设计特征来区分,比如基本的几何形状、笔画浓度、衬线、连笔形式、布局以及轮廓、薄-厚笔画的比例,以及尺寸。
有多种方法可用来表示字体,包括位图、轮廓线,比如Type1[Adobe Systems,Inc.1990]和Truetype[Apple Computer,Inc.1990],以及过程字体,比如Knuth的Metafont,其中轮廓线起主导作用。基于轮廓线的表示方法被Mass.Cambridge的Bitstream Inc.、Calif.Mountain View的Adobe System,Inc.、Calif.Cupertino的AppleComputer,Inc.、Wash.Bellevue的Microsoft Corporation、德国Hamburg的URW以及Mass Wilmington的Agfa Compugraphic采用并推广。
由Hersch所著并发表于Cambridge University Press,1993的“Visual and Technical Aspects of Type(字体的视觉与技术观点)”以及由Knuth所著并发表于Digital Press,Bedford,MA 1979的“TEXand METAFONTNew Directions in Typesetting(TEX与元字形排版的新方向)”中,包含了大量关于字体的历史与科学的综合评论。
具有特殊重要性的是两类字型尺寸正文字型尺寸和显示字型尺寸。正文字型的字体以相对较小的磅值渲染,如14磅或更小,并且被使用在一个文档的主体(正文)部分中,就像在本段落中一样。正文字型要求高质量的渲染,以获得清晰度和阅读舒适度。正文字型的尺寸、字样以及基线方向在单篇文档中很少改变。
显示字型的字体以相对较大的磅值渲染,如36磅或更高,并且被用于标题、头条、以及为表达情绪或引起注意的设计及广告中。与正文字型不同,显示字型注重美观,其中缺少空域及时域上的锯齿(aliasing)是重要的,而非清晰度,其中对比度比反锯齿(antialising)更重要。用来表示及渲染字型的框架应该能够处理好这两种具有相互冲突的需求的类型,这一点是至关重要的。
字型可以以二值、灰度或彩色的形式被提供给一个输出装置,比如打印机或显示器。某些渲染引擎为非常小的字型尺寸使用二值渲染,以达到较好的对比度。然而,具有良好提示的灰度字体是同样清楚可辨别的。
“提示”是与每种字形存储在一起的一组规则或过程,用以规定在渲染过程中如何修改字形的轮廓线,以保持诸如对称性、笔画浓度之类的特性,以及一种字体中所有字形的统一外观。
尽管人们已经尝试设计自动和半自动的提示系统,但是提示过程仍然是新字体设计以及转换现有字体以供低分辨率显示设备使用中的主要瓶颈。另外,解释提示规则的复杂性导致不能运用硬件进行字体渲染。缺少硬件支持,就不得不在软件光栅化的过程中作出折衷,比如每个象素使用更少的样值,特别是在实时地生成动态字型时。
灰度字体渲染通常包含某些形式的反锯齿。反锯齿(Antialising)是一种处理过程,它能消除二值字体中出现的锯齿边缘或阶梯效应。尽管有多种字体渲染引擎都适合使用,但是大部分都会在网格装配及提示之后以每象素4或16个采样值进行过采样,随后分别以2×2或4×4的箱式滤波器进行下采样。
基本的滤波,如箱式滤波(box filtering),出于渲染速度的需要而是必要的。但是,即使是那种方法,对于实时渲染(如动态字型所需的那样)而言常常也是太慢的,从而经过渲染的字形会带有空域或时域上的锯齿。
印刷术的两个重要发展趋势揭示了现有技术的字体表示方法的某些固有局限性,由此提出了变革的需求。
第一种趋势是越来越多地强调在屏幕上阅读文本,这种趋势是由计算机在办公室中的主角地位、家庭互联网浏览普及程度的提高以及PDA与其他手持电子设备的广泛使用共同引起的。这些显示设备通常具有每英寸72-100点的分辨率,这种分辨率显著低于印刷设备的分辨率。
在对字型进行光栅化时,这种低分辨率需要特殊对待以保证阅读舒适度和清晰度,比如Microsoft与Bitstream公司在他们各自的ClearType与FontFusion技术中投入使用的资源就证明了这一点。
第二种趋势是动态字型(animated type)或动态印刷术的使用。动态字型被用来表达情感、增添趣味性以及在视觉上吸引读者的注意。动态字型的重要性由它在电视及互联网广告中的广泛使用即可见一斑。
不幸的是,传统的基于轮廓线的字体在这两个领域内都有局限性。在低分辨率显示器上渲染字体需要仔细对待,以便平衡对良好对比度的要求以及降低空域和/或时域锯齿的要求,前者是清晰度所需,后者则是阅读舒适度所需。
如上所述,基于轮廓线的字体通常会被提示,以向渲染引擎提供指示,从而获得最佳外观。字体提示是煞费劳力且成本高昂的。例如,为日文或中文字体开发一套具有完善提示的字体图案可能要耗费数年时间,这两种字体中可能包含了超过一万种的字形。由于提示的焦点在于改善正文字型的渲染质量,因此这种提示对于放置在任意路径上的字型以及对于动态字型来说是效果不佳的。
尽管高质量的滤波可以被用来反锯齿静态文档中的灰度字型,其中这种文档中只含有有限数量的字体尺寸和字体图案,但是在动态字型中进行滤波往往会受到实时渲染要求的限制。

发明内容
本发明提供了在与一个二维对象的一个拐角相关联的一个单元内生成一个二维距离场的方法。确定所述二维对象的边界描述符的一个集合。根据所述的边界描述符的集合识别所述单元中的一个拐角点。所述拐角点表示所述对象的所述拐角。所述拐角点将所述的边界描述符的集合划分成两个子集。所述单元被划分成两个区域,其中一个区域最接近所述拐角点,而另一个区域最接近所述的边界描述符的集合。确定经过所述拐角点的两条直线,以便每条直线对应于所述的边界描述符的两个子集之一。这些直线限定所述的两个区域。指定一个值集合和使用两个区域的一种方法,该方法用于在所述单元内重建所述距离场。所述拐角点、限定所述的两个区域的所述直线、所述重建方法以及所述的值集合被储存在一个存储器中,以便能够通过应用所述重建方法在所述单元内重建所述距离场。


图1A与lB示出了现有技术下字形的距离场表示的框图;图2A与2B根据本发明的优选实施例示出了距离场表示的框图;图3根据本发明的优选实施例示出了距离场的一个双二次单元的框图;
图4根据本发明示出了一种用来按图像顺序反锯齿一个对象的方法的流程图;图5示出了本发明所使用的一种线性滤波器的图;图6A、6B及6C示出了一个象素成分附近的采样的示意图;图7根据本发明示出了一种用来按对象顺序反锯齿一个对象的方法的流程图;图8根据本发明示出了一种用于基于距离的自动提示的方法的流程图;图9根据本发明示出了一种用来将一个笔画转换成一个距离场的方法的流程图;图10根据本发明示出了用来将一个二维对象转换成一个距离场的方法的流程图;图11根据本发明示出了用来将一个距离场转换成边界描述符的方法的流程图;图12根据本发明示出了用来动态化一个对象的方法的流程图;以及图13根据本发明示出了用来生成一个包含有一个二维对象的一角的单元中的二维距离场的方法的流程图。
具体实施例方式
字形的距离场表示我们的发明将一个闭合的二维形状S——如字形、企业标志或一个对象的任何数字化表示形式——表示为一个二维的有符号距离场D。为了我们的说明目的,我们借助于字形。
通俗地说,一种字形的距离场度量了从场中任意一点到字形边缘的最短距离,其中如果所述点位于所述字形之外,那么所述距离的符号就是负的,而如果所述点位于字形之内,则所述距离的符号就是正的。边缘上的点距离为零。
正式地说,距离场是作用于所有p∈R2的一种映射DR2→R,从而使得D(p)=sign(p)·min{‖p-q‖对于所有位于零等值面上的点q,即S的边缘},sign(p)={-1,如果p在S之外;+1,如果p在S之内},并且‖·‖为欧几里得范数。
现有技术基于覆盖的渲染方法使用单个离散的样点来表示每个象素,即使在所述的样点充分靠近轮廓线时,这种方法也可能完全弄错字形。被渲染的字形有锯齿状边缘以及漏失的部分,这两者都是空域锯齿的表现形式。如果所述的字形被动态化,那么时域锯齿就会导致闪烁的轮廓和锯齿状的边缘,它们在运动期间就像“蠕动”一样。对每个象素采用额外的样点以形成一种反锯齿的渲染,这样做可以消除这些锯齿效应,但是要达到可接受的结果需要许多样点。
相反,即使当样点位于形状之外时,根据我们的发明的连续采样距离值也能表示出字形的近似。实际上,单个样点值可以被用来估算有多少字形位于以各个象素为中心的滤波器覆盖范围之内。
另外,由于距离场平缓地变化,即它是C0连续的,因此采样值会随字形运动而缓慢变化,从而减少了时域锯齿成分。
距离场还拥有其他优点。由于它们是一种隐式的表示方法,因此它们享有隐函数的好处。具体地说,距离场提供了一种用于设计字体的直观界面。例如,字形的个别部分,如直笔、横笔、弧形笔画或衬线可以分别独立设计。在设计之后,所述的部分就可以利用隐式组合方法组合在一起,以构成相同字体图案的不同字形。
距离场在动态排版术或动态字型领域还能提供许多好处,因为距离场所提供的信息对于模拟对象间的互动是非常重要的。
在一种优选实施例中,我们采用自适应采样的距离场,即ADF,参见美国专利6396492号,Frisken、Perry及Jones的“Detail-directedhierarchical distance fields(面向细节的分级距离场)”,此处通过引用包含进来。
ADF是距离场的有效数字表示法。ADF运用面向细节的采样以减少表示距离场所需的样点数。所述的样点被存储在单元的空域分级结构中,如四叉树中,以便进行高效的处理。另外,ADF还提供了用来根据采样值重建距离场的方法。
面向细节的或自适应的采样根据场内的局部变化对距离场采样当局部变动大时使用更多的样点,而在局部变动小时使用较少的样点。与常规采样的距离场以及三色四叉树相比,自适应采样显著降低了对存储器的需求,常规采样以均匀的速率采样整个距离场,而三色四叉树则总是在边缘附近以最高速率采样。
图1A-1B对用三色四叉树表示Times Roman的‘a’和‘D’所需的单元数量与用图2A-2B中的双二次ADF表示相同精度所需的单元数量进行了比较。单元数量与存储需求直接相关。两种四叉树都具有相当于512×512的距离值图像的分辨率。用于表示‘a’和‘D’的三色四叉树分别具有17393和20813个单元,而相应的双二次ADF只有457和399个单元。双二次ADF通常所需的单元数比Frisken等人提出的现有技术的双线性表示方法少5-20倍,这一点在“Adaptively SampledDistance Fieldsa General Representation of Shape for ComputerGraphics(自适应采样的距离场用于计算机图形学的通用图形表示法)”中有所说明,该文发表于Proceedings ACM SIGGRAPH 2000,pp.249-254,2000。
双二次重建方法Frisken等人利用四叉树作为ADF空域分级结构,并根据在每个单元的四个角上采样的距离、通过双线性内插在每个单元内重建距离及梯度。他们提出“更高阶的重建方法可以被用来进一步提高压缩率,但是所述数字已经表明额外努力所换得的回报开始减小”。
然而,双线性ADF对于本发明所述的表现、渲染、编辑以及动态化字符字形而言还是不够用的。具体地说,它们需要过多的存储器,处理效率太低,并且在非边缘单元中的重建场的质量对动态模拟之类的操作来说是不够的。
一种“有界表面”方法可以强制在非边缘单元中进行细分,它要求处在距离所述表面(即边缘)一个有界距离内的非边缘单元通过一项误差判定测试,参见Perry等人所著的“KizamuA System forSculpting Digital Characters(Kizamu一种用于塑造数字字符的系统)”,该文发表于Proceedings ACM SIGGRAPH 2001,pp.47-56,2001。尽管上述方法减少了该有界区域内距离场的误差,但我们发现对于双线性ADF来说,那种方法会导致无法容忍的单元数量增加。
为了应对那些局限性,我们用双二次重建方法替代了双线性重建方法。典型字形的双二次ADF所需要的单元比双线性ADF少5-20倍。当我们要求在非边缘单元中得到精确的距离场以便进行动态模拟和动态化字型这样的操作时,所需单元数就出现了更高的减少量。
这种显著的存储量减少使得一个典型动画所需的字形能够被存入现代CPU的片上高速缓存中。这对处理时间有着惊人的影响,因为对系统存储器的访问基本上被排除了,这样就轻易地补偿了高阶重建方法所需的额外计算。
图3根据我们的优选实施例示出了一个双二次ADF单元300。双二次ADF中的每个单元包含9个距离值301。点(x,y)302处的距离与梯度都可以根据下列方程1-3由这9个距离值重建出来。
有多种双二次重建方法可供使用。我们采用二变量内插多项式,它能保证沿同样大小的相邻单元的公共边缘的C0连续性。与使用双线性方法一样,不同大小的相邻单元之间距离场的连续性是利用误差判定来维持在一个规定容限内的。所述的误差判定在ADF生成期间控制单元的细分,参见上述Perry等人的著作。
点(x,y)302处的距离与梯度如下确定,其中x和y都是用单元坐标表示的,即(x,y)∈
×令xv1=x-0.5且xv2=x-1令yv1=y-0.5且yv2=y-1令bx1=2xv1·xv2、bx2=-4x·xv2且bx3=2x·xv1令by1=2yv1·yv2、by2=-4y·yv2且by3=2y·yv1dist=by1·(bx1·d1+bx2·d2+bx3·d3)+by2·(bx1·d4+bx2·d5+bx3·d6)+ (1)by3·(bx1·d7+bx2·d8+bx3·d9)gradx=-[by1·(4x·(d1-2d2+d3)-3d1-d3+4d2)+by2·(4x·(d4-2d5+d6)-3d4-d6+4d5)+ (2)by3·(4x·(d7-2d8+d9)-3d7-d9+4d8)]
grady=-[(4y-3)·(bx1·d1+bx2·d2+bx3·d3)-(8y-4)·(bx1·d4+bx2·d5+bx3·d6)+ (3)(4y-1)·(bx1·d7+bx2·d8+bx3·d9)]利用浮点运算重建一个距离可能需要约35次浮点操作(flops),而利用浮点运算重建一个梯度则需要约70flops。由于我们的重建方法不包含分支,并且字形可以完全存放在一个片上高速缓存中,因此我们就可以通过利用特殊的CPU指令以及现代CPU的深指令流水线来进一步优化这些重建方法。另外,我们还可以利用定点运算来重建距离与梯度。
用于传输及存储的压缩线性四叉树ADF四叉树的空域分级结构是某些处理过程(如冲突检测)所需要的,但是对于其他处理,比如下文中将要说明的基于单元的渲染来说却不是必要的。
要为ADF字形的传输及存储提供压缩,我们采用一种线性四叉树结构,该结构将我们的双二次ADF存储为一个叶单元列表。该树状结构可以根据需要由所述的叶单元恢复出来。
线性ADF四叉树中的每个叶单元中包括该单元的x和y位置,每个位置用2个字节表示,该单元的级别用1个字节表示,单元中心处的距离值用2个字节表示,以及8个距离中心的距离偏移量各用1个字节表示,每个单元总共15个字节。
各个距离偏移量是通过从中心距离值中减去其对应样点的距离值、用单元大小进行比例缩放以减小量化误差、再截取成8个比特,从而得到的。表示每个单元位置的两个字节以及表示单元级别的一个字节可以以高达216×216的分辨率表示ADF。这对于表示在显示屏分辨率下渲染的字形来说是足够了。
字形能够用16比特的距离值精确表示。将8个距离值编码成8比特的距离偏移量比各用两个字节存储每个值要节省的多。尽管在理论上,这样做可能会导致大单元的距离场中出现一些误差,但我们还未发现任何视觉效果上的退化。
一个高分辨率的字形通常需要500-1000个叶单元。无损熵编码可以额外得到35-50%的压缩。因此,高分辨率ADF的整个字体图案可以用300-500Kbytes表示出来。如果只需要正文字型或者目标分辨率比较粗糙,就像用于移动电话的情况,那么就可以使用仅需1/4至1/2单元数的低分辨率ADF。
这些存储量显著小于灰度位图字体,并且与带有良好提示的基于轮廓线的字体的存储量相当,所述灰度位图字体的每种字体图案的每个点尺寸需要约0.5Mbytes。TrueType字体的大小从数十Kbytes到数十Mbytes不等,取决于字形数量以及提示方法的数量。Arial和Times New Roman是Monotype Corporation的两种具有良好提示的字体,它们分别需要266Kbytes和316Kbytes。
从轮廓线实时生成根据我们的发明,ADF可以根据已有的轮廓线或边界描述符(比如Bezier曲线)利用Perry等人所述的平铺生成器快速地生成,下文中将对此进行详细的说明。到字形轮廓线或边界的最小距离可以利用Bezier裁剪高效地计算出来,参见Sederberg等人所著的“GeometricHermite Approximation of Surface Patch Intersection Curves(曲面交线的几何赫尔米特近似)”,该文发表于CAGD,8(2),pp.97-114,1991。
在2GHz Pentium IV处理器上生成每个字形需要0.04-0.08秒。整套字体图案可以在大约4秒内生成。由于不需要传统的提示,生成ADF所需的边界描述符远远小于它们相应的有提示的对应物。
因此,我们可以存储这些最小轮廓线,并根据需要由这些轮廓线动态地生成ADF字形,而不是存储ADF。这些最小轮廓线的小尺寸对于存储空间有限的设备以及在有限带宽的网络上传输字形的应用来说是很重要的。
图10示出了用于将二维对象(比如字形)转换成二维距离场的方法1000。对象1001被表示成一组边界描述符(比如曲线spline)和一个填充规则(比如一种奇偶规则或非零环绕规则)。
所述的一组边界描述符首先经过预处理1010。该预处理过程对边界描述符进行细分以减小它们的空间跨度。所述的边界描述符还可以被接合起来以减小边界描述符组的基数。该预处理过程使得我们可以在确定无符号距离时减少为每个位置查询所需的边界描述符数量,这将在下文中说明。
根据经过预处理的边界描述符组1011构建1020一个空域分级结构1021,比如一棵四叉树。交点(intersections)的高速缓存1031被初始化1030。交点的高速缓存1031中储存边界描述符与一组直线(比如距离场的水平线、垂直线、对角线等等)相交的位置,以及相交的方向。这样做能够去除决定无符号距离的符号时的冗余计算。可以根据间隔对这些相交点排序。
然后在一组位置上查询1040所述的空域分级结构1021,以确定那些位置上的一组距离。该组距离被用来构建一个二维距离场1041。所述的查询在每个位置上调用一个距离函数,比如Bezier裁剪,以测定一个无符号的距离。交点的高速缓存、所述的位置以及所述填充规则都被用来为该距离决定一个符号。
通过基于组件的字体的压缩适用于中文、日文以及韩文字体的有效压缩可以通过使用FontFusion中所用的基于组件的表示法来实现,所述的这些字体中可能包含10000或更多的字形。所述的表示法将字形分解成通用的笔画和部首,即多种字形共用的复杂形状,将这些笔画和部首存储到一个字体库中,然后在字体渲染引擎中重新组合它们。
由于距离场是隐式表示法,因此可以利用混合或CSG操作轻易地组合ADF,由此也可见ADF是非常适合通过基于组件的方法进行压缩的。
在二维距离场中表示拐角双线性或双二次重建方法所用的面向细节的采样允许ADF用较少数量的距离值来表示一个二维对象的边界的相对平滑的部分。然而,在拐角附近,距离场有较大的变化,这些重建方法就不能很好地近似了。为了精确地表示拐角附近的距离场,这些ADF要求包含拐角的单元被高度细分,从而显著提高了存储器需求。另外,ADF的最大细分层次限制了用双线性及双二次ADF单元表示拐角所能达到的精度,其中如Perry等人所述最大细分层次是在ADF生成期间施加的。
为了应对这个问题,我们的发明提供了一种方法1300,该方法可以在含有二维对象(如字形)的拐角的单元内生成一个二维距离场。
方法1300从二维对象确定1310一个边界描述符的有序集合1311,并根据边界描述符1311的有序集合识别出1320一个单元内的拐角点1321。然后该单元被划分1330成两个区域,最接近拐角的第一区域和最接近对象边界的第二区域。方法1300还规定了1340一种重建方法以及一组采样距离值1371,用于重建所述单元内的距离场,并且该方法将拐角点1321、界定区域的线条、重建方法以及采样距离值集合1371储存1380在一个存储器中。
所述的重建方法根据某一点所在的区域来决定单元内该点处的距离。第一区域内一个查询点的距离被定为从该查询点到拐角点的距离。
为了确定第二区域内的距离,我们将边界描述符的有序集合1311划分1350成两个子集,一个子集中包含拐角点1321之前的边界描述符,一个子集中包含拐角点1321之后的边界描述符。然后,边界描述符的每个子集被扩充1360以形成一条将所述单元划分成内部与外部两个部分的延长曲线。对于每个部分来说,所述单元内的距离场可以根据一组采样距离值1371重建,所述一组采样距离值1371是根据相应的延长曲线确定的1370。双二次重建方法可能需要为所述的两个部分各存储9个距离值。
注意,所述的两个内部部分的相交形成了所述对象的拐角。因此,可以通过重建到第一内部部分的距离以及到第二内部部分的距离,然后再选取两个确定距离中的较小者,来重建第二区域内的距离。
所述的两个区域可以根据通过拐角点的两条有向直线来确定,所述的两条直线各垂直于边界描述符的两个子集之一。每条直线都可以由拐角点以及在该拐角点处对应的边界描述符子集的外向法线决定。当一条直线被如此确定后,我们就可以通过求出从查询点到拐角点的向量与外向法线两者的向量积来确定该查询点位于该直线的哪一侧。位于两条线外侧的点处在第一区域内,而位于任何一条线内侧的点则处在第二区域内。
字体渲染在当今的字体渲染引擎中,字体主要被表示为轮廓线,这些轮廓线可按需要被缩放以匹配所需的输出尺寸。尽管大多数高分辨率打印机使用两级渲染,但是现代显示设备更多地在小点阵尺寸上使用灰度渲染或是灰度与两级渲染的组合形式。
用于光栅化灰度字形的常见方法涉及缩放及提示它们的轮廓线。经过缩放及提示的轮廓线被扫描转换为高分辨率的图像,通常比所需的分辨率高4或16倍。然后,通过施用一种滤波方法(比如箱式滤波器)来对该高分辨率图像进行下采样,以产生最终的灰度图像。
对于正文字型来说,单独的字形可以被光栅化一次并作为一幅灰度位图存储在高速缓存中,以便在预处理步骤中再使用。对字形的子象素布局需要可能要求将被光栅化的每个字形的几个版本。为正文字型使用高速缓存就可以在某些任务期间进行短延时(如1/2秒)的更高质量渲染,所述的任务可以是例如翻阅一份Adobe Acrobat PDF文档。
然而,在任意路径上渲染的字型以及动态化的字形不允许使用高速缓存,因此必须根据需要来产生。实时渲染的需要要求必须使用分辨率较低的滤波,通常为每象素四个采样点以及箱式滤波。这可能引起空域及时域的锯齿。这种锯齿可以利用系统存储器中具有提示的设备字体来消除。然而,维持实时帧率对于如何使用具有提示的设备字体提出了严格的限制,比如说,具有提示的设备字体不能被动态缩放或旋转。
Microsoft最近在ClearType上的工作带来了用于LCD彩色显示器的特殊处理方法,在这种显示器中含有可寻址彩色子象素的重复图案,即成分(component)。Platt在“Optimal Filtering for PatternedDisplays(用于图案化显示器的最优滤波)”一文中描述了一组用于各个颜色成分的感观最优滤波器,该文发表于IEEE Signal ProcessingLetters,7(7),pp.179-180,2000。在实际应用中,所述的最优滤波器被实现为一组三个移位箱式滤波器,每个滤波器用于一种颜色。
ClearType使用现有技术的基于覆盖的反锯齿方法,来决定每个象素的各个成分的强度。与此相对,我们的基于距离场的方法使用距离场来决定每个象素的各个成分的强度,并且使用了较少的样点。下文中所述的ADF反锯齿方法可以取代箱式滤波器,来提供每象素样更少点数的更好的最优滤波器的模拟。
反锯齿(Antialiasing)理解经过渲染的字体中的外表成分需要对锯齿有所认识。通常,一个象素由离散的成分组成,比如彩色打印机或显示器中的红色、绿色及蓝色成分。在一个灰度设备中,象素是单个离散成分。由于象素是离散的,因此将其呈现给输出设备本质上就是一个采样过程。采样率取决于设备的分辨率。采样率至少是源信号中最高(奈奎斯特)频率的两倍,否则采样信号就会出现锯齿。
边缘(比如字形轮廓线)具有无限的频率分量。因此,边缘不能由采样数据准确地表示出来。边缘的采样不足会导致锯齿状图形,这种锯齿状会在运动图像的采样边缘上蔓延。如果源信号也含有一种空域图案,比如‘m’的重复垂直线或是‘i’的单根垂直线,其频率成分对于采样率来说太高了,那么采样数据就会出现信号丢失、波纹图案以及时域闪烁。
为了避免锯齿,输入信号必须经过预滤波以去除超过采样率所允许范围的频率成分。通常,有两种方法进行预滤波。
第一种称为解析滤波。它在采样前对源信号的连续表示形式进行某种形式的空域平均。不幸的是,解析滤波常常是不可行的,或是因为源数据不是以连续信号的形式提供,在图像处理中这是很正常的情况,或是因为确定信号在滤波器作用范围内的解析表示太复杂了。对于计算机图形学中所有除了简单几何图形外的几何形状都会出现这种情况,当然对基于样条线的轮廓线来说也会同样出现这种情况。
第二种方法称为离散滤波。在那种方法中,通常以高于目标速率的速率采样源信号,以获得一幅过采样图像。然后,在将图像下采样到目标速率之前,使用一个离散滤波器来减少过采样图像中的高频成分。该离散方法在计算机图形学中被称为常规过采样。
根据处理预算、硬件考虑以及个人对输出图像中对比度与反锯齿度的偏好,可以使用各种不同的离散滤波器。通常被用来渲染字型的箱式滤波器用一个过采样值方阵的算术平均来替代这个过采样值方阵,这种方法在信号处理界通常被认为是比较低级的。
在另一种方法中,自适应过采样将可用于采样及滤波的资源集中用于具有较高的局部频率分量的图像区域。最优自适应采样可以根据图像中的局部变化性来确定。然而,这种技术的实用性会受到估算图像局部变化的需要的限制,这种估算过程可能是计算代价高昂的。
由于对高频图案的常规采样不足而引起的波纹图案,是人类视觉系统尤其反感的。在一般的图像处理中,随机或跳动采样被用来解决这一问题。对于随机采样,采样点会随机地略微偏离它们的指定位置。随机采样会用高频噪声替代波纹锯齿,并且已经被证实在减少时域锯齿中特别有效。
使用基于距离的反锯齿的渲染在现有技术的字体渲染中,由字形边缘引入的无限频率分量是锯齿的主要成分。与之相对,通过利用2D距离场来表示2D对象,并根据本发明采样2D距离场,我们就能避开这些边缘,因为所述的表示方法是C0连续的。最高频率取决于字形本身的空域图案,比如‘m’的重复垂直线或是‘i’的单根垂直线。
通过用字形的2D距离场表示字形,我们就能有效地对该字形使用解析预滤波器。下文中所述的我们用于渲染距离场的反锯齿方法所产生的输出与传统解析预滤波器的输出不同。
利用距离场进行反锯齿图4示出了用来按图像顺序反锯齿一个对象401(如一种字形)的方法400,所述的对象被表示410成一个二维距离场411。每个象素402中可以包括一个或多个成分404,通常是用于‘RGB’类型输出设备的红、蓝或绿色成分。该方法可以为每个象素402的各个成分404使用一个或多个采样点。方法400提供自适应的基于距离的过采样、基于距离的自动提示以及基于距离的栅格装配。结果得到的反锯齿象素强度可以被作为一幅图像的一部分呈现在CRT以及类似LCD的显示器上。该方法对于渲染运动模糊特别有用。
表示对象401的二维距离场411的采样点407的一个集合403与每个象素402的各个成分404相关联420。根据二维距离场411以及采样点403的集合来确定430一个距离(D)405。然后,距离405被映射440为象素402的成分404的反锯齿强度(I)406。
在优选实施例中,字形401由双二次ADF 411表示,如上文所述。这样就使得在字体渲染过程中使用基于距离的反锯齿方法效率很高。其他的表示方法,比如二维距离图、二维距离壳以及程序性距离场,也都可以被采用。
对于一幅图像中每个象素402的各个成分404,都要利用四叉树遍历方法来定位一个含有成分404的单元,比如叶单元,所述的遍历方法在美国专利申请10/209302中有所说明,该专利于2002年7月31日提交,题为“Method for Traversing Quatrees,Octrees,andN-Dimensional Bitrees(用于遍历四叉树、八叉树以及N维二叉树的方法)”,本文通过引用将该专利申请完全包含进来。尽管本技术领域内其他已知的方法也可以被用于我们的发明,但是上述方法是无需进行比较的,因此执行效率更高。成分404处的距离根据单元的距离值重建出来,并被映射440为反锯齿强度(I)406。
可以使用不同的映射,包括线性、高斯以及S形函数。最佳映射函数的选择是主观的。在一个实施例中,我们的映射是两个函数的组合。第一个函数如上所述,第二个函数是对比度增强函数。这两个函数被组合起来以便将距离场(D)405映射440为成分404的反锯齿强度(I)406。
图5示出了作为距离502的函数的强度501的线性映射500,比如
。该映射为象素的各个成分把距离转换成反锯齿图像强度。距离在对象内部是正的,在对象外部则是负的。不同的截止值503和504会影响边缘对比度以及笔画浓度。我们为显示字型采用(-0.75,0.75)象素的外部503及内部504滤波器截止值,为正文字型采用(-0.5,0.625)象素的滤波器截止值,达到了良好的效果。
基于距离的最优自适应过采样上述基于距离的反锯齿方法减少了字形边缘引起的锯齿。然而,当笔画宽度或是字形各部分之间的距离对于显示器采样率来说太小时,锯齿成分仍会出现。在这种情况下,我们就要使用下文中将要说明的基于距离的自适应过采样,以进一步减少空域及时域的锯齿。
在优选实施例中,我们使用带有我们独创的基于距离的自适应过采样的双二次ADF,相对现有技术的基于轮廓线的表示法以及基于覆盖的自适应过采样方法而言,该方法具有显著的优势。由于ADF采用面向细节的采样,因此局部变化性较强的距离场区域可由较小的叶细胞表示。由此,ADF四叉树的结构提供了实现基于距离的最优自适应采样所需的局部变化的映象,从而克服了上文中所述的现有技术自适应过采样反锯齿方法中确定局部变化性的困难。
对于图像中每个象素402的各个成分404,都要定位含有成分404的单元,并且要将位于该成分的滤波器工作半径r以内的一组403采样点407与该象素成分404关联起来420。每个成分中的采样点407的数量(spc)取决于单元尺寸(cellSize)对r的相对大小。采样点407处的采样距离经过滤波,以确定430一个单个加权平均距离405,然后该距离被映射440成象素402的成分404的反锯齿强度406。
有多种不同的滤波器及采样策略可以使用。在优选实施例中,我们使用一种普通形式的高斯滤波器,用W-12-3(d/r)2对各个距离采样值加权,其中d是该采样点到象素成分的距离,W则是用于那个成分的权重总和。类似的结果也可以用箱式滤波器、锥形滤波器、负瓣滤波器以及其他形式的高斯滤波器得到。
图6A-C示出了我们的采样策略。采样点407被定在成分601附近的同心圆610上,以便高效地计算权重及权重总和。我们使用象素间距的1.3倍作为滤波器半径r 602,并在cellSize>r(图6A)时采样1个spc,在r/2<cellSize≤r(图6B)时采样5个spc,在cellSize≤r/2(图6C)时采样13个spc。
除了同心圆之外,本发明还可以使用多种其他策略来关联采样点407与象素成分404。我们的方法对具体的采样策略并不特别敏感。
下文中所述的另一种自适应采样策略,将采样点定在滤波器半径r以内所包含的所有单元的中心。该策略能得到同样良好的结果。
基于单元的反锯齿上述的距离场反锯齿方法可以利用基于扫描线的光栅化方法在软件中实现。替换地,被划分成单元的距离场也可以一个单元接一个单元地反锯齿化,即按对象顺序反锯齿。基于单元的渲染消除了为定位含有采样点的单元而进行的树遍历,消除了用于计算单个单元内距离以及梯度的冗余设置,并且减少了单元数据的重复检索,即内存读取。
另外,由于渲染所需的单元可以被表示为固定大小的自包含的单元的序列块,即单元内的点的距离及梯度可以根据单元的距离值确定,因此我们的基于单元的方法容易用硬件实现,从而使得实时渲染成为可能。
图7示出了一种用来按对象顺序渲染对象701(例如一个字形)的方法700,所述的对象被表示710为一个二维距离场711。方法700提供了基于距离的自适应过采样,基于距离的自动提示以及基于距离的网格装配。最终得到的经过反锯齿的象素强度可以作为一幅图像的一部分被呈现在CRT以及LCD类的显示器上。该方法对于渲染运动模糊特别有用。当二维距离场711的单元被组织在一个空域分级结构中时,我们可以利用MIP映射(mipmapping)来减少所需的距离采样点数量。
二维距离场711被划分成多个单元712。在一个优选实施例中我们使用双二次自适应采样的距离场,其中每个单元的大小取决于二维距离场的局部变化性。每个单元都包括一种方法(M)713,用于重建该单元内的二维距离场。一组含有待渲染的距离场的区域(虚线)722的单元721被识别720出来。
区域722被用来定位730一组与该区域有关的象素731。对应于象素731集合中的各个象素的一组成分741被指定740。然后,根据单元集合中的距离为每个象素的各个成分决定反锯齿强度751。这里,所述的距离是根据单元集合重建的。然后所述的距离就被映射为反锯齿强度,如上所述。
在一个实施例中,我们可以通过定位单元集合中靠近象素成分的一个单个采样点、并重建该单个采样点到单元集合的距离,来确定距离。在我们的优选实施例中使用了双二次自适应采样的距离场,我们通过对小于滤波器半径的单元进行特殊处理而增强了该方法,其用于基于距离的自适应过采样。由于小单元出现在距离场中变化性较强的位置,因此可以在将距离映射为强度前,对靠近这些单元的象素距离进行预滤波。
我们对元素的合成缓存器进行初始化,其中的每个元素对应于所述象素集合中各个象素的一个成分。单元集合中的每个单元都可以被独立地处理。在优选实施例中,每个单元包括一个加权距离以及一个累计权重,两者都被初始化为零。在一个单元被处理时,这些加权距离以及累计权重在缓冲器元素中被递增,其与位于所述单元内或是位于所述单元中心的滤波器半径内的象素成分相对应。
在处理了所有的单元之后,用累计权重对每个象素的各个成分的加权距离归一化,以产生接着将被映射为反锯齿成分强度的距离。在优选实施例中,我们使用与上文所述相同的高斯加权和滤波器半径。
至此所述的基于单元的渲染总是要处理单元集合中的每个叶单元,而不管每个单元对滤波器半径的相对大小。理论上,这样做提供了最优的基于距离的自适应过采样。而实际上,ADF四叉树可以被用作MIP映射以减少单元数量。
ADF四叉树结构使得我们可以用小的叶单元的前辈来替代小的叶单元,从而有效地裁剪了一些预定单元尺寸的四叉树。只要该单元尺寸小于或等于象素间间隔的1/4,那么在基于距离的自适应过采样结果中就不会存在视觉效果上的退化。这样做减少了渲染该区域所需的单元数。
处理象素成分一个象素包括一个或多个成分。例如,典型的CRT或LCD彩色显示器上的象素包括红色、绿色以及蓝色的成分。在我们的发明中,当象素包括多个成分时,它们就会被单独地处理,如上文中所述,或是被当作一个单个成分处理。当多个成分被当作单个成分处理时,就可以根据单个成分的反锯齿强度来确定该象素的彩色和阿尔法值。
将多个成分当作一个单个成分处理有两个原因。首先,它能减少渲染时间。其次,当多个成分不能被单独寻址,或是当诸单个成分的相对位置未知时,对每个成分进行个别处理就是不可能的。
当显示设备,如LCD,具有可寻址的象素成分时,单独地处理多个成分能够提高显示设备的有效分辨率,这一点在现有技术中是已知的。我们的发明可以充分利用这类设备的这一特性,来提供质量优于现有技术的基于距离的反锯齿。
动态化二维对象图12示出了方法1200的流程图,该方法根据动画脚本1202将对象1201动态化成为一系列的帧。动画脚本1202为所述帧序列中的每一帧指示出对象的条件,例如对象的位置、大小、方向以及变形。该对象被表示为一个二维距离场。根据动画脚本1202,为帧1221序列中的每一帧更新1210对象1201的形态1211。利用经过更新的形态1211以及基于距离的反锯齿渲染方法1212来渲染对象1201。
表示对象1201的二维距离场可以从不同的对象表示法中得到,例如对象的轮廓线描述或是对象的位图描述。
为特定对象1201进行形态1211的更新1210,可以通过对该对象进行各种不同的操作来实现,其中包括刚体变换、自由形态变形、软体冲击变形、水平设置方法、颗粒模拟以及改变其渲染属性。
在渲染1220所述的对象时,我们将表示对象的二维距离场中的一个采样点集合与帧1221序列中的一个帧内的一个象素成分关联起来。通过由所述的二维距离场以及采样点集合来确定一个距离,我们就可以将该距离映射成所述象素成分的反锯齿强度。
在一个优选实施例中,我们将表示对象1201的二维距离场划分成多个单元,每个单元中都包括了用于重建该单元内的二维距离场的方法。为了在该例中进行渲染1220,我们要在表示对象1201的二维距离场中识别出一个单元集合,其含有待渲染的二维距离场区域,还要定位与该区域相关的一个象素集合。指定对应于该组象素中各个象素的一组成分。根据该组单元为象素的各个成分确定一个距离,并将该距离映射为该象素成分的反锯齿强度,从而为该组象素中每个象素的各个成分确定一个反锯齿强度。
基于距离的自动提示标准字体表示法中的提示是一种耗时的手工过程,其中字型设计人员以及提示专家要生成一组规则,以便更好地将字形个体匹配到象素网格中。良好的提示有助于在小字型尺寸下产生间隔合适、具有良好对比度且外表均匀的字形。
这些规则提供具有相同对比度分布的垂线,其左边与底部边缘具有可能实现的最锐利的对比度;字形的对角线条以及纤细圆滑的部分具有足够的对比度,以便向眼睛传递视觉结构;以及衬线,这些衬线结合在一起并提供足以被人眼捕获的强化突出,参见Hersch等人所著的“Perceptually Tuned Generation of Grayscale Fonts(灰度字体的感观调节生成)”,该文发表于IEEE CG&A,Nov,pp.78-89,1995。
注意,现有技术的滤波方法会产生模糊的字符,并向不同的字符部分指定不同的对比度方案,从而违反了字型设计的重要原则。为了克服这些局限性,就要为每种字体的每个字形开发提示。现有技术的提示方法存在许多问题它们的开发耗费劳力,而且非常复杂以至于不能用硬件实现。
对基于轮廓线的字体而言,用提示进行渲染是一个三步骤的过程。首先,所述字形的轮廓线被缩放并与象素网格对齐。其次,轮廓线被修改以控制纵线、横线以及衬线的对比度,并提高非常纤细部分以及弧线的浓度。第三,对经过修改的轮廓线进行过采样,随后进行带有滤波的下采样。
尽管上文中所述的我们未经提示的基于距离的反锯齿渲染方法比现有技术的字体渲染方法更为有利,但是众所周知,感观提示可以提高小字型尺寸下的阅读舒适度。
因此,如图8中所示,我们充分利用距离场来提供基于距离的自动提示,以便进行小点尺寸下的字形渲染。提示中的第一步810是缩放距离场并将其与象素网格对齐。这一步可根据给定的或推导出的字体规格自动完成,比如盖帽高度、x高度以及基线的位置。
在应用了这种网格装配的形式之后,我们就可以利用距离场及其梯度场来提供感观提示。
在一个实施例中,距离场梯度的方向被用来检测820对象左边与底部边缘上的象素。通过暗化830这些象素并亮化840相对边缘上的象素,我们就可以实现左边与底部边缘上较高的对比度,而无需改变明显的笔画浓度。这可以通过降低或提高相应的象素强度来完成。
在另一个实施例中,梯度场被用来为对角线条及细弧线提供更好的对比度。我们注意到,如果一个象素位于或靠近字形的狭窄区域,那么该象素两侧的相邻象素就会具有相反的梯度方向,即,它们的点积为负数。通过检测梯度方向的突变,我们就可以暗化850这些狭窄区域上的象素。
这些只是如何利用距离场来自动提供感观提示的两个实例。所述的距离场也可以被用来提供最佳的字符间距以及均匀的笔画浓度。
生成与编辑字体有两种设计字体的基本方法。第一种是手工。其中,字形靠手绘制、数字化,然后将轮廓线匹配到数字化的位图中。第二种方法则是由计算机完成。
在后一种情况下,有三类工具可供使用。直接的视觉工具可被用于曲线处理。程序设计工具通过执行一个程序的指令来创建字形的形状。该程序或是定义一个形状的轮廓并填充它,或是定义一条由笔尖绘出的路径,该路径有多种属性,其中包括几何形状及方向。基于组件的设计工具允许设计者们创建基本的组件,如直线、弧线以及其他重复出现的形状,然后组合这些组件以产生字形。
我们使用造型编辑器来提供基于笔画的设计。这是与3D雕刻相对的一项2D技术,所述3D雕刻在美国专利申请09/810261中有所说明,该专利申请题为“System and Method for Sculpting Digital Models(用于塑造数字模型的系统与方法)”,于2001年3月16日提交,此处通过引用包含进来。笔画描绘可以被交互地完成,或者也可以编写脚本令其模拟可编程的设计工具。
也可以采用基于弧线的设计,使用Bezier曲线处理工具,该工具与Adobe Illustrator中所用的工具相似。基于弧线的设计方法可以与用来将轮廓线转换成距离场以及将距离场转换为轮廓线的方法组合起来,以提供设计规范间的无缝接口。
基于组件的设计方法在隐式距离场使用CSG以及混合操作。这样就使得组件可以被单独设计,并在编辑或渲染期间组合起来。
我们还提供了一种由模拟及数字字体模板自动生成ADF的方法。
对于基于组件的设计方法,我们的字体编辑器提供了利用四叉树操作来有效反射及旋转ADF的能力,用以塑造字形中常见的对称性。其他的特性包括ADF缩放、平移以及组合多个ADF的操作,比如CSG与混合。
对于基于笔画的设计方法,我们提供了刻图工具,该工具具有几何轮廓以模拟笔尖。模拟笔尖的方向及尺寸可以沿笔画变化,以模仿书法笔迹。
图9示出了用来由一个笔画生成一个二维距离场931的方法900。我们在笔绘期间采样笔的状态,该笔状态包括笔绘期间该笔的位置。该笔状态还可以包括方向与几何形状。根据笔状态采样点901,我们可以沿笔画生成910笔状态的有序列表911。然后,由笔状态的有序列表生成920一组边界描述符921。最后,我们由该组边界描述符921生成930一个二维距离场931。
在优选实施例中,边界描述符921是三次Bezier曲线之类的曲线。
在优选实施例中,我们运用曲线匹配程序来将G2连续曲线的一个最小集合匹配到笔的路径上,其精度由用户指定。我们还利用工具尺寸与方向生成离开该条路径的偏移点的两个额外的有序列表,并将曲线匹配到这些偏移点上,以产生笔画轮廓线。轮廓曲线被放置在一个空域分级结构中,以便有效地处理。我们利用平铺生成器由该分级结构生成一个二维ADF,参见美国专利申请09/810983号,该专利申请于2001年3月16日提交,此处通过引用包括进来。
到轮廓线的最小距离可以利用Bezier裁剪来有效地计算。笔画被转换成ADF,对于用户来说没有感观上的延时。为了进行曲线操作,我们提供了Bezier曲线编辑器。
如图11中所示,我们还提供了将距离场转换为边界描述符(如Bezier曲线)的能力,以提供三种设计规范间的无缝接口。
在优选实施例中,我们使用双二次ADF,其中该转换过程利用ADF分级结构遍历叶单元,以便进行快速的相邻搜索,生成沿ADF零等值线的点的有序列表,然后如下文中参照图11所述的那样匹配曲线以生成边界描述符。
在现有技术中,边界描述符误差是根据点列表计算得出,与之相对,我们直接由距离场计算出边界描述符误差。我们特别注意了尖锐的棱角。我们的方法快得足以让用户在范例间无缝切换,而不会引起明显的延时。
图11示出了用来将二维距离场1101转换成一组边界描述符1131的方法1100。首先,我们选取1110二维距离场1101的等值轮廓线1111,比如距离为零或其他偏移量。
其次,我们由等值轮廓线1111及二维距离场1101生成1120点的有序列表1121。在我们使用了双二次自适应采样距离场的优选实施例中,该步骤利用相邻搜索技术顺序访问了自适应采样距离场1101的相邻单元。该搜索技术充分利用了自适应采样距离场1101的空域分级结构,以便沿着等值轮廓线1111有效地定位下一个相邻的单元。
在另一个实施例中,我们通过选取ADF 1101中的边界单元,以各个边界单元为种子生成一组有序点,并利用ADF 1101的距离场和梯度场将各个点移动到ADF 1101的等值线1111上,以此来生成1120点的有序列表1121。
然后,我们初始化1130一组边界描述符1131,以匹配点的有序列表1121。边界描述符1131的初始化1130是通过将点的有序列表1121中的相邻点结合来完成的,以此形成一组线段,这些线段构成了最初的边界描述符1131。
在另一个实施例中,我们通过定位拐角点、将所述的点的有序列表划分成由这些拐角点界定的片段、并确定片段边界描述符以匹配各个片段,从而初始化1130一组边界描述符1131。片段边界描述符的组合形成了最初的边界描述符1131。
拐角点可以通过测量由距离场求得的曲率来定位。在优选实施例中,距离场是双二次ADF,其中高曲率的区域由ADF中的小单元表示,从而可以利用ADF的单元尺寸来定位拐角点。
一旦边界描述符1131被初始化1130,边界描述符1131就会被更新1140。更新1140通过重建距离场并测量边界描述符离开等值轮廓线的平均或最大偏差,来为每个边界描述符求出一个误差。
边界描述符1131被更新1140,直到每个边界描述符的误差令人满意、或是过了预定时间、或是边界描述符1131的集合的基数最小为止。
为了把以非数字形式(即模拟模板)或以位图之类的数字形式(即数字模板)储存的现有传统字体合并进来,我们的编辑系统提供了用来从高分辨率两级位图生成ADF的方法。
模拟模板首先被扫描来产生某个分辨率下的两级数字模板,该分辨率至少要比目标ADF分辨率高4倍,比如说,4096×4096的数字模板对于今日的显示分辨率及显示尺寸来说就足够了。然后,对位图进行准确的欧几里德距离变换,以生成表示字形的规则采样距离场。
然后,我们利用平铺生成器从该规则采样的距离场生成一个ADF。在2GHzPentium IV处理器上,每个字形的位图到ADF的转换需要约10秒钟。
为了从现有技术的字形描述符转换到距离场,我们应用了参照图10说明的方法,其中在所述的距离场中字形由一组边界描述符表示。
用于动态版式的计算底层我们ADF字形框架的距离场以及空域分级结构属性也可以被用于2D对象的计算机仿真,比如字形、企业标志或是任何2D形状。例如,上述的两种属性都可以被用在冲突检测与避免中,用于计算互相穿过的实体间的作用力,以及用于模拟软体形变。
级设置方法利用了有符号的距离场,该方法可被用来模拟许多效应,比如熔化与流体动力学。ADF是紧凑的隐式表示法,它可被有效地查询以计算距离值和梯度,这是上述方法所需的两种重要计算。
与此相对,由移动或变形的轮廓线来求出距离值和梯度在用于实时互动的软件中是不实用的,参见Hoff等人所著的“Fast and Simple2D Geometric Proximity Queries Using Graphics Hardware(利用图形硬件进行快速简单的2D几何近似查询)”,该文发表于Proc.Interactive 3D Graphics’01,2001。Hoff等人利用图形硬件来为变形曲线实时生成规则采样的2D距离场,其中所述的变形曲线由线段近似。
距离场的隐性本质允许复杂的拓扑变化,比如表面偏移,这很难用基于轮廓线的字体来模拟。另外,距离场还可以被用来提供动态化对象的非光学现实主义渲染,以添加艺术效果。
本发明的作用本发明提供了一种新颖的框架,用于表示、渲染、编辑以及动态化字符字形、企业标志或是任意二维对象。在一种优选实施例中,本发明利用二维双二次ADF来表示二维对象。该双二次重建方法提供了存储器使用与计算负荷间的最佳平衡。
本发明包括一种方法,用来在一个含有二维对象拐角的单元内生成一个二维距离场。相比现有技术,该方法提供了对存储器需求的显著减少,以及精度的明显改善。
我们基于距离的反锯齿渲染方法利用每象素一个单个未经提示的距离采样点,提供了比现有技术中所用的过采样方法更好的反锯齿。
我们基于距离的方法充分利用了ADF的空域分级结构,来提供高效最优的基于距离的自适应过采样,从而实现了出色的空域与时域反锯齿。我们的方法还为基于距离的自动提示、为基于距离的网格装配、为联合三种常用的数字字体设计规范、以及为动态字体图案产生多种特殊效果,提供了计算基础。
尽管本文中已经通过优选实施例的方式对本发明进行了说明,但是应该明白,在本发明的指导思想及范围内还可以作出多种其他的变化与改进。因此,附属权利要求的目的就是要涵盖所有这些包含在本发明的真正指导思想与范围内的变化及改进。
权利要求
1.一种在与一个二维对象的一个拐角相关联的一个单元内生成一个二维距离场的方法,包括确定所述二维对象的边界描述符的一个集合;根据所述的边界描述符的集合识别包含在所述单元中的一个拐角点,所述拐角点将所述的边界描述符的集合划分成边界描述符的一个第一子集和边界描述符的一个第二子集,所述拐角点表示所述对象的所述拐角;将所述单元划分成最接近所述拐角点的一个第一区域和最接近所述边界描述符集合的一个第二区域,所述划分进一步包括确定经过所述拐角点的两条直线,每条直线对应于所述边界描述符的第一和第二子集之一;以及用直线限定所述的第一和第二区域;指定一个值集合和使用所述第一区域和所述第二区域的一种方法,以在所述单元内重建所述距离场;以及将所述单元、所述拐角点、限定所述的第一和第二区域的所述直线、所述重建方法以及所述的值集合储存在一个存储器中,以便能够通过应用所述重建方法在所述单元内重建所述距离场。
2.根据权利要求1所述的方法,其中所述的边界描述符的集合是样条曲线的一个集合。
3.根据权利要求1所述的方法,其中所述的边界描述符的集合是线段的一个集合。
4.根据权利要求1所述的方法,其中所述拐角点被识别为来自所述边界描述符集合的一对相邻的边界描述符的一个交点。
5.根据权利要求1所述的方法,其中每条直线是根据所述拐角点和边界描述符的相应子集的一个法线方向确定的。
6.根据权利要求1所述的方法,其中指定用于在所述单元内重建所述二维距离场的方法进一步包括指定在所述第一区域内重建所述距离场的第一方法;以及指定在所述第二区域内重建所述距离场的第二方法。
7.根据权利要求6所述的方法,其中所述的重建所述二维距离场的第一方法将所述第一区域中的一个采样点处的一个采样距离确定为从所述采样点到所述拐角点的距离。
8.根据权利要求6所述的方法,其中用于在所述单元内重建所述距离场的值集合包括根据所述的边界描述符的第一子集确定的采样距离值的一个第一集合;以及根据所述的边界描述符的第二子集确定的采样距离值的一个第二集合。
9.根据权利要求8所述的方法,其中在所述单元内重建所述二维距离场的第二方法确定所述第二区域中的一个采样点处的一个采样距离,所述确定包括根据所述的采样距离值的第一集合确定一个第一距离;根据所述的采样距离值的第二集合确定一个第二距离;以及组合所述的第一和第二距离以重建所述采样距离。
10.根据权利要求9所述的方法,其中所述组合选择所述的第一和第二距离的一个最小值。
11.根据权利要求1所述的方法,其中所述的边界描述符的集合是有序的。
全文摘要
一种方法,其在与一个二维对象的一个拐角相关联的一个单元内生成一个二维距离场。确定所述二维对象的边界描述符的一个集合。根据所述的边界描述符的集合识别所述单元中的一个拐角点。所述拐角点表示所述对象的所述拐角。所述拐角点将所述的边界描述符的集合划分成两个子集。所述单元被划分成两个区域,其中一个区域最接近所述拐角点,而另一个区域最接近所述的边界描述符的集合。确定经过所述拐角点的两条直线,以便每条直线对应于所述的边界描述符的两个子集之一。这些直线限定所述的两个区域。指定一个值集合和使用两个区域的一种方法,该方法用于在所述单元内重建所述距离场。所述拐角点、限定所述的两个区域的所述直线、所述重建方法以及所述的值集合被储存在一个存储器中以便能够通过应用所述重建方法在所述单元内重建所述距离场。
文档编号G06T11/20GK1698071SQ200480000268
公开日2005年11月16日 申请日期2004年3月22日 优先权日2003年3月25日
发明者罗纳德·N.·佩里, 萨拉·F.·弗利斯肯 申请人:三菱电机株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1