BR112017003480B1 - METHOD FOR SMOOTHING AND RENDERING DIGITAL INK - Google Patents
METHOD FOR SMOOTHING AND RENDERING DIGITAL INK Download PDFInfo
- Publication number
- BR112017003480B1 BR112017003480B1 BR112017003480-8A BR112017003480A BR112017003480B1 BR 112017003480 B1 BR112017003480 B1 BR 112017003480B1 BR 112017003480 A BR112017003480 A BR 112017003480A BR 112017003480 B1 BR112017003480 B1 BR 112017003480B1
- Authority
- BR
- Brazil
- Prior art keywords
- ink
- approximation
- bézier
- active
- ink dot
- Prior art date
Links
Images
Abstract
SUAVIZAÇÃO E RENDERIZAÇÃO PERMITIDA POR UNIDADE DE PROCESSAMENTO GRÁFICO DE TINTA DIGITAL. Trata-se de sistemas, métodos e mídias de armazenamento legíveis por computador que são fornecidos para suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização impulsionada por GPU de entrada de curso de tinta. O primeiro e o segundo pontos de tinta são recebidos e uma aproximação de Bézier ativa é computada com base nos mesmos. De modo sequencialmente posterior no tempo em que o primeiro e o segundo pontos de tinta, um terceiro ponto de tinta é recebido. Determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. Quando se determina que o terceiro ponto de tinta se ajusta adequadamente, uma aproximação de Bézier ativa atualizada é computada que inclui os primeiro, segundo e terceiro pontos de tinta. Quando se determina que o terceiro ponto de tinta falha ao se ajustar adequadamente, uma nova aproximação de Bézier diferente é computada, a qual inclui o terceiro ponto de tinta, mas não o primeiro e o segundo pontos de tinta. Impulsionando uma GPU, um curso de tinta suavizado com base na aproximação (ou aproximações) de Bézier é renderizado.(...).SMOOTHING AND RENDERING ALLOWED BY DIGITAL INK GRAPHIC PROCESSING UNIT. These are computer-readable systems, methods, and storage media that are provided for efficient real-time ink stroke smoothing, trajectory prediction, and GPU-driven rendering of ink stroke input. The first and second ink dots are received and an active Bézier approximation is computed based on them. Sequentially later in time than the first and second ink dots, a third ink dot is received. Determines whether the third ink dot fits properly to the active Bézier approximation. When the third ink point is determined to fit properly, an updated active Bézier approximation is computed that includes the first, second, and third ink points. When the third ink dot is determined to fail to fit properly, a different new Bézier approximation is computed which includes the third ink dot but not the first and second ink dots. By driving a GPU, a smoothed ink stroke based on the Bézier approximation (or approximations) is rendered.(...).
Description
[001] "Tinta digital" refere-se a um ou mais cursos que são registrados a partir de um instrumento de entrada, tal como um mouse, um stylus/caneta em um computador do tipo tablet digitalizador, um stylus capacitivo ou um objeto capacitivo (por exemplo, um dedo) em um digitalizador sensível ao toque capacitivo ou um stylus/caneta em uma tela de exibição integrada com um computador do tipo tablet digitalizador que pode utilizar ou não uma tela de exibição sensível ao toque. Conforme usado no presente documento, o termo "tinta" é usado de modo intercambiável e se refere a "tinta digital". Ainda, os termos "caneta" e/ou "stylus" são usados genericamente e de modo intercambiável para se referir a qualquer tipo de instrumento de entrada. Cada curso pode ser armazenado como um ou mais pontos de tinta e cada ponto de tinta pode conter diversas propriedades que incluem, a título de exemplo apenas, pressão, inclinação, azimute e coordenadas (x, y) que correspondem a uma posição do instrumento de entrada. Por exemplo, um usuário pode mover uma caneta ao longo de uma tela de exibição sensível ao toque de um sistema de computador a fim de desenhar uma linha ou uma curva e o sistema de computador pode amostrar as coordenadas (x, y) ao longo da trajetória da posição de extremidade de instrumento de entrada ao longo do tempo (ou em qualquer outro intervalo, conforme conhecido pelas pessoas de habilidade comum na técnica) conforme o usuário move o instrumento de entrada. Essas coordenadas representam pontos ao longo da entrada de curva ou linha por um usuário e são denominadas no presente documento como "pontos de tinta".[001] "Digital ink" refers to one or more strokes that are recorded from an input instrument, such as a mouse, a stylus/pen on a digitizing tablet computer, a capacitive stylus, or a capacitive object (for example, a finger) on a capacitive touchscreen digitizer, or a stylus/pen on an integrated display screen with a digitizing tablet computer that may or may not use a touchscreen display. As used herein, the term "ink" is used interchangeably and refers to "digital ink". Furthermore, the terms "pen" and/or "stylus" are used generically and interchangeably to refer to any type of input instrument. Each stroke can be stored as one or more ink dots, and each ink dot can contain a variety of properties including, by way of example only, pressure, inclination, azimuth, and coordinates (x, y) that correspond to a position of the tracking instrument. Prohibited. For example, a user can move a pen across a computer system's touch-sensitive display screen to draw a line or curve, and the computer system can sample the (x, y) coordinates along the line. trajectory of the input instrument end position over time (or any other range as known to those of ordinary skill in the art) as the user moves the input instrument. These coordinates represent points along a curve or line input by a user and are referred to herein as "ink points".
[002] Esse Sumário é fornecido para introduzir uma seleção de conceitos de uma forma simplificada que são ainda descritos a seguir na Descrição Detalhada. Esse Sumário não é destinado a identificar recursos-chave ou recursos essenciais da matéria reivindicada, nem é destinado a ser usado como um auxílio na determinação do escopo da matéria reivindicada.[002] This Summary is provided to introduce a selection of concepts in a simplified form which are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
[003] Em diversas modalidades, sistemas, métodos e mídias de armazenamento legíveis por computador são fornecidos para suavização de curso de tinta em tempo real eficiente e previsão de trajetória. Uma pluralidade de pontos de tinta que inclui pelo menos um primeiro e um segundo ponto de tinta é recebida. Com base pelo menos nos primeiro e segundo pontos de tinta (em que a quantidade exata é determinada, pelo menos em parte, na obtenção de um encaixe adequado em relação aos pontos de tinta subsequentemente recebidos, conforme mais completamente descrito abaixo), uma aproximação de Bézier ativa é computada. Sequencialmente em tempo ao primeiro e ao segundo pontos de tinta, um terceiro ponto de tinta é recebido e determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. O terceiro ponto de tinta é determinado para se ajustar adequadamente à aproximação de Bézier ativa se for determinado que um usuário não tem capacidade para detectar uma diferença entre o mesmo mediante a renderização. Tal determinação é geralmente baseada em um valor de diferença limítrofe predeterminado. Determina-se que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa, em que a aproximação de Bézier ativa é atualizada para incluir o terceiro ponto de tinta. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier ativa, a aproximação de Bézier ativa é terminada e uma nova aproximação de Bézier é computada. A saída de tinta suavizada é renderizada compreendendo os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de recebimento de curso, por exemplo, uma tela de exibição sensível ao toque.[003] In various embodiments, systems, methods, and computer-readable storage media are provided for efficient real-time ink stroke smoothing and trajectory prediction. A plurality of ink dots including at least a first and a second ink dot are received. Based on at least the first and second ink dots (where the exact amount is determined, at least in part, by achieving a proper fit with respect to subsequently received ink dots, as more fully described below), an approximation of Active Bézier is computed. Sequentially in time to the first and second ink dots, a third ink dot is received and it is determined whether the third ink dot fits properly to the active Bézier approximation. The third ink dot is determined to properly fit the active Bézier approximation if it is determined that a user is unable to detect a difference between them upon rendering. Such a determination is generally based on a predetermined threshold difference value. The third ink dot is determined to fit the active Bézier approximation properly, whereupon the active Bézier approximation is updated to include the third ink dot. However, if it is determined that the third ink dot does not properly fit the active Bézier approximation, the active Bézier approximation is terminated and a new Bézier approximation is computed. Smoothed ink output is rendered comprising the first, second, and third ink dots in association with a stroke-receiving surface, for example a touchscreen display.
[004] As modalidades da presente invenção fornecem entrada de tinta digital que parece suave durante e após a entrada de curso, mesmo em níveis de zoom significativos (por exemplo, níveis de zoom de 200 a 400%). As modalidades da presente invenção possibilitam ainda a suavização e a renderização de cursos de tinta digital, de forma que alterações ao curso com base na suavização não sejam substancialmente percebidas por um usuário durante entrada de curso ou após o curso. Ainda ainda, de acordo com modalidades da presente invenção, a latência de renderização não é aumentada e é normalmente diminuída pelo uso das técnicas de previsão descritas ainda no presente documento abaixo.[004] Embodiments of the present invention provide digital ink input that appears smooth during and after stroke input, even at significant zoom levels (e.g., zoom levels from 200 to 400%). Embodiments of the present invention further enable smoothing and rendering of digital ink strokes such that changes to the stroke based on the smoothing are not substantially noticeable to a user during stroke entry or after stroke. Still further, in accordance with embodiments of the present invention, rendering latency is not increased and is typically decreased by use of the prediction techniques described further herein below.
[005] Esses e outros recursos da invenção serão evidentes mediante a consideração da seguinte Descrição Detalhada. Será evidente para as pessoas versadas na tecnologia relevante, à luz do presente relatório descritivo, que combinações alternativas de aspectos da invenção, sozinhos ou em combinação com um ou mais elementos das etapas definidas no presente documento, podem ser usadas como modificações ou alterações da invenção ou como parte da invenção. Pretende-se que a descrição escrita da invenção contida no presente documento cubra tais modificações e alterações.[005] These and other features of the invention will be apparent upon consideration of the following Detailed Description. It will be apparent to persons skilled in the relevant technology, in light of the present specification, that alternative combinations of aspects of the invention, alone or in combination with one or more elements of the steps defined herein, can be used as modifications or alterations of the invention. or as part of the invention. The written description of the invention contained herein is intended to cover such modifications and alterations.
[006] O Sumário supracitado, assim como a seguinte Descrição Detalhada, é mais bem entendido quando lido em conjunto com os desenhos anexos, os quais estão incluídos a título de exemplo e não a título de limitação em relação às modalidades reivindicadas. Nos desenhos anexos, os elementos são identificados com numerais de referência, em que o primeiro dígito de um numeral de referência de três dígitos e os primeiros dois dígitos de um numeral de referência de quatro dígitos indicam o número do desenho em que o elemento é ilustrado primeiro. O mesmo numeral de referência em desenhos diferentes se refere ao mesmo elemento ou um elemento semelhante.[006] The aforementioned Summary, as well as the following Detailed Description, is better understood when read in conjunction with the attached drawings, which are included by way of example and not by way of limitation in relation to the claimed embodiments. In the accompanying drawings, elements are identified with reference numerals, where the first digit of a three-digit reference numeral and the first two digits of a four-digit reference numeral indicate the number of the drawing in which the element is illustrated. first. The same reference numeral in different designs refers to the same or a similar element.
[007] A Figura 1 é um diagrama de blocos de um ambiente de computação exemplificativo adequado para uso na implantação de modalidades da presente invenção;[007] Figure 1 is a block diagram of an exemplary computing environment suitable for use in implementing embodiments of the present invention;
[008] Figura 2 é um diagrama de blocos de um sistema de computação exemplificativo em que modalidades da invenção podem ser empregadas;[008] Figure 2 is a block diagram of an exemplary computing system in which embodiments of the invention can be employed;
[009] Figura 3 é um diagrama esquemático que mostra artefatos "ruins" exemplificativos de um spline contínuo C0 que podem ser produzidos de acordo com uma modalidade da presente invenção;[009] Figure 3 is a schematic diagram showing exemplary "bad" artifacts of a continuous spline C0 that can be produced in accordance with an embodiment of the present invention;
[0010] Figura 4 é um diagrama esquemático que mostra comportamento instável exemplificativo que pode ser produzido por um ajuste contínuo C1 de acordo com uma modalidade da presente invenção;[0010] Figure 4 is a schematic diagram showing exemplary unstable behavior that may be produced by continuous adjustment C1 in accordance with an embodiment of the present invention;
[0011] Figura 5 é um diagrama esquemático que mostra um spline contínuo exemplificativo ausente do comportamento instável mostrado na Figura 4, de acordo com uma modalidade da presente invenção;[0011] Figure 5 is a schematic diagram showing an exemplary continuous spline absent the unstable behavior shown in Figure 4, in accordance with an embodiment of the present invention;
[0012] Figura 6 é um diagrama esquemático que mostra previsão,realização e vetores de erro exemplificativos para uma previsão de cinco pontos adiante, de acordo com uma modalidade da presente invenção;[0012] Figure 6 is a schematic diagram showing exemplary forecast, performance, and error vectors for a five-point forward forecast, in accordance with an embodiment of the present invention;
[0013] Figura 7 é um diagrama esquemático que ilustra um segmento de um curso de tinta, de acordo com uma modalidade da presente invenção;[0013] Figure 7 is a schematic diagram illustrating a segment of an ink stroke, in accordance with an embodiment of the present invention;
[0014] Figura 8 é um fluxograma que mostra um método exemplificativo para renderizar tinta, de acordo com uma modalidade da presente invenção;[0014] Figure 8 is a flowchart showing an exemplary method for rendering ink, in accordance with an embodiment of the present invention;
[0015] Figura 9 é um diagrama esquemático que ilustra uma implantação exemplificativa de um mosaico de instância, de acordo com uma modalidade da presente invenção;[0015] Figure 9 is a schematic diagram illustrating an exemplary deployment of an instance tile, in accordance with an embodiment of the present invention;
[0016] Figura 10 é um diagrama esquemático que ilustra outra implantação exemplificativa de um mosaico de instância, de acordo com uma modalidade da presente invenção;[0016] Figure 10 is a schematic diagram illustrating another exemplary deployment of an instance tile, in accordance with an embodiment of the present invention;
[0017] Figura 11 é um diagrama esquemático de dois pontos de tinta adjacentes (presumindo que M é identidade), de acordo com uma modalidade da presente invenção;[0017] Figure 11 is a schematic diagram of two adjacent ink dots (assuming M is identity), in accordance with an embodiment of the present invention;
[0018] Figura 12 é um diagrama esquemático que ilustra uma ampliação ao redor de P(i+1) (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade), de acordo com uma modalidade da presente invenção;[0018] Figure 12 is a schematic diagram illustrating a magnification around P(i+1) (assuming that TopOrBottom=0, StartOrEnd=1 and M is identity), according to an embodiment of the present invention;
[0019] Figura 13 é um diagrama esquemático que ilustra uma ampliação de uma porção da Figura 12 ao redor de P+D (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade);[0019] Figure 13 is a schematic diagram illustrating an enlargement of a portion of Figure 12 around P+D (assuming that TopOrBottom=0, StartOrEnd=1 and M is identity);
[0020] Figura 14 é um fluxograma que ilustra um método exemplificativo para suavizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção;[0020] Figure 14 is a flowchart illustrating an exemplary method for smoothing digital ink input, in accordance with an embodiment of the present invention;
[0021] Figura 15 é um fluxograma que ilustra um método exemplificativo para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção; e[0021] Figure 15 is a flow chart illustrating an exemplary method for smoothing and rendering digital ink input, in accordance with an embodiment of the present invention; It is
[0022] Figura 16 é um fluxograma que ilustra outro método exemplificativo para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção.[0022] Figure 16 is a flow chart illustrating another exemplary method for smoothing and rendering digital ink input, in accordance with an embodiment of the present invention.
[0023] A matéria da presente invenção é descrita com especificidade no presente documento para corresponder às exigências estatutárias. Entretanto, a própria descrição não é destinada a limitar o escopo desta patente. Em vez disso, os inventores contemplaram que a matéria reivindicada também pode ser incorporada de outras formas para incluir etapas diferentes ou combinações de etapas semelhantes àquelas descritas neste documento, em conjunto com outras tecnologias presentes ou futuras. Além disso, embora os termos "etapa" e/ou "bloco" possam ser usados no presente documento para conotar elementos diferentes de métodos empregados, os termos não devem ser interpretados como uma sugestão de qualquer ordem em particular dentre ou entre diversas etapas no presente documento reveladas, a menos que, e exceto quando, a ordem de etapas individuais esteja explicitamente descrita.[0023] The subject matter of the present invention is described with specificity in the present document to correspond to the statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors contemplated that the claimed subject matter could also be incorporated in other ways to include different steps or combinations of steps similar to those described herein, along with other present or future technologies. Furthermore, although the terms "step" and/or "block" may be used in this document to connote different elements of methods employed, the terms should not be construed as suggesting any particular order within or between several steps in this document. documents revealed, unless and unless the order of individual steps is explicitly described.
[0024] A renderização da tinta digital sofre com diversos problemas que incluem a tinta não ser suave durante operações de zoom, mas, em vez de ter uma aparência semelhante a degrau, aumenta em latência (por exemplo, devido ao acúmulo de cache e/ou à suavização e à renderização após curso) e alterações na cor de tinta ou outras características de aparência quando uma caneta ou outro instrumento de entrada é liberado da superfície de recebimento (isto é, após o curso).[0024] Digital ink rendering suffers from several issues that include the ink not being smooth during zoom operations, but instead of having a step-like appearance, it increases in latency (e.g. due to cache buildup and/or or smoothing and rendering after stroke) and changes in ink color or other appearance characteristics when a pen or other input instrument is released from the receiving surface (ie, after stroke).
[0025] Diversos aspectos da tecnologia descrita no presente documento são geralmente destinados a sistemas, métodos e mídias de armazenamento legíveis por computador para suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização que impulsionam uma GPU (Unidade de Processamento de Gráfico). Uma pluralidade de pontos de tinta que inclui pelo menos um primeiro e um segundo ponto de tinta é recebida conforme os respectivos pontos de tinta são digitalizados. Com base pelo menos nos primeiro e segundo pontos de tinta, uma aproximação de Bézier ativa é computada. Conforme será entendido pelas pessoas de habilidade comum na técnica, uma aproximação ou curva de Bézier é uma curva paramétrica normalmente utilizada para modelar curvas suaves na renderização de gráfico. Conforme utilizado no presente documento, uma aproximação de Bézier é considerada "ativa" se for a curva ou a aproximação à qual o ponto de tinta mais recentemente recebido e processado (nesse caso, o segundo ponto de tinta) pertence. A quantidade exata de pontos de tinta utilizados na aproximação de Bézier ativa depende, pelo menos em parte, da obtenção de um ajuste adequado para pontos de tinta subsequentemente recebidos. Isto é, N pontos de tinta podem ser acumulados para os propósitos de ajuste, em que o valor de N continua a crescer até que um ajuste apropriado não seja mais possível, conforme mais completamente descrito abaixo.[0025] Various aspects of the technology described in this document are generally intended for computer-readable systems, methods, and storage media for efficient real-time ink stroke smoothing, trajectory prediction, and rendering that drive a GPU (Ink Processing Unit). Graphic). A plurality of ink dots including at least a first and a second ink dot are received as the respective ink dots are scanned. Based on at least the first and second ink points, an active Bézier approximation is computed. As will be understood by those of ordinary skill in the art, an approximation or Bézier curve is a parametric curve commonly used to model smooth curves in graph rendering. As used herein, a Bézier approximation is considered "active" if it is the curve or approximation to which the most recently received and processed ink dot (in this case, the second ink dot) belongs. The exact amount of ink dots used in the active Bézier approximation depends, at least in part, on achieving a proper fit for subsequently received ink dots. That is, N ink dots can be accumulated for the purposes of adjustment, where the value of N continues to grow until a proper adjustment is no longer possible, as more fully described below.
[0026] De modo sequencialmente posterior no tempo em relação ao primeiro e ao segundo pontos de tinta, um terceiro ponto de tinta é recebido e determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. O terceiro ponto de tinta é determinado para se ajustar adequadamente à aproximação de Bézier ativa se for determinado que um usuário não tem capacidade para detectar uma diferença entre o mesmo mediante a renderização. Tal determinação é geralmente baseada em um valor de diferença limítrofe predeterminado, por exemplo, 10 unidades himétricas (0,1 mm). Determina-se que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa, em que a aproximação de Bézier ativa é atualizada para incluir o terceiro ponto de tinta. Nas modalidades, a aproximação de Bézier "atualizada" pode ser considerada uma "nova" aproximação ou curva de Bézier. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier ativa, a aproximação de Bézier ativa é terminada e uma nova aproximação de Bézier diferente é computada. Impulsionando uma GPU, a saída de tinta suavizada resultante é renderizada, em que a saída resultante compreende os primeiro, segundo e terceiro pontos de tinta, em associação a uma superfície de recebimento de curso, por exemplo, uma tela de exibição sensível ao toque. (Conforme será entendido e observado pelas pessoas que têm habilidade comum na técnica, embora a suavização de Bézier cúbica seja primariamente descrita no presente documento, a suavização de Bézier quadrática, Bézier na potência de quatro e além, ou qualquer outro algoritmo de suavização conhecido pode ser utilizado dentro das modalidades da presente invenção).[0026] Sequentially later in time with respect to the first and second ink dots, a third ink dot is received and it is determined whether the third ink dot fits properly to the active Bézier approximation. The third ink dot is determined to properly fit the active Bézier approximation if it is determined that a user is unable to detect a difference between them upon rendering. Such a determination is usually based on a predetermined threshold difference value, for example 10 hymetric units (0.1 mm). The third ink dot is determined to fit the active Bézier approximation properly, whereupon the active Bézier approximation is updated to include the third ink dot. In the embodiments, the "updated" Bézier approximation may be considered a "new" approximation or Bézier curve. However, if it is determined that the third ink dot does not properly fit the active Bézier approximation, the active Bézier approximation is terminated and a new, different Bézier approximation is computed. By driving a GPU, the resulting smoothed ink output is rendered, where the resulting output comprises the first, second and third ink dots, in association with a stroke receiving surface, for example a touch display screen. (As will be understood and observed by those of ordinary skill in the art, although cubic Bézier smoothing is primarily described herein, quadratic Bézier smoothing, Bézier to the power of four and beyond, or any other known smoothing algorithm can be used within the embodiments of the present invention).
[0027] Consequentemente, uma modalidade da presente invenção é destinada a um método ser realizado por um ou mais dispositivos de computação que incluem pelo menos um processador, em que o método é para suavizar a entrada de tinta digital. O método inclui receber um primeiro ponto de tinta, receber um segundo ponto de tinta, computar uma aproximação de Bézier cúbica ativa com base nos primeiro e segundo pontos de tinta, receber um terceiro ponto de tinta (em que o terceiro ponto de tinta é recebido de modo sequencialmente posterior no tempo do que o primeiro e o segundo pontos de tinta), determinar se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa e computar uma nova aproximação de Bézier cúbica que utiliza os primeiro, segundo e terceiro pontos de tinta. A nova aproximação de Bézier cúbica pode compreender uma aproximação de Bézier cúbica ativa atualizada em que se determina que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa ou a uma nova aproximação de Bézier cúbica diferente, em que se determina que o terceiro ponto de tinta falha a se ajustar adequadamente à aproximação de Bézier cúbica ativa.[0027] Accordingly, one embodiment of the present invention is intended for a method to be performed by one or more computing devices that include at least one processor, wherein the method is to smooth the input of digital ink. The method includes receiving a first ink dot, receiving a second ink dot, computing an active cubic Bézier approximation based on the first and second ink dots, receiving a third ink dot (where the third ink dot is received sequentially later in time than the first and second ink dots), determine whether the third ink dot fits properly to the active cubic Bézier approximation, and compute a new cubic Bézier approximation that uses the first, second, and third ink dots. The new cubic Bezier approximation can comprise an updated active cubic Bezier approximation where the third ink dot is determined to fit properly to the active cubic Bezier approximation or a different new cubic Bezier approximation where the new cubic Bezier approximation is determined that the third ink dot fails to properly fit the active cubic Bézier approximation.
[0028] Em outra modalidade, a presente invenção é destinada a um sistema que compreende uma unidade de processamento central (CPU) e uma unidade de processamento de gráfico (GPU). A CPU é configurada para receber sequencialmente os primeiro e segundo pontos de tinta, gerar um fragmento de tinta suavizado ativo com base nos primeiro e segundo pontos de tinta, receber um terceiro ponto de tinta (de modo sequencialmente posterior no tempo), determinar se o terceiro ponto de tinta se ajusta adequadamente ao fragmento de tinta suavizado ativo e, mediante a determinação de que o terceiro ponto de tinta se ajusta adequadamente ao fragmento de tinta suavizado ativo, atualizar o fragmento de tinta suavizado ativo. Alternativamente, mediante a determinação de que o terceiro ponto de tinta não se ajusta adequadamente ao fragmento de tinta suavizado ativo, a CPU é configurada para terminar o fragmento de tinta suavizado ativo e iniciar um segundo fragmento de tinta suavizado. A GPU é configurada para renderizar a saída de tinta suavizada que compreende os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de exibição.[0028] In another embodiment, the present invention is intended for a system comprising a central processing unit (CPU) and a graphics processing unit (GPU). The CPU is configured to sequentially receive the first and second ink dots, generate an active smoothed ink patch based on the first and second ink dots, receive a third ink dot (sequentially later in time), determine whether the third ink dot fits properly to the active smoothed ink patch, and upon determining that the third ink point fits properly to the active smoothed ink patch, update the active smoothed ink patch. Alternatively, upon determining that the third ink dot does not properly fit the active smoothed ink patch, the CPU is configured to terminate the active smoothed ink patch and start a second smoothed ink patch. The GPU is configured to render smoothed ink output comprising the first, second, and third ink dots associated with a display surface.
[0029] Em ainda outra modalidade, a presente invenção é destinada a um aparelho que compreende pelo menos um processador e uma memória que armazena uma rotina de suavização e renderização de tinta digital. Quando executada por pelo menos um processador, a rotina de suavização e renderização de tinta digital faz com que o aparelho receba um primeiro ponto de tinta; receba um segundo ponto de tinta; compute uma aproximação de Bézier cúbica ativa com base nos primeiro e segundo pontos de tinta; receba um terceiro ponto de tinta (de modo sequencialmente posterior no tempo em relação ao primeiro e ao segundo pontos de tinta); determine se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa; compute uma nova aproximação de Bézier cúbica com o uso dos primeiro, segundo e terceiro pontos de tinta; e renderize a saída de tinta suavizada que compreende os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de exibição.[0029] In yet another embodiment, the present invention is aimed at an apparatus comprising at least one processor and a memory that stores a digital ink smoothing and rendering routine. When run by at least one processor, the digital ink smoothing and rendering routine causes the device to receive a first dot of ink; receive a second ink point; compute an active cubic Bézier approximation based on the first and second ink points; receive a third ink dot (sequentially later in time than the first and second ink dots); determine if the third ink dot fits properly to the active cubic Bézier approximation; compute a new cubic Bézier approximation using the first, second, and third ink dots; and render smoothed ink output comprising the first, second, and third ink dots in association with a display surface.
[0030] Tendo descrito brevemente uma visão geral de modalidades da presente invenção, um ambiente operacional exemplificativo em que modalidades da presente invenção podem ser implantadas é descrito abaixo a fim de fornecer um contexto geral para diversos aspectos da presente invenção. Com referência às Figuras em geral e inicialmente à Figura 1 em particular, um ambiente operacional exemplificativo para implantar modalidades da presente invenção é mostrado e projetado geralmente como um dispositivo de computação 100. O dispositivo de computação 100 é apenas um exemplo de um ambiente de computação adequado e não é destinado a sugerir qualquer limitação ao escopo de uso ou à funcionalidade das modalidades da invenção. O dispositivo de computação 100 também não deve ser interpretado como tendo qualquer dependência ou exigência em relação a qualquer um componente, nem qualquer combinação de componentes ilustrada.[0030] Having briefly described an overview of embodiments of the present invention, an exemplary operating environment in which embodiments of the present invention may be deployed is described below in order to provide a general context for various aspects of the present invention. With reference to the Figures in general and initially to Figure 1 in particular, an exemplary operating environment for implementing embodiments of the present invention is shown and designed generally as
[0031] As modalidades da invenção podem ser descritas no contexto geral de código de computador ou instruções utilizáveis por máquina, incluindo instruções utilizáveis por máquina ou executáveis por computador, tais como módulos de programa, que são executadas por um computador ou outra máquina, tal como um assistente de dados pessoais ou outro dispositivo manual. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados e semelhantes e/ou se referem a código que realiza tipos de dados abstratos de tarefas particulares ou implementos particulares. As modalidades da invenção podem ser praticadas em uma variedade de configurações de sistema, incluindo, mas sem limitação, dispositivos manuais, aparelhos eletrônicos de consumidor, computadores de propósito geral, dispositivos de computação de mais especialidade e semelhantes. As modalidades da invenção também podem ser praticadas em ambientes de computação distribuídos, em que tarefas são realizadas por dispositivos de processamento remotos que são ligados através de uma rede de comunicações.[0031] Embodiments of the invention may be described in the general context of computer code or machine-usable instructions, including machine-usable or computer-executable instructions, such as program modules, that are executed by a computer or other machine, such as such as a personal data assistant or other handheld device. Generally, program modules include routines, programs, objects, components, data structures, and the like, and/or refer to code that realizes abstract data types of particular tasks or particular implements. Embodiments of the invention may be practiced in a variety of system configurations, including, but not limited to, handheld devices, consumer electronics, general purpose computers, more specialty computing devices, and the like. Embodiments of the invention can also be practiced in distributed computing environments, where tasks are performed by remote processing devices that are linked via a communications network.
[0032] Ainda com referência à Figura 1, o dispositivo de computação 100 inclui um barramento 110 que acopla direta ou indiretamente os seguintes dispositivos: uma memória 112, um ou mais processadores 114, um ou mais componentes de apresentação 116, uma ou mais portas de entrada/saída (I/O) 118, um ou mais componentes de I/O 120 e uma fonte de alimentação ilustrativa 122. O barramento 110 representa o que pode ser um ou mais barramentos (tais como um barramento de endereço, um barramento de dados ou uma combinação dos mesmos). Embora os diversos blocos da Figura 1 sejam mostrados com linhas por uma questão de clareza, na realidade, esses blocos representam componentes lógicos, não necessariamente reais. Por exemplo, uma pessoa pode considerar um componente de apresentação, tal como um dispositivo de exibição, como sendo um componente de I/O. Além disso, os processadores têm memória. Os inventores da presente invenção reconhecem que tal é a natureza da técnica e reiteram que o diagrama da Figura 1 é meramente ilustrativo de um dispositivo de computação exemplificativo que pode ser usado em conexão com uma ou mais modalidades da presente invenção. A distinção não é feita entre tais categorias como "estação de trabalho", "servidor", "computador do tipo laptop", "dispositivo manual" etc., uma vez que todos estão contemplados no escopo da Figura 1 e na referência ao "dispositivo de computação".[0032] Still referring to Figure 1, the
[0033] O dispositivo de computação 100 inclui tipicamente uma variedade de mídias legíveis por computador. As mídias legíveis por computador podem ser quaisquer mídias disponíveis que são acessíveis pelo dispositivo de computação 100 e incluem tanto mídias voláteis quanto não voláteis, mídias removíveis quanto não removíveis. As mídias legíveis por computador compreendem mídias de armazenamento por computador e mídias de comunicação; mídias de armazenamento por computador que excluem sinais por si. As mídias de armazenamento de computador incluem mídias voláteis e não voláteis, mídias removíveis e não removíveis implantadas em qualquer método ou tecnologia para armazenamento de informações, tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. As mídias de armazenamento de computador incluem, mas sem limitação, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVDs) ou outro armazenamento em disco óptico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outra mídia tangível que possa ser usada para armazenar as informações desejadas e que possa ser acessada pelo dispositivo de computação 100. As mídias de comunicação, por outro lado, incorporam instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulados, tal como uma onda de portadora ou outro mecanismo de transporte, e inclui quaisquer mídias de entrega de informações. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais características definidas ou alteradas de tal maneira a codificar as informações no sinal. A título de exemplo e não de limitação, as mídias de comunicação incluem mídias com fio, tal como uma rede com fio ou uma conexão com fio direta, e mídias sem fio, tais como acústica, infravermelho e outras mídias sem fio. As combinações de quaisquer dos supracitados também devem ser abrangidas pelo escopo de mídias legíveis por computador.[0033]
[0034] A memória 112 inclui mídias de armazenamento por computador na forma de memória volátil e/ou não volátil. A memória pode ser removível, não removível ou uma combinação das mesmas. Os dispositivos de hardware exemplificativos incluem memória de estado sólido, unidades rígidas, unidades de disco óptico e semelhantes. O dispositivo de computação 100 inclui um ou mais processadores que leem dados a partir de diversas entidades, tais como a memória 112 ou os componentes de I/O 120. O componente (ou os componentes) de apresentação 116 apresentam indicações de dados para um usuário ou outro dispositivo. Os componentes de apresentação exemplificativos incluem um dispositivo de exibição, uma alto-falante, um componente de impressão, um componente de vibração e semelhantes.[0034]
[0035] As portas de I/O 118 permitem que o dispositivo de computação 100 seja logicamente acoplado a outros dispositivos que incluem os componentes de I/O 120, em que alguns podem ser embutidos. Os componentes de I/O ilustrativo incluem um microfone, um joystick, um pad de jogos, um disco de satélite, um digitalizador, uma impressora, um dispositivo de exibição, um dispositivo sem fio, um controlador (tal como um stylus, um teclado e um mouse), uma interface de usuário natural (NUI) e semelhante. Nas modalidades, um digitalizador de caneta (não mostrado) e um instrumento de entrada anexo (também não mostrado, mas que pode incluir, a título de exemplo apenas, uma caneta ou um stylus) são fornecidos a fim de capturar digitalmente a entrada de usuário de mão livre. A conexão entre o digitalizador de caneta e o processador (ou processadores) 114 pode ser direta ou por meio de um acoplamento que utiliza uma porta em série, uma porta paralela e/ou outra interface e/ou outro sistema barramento conhecido na técnica. Além disso, o componente de entrada de digitalizador pode ser um componente separado de um componente de saída, tal como um dispositivo de exibição ou, em algumas modalidades, a área de entrada utilizável de um digitalizador pode ser coextensiva com a área de exibição de um dispositivo de exibição, integrado com o dispositivo de exibição, ou pode existir como um dispositivo separado que se sobrepõe ou é anexo de outro modo a um dispositivo de exibição. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0035] The I/
[0036] Uma NUI processa gestos de ar, voz ou outras entradas fisiológicas geradas por um usuário. As entradas de NUI apropriada podem ser interpretadas como cursos de tinta para apresentação em associação ao dispositivo de computação 100. Essas solicitações podem ser transmitidas para o elemento de rede apropriado para processamento adicional. Uma NUI implanta qualquer combinação de reconhecimento de fala, toque e reconhecimento de stylus, reconhecimento facial, reconhecimento biométrico, reconhecimento de gesto tanto na tela quanto adjacente à tela, gestos de ar, cabeça e rastreamento ocular e reconhecimento de toque associado a visores no dispositivo de computação 100. O dispositivo de computação 100 pode ser equipado com câmeras de profundidade, tais como, sistemas de câmera estereoscópicos, sistemas de câmera de infravermelho, sistemas de câmera de RGB e combinações desses para detecção e reconhecimento de gesto. Ainda, o dispositivo de computação 100 pode ser equipado com acelerômetros ou giroscópios que permitem a detecção de movimento. A saída dos acelerômetros ou dos giroscópios pode ser fornecida para p visor do dispositivo de computação 100 para renderizar realidade aumentada imersiva ou realidade virtual.[0036] A NUI processes air gestures, voice or other physiological inputs generated by a user. Appropriate NUI entries may be interpreted as ink strokes for presentation in association with
[0037] Os aspectos da matéria descrita no presente documento podem ser descritos no contexto geral de instruções executáveis por computador, tais como módulos de programa que são executados por um dispositivo móvel. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados e semelhantes que executam tarefas ou implantam tipos de dados abstratos particulares. Os aspectos da matéria descrita no presente documento também podem ser praticados em ambientes de computação distribuídos, em que as tarefas são realizadas por meio de dispositivos de processamento remoto que são ligados através de redes de comunicações. Em um ambiente de computação distribuído, os módulos de programa podem estar situados em mídias de armazenamento em computador tanto locais quanto remotas, incluindo em dispositivos de armazenamento de memória. As instruções utilizáveis por computador formam uma interface para permitir que um computador reaja de acordo com uma fonte de entrada. As instruções cooperam com outros segmentos de código para iniciar uma variedade de tarefas em resposta aos dados recebidos em conjunto com a fonte dos dados recebidos.[0037] Aspects of subject matter described herein may be described in the general context of computer executable instructions, such as program modules that are executed by a mobile device. Generally, program modules include routines, programs, objects, components, data structures, and the like that perform tasks or implement particular abstract data types. Aspects of subject matter described herein may also be practiced in distributed computing environments, where tasks are performed via remote processing devices that are linked via communications networks. In a distributed computing environment, program modules may be located on both local and remote computer storage media, including on memory storage devices. Computer-usable instructions form an interface to allow a computer to react to an input source. Instructions cooperate with other code segments to initiate a variety of tasks in response to received data in conjunction with the source of the received data.
[0038] Conforme anteriormente apresentado, as modalidades da presente invenção fornecem sistemas, métodos e mídias de armazenamento legíveis por computador para sistemas, métodos e mídias de armazenamento legíveis por computador são fornecidos para suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização de curso de tinta impulsionada por GPU. Em referência à Figura 2, um diagrama de blocos é fornecido, o qual ilustra um sistema de computação exemplificativo 200 em que modalidades da presente invenção podem ser empregadas. Geralmente, o sistema de computação 200 ilustra um ambiente em que a entrada de tinta digital parece suave durante e após a entrada de curso, mesmo em níveis de zoom significativos. O sistema de computação 200 ilustra ainda um ambiente em que a suavização e a renderização de cursos de tinta digital são fornecidas de forma que alterações ao curso com base na suavização e/ou em outro processamento não sejam substancialmente percebidas por um usuário durante a entrada de curso ou após o curso. Ainda ainda, o sistema de computação 200 ilustra um ambiente em que a latência de renderização não é aumentada e é normalmente diminuída, pelo menos em parte, pelo uso das técnicas de previsão ainda descritas no presente documento abaixo.[0038] As previously presented, embodiments of the present invention provide systems, methods and computer-readable storage media for systems, methods and computer-readable storage media are provided for efficient real-time ink stroke smoothing, trajectory prediction and GPU-driven ink stroke rendering. With reference to Figure 2, a block diagram is provided which illustrates an
[0039] Dentre outros componentes não mostrados, o sistema de computação 200 inclui geralmente um dispositivo de computação de usuário 210 configurado para receber a entrada de tinta digital e fornecer a saída de tinta suavizada em associação a um visor 224 e um mecanismo de suavização de tinta 212 configurado para suavizar e prever uma entrada de curso de tinta futura, conforme descrito mais completamente abaixo. Nas modalidades (e conforme mostrado na Figura 2), o dispositivo de computação de usuário 210 e o mecanismo de suavização de tinta 212 podem estar em comunicação um com o outro por meio de uma rede 214. A rede 214 pode incluir, sem limitação, uma ou mais redes de área local (LANs) e/ou redes de área ampla (WANs). Tais ambientes de rede são comuns em escritórios, redes de computador de toda a empresa, intranets e a Internet. Consequentemente, a rede 214 não é ainda descrita no presente documento.[0039] Among other components not shown, the
[0040] Deve ser entendido que qualquer número de dispositivos de computação de usuário 210 e/ou mecanismos de suavização de tinta 212 pode ser empregado no sistema de computação 200 dentro do escopo das modalidades da presente invenção. Cada um pode compreender um único dispositivo/interface ou múltiplos dispositivos/interfaces que cooperam em um ambiente distribuído. Por exemplo, o mecanismo de suavização de tinta 212 pode compreender múltiplos dispositivos e/ou módulos dispostos em um ambiente distribuído que fornecem coletivamente a funcionalidade do mecanismo de suavização de tinta 212 descrita no presente documento. Ainda, outros componentes ou módulos não mostrados também podem estar incluídos no sistema de computação 200.[0040] It should be understood that any number of
[0041] Em algumas modalidades, um ou mais dentre os componentes/módulos ilustrados podem ser implantados como aplicativos autônomos. Em outras modalidades, um ou mais dentre os componentes/módulos ilustrados podem ser implantados por meio do dispositivo de computação de usuário 210, do mecanismo de suavização de tinta 212 ou como um serviço com base em Internet. Será entendido pelas pessoas de habilidade comum na técnica que os componentes/módulos ilustrados na Figura 2 são exemplificativos em natureza e em número e não devem ser interpretados como limitantes. Qualquer número de componentes/módulos pode ser empregado para alcançar a funcionalidade desejada dentro do escopo das modalidades da presente invenção. Ainda, os componentes/módulos podem estar localizados em qualquer número de mecanismos de suavização de tinta 212 e/ou de dispositivos de computação de usuário 210. A título de exemplo apenas, o mecanismo de suavização de tinta 212 pode ser fornecido como um único dispositivo de computação, um agrupamento de dispositivos de computação ou um dispositivo de computação remoto a partir de um ou mais dos componentes restantes.[0041] In some embodiments, one or more of the illustrated components/modules can be deployed as standalone applications. In other embodiments, one or more of the illustrated components/modules may be deployed via
[0042] Deve ser entendido que essa e outras disposições descritas no presente documento são apresentadas apenas como exemplos. Outras disposições e outros elementos (por exemplo, máquinas, interfaces, funções, ordens e agrupamentos de funções, etc.) podem ser usados além daqueles mostrados e/ou descritos ou no lugar dos mesmos e alguns elementos podem ser completamente omitidos. Ainda, muitos dos elementos descritos no presente documento são entidades funcionais que podem ser implantadas como componentes distintos ou distribuídos ou em conjunto com outros componentes e em qualquer combinação e local adequados. Diversas funções descritas no presente documento como sendo realizadas por uma ou mais entidades podem ser executadas por hardware, firmware, aplicativos, unidades e/ou software. Por exemplo, diversas funções podem ser executadas por um processador que executa instruções armazenadas na memória.[0042] It should be understood that this and other provisions described in this document are presented as examples only. Other layouts and other elements (eg machines, interfaces, functions, function orders and groupings, etc.) may be used in addition to those shown and/or described or in place of them, and some elements may be omitted entirely. Furthermore, many of the elements described in this document are functional entities that can be deployed as separate or distributed components or together with other components and in any suitable combination and location. Several functions described herein as being performed by one or more entities may be performed by hardware, firmware, applications, drives and/or software. For example, several functions can be performed by a processor that executes instructions stored in memory.
[0043] O dispositivo de computação de usuário 210 pode incluir qualquer tipo de dispositivo de computação, tal como o dispositivo de computação 100 descrito com referência à Figura 1, por exemplo. Conforme ilustrado, o dispositivo de computação de usuário 210 inclui um componente de recebimento de entrada de tinta 216, um componente de transmissão de entrada de tinta 218, um componente de recebimento de saída de curso de tinta suavizado (e, em modalidades, estendido) 220 e uma GPU 222 para renderizar saída de tinta suavizada em associação a um visor 224. O componente de recebimento de entrada de tinta 216 é configurado para receber uma entrada de usuário de cursos de tinta, geralmente inserida por meio de um componente de I/O, tal como uma caneta ou um stylus. O componente de transmissão de entrada de tinta 218 é configurado para transmitir cursos de tinta recebidos pelo componente de recebimento de entrada de tinta 216 para o mecanismo de suavização de tinta 212, por exemplo, por meio da rede 214. O componente de recebimento de saída de curso de tinta suavizado 220 é configurado para receber (geralmente a partir do mecanismo de suavização de tinta 212 por meio da rede 214, conforme descrito mais completamente abaixo), a saída de tinta suavizada para renderização em associação ao visor 224. A GPU 222 é configurada para processar (conforme descrito mais completamente abaixo) a saída de tinta suavizada recebida para renderização em associação ao visor 224.[0043] The
[0044] Deve ser observado que a funcionalidade descrita no presente documento como sendo realizada por qualquer componente do dispositivo de computação de usuário 210 pode ser realizada por qualquer outro aplicativo, software de aplicativo, interface de usuário ou semelhantes que têm capacidade para renderizar conteúdo de gráfico. Deve ser ainda observado que as modalidades da presente invenção são igualmente aplicáveis a dispositivos de computação móveis e dispositivos que aceitam entrada de gesto, toque e/ou voz. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0044] It should be noted that the functionality described herein as being performed by any component of the
[0045] Conforme ilustrado, o mecanismo de suavização de tinta 212 inclui um ajuste de spline 226, um componente de previsão de tinta 232 e um componente de renderização de tinta 234. O ajuste de spline 226 é configurado para aproximar um curso de pontos de tinta a um conjunto de segmentos de Bézier cúbicos. O ajuste de spline 226 é alimentado a um único ponto de tinta em um momento e para cada novo ponto de tinta, é configurado para atualizar o segmento de Bézier ativo ou iniciar um novo segmento de Bézier se o novo ponto de tinta não pode ser ajustado bem o suficiente ao segmento de Bézier ativo. Desse modo, o ajuste de spline 226 inclui dois subcomponentes: um ajuste de Bézier 228 e um componente de segmentação 230.[0045] As illustrated, the
[0046] O ajuste de Bézier 228 é configurado para manter um conjunto de pontos ativos que é recebido sequencialmente em um momento conforme os mesmos são digitalizados. Cada vez que o conjunto é atualizado, o ajuste de Bézier 228 é configurado para computar uma nova aproximação de Bézier cúbica. Entretanto, o conjunto ativo não contém necessariamente todos os pontos desde o começo do curso uma vez que o mesmo pode ser redefinido pelo componente de segmentação 230, conforme descrito mais completamente abaixo.[0046] The
[0047] O componente de segmentação 230 é configurado para avaliar a qualidade do ajuste produzido pelo ajuste de Bézier 228 e decidir quando atualizar a aproximação de Bézier existente e quando iniciar uma nova aproximação ou curva de Bézier. O ajuste de Bézier 228 também realiza tarefas, tais como detecção de cúspide (descrito mais completamente abaixo) e controla as propriedades analíticas do spline configurando-se o ajuste de Bézier 228 (conforme descrito mais completamente abaixo).[0047] The segmentation component 230 is configured to evaluate the quality of the fit produced by the
[0048] Essa seção descreve como o ajuste de Bézier 228 se aproxima de um conjunto de pontos de tinta com uma aproximação ou curva de Bézier cúbica. Para brevidade, apenas informações posicionais são consideradas na presente descrição. Entretanto, é objetivo estender as fórmulas a qualquer número de recursos. Por exemplo, em algumas implantações, o raio de um ponto de tinta recebido (que pode ser proporcional à pressão exercida e ao tamanho do curso de pincel de entrada) pode ser utilizado. Em outras implantações, as propriedades que incluem inclinação, azimute ou semelhantes podem ser usadas. Qualquer um e todos os recursos, e qualquer combinação dos mesmos, são contemplados para estarem dentro do escopo das modalidades da presente invenção.[0048] This section describes how the 228 Bézier fit approximates a set of ink dots with an approximation or cubic Bézier curve. For brevity, only positional information is considered in the present description. However, it is intended to extend the formulas to any number of features. For example, in some deployments, the radius of an incoming paint dot (which can be proportional to the pressure exerted and the size of the input brush stroke) can be used. In other deployments, properties including tilt, azimuth, or the like may be used. Any and all features, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.
[0049] Em qualquer dado ponto no tempo, o ajuste de Bézier 228 se aproxima de um conjuntode pontos ativos com um único segmento de Bézier, B(t). A tarefa de ajuste é formulada como um problema de minimização:em que E é uma função de erro que será mais completamente descrita abaixo.[0049] At any given point in time, the Bézier fit 228 approximates a set of hotspots with a single Bézier segment, B(t). The fitting task is formulated as a minimization problem: where E is an error function that will be more fully described below.
[0050] Deixar queseja a linha poligonal implícita descrita pelo conjunto Sk. Então, [0050] Let let be the implicit polygonal line described by the set Sk. Then,
[0051] Uma vez que é de alto custo computar a distância entre um ponto na linha poligonal e a curva de Bézier, de acordo com modalidades da presente invenção, a distância entre os dois pontos obtida amostrando-se a linha poligonal e a curva de Bézier no mesmo valor do parâmetro t é aproximada: [0051] Since it is expensive to compute the distance between a point on the polygonal line and the Bézier curve, according to embodiments of the present invention, the distance between the two points obtained by sampling the polygonal line and the curve Bézier at the same value of the parameter t is approximated:
[0052] A função de erro para a qual a minimização é desejada pode, então, ser definida como: [0052] The error function for which minimization is desired can then be defined as:
[0053] N = k e ti são selecionados de forma quea função de erro represente todos e apenas os pontos em Sk. Entretanto, uma vez que uma aproximação cúbica está sendo utilizada, a amostra inclui pelo menos quatro pontos.[0053] N = k and ti are selected so that the error function represents all and only the points in Sk. However, since a cubic approximation is being used, the sample includes at least four points.
[0054] As variáveis do problema de minimização são pontos de controle de B. Deixe que C = [C0, C1, C2, C3] seja o vetor de pontos de controle. Uma abordagem descendente de gradiente é usada para encontrar valores ideais: [0054] The variables of the minimization problem are control points of B. Let C = [C0, C1, C2, C3] be the vector of control points. A gradient descent approach is used to find optimal values:
[0055] O parâmetro da regra de atualização controla a taxa de convergência. Em geral, menos iteração é exigida com valores maiores, mas, ao mesmo tempo, os cálculos podem se tornar instáveis quando é grande. Um parâmetro exemplificativo que pode ser utilizado é: [0055] The update rule parameter controls the convergence rate. In general, less iteration is required with larger values, but at the same time, calculations can become unstable when large. An example parameter that can be used is:
[0056] Além disso, o risco de divergência pode ser mitigado dividindo-se pelo número de iterações que não produziram quaisquer aperfeiçoamentos no erro de ajuste.[0056] Furthermore, the risk of divergence can be mitigated by dividing by the number of iterations that did not produce any improvements in the fit error.
[0057]é o gradiente do erro de aproximação em relação a pontos de controle de B e pode ser computado conforme o seguinte: [0057] is the gradient of the approximation error with respect to control points of B and can be computed as follows:
[0058] Deve ser observado que existem quatro graus de liberdade na regra de atualização, que correspondem aos quatros pontos de controle de uma aproximação de Bézier cúbica. Entretanto, o componente de segmentação 230 descrito na próxima seção irá usar alguns desses graus de liberdade para impor propriedades analíticas desejáveis (por exemplo, continuidade) no spline.[0058] It should be noted that there are four degrees of freedom in the update rule, which correspond to the four control points of a cubic Bézier approximation. However, the slicer component 230 described in the next section will use some of these degrees of freedom to enforce desirable analytical properties (eg, continuity) on the spline.
[0059] O componente de segmentação 230 atinge duas tarefas de base. Primeiro, o mesmo decide a possibilidade de começar uma nova aproximação de Bézier ou atualizar a aproximação atual. Segundo, o mesmo reforça propriedades analíticas no spline (mais particularmente continuidade C0 ou C1) reconfigurando-se o ajuste de Bézier cúbico 228, em qualquer momento time uma nova aproximação ou curva é iniciada. Conforme utilizado no presente documento e conforme será entendido pelas pessoas de habilidade comum na técnica, a "continuidade" se refere à suavidade relativa nas juntas em que as curvas de Bézier adjacentes se conectam. "Continuidade C0" se refere a situações em que curvas de Bézier adjacentes compartilham os mesmos pontos terminais. "Continuidade C1" se refere a situações em que curvas de Bézier adjacentes compartilham tanto os mesmos pontos terminais quanto as mesmas derivadas.[0059] The threading component 230 accomplishes two basic tasks. First, it decides whether to start a new Bézier approximation or update the current approximation. Second, it enforces analytical properties on the spline (more particularly C0 or C1 continuity) by resetting the cubic Bézier fit 228, any time a new approximation or curve is initiated. As used herein and as will be understood by those of ordinary skill in the art, "continuity" refers to the relative smoothness at the joints where adjacent Bézier curves connect. "Continuity C0" refers to situations where adjacent Bézier curves share the same endpoints. "C1 continuity" refers to situations where adjacent Bézier curves share both the same endpoints and the same derivatives.
[0060] A decisão da possibilidade de iniciar uma nova aproximação de Bézier ou atualizar a aproximação atual é baseada na qualidade do ajuste. Mais especificamente, a decisão da possibilidade de iniciar uma nova aproximação de Bézier ou atualizar a aproximação atual é baseada na distância máxima entre os pontos de tinta digitalizados recebidos e a melhor aproximação computada pelo ajuste de Bézier cúbico 228. Nas modalidades, o limiar de corte pode ser 10 unidades himétricas (0,1mm), um ponto acima do qual os usuários em um estudo de usabilidade indicam que a tinta altera conforme novos pontos chegam (diferente de se estender para o novo ponto) foi observável. Deve ser observado, entretanto, que o limiar se correlaciona ao tamanho físico da tinta conforme o mesmo está sendo renderizado. Por exemplo, se a tinta molhada (isto é, a tinta renderizada durante a atividade de curso, antes que o instrumento de entrada seja liberado da superfície de recebimento) estiver sendo renderizada com 10x de magnificação, então, o limiar precisará ser provavelmente 10 vezes menor ou o usuário irá observar alterações de tinta. Obviamente, uma vez que a tinta seca (isto é, a tinta na superfície de recebimento uma vez que o instrumento de entrada é liberado da mesma) não altera (isto é, a segmentação já está feita), esse ponto é significativo apenas para tinta molhada. Deve ser ainda observado que o limiar pode ser uma função de qualquer quantidade de pontos de tinta anteriores, quaisquer recursos de tais pontos de tinta (por exemplo, coordenadas, pressão, inclinação, torção, etc.) e/ou pode ser dependente de dispositivo (por exemplo, DPI, memória disponível, CPU, GPU e semelhantes). Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0060] The decision whether to start a new Bézier approximation or update the current approximation is based on the quality of the fit. More specifically, the decision whether to start a new Bézier approximation or update the current approximation is based on the maximum distance between the received digitized ink dots and the best approximation computed by the
[0061] A outra tarefa importante realizada pelo componente de segmentação 230 é impor propriedades analíticas desejáveis no spline. Pelo menos, o spline precisa ser conectado (continuidade C0), que significa que o primeiro ponto de controle de cada curva ou segmento de Bézier precisa corresponder ao último ponto de controle da curva ou do segmento anterior, perdendo, desse modo, um grau de liberdade: [0061] The other important task performed by the segmentation component 230 is to enforce desirable analytical properties on the spline. At a minimum, the spline must be connected (C0 continuity), which means that the first control point of each Bézier curve or segment must correspond to the last control point of the previous curve or segment, thereby losing one degree of spline. freedom:
[0062] Embora a continuidade C0 garanta que o spline está conectado, não é suficiente produzir tinta suave, conforme mostrado na Figura 3, em que as regiões de conexão circuladas apontam os artefatos ruins (não suaves).[0062] Although the C0 continuity ensures that the spline is connected, it is not enough to produce smooth ink, as shown in Figure 3, where the circled connection regions point out the bad (non-smooth) artifacts.
[0063] De acordo com as modalidades da presente invenção, os artefatos ruins na Figura 3 podem ser removidos impondo-se a continuidade C1. A continuidade C1 paramétrica exige que a derivada de um segmento em t=0 corresponda àquela do segmento anterior em t=1: [0063] According to the embodiments of the present invention, the bad artifacts in Figure 3 can be removed by imposing the continuity C1. Parametric C1 continuity requires that the derivative of a segment at t=0 correspond to that of the previous segment at t=1:
[0064] Entretanto, outro grau de liberdade é perdido quando a continuidade C1 paramétrica é imposta, a qual deixa pouca liberdade para produzir bons ajustes. Felizmente, tudo que é necessário para que o spline pareça suave é a continuidade C1 geométrica (em oposição a paramétrica) que é menos restritiva e exige uma restrição apenas da direção do segundo ponto de controle: [0064] However, another degree of freedom is lost when parametric C1 continuity is imposed, which leaves little freedom to produce good fits. Fortunately, all that is needed to make the spline look smooth is geometric (as opposed to parametric) C1 continuity which is less restrictive and requires a constraint on just the direction of the second control point:
[0065] De acordo com modalidades da presente invenção, a continuidade C1 geométrica pode ser imposta projetando-se o segundo ponto de controle na direção exigida, após a regra de atualização ter sido aplicada.[0065] According to embodiments of the present invention, geometric continuity C1 can be imposed by projecting the second control point in the required direction, after the update rule has been applied.
[0066] Em momentos, a implantação de continuidade C1 geométrica resulta na observação de comportamento instável desagradável, por exemplo, conforme mostrado na Figura 4. Esse comportamento normalmente parece pior do que as cúspides ocasionais observados nos splines contínuos C0. A causa principal desse comportamento parece ser que a derivada do último Bézier cometido em t=1 não concorda com aquela dos pontos digitalizados correspondentes. Portanto, o problema pode ser mitigado, conforme ilustrado na Figura 5, adicionando-se uma nova restrição no ajuste de Bézier 228 que a derivada da aproximação de Bézier em t=1 precisa corresponder àquela da aproximação ou do segmento de Bézier que conecta os últimos dois pontos digitalizados. Deve ser observado que outras mitigações são possíveis dentro do escopo das modalidades da presente invenção. Por exemplo, tanto o Bézier anterior quanto o atual podem ser atualizados. Alternativamente, dois Béziers podem ser ajustados em um momento, a continuidade imposta entre os dois e um novo par de segmentos de Bézier iniciados sempre que as exigências de ajuste não são satisfeitas.[0066] At times, the deployment of geometric C1 continuity results in the observation of unsightly choppy behavior, for example, as shown in Figure 4. This behavior typically looks worse than the occasional cusps observed on the C0 continuous splines. The main cause of this behavior seems to be that the derivative of the last Bézier committed at t=1 does not agree with that of the corresponding digitized points. Therefore, the problem can be mitigated, as illustrated in Figure 5, by adding a new restriction on the Bézier fit 228 that the derivative of the Bézier approximation at t=1 must correspond to that of the approximation or the Bézier segment that connects the last two digitized points. It should be noted that other mitigations are possible within the scope of embodiments of the present invention. For example, both the previous and current Bézier can be updated. Alternatively, two Béziers can be fitted at a time, continuity imposed between the two and a new pair of Bézier segments initiated whenever the fit requirements are not satisfied.
[0067] Embora, em geral, a continuidade C1 seja uma propriedade desejável, existem casos que não é benéfico reforçar. Mais particularmente, a continuidade C1 remove até cúspides pretendidas. Por esse motivo, o componente de segmentação 230 é ainda configurado para configurar o ajuste de Bézier 228 para continuidade C1 com base nos resultados de detecção de cúspide.[0067] Although, in general, C1 continuity is a desirable property, there are cases where it is not beneficial to enforce. More particularly, the C1 continuity removes even intended cusps. For this reason, segmentation component 230 is further configured to configure the Bézier fit 228 for C1 continuity based on cusp detection results.
[0068] Uma abordagem direta para detecção de cúspide é verificar o ângulo formado pelos últimos três pontos e classificar como ângulos de cúspide abaixo de um limiar predefinido. Uma abordagem semelhante é basear a decisão no ângulo formado pela derivada do segmento anterior em t=1 com aquela do segmento atual em t=0. Qualquer uma e todas as abordagens, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0068] A straightforward approach to cusp detection is to check the angle formed by the last three points and classify cusp angles as below a predefined threshold. A similar approach is to base the decision on the angle formed by the derivative of the previous segment at t=1 with that of the current segment at t=0. Any and all approaches, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.
[0069] A previsão dos próximos locais do instrumento de entrada é um problema difícil de resolver devido ao fato de que a escrita à mão é cheia de alterações pontuais e imprevisíveis em direção e o usuário pode levantar a caneta (ou outro instrumento de entrada) em qualquer momento, torando, desse modo, a previsão não apenas desnecessária, mas potencialmente prejudicial.[0069] Predicting the next locations of the input instrument is a difficult problem to solve due to the fact that handwriting is full of punctual and unpredictable changes in direction and the user can lift the pen (or other input instrument) at any time, thereby making prediction not only unnecessary but potentially harmful.
[0070] O componente de previsão de tinta 232 é configurado para estabelecer, primeiro, a qualidade de previsão definindo-se uma métrica que permite a avaliação da qualidade de uma previsão de tinta. Existem dois aspectos principais a se considerar: experiência do usuário e desempenho. Em termos de experiência de usuário, o resultado de uma previsão errada é que um pedaço de tinta é renderizado em uma tela ou outra superfície de exibição e é, então, liberada dentro de alguns quadros, assim que a previsão se prova errada. Isso pode produzir um efeito cintilante que é exacerbado quando as previsões não são estáveis por todos os quadros. A métrica precisa refletir se o erro de previsão pode ser observado pelo usuário terminal.[0070] The ink prediction component 232 is configured to first establish the prediction quality by defining a metric that allows the evaluation of the quality of an ink prediction. There are two main aspects to consider: user experience and performance. In terms of user experience, the result of a misprediction is that a piece of ink is rendered onto a screen or other display surface and is then released within a few frames once the prediction proves to be wrong. This can produce a flickering effect that is exacerbated when predictions are not stable across all frames. The metric needs to reflect whether the prediction error can be observed by the terminal user.
[0071] Em termos de desempenho, uma abordagem exemplificativa é usar os componentes principais do vetor de erro como métricas para a qualidade de previsão. A Figura 5 fornece um exemplo para uma previsão de cinco pontos posteriores. Os pontos digitalizados são representados com pontos. Os pontos conectados com uma linha sólida 610 já foram digitalizados, enquanto os pontos que não são conectados (e aparecem no interior do triângulo maior) estão no futuro. Os pontos previstos são conectados pela linha tracejada 612. O vetor que conecta o ponto previsto ao último ponto digitalizado é o vetor de previsão. O vetor que conecta o ponto digitalizado no futuro com o último ponto digitalizado é o vetor de realização. O vetor é o erro de previsão e são seus componentes principais. mede o quanto a previsão está atrasando ou ultrapassando. mede o quão longe o ponto previsto está do vetor de realização.[0071] In terms of performance, an exemplary approach is to use the core components of the error vector as metrics for forecasting quality. Figure 5 provides an example for a five point forward forecast. Digitized points are represented with dots. Points connected with a
[0072] Uma técnica que pode ser usada pelo componente de previsão de tinta 232 para previsão de tinta envolve ajustar pontos digitalizados a um spline de Bézier cúbico. A ideia básica é fazer previsão estendendo-se o último segmento de Bézier B(t) para seu futuro, o que significa simplesmente amostrar B(t) em algum t > 1 (linha tracejada na Figura 6).[0072] A technique that can be used by the ink prediction component 232 for ink prediction involves fitting digitized points to a cubic Bezier spline. The basic idea is to do prediction by extending the last Bézier segment B(t) into its future, which simply means sampling B(t) at some t > 1 (dashed line in Figure 6).
[0073] Permitir que k seja o número de pontos para o qual a previsão futura é desejada e permitirque a distância entre os últimos dois pontos digitalizados. t > 1 pode, então, ser selecionado de tal forma que o comprimento do arco da curva ou do segmento de Bézier entre B(1) e B(t) seja igual a [0073] Let k be the number of points for which the future forecast is desired and allow than the distance between the last two digitized points. t > 1 can then be selected such that the arc length of the curve or Bézier segment between B(1) and B(t) is equal to
[0074] Uma vez que não existe nenhuma solução de forma fechada para o comprimento de arco de uma curva cúbica, uma aproximação pode ser utilizada, a qual explora um número de fatos conhecidos. Primeiro, a distância entre os pontos terminais da curva de Bézier é um limite inferior para seu comprimento de arco. Segundo, o comprimento do polígono de controle da curva de Bézier é um limite superior para seu comprimento de arco.[0074] Since there is no closed form solution for the arc length of a cubic curve, an approximation can be used which exploits a number of known facts. First, the distance between the endpoints of the Bézier curve is a lower bound on its arc length. Second, the length of the Bézier curve's control polygon is an upper bound on its arc length.
[0075] A opção mais simples para renderizar a previsão é desenhar uma linha a partir do último ponto digitalizado até o ponto previsto. Entretanto, uma abordagem melhor é desenhar a extensão da curva de Bézier conforme mostrado na Figura 6 (linha tracejada 6). Consequentemente, o componente de previsão de tinta 232 é ainda configurado para reparametrizar a curva de Bézier de tal forma que a curva não é alterada, e: [0075] The simplest option for rendering the prediction is to draw a line from the last scanned point to the predicted point. However, a better approach is to draw the extent of the Bézier curve as shown in Figure 6 (dashed line 6). Consequently, the ink prediction component 232 is further configured to reparameterize the Bézier curve such that the curve is not changed, and:
[0076] em que B é o Bézier original e ’ é o Bézier reparametrizado. O custo da reparametrização é desprezível conforme a mesma pode ser realizada em tempo constante.[0076] where B is the original Bézier and ’ is the reparameterized Bézier. The cost of reparameterization is negligible as it can be performed in constant time.
[0077] Com a utilização dessa técnica, o componente de previsão de tinta 232 pode fazer previsões aproximadamente 16ms à frente sem introduzir artefatos ruins (isto é, previsões erradas visíveis).[0077] Using this technique, the ink prediction component 232 can make predictions approximately 16ms ahead without introducing bad artifacts (ie visible wrong predictions).
[0078] Na conclusão do ajuste e da previsão, o resultado é um conjunto de aproximações de Béziere um conjunto correspondente de raiosEm geral,’s são funções cúbicas, parametrizadas por quatro pontos de controle:Em algumas manifestações, o pode ser linear e parametrizado apenas pelos raios de início e de fim: [0078] At the completion of the fit and forecast, the result is a set of Bézier approximations and a corresponding set of rays In general, 's are cubic functions, parameterized by four control points: In some demonstrations, the can be linear and parameterized only by the start and end radii:
[0079] Em outras manifestações, os mesmos podem ser cúbicos e parametrizados por pesos em cada um dentre os quatro pontos de controle, com o uso de polinomiais de Bernstein, conforme é bem conhecido pelas pessoas que têm habilidade comum na técnica: [0079] In other manifestations, they can be cubic and parameterized by weights in each of the four control points, with the use of Bernstein polynomials, as is well known by people who have common skill in the technique:
[0080] Em conjunto, um dado par representa um segment do curso de tinta, conforme mostrado na Figura 7. Simbolicamente, isso corresponde ao lugar geométrico dos pontos [0080] Together, a given par represents a segment of the ink stroke, as shown in Figure 7. Symbolically, this corresponds to the locus of the dots
[0081] O fluxograma da Figura 8 ilustra um processo geral exemplificativo 800 para renderizar tinta, de acordo com modalidades da presente invenção. As funções descritas à esquerda da linha tracejada podem ser realizadas, por exemplo, com o uso do componente de renderização de tinta 234 do mecanismo de suavização de tinta 212 da Figura 2. As funções descritas à direita da linha tracejada podem ser realizadas, por exemplo, com o uso da GPU 222 do dispositivo de computação de usuário 210 da Figura 2.[0081] The flowchart of Figure 8 illustrates an exemplary
[0082] As modalidades da presente invenção permitem transformações afim 2D arbitrárias (definidas por uma matriz 3x2 sejam aplicadas à tinta após a tinta ter sido capturada e ajustada, mas antes de renderizar. Tais transformadas são úteis para modelar, por exemplo, panorama e ampliação de um documento que contém tinta.[0082] Embodiments of the present invention allow arbitrary 2D affine transformations (defined by a 3x2 matrix are applied to the ink after the ink has been captured and adjusted, but before rendering. Such transforms are useful for modeling, for example, panning and zooming a document that contains ink.
[0083] As transformações são implantadas em duas etapas. Na primeira etapa (transformação de "contorno"), as funções de Bézier são transformadas. Isso é atingido simplesmente multiplicando- se os pontos de controle de Bézier pela matriz especificada (conceitualmente, isso afeta o formato geral da tinta, mas não afeta a espessura).[0083] The transformations are implemented in two steps. In the first step ("outline" transformation), the Bézier functions are transformed. This is achieved simply by multiplying the Bézier control points by the specified matrix (conceptually, this affects the overall shape of the ink, but does not affect the thickness).
[0084] A segunda etapa é transformar os raios. Isso é atingido no sombreador de vértice 820, descrito mais completamente no presente documento abaixo. Observe que os componentes de translação de (m31 e m32) não são usados quando se transforma os raios. Doravante, na presente descrição, o símbolo irá se referir à matriz 2x2
[0084] The second step is to transform the spokes. This is achieved in
[0085] Para renderizar um dado curso, cada uma dentre as aproximações de Bézier constituintes é "achatada". Formalmente, um conjunto deé escolhido para cada par e as funções são avaliadas naqueles t (isso é essencialmente um ajuste de curva em reverso). O método exato para escolher o conjunto de é a implantação definida. Em uma implantação exemplificativa, um algoritmo de Diferenciação de Encaminhamento Híbrida pode ser utilizado, conforme descrito na Patente no U.S. 5.367.617, a qual está incorporada no presente documento a título de referência, como se apresentada em sua totalidade no presente documento. Será entendido pelas pessoas que têm habilidade comum na técnica que outras técnicas, tais como diferenciação de encaminhamento, são comuns e bem conhecidas na indústria e também podem ser utilizadas.[0085] To render a given course, each of the constituent Bézier approximations is "flattened". Formally, a set of is chosen for each par and the functions are evaluated at those t (this is essentially a reverse curve fit). The exact method for choosing the set of is the defined deployment. In an exemplary implementation, a Hybrid Routing Differentiation algorithm may be utilized, as described in US Patent No. 5,367,617, which is incorporated herein by reference, as if set forth in its entirety herein. It will be understood by those of ordinary skill in the art that other techniques, such as routing differentiation, are common and well known in the industry and may also be used.
[0086] O resultado é uma lista de pontos e raiosque estão ao longo da curva. Esses dados são, então, enviados para a GPU e armazenados em um chamado "armazenamento temporário de vértice" (doravante, designado VB1).[0086] The result is a list of points and radii that are along the curve. This data is then sent to the GPU and stored in a so-called "vertex buffer" (hereinafter referred to as VB1).
[0087] Também passado à GPU são outros dois armazenamentos temporários de vértice: um que contém uma rede de triângulo que se aproxima a um círculo e o outro uma rede de triângulo que representa um trapezoide. Essas redes são computadas uma vez durante a inicialização e são colocadas em cache e reutilizadas em operações de renderização subsequentes.[0087] Also passed to the GPU are two other vertex buffers: one that contains a triangle network that approximates a circle and the other a triangle network that represents a trapezoid. These networks are computed once during initialization and are cached and reused in subsequent render operations.
[0088] As implantações particulares podem representar os mosaicos de formas diferentes. Uma implantação exemplificativa utiliza o seguinte esquema:[0088] Particular deployments may represent mosaics in different ways. An example deployment uses the following schema:
[0089] Cada vértice na rede de triângulo de círculo contém os seguintes dados: CenterOrEdge: 1 bit (0: Centro, 1:Borda) InteriorOrExterior: 1 bit (0: Interior, 1:Exterior) Direção: float2 (normalizada)[0089] Each vertex in the circle triangle network contains the following data: CenterOrEdge: 1 bit (0: Center, 1:Edge) InteriorOrExterior: 1 bit (0: Interior, 1:Outer) Direction: float2 (normalized)
[0090] Os triângulos que contêm vértices interior e exterior são usados para fornecer antisserrilhamento (designado pelo gradiente de claro a escuro ilustrado na Figura 8). Deve ser observado que nenhuma coordenada absoluta é realmente armazenada em um vértice, apenas a relação topológica do vértice, uma vez que a mesma se relacionada às outras, é registrada. Por exemplo, o vértice -i no diagrama a seguir é um vértice de borda interior e é armazenado como:enquanto o vértice estáJ em um vértice de borda exterior e é armazenado como:(presumindo um eixo geométrico invertido). Existe apenas um vértice central (designado C na Figura 9), o qual é interior e é atribuída uma direção arbitrária.[0090] Triangles containing inner and outer vertices are used to provide anti-aliasing (designated by the light to dark gradient illustrated in Figure 8). It should be noted that no absolute coordinates are actually stored at a vertex, only the topological relationship of the vertex, as it relates to the others, is recorded. For example, vertex -i in the following diagram is an interior edge vertex and is stored as: while the vertex is at an outer edge vertex and is stored as: (assuming an inverted geometry axis). There is only one central vertex (designated C in Figure 9), which is interior and is assigned an arbitrary direction.
[0091] Também deve ser observado que o número exato de triângulos (e, logo, vértices) pode variar na implantação e é geralmente dependente do raio máximo da tinta que é renderizada.[0091] It should also be noted that the exact number of triangles (and therefore vertices) can vary in deployment and is generally dependent on the maximum radius of the ink that is rendered.
[0092] Cada vértice no trapezoide contém os seguintes dados: StartOrEnd: 1 bit (0: Início, 1: Fim) InteriorOrExterior: 1 bit (0: Interior, 1: Exterior) TopOrBottom: 1 bit (0: Topo, 1: Fundo)[0092] Each vertex in the trapezoid contains the following data: StartOrEnd: 1 bit (0: Start, 1: End) InteriorOrExterior: 1 bit (0: Interior, 1: Exterior) TopOrBottom: 1 bit (0: Top, 1: Bottom )
[0093] Por exemplo, o vértice no seguinte diagrama é um vértice de início interior no topo e será armazenado como: [0093] For example, the vertex in the following diagram is an interior start vertex at the top and will be stored as:
[0094] O vértice é um vértice de fim interior no fundo e sera armazenado como: [0094] The vertex is an interior end vertex at the bottom and will be stored as:
[0095] conforme mostrado na Figura 10. Nesse caso, o número de vértices únicos é fixo em oito, independente do raio da tinta que é renderizada.[0095] as shown in Figure 10. In this case, the number of unique vertices is fixed at eight, regardless of the radius of the ink that is rendered.
[0096] Uma vez que os dados são transferidos por upload para a GPU, as etapas restantes de rasterização são realizadas em duas etapas: uma para renderizar círculos e uma para renderizar trapezoides. Uma implantação exemplificativa realiza cada etapa com o uso, por exemplo, dos cinco estágios da tubulação de Direct3D padrão descrita abaixo (818, 820, 822, 824 e 826). Será entendido e observado pelas pessoas de habilidade comum na técnica que outras implantações diretamente análogas a Direct3D são possíveis em outras plataformas, tais como OpenGL. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0096] Once the data is uploaded to the GPU, the remaining rasterization steps are performed in two steps: one to render circles and one to render trapezoids. An example deployment accomplishes each step using, for example, the five stages of standard Direct3D piping described below (818, 820, 822, 824, and 826). It will be understood and observed by those of ordinary skill in the art that other directly analogous implementations of Direct3D are possible on other platforms, such as OpenGL. Any and all such variations, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.
[0097] O montador de entrada 818, o rasterizador 822 e a fusão de saída 826 são uma função fixa e realizadas de modo essencialmente automático pela própria GPU. O sombreador de vértice 820 e o sombreador de pixel 824 são programáveis.[0097] The
[0098] O montador de entrada 818 é configurado para pegar as redes de círculo/trapezoide e os vértices em VB1 e preparar os mesmos para processamento pelo restante da tubulação. Em parte, isso envolve replicar cópias das redes por todos os vértices em VB1 (uma técnica comum conhecida pelas pessoas que têm habilidade comum na técnica como "instanciação"). Na etapa de círculo, o montador de entrada 818 é configurado para alocar uma cópia da rede por vértice em VB1. Na etapa de trapezoide, o montador de entrada 818 aloca uma cópia por par de vértices consecutivos em VB1. Os vértices emitidos pelo montador de entrada 818 contêm os dados fundidos a partir tanto da rede quanto dos dados de VB1:[0098] The 818 input assembler is configured to take the circle/trapezoid networks and the vertices in VB1 and prepare them for processing by the rest of the pipe. In part, this involves replicating copies of the networks across all vertices in VB1 (a common technique known to people of ordinary skill in the technique as "instantiation"). In the circle step,
[0099] Formato de vértice da etapa de círculo: [0099] Circle step vertex format:
[00100] Formato de vértice da etapa de trapezoide: [00100] Trapezoid step vertex format:
[00101] De acordo com modalidades da presente invenção, um sombreador de vértice 820 é fornecido, o qual pega cada saída de vértice pelo montador de entrada 818 e condensa o mesmo para uma posição e opacidade. Para a etapa de círculo, as seguintes fórmulas são usadas:
[00101] According to embodiments of the present invention, a
[00102] Aqui, i: é a matriz 2x2 definida anteriormente no documento e é sua transposição inversa.[00102] Here, i: is the 2x2 matrix previously defined in the document and is its inverse transposition.
[00103] As funções de desvio e opacityModifier são discutidas em maiores detalhes posteriormente, mas, no caso comum, os mesmos são simplesmente [00103] The offset and opacityModifier functions are discussed in greater detail later, but in the common case they are simply
[00104] Para a etapa de trapezoide, fórmulas mais complexas podem ser usadas: [00104] For the trapezoid step, more complex formulas can be used:
[00105] Aqui,é a matriz de rotação de 90 graus [00105] Here, is the 90 degree rotation matrix
[00106] Deve ser observado que versões semelhantes dessas fórmulas foram usadas em versões anteriores de renderização de tinta. Diferente de encarnações anteriores, entretanto, as modalidades da presente invenção realizam a transformação na GPU.[00106] It should be noted that similar versions of these formulas were used in previous versions of ink rendering. Unlike previous incarnations, however, embodiments of the present invention perform the transformation on the GPU.
[00107] Deve ser ainda observado que as derivações dessas fórmulas estão além do escopo da presente descrição. Entretanto, as Figuras 11, 12 e 13 podem auxiliar na relação das diversasquantidades entre si. A Figura 11 ilustra um diagrama de dois pontos de tinta adjacentes (presumindo que M é identidade). A Figura 12 ilustra uma ampliação ao redor de P(i+1) (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade). A Figura 13 ilustra uma ampliação ao redor de P+D (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade).[00107] It should be further noted that the derivations of these formulas are beyond the scope of the present description. However, Figures 11, 12 and 13 can help in relating the various quantities to each other. Figure 11 illustrates a diagram of two adjacent ink dots (assuming M is identity). Figure 12 illustrates zooming around P(i+1) (assuming TopOrBottom=0, StartOrEnd=1 and M is identity). Figure 13 illustrates zooming around P+D (assuming TopOrBottom=0, StartOrEnd=1 and M is identity).
[00108] Uma vez que os vértices das redes replicadas foram transformados, os triângulos correspondentes são "rasterizados" pela GPU que utiliza o rasterizador 822. Em outras palavras, os pixels cobertos pelos triângulos são identificados e o sombreador de pixel 824 é invocado uma vez por pixel coberto. A rasterização de D3D é conhecida pelas pessoas que têm habilidade comum na técnica e, consequentemente, não é ainda descrita no presente documento.[00108] Once the vertices of the replicated networks have been transformed, the corresponding triangles are "rasterized" by the
[00109] O sombreador de pixel 824 é configurado para pegar a opacidade do rasterizador 8222 e usar a mesma para modular a cor da tinta: [00109] The 824 pixel shader is configured to take the opacity of the 8222 rasterizer and use it to modulate the ink color:
[00110] Essa modulação de cor simula antisserrilhamento ao longo das bordas da tinta. (Em algumas manifestações, essa é uma cor sólida simples, mas, em manifestações mais complexas, a cor pode ser dependente do local do pixel). Esse valor de cor é, então, passado para a fusão de saída 826.[00110] This color modulation simulates anti-aliasing along ink edges. (In some manifestations this is a simple solid color, but in more complex manifestations the color can be pixel location dependent.) This color value is then passed to
[00111] A fusão de saída 826 é configurada para pegar o valor de cor e misturar o mesmo no alvo de renderização. A fusão de saída é conhecida pelas pessoas que têm habilidade comum na técnica e, consequentemente, não é ainda descrita no presente documento.[00111] The 826 Output Blender is configured to take the color value and blend it into the render target. Outbound merging is known to those of ordinary skill in the art and, accordingly, is not yet described herein.
[00112] Conforme mencionado no presente documento acima, as modalidades da presente invenção suprem um sombreador de vértice 820 que faz uso de duas funções auxiliares, desvio e opacityModifier. O propósito de desvio é desviar o vértice por uma metade de pixel em espaço de tela, simulando antisserrilhamento. Quando as dimensões do círculo/trapezoide que são renderizadas são menos que 1 pixel, a lógica especial pode ser adicionada para reduzir a chance que esse desvio irá causar triângulos de sobreposição. Quando tal lógica é realizada, a opacidade do vértice é modificada de modo correspondente.[00112] As mentioned in the present document above, embodiments of the present invention provide a
[00113] As definições completas de desvio e opacityModifier são conforme o seguinte: [00113] The complete offset and opacityModifier definitions are as follows:
[00114] Em relação agora à Figura 14, um fluxograma é ilustrado, o qual mostra um método exemplificativo 1400 para suavizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção. Conforme indicado no bloco 1410, um primeiro ponto de tinta é recebido. Um segundo ponto de tinta também é recebido, conforme indicado no bloco 1412. Conforme indicado no bloco 1414, uma aproximação de Bézier cúbica ativa é computada com base nos primeiro e segundo pontos de tinta. Um terceiro ponto de tinta é recebido, conforme indicado no bloco 1416. É determinada a possibilidade de o terceiro ponto de tinta se ajustar adequadamente à aproximação de Bézier cúbica ativa, conforme indicado no bloco 1418, e uma nova aproximação de Bézier cúbica ser computada com o uso dos primeiro, segundo e terceiro pontos de tinta, conforme indicado no bloco 1420.[00114] Referring now to Figure 14, a flow chart is illustrated which shows an
[00115] Com referência à Figura 15, um fluxograma é ilustrado, o qual mostra um método exemplificativo 1500 para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção. Conforme indicado, o bloco 1510 recebe o primeiro e o segundo pontos de tinta; os mesmos são sequencialmente recebidos. Conforme indicado no bloco 1512, um fragmento de tinta suavizado ativo é gerado com base nos primeiro e segundo pontos de tinta. Um terceiro ponto de tinta é recebido, conforme indicado no bloco 1514. É, então, determinado se o terceiro ponto de tinta se ajusta adequadamente o fragmento de tinta suavizado ativo, conforme indicado no bloco de decisão 1516. Determina-se que o terceiro ponto de tinta se ajusta adequadamente ao fragmento de tinta suavizado ativo, em que o fragmento de tinta suavizado ativo é atualizado, conforme indicado no bloco 1518. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente ao fragmento de tinta suavizado ativo, o fragmento de tinta suavizado ativo é terminado e um segundo fragmento de tinta suavizado é iniciado, conforme indicado no bloco 1520. Com o uso de uma GPU, a saída de tinta suavizada é renderizada que compreende os primeiro, segundo e terceiro pontos de tinta. Isso é indicado no bloco 1522.[00115] With reference to Figure 15, a flowchart is illustrated which shows an
[00116] Em relação agora à Figura 16, um fluxograma é ilustrado, o qual mostra um método exemplificativo 1600 para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção. Conforme indicado no bloco 1610, um primeiro ponto de tinta é recebido. Um segundo ponto de tinta também é recebido, conforme indicado no bloco 1612. Conforme indicado no bloco 1614, uma aproximação de Bézier cúbica ativa é computada com base nos primeiro e segundo pontos de tinta. Um terceiro ponto de tinta é recebido, conforme indicado no bloco 1616. É, então, determinado se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa, conforme indicado no bloco 1618. Conforme indicado no bloco 1620, uma nova aproximação de Bézier cúbica é computada, a qual usa os primeiro, segundo e terceiro pontos de tinta. A saída de tinta suavizada é, então, renderizada, a qual compreende os primeiro, segundo e terceiro pontos de tinta. Isso é indicado no bloco 1622.[00116] Referring now to Figure 16, a flowchart is illustrated which shows an
[00117] Conforme pode ser entendido, as modalidades da presente invenção fornecem sistemas, métodos e mídias de armazenamento legíveis por computador para, dentre outras coisas, a suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização impulsionada por GPU de entrada de curso de tinta. Uma pluralidade de pontos de tinta que inclui pelo menos um primeiro e um segundo ponto de tinta é recebida. Com base nos primeiro e segundo pontos de tinta, uma aproximação de Bézier ativa é computada. Sequencialmente em tempo ao primeiro e ao segundo pontos de tinta, um terceiro ponto de tinta é recebido e determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. O terceiro ponto de tinta é determinado para se ajustar adequadamente à aproximação de Bézier ativa se for determinado que um usuário não tem capacidade para detectar uma diferença entre o mesmo mediante a renderização. Tal determinação é geralmente baseada em um valor de diferença limítrofe predeterminado. Determina-se que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa, em que a aproximação de Bézier ativa é atualizada para incluir o terceiro ponto de tinta. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier ativa, a aproximação de Bézier ativa é terminada e uma nova aproximação de Bézier é computada. A saída de tinta suavizada é renderizada compreendendo os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de recebimento de curso, por exemplo, uma tela de exibição sensível ao toque.[00117] As can be understood, embodiments of the present invention provide systems, methods, and computer-readable storage media for, among other things, efficient real-time ink stroke smoothing, trajectory prediction, and GPU-driven rendering of ink stroke input. A plurality of ink dots including at least a first and a second ink dot are received. Based on the first and second ink points, an active Bézier approximation is computed. Sequentially in time to the first and second ink dots, a third ink dot is received and it is determined whether the third ink dot fits properly to the active Bézier approximation. The third ink dot is determined to properly fit the active Bézier approximation if it is determined that a user is unable to detect a difference between them upon rendering. Such a determination is generally based on a predetermined threshold difference value. The third ink dot is determined to fit the active Bézier approximation properly, whereupon the active Bézier approximation is updated to include the third ink dot. However, if it is determined that the third ink dot does not properly fit the active Bézier approximation, the active Bézier approximation is terminated and a new Bézier approximation is computed. Smoothed ink output is rendered comprising the first, second, and third ink dots in association with a stroke-receiving surface, for example a touchscreen display.
[00118] A presente invenção foi descrita em relação a modalidades particulares, as quais são destinadas, em todos os aspectos, a serem ilustrativas em vez de restritivas. As modalidades alternativas se tornarão evidente para as pessoas de habilidade comum na técnica à qual a presente invenção pertence sem se afastar de seu escopo.[00118] The present invention has been described with respect to particular embodiments, which are intended, in all respects, to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention belongs without departing from its scope.
[00119] Embora a invenção seja suscetível a diversas modificações e construções alternativas, determinadas modalidades ilustradas da mesma são mostradas nos desenhos e foram descritas acima em detalhes. Deve ser entendido, entretanto, que não há a intenção de limitar a invenção às formas específicas reveladas, mas, pelo contrário, a intenção deve cobrir todas as modificações, construções alternativas e equivalentes abrangidos pelo espírito e escopo da invenção.[00119] Although the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that it is not intended to limit the invention to the specific forms disclosed, but, on the contrary, the intent must cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the invention.
[00120] Será entendido pelas pessoas de habilidade comum na técnica que a ordem das etapas mostrada nos métodos 1400 da Figura14, 1500 da Figura 15 e 1600 da Figura 16 não é destinada a limitar o escopo da presente invenção de qualquer forma e, na verdade, as etapas podem ocorrer em uma variedade de sequências diferentes dentro das modalidades da presente invenção. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[00120] It will be understood by those of ordinary skill in the art that the order of steps shown in
Claims (8)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/486,735 | 2014-09-15 | ||
US14/486,735 US9508166B2 (en) | 2014-09-15 | 2014-09-15 | Smoothing and GPU-enabled rendering of digital ink |
PCT/US2015/050097 WO2016044214A1 (en) | 2014-09-15 | 2015-09-15 | Smooothing and gpu-enabled rendering of digital ink |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112017003480A2 BR112017003480A2 (en) | 2017-12-12 |
BR112017003480B1 true BR112017003480B1 (en) | 2023-05-23 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6918053B2 (en) | Digital ink smoothing and GPU-enabled rendering | |
WO2018201551A1 (en) | Facial image fusion method and apparatus and computing device | |
WO2018188534A1 (en) | Face image processing method and device, and electronic device | |
US11698788B2 (en) | Path simplification for computer graphics applications | |
US10943375B2 (en) | Multi-state vector graphics | |
US20120139918A1 (en) | Layer combination in a surface composition system | |
JP2017529623A (en) | Wet ink predictor | |
US10482622B2 (en) | Locating features in warped images | |
Huang et al. | Transformation guided image completion | |
JP5558949B2 (en) | Image processing apparatus, image processing method, and program | |
US9613288B2 (en) | Automatically identifying and healing spots in images | |
BR112017003480B1 (en) | METHOD FOR SMOOTHING AND RENDERING DIGITAL INK | |
WO2019065784A1 (en) | Image processing device, image processing method, and computer-readable recording medium | |
US20230011809A1 (en) | Mesh correction depending on mesh normal direction | |
US10740968B2 (en) | Patch-based surface relaxation | |
JP7294702B2 (en) | Image processing device, image processing method, and program | |
JP7276978B2 (en) | Image processing device, image processing method, and program | |
US20230066846A1 (en) | Systems for generating presentations of eyebrow designs | |
US8890885B1 (en) | Efficiently copying and blending a source region into a target region | |
Kopf et al. | Transformation Guided Image Completion |