数字墨水的平滑和GPU使能的渲染的制作方法

文档序号:11935029阅读:397来源:国知局
数字墨水的平滑和GPU使能的渲染的制作方法与工艺

“数字墨水”是指从输入工具记录的一个或多个笔画(stroke),输入工具是诸如鼠标、数字化器图形输入板上的触笔/笔、电容式触摸数字化器上的电容式触笔或电容性物体(例如,手指),或者在与数字化器图形输入板——其可以使用或可以不使用触敏显示屏——集成的显示屏上的触笔/笔。当在本文中使用时,术语“墨水”与“数字墨水”可互换地使用并且是指“数字墨水”。另外,术语“笔”和/或“触笔”一般地且可互换地用于指代任何类型的输入工具。每个笔画可被存储为一个或多个墨点,并且每个墨点可以包含各种属性,包括(仅作为示例)压力、倾斜、方位角和对应于输入工具的位置的坐标(x,y)。例如,用户可以沿着计算机系统的触敏显示屏移动笔以便绘制直线或曲线,并且当用户移动输入工具时,计算机系统可以随着时间(或在本领域技术人员已知的任何其它间隔上)而沿着输入工具尖端位置的轨迹采样坐标(x,y)。这些坐标表示沿着由用户输入的曲线或直线的点,并且在本文中被称为“墨点(ink point)”。



技术实现要素:

提供本概要以便以简化的形式介绍概念的选择,这些概念将在以下的详细说明中进一步描述。本概要既不打算标识所要求保护的主题的关键特征或必要特征,也不打算用于帮助确定所要求保护的主题的范围。

在各种实施例中,提供了用于高效实时墨水笔画平滑和轨迹预测的系统、方法和计算机可读存储介质。接收至少包括第一和第二墨点的多个墨点。至少基于第一和第二墨点(精确量至少部分地在相对于随后接收的墨点获得充分拟合(adequate fit)时确定,如下面更全面描述的),计算现行的贝塞尔逼近(active Bézier approximation)。在时间上接续于第一和第二墨点地,接收第三墨点,并且确定第三墨点是否充分拟合现行的贝塞尔逼近。如果确定在渲染时用户将不能检测到第三墨点与现行的贝塞尔逼近之间的差异,则确定第三墨点充分拟合现行的贝塞尔逼近。这样的确定通常基于预定的阈值差值。如果确定第三墨点充分拟合现行的贝塞尔逼近,则现行的贝塞尔逼近被更新成包括第三墨点。然而,如果确定第三墨点未充分拟合现行的贝塞尔逼近,则终止现行的贝塞尔逼近并且计算新的贝塞尔逼近。与笔画接收表面(例如,触敏显示屏)相关联地渲染(render)包括第一、第二和第三墨点的经平滑的墨水输出。

本发明的实施例提供了即使在显著的缩放级别(例如,200-400%的缩放级别)下在笔画输入期间和之后看起来仍平滑的数字墨水输入。本发明的实施例还提供用于数字墨水笔画的平滑和渲染,使得用户在笔画输入或后笔画(post-stroke)期间基本上不会感觉到基于平滑的对笔画的改变。更进一步地,根据本发明的实施例,渲染等待时间不增加,并且经常通过使用本文下面进一步描述的预测技术来被减少。

在考虑以下的详细说明后,本发明的这些和其它特征将是显而易见的。根据本说明书,对相关技术领域的技术人员而言将显而易见的是,可以将本发明的各方面的可替换组合(不管是单独地还是与本文定义的步骤的一个或多个元素组合地)用作为本发明的修改或更改,或者作为本发明的一部分。本文所包含的对本发明的书面描述旨在覆盖这样的修改和更改。

附图说明

当结合附图阅读时前述的概要以及下面的详细说明被更好地理解,附图是作为示例而不是作为对于所要求保护的实施例的限制来包括的。在附图中,单元用参考标号来标注,其中三位数字的参考标号的第一位数字和四位数字的参考标号的前两个数字指示该单元在其中被首次图示的附图编号。不同附图中的相同参考标号是指相同或相似的单元。

图1是适合用于实现本发明实施例的示范性计算环境的框图;

图2是其中可以采用本发明的实施例的示范性计算系统的框图;

图3是示出根据本发明的实施例的、可以产生的C0连续样条的示范性“差的”伪像(artifact)的示意图;

图4是示出根据本发明的实施例的、可以由C1连续拟合器产生的示范性摆动行为(wobbly behavior)的示意图;

图5是示出根据本发明的实施例的、没有图4所示的摆动行为的示范性连续样条的示意图;

图6是示出根据本发明的实施例的、用于五点提前预测的示范性预测、实现和误差向量的示意图;

图7是图示根据本发明的实施例的、墨水笔画的一段的示意图;

图8是示出根据本发明实施例的、用于渲染墨水的示范性方法的流程图;

图9是图示根据本发明实施例的、实例镶嵌(tessellation)的示范性实现的示意图;

图10是图示根据本发明实施例的、实例镶嵌的另一示范性实现的示意图;

图11是根据本发明实施例的、两个相邻墨点(假设M是单位矩阵)的示意图;

图12是图示根据本发明实施例的、围绕P(i+1)的特写(close-up)(假设TopOrBottom = 0,StartOrEnd = 1,且M是单位矩阵)的示意图;

图13是图示围绕P+D的图12的一部分的特写(假设TopOrBottom = 0,StartOrEnd = 1,且M是单位矩阵)的示意图;

图14是图示根据本发明实施例的、用于平滑数字墨水输入的示范性方法的流程图;

图15是图示根据本发明的实施例的、用于平滑和渲染数字墨水输入的示范性方法的流程图;和

图16是图示根据本发明的实施例的、用于平滑和渲染数字墨水输入的另一示范性方法的流程图。

具体实施方式

用本文的特异性描述本发明的主题以满足法定要求。然而,描述本身不打算限制本专利的范围。相反,发明人已经设想到所要求保护的主题还可以以其他方式来具体化,以便结合其他现有或未来的技术,而包括与本文档中描述的步骤类似的不同步骤或步骤的组合。此外,尽管术语“步骤”和/或“框”在本文可以用来意指所采用的方法的不同单元,但是除非且除了在明确描述各个步骤的顺序时,否则这些术语不应被解释为暗示本文公开的各种步骤之中或之间的任何特定顺序。

数字墨水的渲染受到许多问题的困扰,问题包括:在缩放操作期间墨水不是平滑的而是具有阶梯状外观、等待时间增加(例如,由于高速缓存和/或后笔画平滑和渲染),以及当笔或其他输入工具从接收表面脱开(release)(即,后笔画)时墨水颜色或其它外观特性的改变。

本文所描述的技术的各个方面总地针对用于高效实时的墨水笔画平滑、轨迹预测和借力GPU(图形处理单元)的渲染的系统、方法和计算机可读存储介质。当各个墨点被数字化时,接收至少包括第一和第二墨点的多个墨点。基于至少第一和第二墨点,计算现行的贝塞尔逼近。如本领域技术人员将理解的,贝塞尔逼近或曲线是在图形渲染中经常被用于对平滑曲线建模的参数曲线。当在本文中使用时,如果贝塞尔逼近是最新近接收和处理的墨点(在本实例中,是第二墨点)所属的曲线或逼近,则认为该贝塞尔逼近是“现行的”。在现行的贝塞尔逼近中使用的墨点的确切量至少部分地取决于针对随后接收的墨点获得充分拟合。也就是说,可以为了拟合的目的而累积N个墨点,其中N的值持续增长,直到不再可能有适当的拟合为止,正如下面更全面地描述的。

在时间上相对于第一和第二墨点按顺序更晚地接收第三墨点,并且确定第三墨点是否充分拟合现行的贝塞尔逼近。如果确定在渲染时用户将不能检测到第三墨点与现行的贝塞尔逼近之间的差异,则确定第三墨点充分拟合现行的贝塞尔逼近。这样的确定通常基于预定的阈值差值,例如10个himetric(0.001cm)单位(0.1mm)。如果确定第三墨点充分拟合现行的贝塞尔逼近,则现行的贝塞尔逼近被更新成包括第三墨点。在实施例中,“更新的”贝塞尔逼近可以被认为是“新的”贝塞尔逼近或曲线。然而,如果确定第三墨点未充分拟合现行的贝塞尔逼近,则终止现行的贝塞尔逼近,并且计算不同的新贝塞尔逼近。借力GPU,与笔画接收表面(例如,触敏显示屏)相关联地渲染所得到的经平滑的墨水输出,所得到的输出包括第一、第二和第三墨点。(正如本领域技术人员将理解和意识到的,尽管本文主要描述了三次贝塞尔平滑,但是在本文的实施例中可以使用二次贝塞尔平滑、四次及更大次幂的贝塞尔或任何其他已知的平滑算法。)。

因此,本发明的一个实施例针对一种由至少包括一个处理器的一个或多个计算设备执行的方法,所述方法用于平滑数字墨水输入。该方法包括:接收第一墨点,接收第二墨点,基于第一和第二墨点计算现行的三次贝塞尔逼近,接收第三墨点(第三墨点在时间上比第一和第二墨点按顺序更晚地接收),确定第三墨点是否充分拟合现行的三次贝塞尔逼近,以及利用第一、第二和第三墨点计算新的三次贝塞尔逼近。在确定第三墨点充分拟合现行的三次贝塞尔逼近的情况下,新的三次贝塞尔逼近可以包括更新的现行的三次贝塞尔逼近,或者在确定第三墨点未能充分拟合现行的三次贝塞尔逼近的情况下,新的三次贝塞尔逼近可以包括不同的新的三次贝塞尔逼近。

在另一个实施例中,本发明针对一种包括中央处理单元(CPU)和图形处理单元(GPU)的系统。CPU被配置为:顺序地接收第一和第二墨点,基于第一和第二墨点生成一现行的经平滑的墨水片段(ink fragment),接收第三墨点(在时间上按顺序更晚),确定第三墨点是否充分拟合现行的经平滑的墨水片段,并且在确定第三墨点充分拟合现行的经平滑的墨水片段时,更新该现行的经平滑的墨水片段。替换地,在确定第三墨点未充分拟合现行的经平滑的墨水片段时,CPU被配置为终止该现行的经平滑的墨水片段并且发起另一经平滑的墨水片段。GPU被配置为与显示表面相关联地渲染包括第一、第二和第三墨点的经平滑的墨水输出。

在又一个实施例中,本发明针对一种设备,其包括至少一个处理器和存储数字墨水平滑和渲染例程的存储器。当由至少一个处理器执行时,数字墨水平滑和渲染例程使得该设备:接收第一墨点;接收第二墨点;基于第一墨点和第二墨点计算现行的三次贝塞尔逼近;接收第三墨点(相对于第一墨点和第二墨点在时间上按顺序更晚地);确定第三墨点是否充分拟合现行的三次贝塞尔逼近;使用第一、第二和第三墨点计算新的三次贝塞尔逼近;并且与显示表面相关联渲染包括第一、第二和第三墨点的经平滑的墨水输出。

在已经简要描述了本发明的实施例的概观后,下面描述在其中可以实现本发明的实施例的示范性操作环境,以便为本发明的各个方面提供一般的上下文。一般性地参考附图,且初始地具体参考图1,其示出了用于实现本发明的实施例的示范性操作环境,并且其总地被指定为计算设备100。计算设备100仅仅是合适的计算环境的一个示例,且其并不打算暗示对本发明的实施例的使用或功能性范围的任何限制。计算设备100也不应被解释为具有与所图示组件中的任何一个组件或任何组合相关的任何依赖性或要求。

本发明的实施例可以在计算机代码或机器可使用指令的一般上下文中描述,计算机代码或机器可使用指令包括计算机可使用或计算机可执行指令,比如程序模块,其由计算机或诸如个人数据助理或其他手持设备的其他机器执行。通常,程序模块包括例程、程序、对象、组件、数据结构等,和/或指代执行特定任务或实现特定抽象数据类型的代码。本发明的实施例可以在各种各样的系统配置中实行,系统配置包括但不限于手持设备、消费电子设备、通用计算机、更专业的计算设备等。本发明的实施例还可以在分布式计算环境中实行,其中任务由通过通信网络链接的远程处理设备执行。

继续参考图1,计算设备100包括总线110,其直接或间接地耦合以下设备:存储器112、一个或多个处理器114、一个或多个呈现组件116、一个或多个输入/输出(I/O)端口118、一个或多个I/O组件120以及说明性的电源122。总线110表示可以是一个或多个总线的东西(例如地址总线、数据总线或其组合)。尽管图1的各个框为了清楚起见用线条示出,但是事实上,这些框表示逻辑的、不一定是实际的组件。例如,人们可以将诸如显示设备这样的呈现组件视为I/O组件。此外,处理器具有存储器。本发明人于此认识到这是技术的本质,并且重申图1的图仅仅是可以结合本发明的一个或多个实施例使用的示范性计算设备的说明。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等类别之间不进行区分,因为所有这些类别都被设想为在图1的范围内且是对“计算设备”的引用。

计算设备100通常包括各种各样的计算机可读介质。计算机可读介质可以是可由计算设备100访问的任何可用介质,并且包括易失性和非易失性介质、可拆卸和不可拆卸介质。计算机可读介质包括计算机存储介质和通信介质;计算机存储介质排除信号本身。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术实现的易失性和非易失性、可拆卸和不可拆卸介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备、或可被使用来存储所期望的信息并且可由计算设备100访问的任何其它介质。另一方面,通信介质将计算机可读指令、数据结构、程序模块或其他数据具体化在诸如载波或其它传输机制的调制的数据信号中,并且包括任何信息传递介质。术语“调制的数据信号”意指使它的特性中的一个或多个以将信息编码在信号中这样的方式设置或改变的信号。作为示例而非限制,通信介质包括有线介质以及无线介质,有线介质诸如是有线网络或直接有线连接,无线介质诸如是声学、RF、红外和其他无线介质。任何上述项的组合也应当被包括在计算机可读介质的范围内。

存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可拆卸的、不可拆卸的或其组合。示范性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O组件120的各种实体读取数据的一个或多个处理器。(多个)呈现组件116向用户或其他设备呈现数据指示。示范性呈现组件包括显示设备、扬声器、打印组件、振动组件等。

I/O端口118允许计算设备100逻辑地耦合到包括I/O组件120的其它设备,其中的一些可以被内置。说明性I/O组件包括麦克风、操纵杆、游戏板、圆盘式卫星电视天线、扫描仪、打印机、显示设备、无线设备、控制器(比如触笔、键盘和鼠标)、自然用户界面(NUI)等。在实施例中,提供笔式数字化器(未示出)和附带的输入工具(也未示出,但仅作为示例,其可以包括笔或触笔),以便数字地捕获徒手进行的用户输入。笔式数字化器和(多个)处理器114之间的连接可以是直接的或者是经由利用本领域中已知的串行端口、并行端口和/或其他接口和/或系统总线的耦合。此外,数字化器输入组件可以是与诸如显示设备的输出组件分离的组件,或者在一些实施例中,数字化器的可使用输入区域可以与显示设备的显示区域有同等范围,数字化器输入组件可以与显示设备集成,或者可以作为覆盖或以其它方式附加到显示设备的单独设备存在。任何和所有这样的变化及其任何组合都被设想为在本发明的实施例的范围内。

NUI处理由用户生成的空中手势、话音或其他生理输入。适当的NUI输入可以被解释为墨水笔画以便与计算设备100相关联地呈现。这些请求可以被传送到适当的网络单元以用于进一步处理。NUI实现语音识别、触摸和触笔识别、面部识别、生物测定识别、在屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备100上的显示相关联的触摸识别的任何组合。计算设备100可以配备有深度相机,诸如立体相机系统、红外相机系统、RGB相机系统以及这些的组合,用于手势检测和识别。另外,计算设备100可以配备有使得能够检测运动的加速度计或陀螺仪。可以将加速度计或陀螺仪的输出提供给计算设备100的显示器,以渲染沉浸式增强现实或虚拟现实。

本文所描述的主题的各方面可以在由移动设备执行的诸如程序模块这样的计算机可执行指令的一般上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文描述的主题的各方面还可以在分布式计算环境中实行,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质两者中。计算机可使用指令形成允许计算机根据输入的源而作出反应的接口。指令与其它代码段协作,以结合接收到的数据的源来响应于所接收到的数据而发起各种各样的任务。

如前所述,本发明的实施例提供了系统、方法和计算机可读存储介质,以让系统、方法和计算机可读存储介质被提供用于高效实时的墨水笔画平滑、轨迹预测和借力GPU的墨水笔画渲染。参考图2,提供了图示其中可以采用本发明的实施例的示范性计算系统200的框图。一般性地,计算系统200图示了一环境,在其中数字墨水输入在笔画输入期间和之后,甚至是在显著的缩放水平上,看起来是平滑的。计算系统200还图示了一个环境,在其中提供数字墨水笔画的平滑和渲染,使得在笔画输入或后笔画期间用户基本上不会察觉到基于平滑和/或其他处理的对笔画的改变。计算系统200更进一步地图示了一个环境,在其中渲染等待时间不增加,且经常至少部分地通过使用本文下面进一步描述的预测技术而被减少。

在未示出的其他组件中,计算系统200通常包括:用户计算设备210,其被配置用于接收数字墨水输入并且与显示器224相关联地提供经平滑的墨水输出;以及墨水平滑引擎212,其被配置用于平滑和预测未来的墨水笔画输入,正如下面更全面地描述的。在实施例中(并且如图2所示),用户计算设备210和墨水平滑引擎212可以经由网络214彼此通信。网络214可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。因此,本文不进一步地描述网络214。

应当理解,在本发明的实施例的范围内,可以在计算系统200中采用任何数量的用户计算设备210和/或墨水平滑引擎212。每个可以包括单个设备/接口或在分布式环境中协作的多个设备/接口。例如,墨水平滑引擎212可以包括被安排在分布式环境中的多个设备和/或模块,其共同地提供本文描述的墨水平滑引擎212的功能性。附加地,在计算系统200内也可以包括未示出的其他组件或模块。

在一些实施例中,所图示的组件/模块中的一个或多个可以被实现为独立的应用。在其他实施例中,可以经由用户计算设备210、墨水平滑引擎212或作为基于因特网的服务来实现所图示的组件/模块中的一个或多个。本领域的技术人员将理解,图2中所图示的组件/模块在性质和数量上是示范性的,并且不应被解释为限制。可以采用任何数量的组件/模块来在其实施例的范围内达到所期望的功能性。进一步地,组件/模块可以位于任何数量的墨水平滑引擎212和/或用户计算设备210上。仅作为示例,墨水平滑引擎212可以被提供为单个计算设备、计算设备的群集或远离其余组件中的一个或多个组件的计算设备。

应当理解,本文描述的这种和其他安排是仅作为示例来阐述的。附加于或者替代所示出和/或所描述的那些,可以使用其它的安排和单元(例如,机器、接口、功能、命令以及功能的编组等),并且一些单元可以完全省略。进一步地,本文描述的许多单元是功能实体,它们可以被实现为离散或分布式的组件或与其他组件结合、且处于任何合适的组合和位置中。在本文中被描述为由一个或多个实体执行的各种功能可以由硬件、固件、应用、驱动程序和/或软件来完成。例如,各种功能可以由执行存储在存储器中的指令的处理器来完成。

用户计算设备210可以包括任何类型的计算设备,举例而言,比如参考图1描述的计算设备100。如图所示,用户计算设备210包括墨水输入接收组件216、墨水输入传送组件218、经平滑的(并且在实施例中为扩展的)墨水笔画输出接收组件220,以及用于与显示器224相关联地渲染经平滑的墨水输出的GPU 222。墨水输入接收组件216被配置为接收通常经由I/O组件(比如笔或触笔)输入的墨水笔画的用户输入。墨水输入传送组件218被配置为例如经由网络214将由墨水输入接收组件216接收的墨水笔画传送到墨水平滑引擎212。经平滑的墨水笔画输出接收组件220被配置为(通常经由网络214从墨水平滑引擎212,正如下面更全面地描述的)接收经平滑的墨水输出,以用于与显示器224相关联地渲染。GPU 222被配置为处理(正如下面更全面地描述的)所接收的经平滑的墨水输出,以用于与显示器224相关联地渲染。

应当注意,在本文中被描述为由用户计算设备210的任何组件执行的功能性可以由能够渲染图形内容的任何其他应用、应用软件、用户界面等来执行。还应当注意,本发明的实施例同样适用于移动计算设备和接受手势、触摸和/或话音输入的设备。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。

如图所示,墨水平滑引擎212包括样条拟合器226、墨水预测组件232和墨水渲染组件234。样条拟合器226被配置为用一组三次贝塞尔段(Bézier segment)逼近墨点的笔画。样条拟合器226每次被馈送以单个墨点,并且对于每个新墨点,被配置为或者更新现行的贝塞尔段,或者如果新墨点不能与现行的贝塞尔段足够好地拟合,则发起新的贝塞尔段。因此,样条拟合器226包括两个子组件:贝塞尔拟合器228和分段组件230。

贝塞尔拟合器228被配置为维持一组现行的点,这组点在它们被数字化时一次一个地被顺序接收。每次更新该组时,贝塞尔拟合器228被配置为计算新的三次贝塞尔逼近。然而,现行的组不是必然地包含自笔画的开始起的所有点,因为其可能由分段组件230重置,正如下面更全面地描述的。

分段组件230被配置为评估由贝塞尔拟合器228产生的拟合的质量,并且判定何时更新现有的贝塞尔逼近以及何时发起新的贝塞尔逼近或曲线。贝塞尔拟合器228还执行诸如尖突检测的任务(下面更全面地描述),并通过配置贝塞尔拟合器228来控制样条的分析属性(如下面更全面地描述的)。

贝塞尔拟合器 228

本节描述了贝塞尔拟合器228如何利用三次贝塞尔逼近或曲线逼近一组墨点。为了简洁,在本说明书中仅考虑位置信息。然而,将这些公式扩展到任何数量的特征是简单明了的。例如,在一些实现中,可以利用接收的墨点的半径(其可以与所施加的压力和输入画笔笔画的大小成比例)。在其他实现中,可以使用包括倾斜、方位角等的属性。任何和所有这样的特征及其任何组合都被设想为处在本发明的实施例的范围内。

在任何给定的时间点,贝塞尔拟合器228利用一单个贝塞尔段B(t)拟合有效点(active point)的一个集合。拟合任务被制定为最小化问题:

其中E是将在下面更全面地描述的误差函数。

令为通过集合Sk描述的隐含折线。于是,

由于计算折线上的点和贝塞尔曲线之间的距离是昂贵的,所以根据本实施例,通过在参数t的相同值处对折线和贝塞尔曲线进行采样而获得的两个点之间的距离被约计(approximate):

然后可以将期望最小化的误差函数定义为:

选择N=k和ti,使得,如此使得误差函数虑及所有且仅在Sk中的点。然而,由于正在使用三次逼近,所以样本至少包括四个点。

最小化

最小化问题的变量是B的控制点。令C = [C0,C1,C2,C3]是控制点的向量。使用梯度下降法来找到最佳值:

更新规则的参数α控制收敛速率。一般地,对于较大的值需要较少的迭代,但是同时,当α较大时,计算可能变得不稳定。可以使用的一个示范性参数α是:

更进一步地,可以通过用α除以对拟合误差没有产生任何改进的迭代次数来减轻发散的风险。

是相对于B的控制点的近似误差的梯度,并且可以如下地计算:

应当注意,在更新规则中存在四个自由度,对应于三次贝塞尔逼近的四个控制点。然而,在下一节中描述的分段组件230将使用这些自由度中的一些来对样条施加期望的分析属性(例如,连续性)。

分段组件230

分段组件230完成两个基本任务。首先,它判定是开始一个新的贝塞尔逼近还是更新当前的这个。其次,它通过在任何时候开始新的逼近或曲线时重新配置三次贝塞尔拟合器228来在样条上强加(enforce)分析属性(最显著的是C0或C1连续性)。当在本文中使用时,并且如本领域技术人员将理解的,“连续性”是指在邻近的贝塞尔曲线连接的接头处的相对平滑度。“C0连续性”是指邻近的贝塞尔曲线共享相同端点的情况。“C1连续性”是指邻近的贝塞尔曲线共享相同的端点和相同的导数(derivative)的情况。

判定是开始新的贝塞尔逼近还是更新当前的这个是基于拟合的质量。更具体地,判定是开始新的贝塞尔逼近还是更新当前的这个是基于在所接收的数字化墨点与由三次贝塞尔拟合器228计算的最佳逼近之间的最大距离。在实施例中,截止阈值可以是10个himetric单位(0.1mm),这是一个高于其用户便在可用性研究中指明:随着新点到达(除了延伸到新点之外),墨水改变是显著的点。然而,应当注意,阈值与墨水正在被渲染时墨水的物理尺寸相关。例如,如果正以10倍的放大倍数渲染湿的墨水(即,在输入工具从接收表面脱离之前在笔画活动期间渲染的墨水),则阈值可能将需要小至1/10或者用户将注意到墨水改变。当然,由于干的墨水(即,一旦输入工具从接收表面脱离的接收表面上的墨水)不改变(即,分段已经完成),所以这个点仅对于湿的墨水是有意义的。还应当注意,阈值可以是先前墨点的任何量、这样的墨点的任何特征(例如,坐标、压力、倾斜、扭曲等)的函数,和/或可以是设备相关的(例如DPI、可用的存储器、CPU、GPU等)。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。

由分段组件230完成的另一个重要任务是要对样条施加期望的分析属性。起码样条必须是连接的(C0连续性),这意味着每个贝塞尔曲线或段的第一控制点必须与前一个曲线或段的最后的控制点相匹配,从而失去一个自由度:

C0连续性:。

虽然C0连续性保证样条是连接的,但是它并不足以产生如图3所示的平滑墨水,其中圈出的连接区指出差的(未平滑的)伪像。

根据本发明的实施例,可以通过施加C1连续性来去除图3中的差的伪像。参数的C1连续性要求在t = 0处的段的导数与在t = 1处的前一段的导数相匹配:

然而,当施加参数的C1连续性时,丧失了另一个自由度,这为产生良好拟合留下了很少的自由度。幸运的是,对于样条看起来平滑而言所需要的全部只是几何的(与参数的相反)C1连续性,其限制较少,并且仅需要约束第二控制点的方向:

几何的C1连续性:。

根据本实施例,可以在应用更新规则之后,通过在所需要的方向上投影第二控制点来施加几何的C1连续性。

防止摆动行为

有时,几何的C1连续性的实现导致观察到令人不快的摆动行为,例如,如图4所示的。这种行为常常看起来比在C0连续样条中观察到的偶然尖突(cusp)更差。这种行为的根本原因似乎是在t = 1中最后提交的(committed)贝塞尔的导数与对应的数字化点的导数不相符。因此,如图5所图示的,通过在贝塞尔拟合器228上添加新的约束可以缓解该问题,新的约束即:在t = 1中的贝塞尔逼近的导数必须匹配连接最后两个数字化点的贝塞尔逼近或段的导数。应当注意,在本实施例的范围内,其他缓解是可能的。例如,可以更新先前和当前的贝塞尔两者。替换地,可以一次拟合两个贝塞尔,在两者之间施加连续性,并且无论何时不满足拟合要求,都开始新的一对贝塞尔段。

尖突检测

虽然一般而言C1连续性是期望的属性,但是存在当强加并非有利时的情况。最值得注意的是,C1连续性甚至去除了预期的尖突。为此,分段组件230还被配置为基于尖突检测的结果来针对C1连续性而配置贝塞尔拟合器228。

尖突检测的简单明了的方法是检查由最后三个点形成的角并将低于预定义阈值的角分类为尖突。类似的方法是要使判定基于由t = 1中的前一段的导数与t = 0中的当前段的导数形成的角。任何和所有这样的方法及其任何组合都被设想为处在本发明的实施例的范围内。

墨水预测组件232

对输入工具的接下来的几个位置进行预测是难以解决的问题,因为手写充满了方向上的急剧的、不可预测的改变,并且用户可以在任何时候提起笔(或其他输入工具),从而使得预测不仅不必要,而且潜在地是有害的。

墨水预测组件232被配置为首先通过定义允许评估墨水预测的质量的度量来确立预测质量。有两个主要方面要考虑:用户体验和性能。就用户体验而言,错误预测的结果是:一片墨水在屏幕或其他显示表面上渲染,并且一旦预测证明是错误的,则那片墨水在几帧内被清除。这可能产生闪烁的效应,其在预测是跨帧地不稳定时加剧。该度量必须反映预测误差是否可以被最终用户观察到。

就性能而言,示范性方法是要使用误差向量的主分量和作为预测质量的度量。图5提供了五点提前预测的示例。数字化点用圆点表示。与实线610连接的那些点已经被数字化,而未连接(并且出现在较大三角形的内部)的那些点是未来的。预测的点由虚线612连接。连接预测的点与最后的数字化点的向量是预测向量。将未来的数字化点与最后的数字化点连接的向量是实现(realization)向量。向量是预测误差,并且和是其主分量。测量该预测是滞后或过冲多少。测量该预测的点距实现向量有多远。

可以由墨水预测组件232用于墨水预测的一种技术涉及用三次贝塞尔样条拟合数字化点。基本思想是通过将最后的贝塞尔段B(t)扩展到其未来而进行预测,这简单地意味着在某些t > 1处(图6中的虚线)采样B(t)。

t的选择

令k是期望对于其进行未来预测的点的数量,且令是最后两个数字化点之间的距离。那么可以以这样一种方式选择t≥1,即:使得B(1)和B(t)之间的贝塞尔曲线或段的弧长等于。

由于对于三次曲线的弧长没有闭合形式解,因此可以利用采用多个已知事实的逼近。首先,贝塞尔曲线的端点之间的距离是其弧长的下限。其次,贝塞尔曲线的控制多边形的长度是其弧长的上限。

重新参数化

用于渲染预测的最简单的选项是从最后的数字化点到预测的点画一条线。然而,更好的方法是画如图6所示的贝塞尔曲线的延长线(虚线6线)。因此,墨水预测组件232还被配置为以不改变曲线这样的方式重新参数化贝塞尔曲线,并且:

其中B是原始贝塞尔,而是重新参数化的贝塞尔。重新参数化的成本是可忽略的,因为它可以在恒定的时间内执行。

利用该技术,墨水预测组件232可以提前大约16毫秒进行预测,而不引入差的伪像(即,可见的误预测)。

墨水渲染

在拟合和预测完成时,结果是一组贝塞尔逼近和一组对应的半径。通常,是由四个控制点参数化的三次函数。在一些表现(manifestation)中,可以是线性的,并且仅通过开始和结束半径来参数化:

在其他表现中,它们可以是三次的,并且使用本领域技术人员公知的伯恩斯坦(Bernstein)多项式、通过四个控制点中的每一个处的权重来参数化:

给定的对一起表示墨水笔画的一段,正如图7所示的。用符号表示,这对应于点的轨迹(locus)。

图8的流程图示了根据本发明的实施例的、用于渲染墨水的示范性一般过程800。可以例如利用图2的墨水平滑引擎212的墨水渲染组件234来执行在虚线左侧描述的功能。例如,可以利用图2的用户计算设备210的GPU 222来执行在虚线右侧描述的功能。

轮廓变换810

本发明的实施例允许在墨水已被捕获和拟合之后、但在渲染之前将任意的2D仿射变换(由3×2矩阵定义)应用于墨水。这样的变换对于例如对包含墨水的文档的扫视(panning)和缩放进行建模是有用的。

变换在两个步骤中实现。在第一步骤(“轮廓”变换)中,贝塞尔函数被变换。这通过简单地用贝塞尔控制点乘以规定的矩阵来完成(概念上,这影响墨水的整体形状,但不影响宽度(thickness))。

第二步骤是要变换(transform)半径。这在顶点着色器(vertex shader)820中完成,下面将更全面地描述。注意,当变换半径时,M(m31和m32)的转换(translation)分量未被使用。此后,在本说明书中,符号M将指代2×2矩阵。

展平(flatten)812

为了渲染给定的笔画,作为组成部分的(constituent)贝塞尔逼近的每一个是“被展平的”。形式上,为每个对挑选一组,并且在那些t处对这些函数求值(这实质上是反向曲线拟合)。挑选该组的确切方法是由实现方式定义的(implementation defined)。在一个示范性实现中,可以使用如在美国专利第5367617号中所述的混合前向差分算法,其通过引用被并入本文,如同在本文中阐述其全部内容一样。本领域技术人员将理解,诸如前向差分的其它技术在本行业中是常见的且公知的,并且也可以被利用。

结果是沿着曲线伸展(lie)的点和半径的列表。然后将该数据发送到GPU并存储在所谓的“顶点缓冲器”(此后称为VB1)中。

实例镶嵌814

同样传递给GPU的是另外两个顶点缓冲器:一个包含近似圆的三角形网格,另一个是表示梯形的三角形网格。这些网格在初始化期间计算一次,并在后续渲染操作中被高速缓存和重新使用。

具体的实现可以以不同方式表示镶嵌。一个示范性实现利用了以下方案:

圆三角形网格中的每个顶点包含以下数据:

CenterOrEdge:1位(0:中心,1:边沿)

InteriorOrExterior:1位(0:内部,1:外部)

方向:float2(规格化)。

连接内部和外部顶点的三角形被使用来提供抗混叠(由图8中所图示的亮到暗的梯度标示)。应当注意,没有实际存储关于顶点的绝对坐标,仅记录顶点与其他顶点相关时它的拓扑关系。例如,下图中的顶点A是内部边缘顶点,且将被存储为:

而顶点B是外部边缘顶点,且将被存储为:

(假设是倒的y轴)。只有一个中心顶点(图9中标示为C),其位于内部并且被分配给任意的方向。

还应当注意,三角形(以及因此是顶点)的确切数量可以在实现中变化,并且通常取决于正被渲染的墨水的最大半径。

梯形中的每个顶点包含以下数据:

StartOrEnd:1位(0:起点,1:终点)

InteriorOrExterior:1位(0:内部,1:外部)

TopOrBottom:1位(0:顶部,1:底部)。

例如,下图中的顶点A是在顶部的内部起点顶点,且将被存储为:

顶点B是在底部的内部终点顶点,且将被存储为:

正如图10所示的。在这种情况下,不管正在渲染的墨水的半径如何,独特的顶点的数量固定为8。

加宽和光栅化816

一旦数据被上传到GPU,则光栅化的剩余步骤在两趟(pass)中执行:一趟渲染圆,一趟渲染梯形。一个示范性实现使用例如下面描述的标准Direct3D管线的五个级(818、820、822、824和826)来执行每一趟。本领域技术人员将理解和意识到,其他的与Direct3D的直接类似的实现在诸如OpenGL的其他平台上是可能的。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。

输入装配器818、光栅化器822和输出合并器826是固定的功能,并且基本上由GPU本身自动执行。顶点着色器820和像素着色器824是可编程的。

输入装配器818

输入装配器818被配置为取得VB1中的圆/梯形网格和顶点,并且准备它们以便由管线的其余部分进行处理。部分地,这牵涉到跨VB1中的顶点复制这些网格的副本(本领域技术人员已知的被称为“实例化”的常见技术)。在圆那趟中,输入装配器818被配置为按VB1中每个顶点分配网格的一个副本。在梯形那趟中,输入装配器818按VB1中每对连续顶点分配一个副本。由输入装配器818输出的顶点包含来自网格和VB1数据两者的合并的数据:

圆那趟的顶点格式:

梯形那趟的顶点格式:

顶点着色器820

根据本实施例,提供了顶点着色器820,其取得由输入装配器818输出的每个顶点,并将其向下精简(condense)到位置和不透明度。对于圆那趟,使用以下公式:

这里,M是在本文档中早先定义的2×2矩阵,并且是其逆转置。

稍后将更详细地讨论offset(偏移)和opacityModifier(不透明度修改器)函数,但在通常情况下,它们仅仅是和。

对于梯形那趟,可以使用更复杂的公式:

这里,是90度旋转矩阵。

应当注意,这些公式的类似版本已经使用于墨水渲染的早先版本中。然而,与先前的具体化(incarnation)不同,本发明的实施例在GPU上执行变换。

还应当注意,这些公式的推导超出本说明书的范围。然而,图11、12和13可以帮助将各种量彼此相关。图11图示了两个邻近墨点的图(假设M是单位矩阵)。图12示出了围绕P(i+1)的特写(假设TopOrBottom = 0,StartOrEnd = 1,并且M是单位矩阵)。图13示出了围绕P+D的特写(假设TopOrBottom = 0,StartOrEnd = 1,并且M是单位矩阵)。

光栅化器822

一旦复制的网格的顶点已被变换,对应的三角形就由GPU利用光栅化器822“光栅化”。换句话说,由三角形覆盖的像素被识别,并且像素着色器824按每个被覆盖的像素被调用一次。D3D光栅化对于本领域技术人员是已知的,因此在本文中不进一步描述。

像素着色器824

像素着色器824被配置为从光栅化器8222取得不透明度且使用其来调制墨水的颜色:

这种颜色调制模拟沿着墨水边缘的抗混叠。(在一些表现中,这是简单的纯色,但是在更复杂的表现中,颜色可以取决于像素的位置)。该颜色值然后被传递到输出合并器826。

输出合并器826

输出合并器826被配置为取得颜色值并将其混合到渲染目标上。输出合并对于本领域技术人员是已知的,因此在本文中不进一步描述。

薄的特征缓解

如上文所述,本发明的实施例供应了利用两个辅助函数offset和opacityModifier的顶点着色器820。offset的目的是在屏幕空间中将顶点偏移半个像素,从而模拟抗混叠。当正被渲染的圆/梯形的尺寸小于1个像素时,可以添加特别的逻辑以减少该偏移将导致重叠的三角形的机会。当执行这样的逻辑时,顶点的不透明度被相应地修改。

offset和opacityModifier的完整定义如下:

现在转到图14,图示了一个流程图,其示出根据本发明的实施例的、用于平滑数字墨水输入的示范性方法1400。如框1410所指示的,接收第一墨点。如框1412所指示的,还接收第二墨点。如框1414所指示的,基于第一和第二墨点计算现行的三次贝塞尔逼近。如框1416所指示的,接收第三墨点。如框1418所指示的,确定第三墨点是否充分拟合现行的三次贝塞尔逼近,并且如框1420所指示的,利用第一、第二和第三墨点计算新的三次贝塞尔逼近。

参考图15,图示了一个流程图,其示出根据本发明的实施例的、用于平滑和渲染数字墨水输入的示范性方法1500。如框1510所指示的,接收第一和第二墨点;其被顺序地接收。如框1512所指示的,基于第一和第二墨点生成现行的经平滑的墨水片段。如框1514所指示的,接收第三墨点。然后确定第三墨点是否充分拟合现行的经平滑的墨水片段,如判定框1516所指示的。如果确定第三墨点充分拟合现行的经平滑的墨水片段,则如框1518所指示的,更新现行的经平滑的墨水片段。然而,如果确定第三墨点未充分拟合现行的经平滑的墨水片段,则如框1520所指示的,终止现行的经平滑的墨水片段,并且发起另一经平滑的墨水片段。利用GPU,渲染包括第一、第二和第三墨点的经平滑的墨水输出。这在框1522处指示。

现在转到图16,图示了一个流程图,其示出根据本发明的实施例的、示出用于平滑和渲染数字墨水输入的示范性方法1600。如框1610所指示的,接收第一墨点。如框1612所指示的,还接收第二墨点。如框1614所指示的,基于第一和第二墨点计算现行的三次贝塞尔逼近。如框1616所指示的,接收第三墨点。然后如框1618所指示的,确定第三墨点是否充分拟合现行的三次贝塞尔逼近。如框1620所指示的,利用第一、第二和第三墨点计算新的三次贝塞尔逼近。然后渲染包括第一、第二和第三墨点的经平滑的墨水输出。这在框1622处指示。

正如可以理解的,本发明的实施例提供了尤其用于墨水笔画输入的高效实时墨水笔画平滑、轨迹预测和借力GPU的渲染的系统、方法和计算机可读存储介质。接收至少包括第一和第二墨点的多个墨点。基于第一和第二墨点,计算现行的贝塞尔逼近。在时间上接续于第一和第二墨点地接收第三墨点,并且确定第三墨点是否充分拟合现行的贝塞尔逼近。如果确定在渲染时用户将不能检测到第三墨点和现行的贝塞尔逼近之间的差异,则确定第三墨点充分拟合于现行的贝塞尔逼近。这样的确定通常基于预定的阈值差值。如果确定第三墨点充分拟合现行的贝塞尔逼近,则现行的贝塞尔逼近被更新成包括第三墨点。然而,如果确定第三墨点未充分拟合现行的贝塞尔逼近,则终止现行的贝塞尔逼近并且计算新的贝塞尔逼近。与笔画接收表面(例如,触敏显示屏)相关联地渲染包括第一、第二和第三墨点的经平滑的墨水输出。

已经相关于具体实施例描述了本发明,这些具体实施例在所有方面都打算是说明性的而不是限制性的。在不脱离本发明范围的情况下,替换实施例对于本发明所属领域的普通技术人员来说将变得显而易见。

尽管本发明容许各种修改和替换构造,但是其某些图示的实施例在附图中被示出并且已经在上面被详细描述。然而,应当理解,没有将本发明限制为所公开的特定形式的意图,而是相反,意图是覆盖落入本发明的精神和范围内的所有修改、替换构造和等同物。

本领域技术人员将理解,在图14的方法1400、图15的1500和图16的1600中所示出的步骤的顺序不意味着以任何方式限制本发明的范围,并且事实上,这些步骤可以在其实施例内以各种各样不同的顺序发生。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1