KR102450683B1 - 디지털 잉크의 스무딩 및 gpu-구동 렌더링 - Google Patents

디지털 잉크의 스무딩 및 gpu-구동 렌더링 Download PDF

Info

Publication number
KR102450683B1
KR102450683B1 KR1020227011163A KR20227011163A KR102450683B1 KR 102450683 B1 KR102450683 B1 KR 102450683B1 KR 1020227011163 A KR1020227011163 A KR 1020227011163A KR 20227011163 A KR20227011163 A KR 20227011163A KR 102450683 B1 KR102450683 B1 KR 102450683B1
Authority
KR
South Korea
Prior art keywords
ink
points
point
polynomial approximation
active
Prior art date
Application number
KR1020227011163A
Other languages
English (en)
Other versions
KR20220047671A (ko
Inventor
실바노 보나치나
알렉산더 우젤락
오스틴 브래들리 호지스
데이비드 아브자리안
페이 수
마일즈 엠 코헨
앤소니 존 롤스 호드스돈
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20220047671A publication Critical patent/KR20220047671A/ko
Application granted granted Critical
Publication of KR102450683B1 publication Critical patent/KR102450683B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/171Editing, e.g. inserting or deleting by use of digital ink
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/142Image acquisition using hand-held instruments; Constructional details of the instruments
    • G06V30/1423Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/32Digital ink
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/32Digital ink
    • G06V30/333Preprocessing; Feature extraction
    • G06V30/347Sampling; Contour coding; Stroke extraction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Processing Or Creating Images (AREA)
  • Character Discrimination (AREA)
  • Ink Jet (AREA)

Abstract

시스템들, 방법들, 및 컴퓨터 판독가능 저장 매체들이 효율적인 실시간 잉크 스트로크 스무딩, 궤적 예측, 및 잉크 스트로크 입력의 GPU-활용(GPU-leveraged) 렌더링을 위해 제공된다. 제 1 및 제 2 잉크 포인트들이 수신되고 액티브 베지에 근사가 그것들에 기초하여 컴퓨팅된다. 제 1 및 제 2 잉크 포인트들보다는 시간 순차적으로 나중에, 제 3 잉크 포인트가 수신된다. 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞는지의 여부가 결정된다. 제 3 잉크 포인트가 적절하게 맞는다는 결정의 경우, 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 업데이트된 액티브 베지에 근사가 컴퓨팅된다. 제 3 잉크 포인트가 적절하게 맞는데 실패하는 경우, 제 3 잉크 포인트를 포함하지만 제 1 및 제 2 잉크 포인트들을 포함하지 않는 상이한 새로운 베지에 근사가 컴퓨팅된다. GPU를 활용하여, 베지에 근사(들)에 기초한 스무디드 잉크 스트로크가 렌더링된다.

Description

디지털 잉크의 스무딩 및 GPU-구동 렌더링{SMOOTHING AND GPU-ENABLED RENDERING OF DIGITAL INK}
"디지털 잉크(digital ink)"는, 입력 도구, 이를테면 마우스, 디지타이저 태블릿 상의 스타일러스/펜, 용량성 터치 디지타이저 상의 용량성 스타일러스 또는 용량성 물체(예컨대, 손가락), 또는 터치-감응 디스플레이 스크린을 이용할 수도 있거나 또는 이용하지 않을 수도 있는 디지타이저 태블릿과 통합되는 디스플레이 스크린 상의 스타일러스/펜으로부터 기록되는 하나 이상의 스트로크들을 지칭한다. 본 명세서에서 사용되는 바와 같이, "잉크"라는 용어는 "디지털 잉크"와 교환적으로 사용되고 "디지털 잉크"를 지칭한다. 덧붙여, "펜" 및/또는 "스타일러스"라는 용어들은 임의의 유형의 입력 도구를 지칭하기 위해 통칭적으로 그리고 교환적으로 사용된다. 각각의 스트로크가 하나 이상의 잉크 포인트들로서 저장될 수도 있고 각각의 잉크 포인트는, 단지 예로서, 압력, 틸트(tilt), 방위각, 및 입력 도구의 포지션에 대응하는 좌표들 (x, y)을 포함하는 다양한 속성들을 포함할 수도 있다. 예를 들면, 사용자가 라인 또는 곡선을 그리기 위해서 컴퓨터 시스템의 터치-감응 디스플레이 스크린을 따라 펜을 이동시킬 수도 있고, 컴퓨터 시스템은 사용자가 입력 도구를 이동시킴에 따라 시간의 경과에 대해 (또는 본 기술분야의 통상의 기술자들에게 알려진 바와 같은 임의의 다른 간격들로) 입력 도구 선단(tip) 포지션의 궤적을 따르는 좌표들 (x, y)를 샘플링할 수도 있다. 이들 좌표들은 사용자에 의한 곡선 또는 라인 입력을 따르는 포인트들을 나타내고 본원에서 "잉크 포인트들"이라고 지칭된다.
이 개요는 아래의 발명을 실시하기 위한 구체적인 내용에서 추가로 설명되는 단순화된 형태로 개념들의 선택을 소개하기 위해 제공된다. 이 개요는 청구된 발명의 주제의 핵심 특징들 또는 본질적 특징들을 식별하기 위해 의도된 것도 아니고, 청구된 발명의 주제의 범위를 결정함에 있어서 도우미(aid)로서 사용되도록 의도된 것도 아니다.
다양한 실시형태들에서, 시스템들, 방법들, 및 컴퓨터 판독가능 저장 매체들이 효율적인 실시간 잉크 스트로크 스무딩(smoothing) 및 궤적 예측을 위해 제공된다. 적어도 제 1 및 제 2 잉크 포인트들을 포함하는 복수의 잉크 포인트들이 수신된다. 적어도 제 1 및 제 2 잉크 포인트들(그 정확한 양은, 아래에서 더욱 충분히 설명되는 바와 같이, 그 뒤에 수신된 잉크 포인트들에 관한 적절한 맞춤을 획득하는 것에 적어도 부분적으로 기초하여 결정됨)에 기초하여, 액티브 베지에 근사(Bezier approximation)가 컴퓨팅된다. 제 1 및 제 2 잉크 포인트들에 대해 시간 순차적으로, 제 3 잉크 포인트가 수신되고 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞는지의 여부가 결정된다. 제 3 잉크 포인트는, 렌더링 시 액티브 베지에 근사와의 차이를 사용자가 검출할 수 없을 것으로 결정된다면, 액티브 베지에 근사에 적절하게 맞는 것으로 결정된다. 이러한 결정은 미리 결정된 임계 차이 값에 일반적으로 기초한다. 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞다고 결정되면, 액티브 베지에 근사는 제 3 잉크 포인트를 포함하도록 업데이트된다. 그러나, 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞는 것은 아니라고 결정되면, 액티브 베지에 근사는 종료되고 새로운 베지에 근사가 컴퓨팅된다. 스트로크 수신 표면, 예를 들면, 터치-감응 디스플레이 스크린에 연관되는 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 스무디드 잉크 출력이 렌더링된다.
본 발명의 실시형태들은, 스트로크 입력 동안 및 그 후에, 심지어 상당한 줌 레벨들(예컨대, 200~400%의 줌 레벨들)에서 스무드하게 보이게 되는 디지털 잉크 입력을 제공한다. 본 발명의 실시형태들은 또한, 스무딩에 기초한 스트로크에 대한 변화들이 스트로크 입력 동안 또는 스트로크 후 중 어느 하나에서 사용자에 의해 실질적으로 감지되지 않도록 디지털 잉크 스트로크들의 스무딩 및 렌더링을 제공한다. 더 추가로, 그 실시형태들에 따라, 렌더링 레이턴시가 증가되지 않고 본 명세서의 아래에서 추가로 설명되는 예측 기법들의 사용에 의해 종종 감소된다.
본 발명의 이들 및 다른 특징들은 다음의 상세한 설명의 고려 시 명확하게 될 것이다. 관련 있는 기술에서의 통상의 기술자들에게는, 본 명세서에 비추어, 본 발명의 양태들의 대체 조합들이, 단독으로 또는 본원에서 정의된 단계들의 하나 이상의 엘리먼트들과 조합하여 중 어느 하나로, 본 발명의 수정들 또는 개조들로서 또는 본 발명의 일부로서 사용될 수도 있다는 것이 명백할 것이다. 본 명세서에 포함되는 본 발명의 서술된 설명이 이러한 수정들 및 개조들을 커버하도록 의도된다.
전술한 개요, 뿐만 아니라 다음의 상세한 설명은, 주장된 실시형태들에 관한 제한으로서는 아니고 예로서 포함되는 첨부 도면들과 연계하여 읽을 때 더 잘 이해된다. 첨부 도면들에서, 엘리먼트들이 참조 번호들로 라벨표시되는데 그 참조 번호들 중에서 세 자릿수 참조 번호의 첫 번째 자리와, 네 자릿수 참조 번호의 처음 두 자리들은, 엘리먼트가 처음 예시되는 도면 번호를 표시한다. 상이한 도면들에서의 동일한 참조 번호는 동일한 또는 유사한 엘리먼트를 지칭한다.
도 1은 본 발명의 실시형태들을 구현함에 있어서의 사용에 적합한 예시적인 컴퓨팅 환경의 블록도이며;
도 2는 본 발명의 실시형태들이 채용될 수도 있는 예시적인 컴퓨팅 시스템의 블록도이며;
도 3은 본 발명의 일 실시형태에 따라 생성될 수도 있는 C0 연속 스플라인(continuous spline)의 예시적인 "나쁜(bad)" 아티팩트들을 도시하는 개략도이며;
도 4는 본 발명의 일 실시형태에 따라 C1 연속 피터(continuous fitter)에 의해 생성될 수도 있는 예시적인 떨리는(wobbly) 행동을 도시하는 개략도이며;
도 5는 본 발명의 일 실시형태에 따라, 도 4에서 도시된 떨리는 행동이 없는 예시적인 연속 스플라인을 도시하는 개략도이며;
도 6은 본 발명의 실시형태에 따라, 5-포인트-앞선(ahead) 예측을 위한 예시적인 예측, 실현(realization), 및 에러 벡터들을 도시하는 개략도이며;
도 7은 본 발명의 일 실시형태에 따라, 잉크 스트로크의 세그먼트를 예시하는 개략도이며;
도 8은 본 발명의 일 실시형태에 따라, 잉크를 렌더링하는 예시적인 방법을 도시하는 흐름도이며;
도 9는 본 발명의 일 실시형태에 따라, 인스턴스 테셀레이션(instance tessellation)의 예시적인 구현예를 도시하는 개략도이며;
도 10은 본 발명의 일 실시형태에 따라, 인스턴스 테셀레이션의 다른 예시적인 구현예를 도시하는 개략도이며;
도 11은 본 발명의 일 실시형태에 따른, 두 개의 인접한 잉크 포인트들(M이 항등식(identity)이라고 가정함)의 개략도이며;
도 12는 본 발명의 일 실시형태에 따라, P(i+1) 주위에서 클로즈업된 것(TopOrBottom=0, StartOrEnd=1, 및 M은 항등식이라고 가정함)을 예시하는 개략도이며;
도 13은 P+D 주위에서 도 12의 부분의 클로즈업된 것(TopOrBottom=0, StartOrEnd=1, 및 M은 항등식이라고 가정함)을 예시하는 개략도이며;
도 14는 본 발명의 일 실시형태에 따라, 디지털 잉크 입력을 스무딩하는 예시적인 방법을 도시하는 흐름도이며;
도 15는 본 발명의 일 실시형태에 따라, 디지털 잉크 입력을 스무딩 및 렌더링하는 예시적인 방법을 도시하는 흐름도이며; 그리고
도 16은 본 발명의 일 실시형태에 따라, 디지털 잉크 입력을 스무딩 및 렌더링하는 다른 예시적인 방법을 도시하는 흐름도이다.
본 발명의 주제는 법정 요건들을 충족시키기 위해 본 명세서에서 구체적으로 설명된다. 그러나, 상세한 설명 자체는 본 특허의 범위를 제한하려는 의도는 아니다. 오히려, 발명자들은 청구된 발명의 주제가 현재 또는 장래의 다른 기술들과 연계하여 본 문서에서 설명되는 것들과는 상이한 단계들 또는 유사한 단계들의 조합들을 포함하는 다른 방도들로 또한 구체화되었을 수도 있다. 더구나, 비록 "단계" 및/또는 "블록"이란 용어들이 채용된 방법들의 상이한 엘리먼트들을 함축하기 위해 본 명세서에서 사용될 수도 있지만, 그 용어들은, 본 명세서에서 개시된 다양한 단계들 중에서 또는 그러한 단계들 간에 개개의 단계들의 순서가 명시적으로 설명되지 않는 한 또는 그렇게 명시적으로 설명되는 때를 제외하면 임의의 특정 순서를 암시하는 것으로서 해석되지 않아야 한다.
디지털 잉크의 렌더링은 잉크가 줌 동작들 동안 부드럽지 않고 오히려 계단-형 외관을 가지는 것, 레이턴시에서의 증가들(예컨대, 캐싱 및/또는 스트로크 후 스무딩 및 렌더링으로 인함), 및 펜 또는 다른 입력 도구가 수신 표면에서 분리될 때(즉, 스트로크 후)의 잉크 컬러 또는 다른 외관 특성들에서의 변화들을 포함하는 다수의 문제들을 겪는다.
본 명세서에서 설명되는 기술의 다양한 양태들이 효율적인 실시간 잉크 스트로크 스무딩, 궤적 예측, 및 GPU(Graphics Processing Unit)를 활용한 렌더링을 위한 시스템들, 방법들, 및 컴퓨터 판독가능 저장 매체들을 대체로 위한 것이다. 적어도 제 1 및 제 2 잉크 포인트들을 포함하는 복수의 잉크 포인트들이 그 각각의 잉크 포인트들이 디지털화됨에 따라 수신된다. 적어도 제 1 및 제 2 잉크 포인트들에 기초하여, 액티브 베지에 근사가 컴퓨팅된다. 본 기술분야의 통상의 기술자들에 의해 이해될 바와 같이, 베지에 근사 또는 곡선이 그래픽 렌더링에서 부드러운 곡선들을 모델링하기 위해 종종 이용되는 파라미터적인 곡선이다. 본 명세서에서 이용되는 바와 같이, 베지에 근사가 가장 최근에 수신되고 프로세싱된 잉크 포인트(이 사레에서는, 제 2 잉크 포인트)가 속하는 곡선 또는 근사이면 그 베지에 근사는 "액티브"인 것으로 간주된다. 액티브 베지에 근사에서 이용되는 잉크 포인트들의 정확한 양은, 그 뒤에 수신된 잉크 포인트들에 대한 적절한 맞춤을 획득하는 것에 적어도 부분적으로 의존한다. 다시 말하면, N 개의 잉크 포인트들이 맞춤 목적으로 누적될 수도 있으며, N의 값은, 아래에서 더 충분히 설명되는 바와 같이, 적절한 맞춤이 더 이상 가능하지 않을 때까지 성장을 계속한다.
제 1 및 제 2 잉크 포인트들에 대해 시간 순차적으로 나중에, 제 3 잉크 포인트가 수신되고 제 3 잉크 포인트는 액티브 베지에 근사에 적절하게 맞는지의 여부가 결정된다. 제 3 잉크 포인트는, 렌더링 시 액티브 베지에 근사와의 차이를 사용자가 검출할 수 없을 것으로 결정된다면, 액티브 베지에 근사에 적절하게 맞는 것으로 결정된다. 이러한 결정은 미리 결정된 임계 차이 값, 예를 들면, 10 하이메트릭 단위(himetric units)(0.1 mm)에 일반적으로 기초한다. 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞다고 결정되면, 액티브 베지에 근사는 제 3 잉크 포인트를 포함하도록 업데이트된다. 실시형태들에서, "업데이트된" 베지에 근사는 "새로운" 베지에 근사 또는 곡선으로서 간주될 수도 있다. 그러나, 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞는 것은 아니라고 결정되면, 액티브 베지에 근사는 종료되고 상이한 새로운 베지에 근사가 컴퓨팅된다. GPU를 활용하면, 결과적인 스무디드 잉크 출력은 렌더링되는데, 결과적인 출력은 스트로크 수신 표면, 예를 들면, 터치-감응 디스플레이 스크린에 연관하여 제 1, 제 2 및 제 3 잉크 포인트들을 포함한다. (본 기술분야의 통상의 기술자에 의해 이해되고 인정될 바와 같이, 삼차(cubic) 베지에 스무딩이 본 명세서에서 주로 설명되지만, 이차(quadratic) 베지에 스무딩, 네 제곱 이상의 베지에, 또는 임의의 다른 공지된 스무딩 알고리즘이 그 실시형태들 내에서 이용될 수도 있다.)
따라서, 본 발명의 하나의 실시형태는 적어도 하나의 프로세서를 포함하는 하나 이상의 컴퓨팅 디바이스들에 의해 수행되고 있는, 디지털 잉크 입력을 스무딩하는 방법을 위한 것이다. 그 방법은, 제 1 잉크 포인트를 수신하는 단계, 제 2 잉크 포인트를 수신하는 단계, 제 1 및 제 2 잉크 포인트들에 기초하여 액티브 삼차 베지에 근사를 컴퓨팅하는 단계, 제 3 잉크 포인트(제 3 잉크 포인트는 제 1 및 제 2 잉크 포인트들보다는 시간 순차적으로 나중에 수신됨)를 수신하는 단계, 제 3 잉크 포인트가 액티브 삼차 베지에 근사에 적절하게 맞는지의 여부를 결정하는 단계, 및 제 1, 제 2 및 제 3 잉크 포인트들을 이용하여 새로운 삼차 베지에 근사를 컴퓨팅하는 단계를 포함한다. 새로운 삼차 베지에 근사는 제 3 잉크 포인트가 액티브 삼차 베지에 근사에 적절하게 맞다고 결정되는 경우의 업데이트된 액티브 삼차 베지에 근사 또는 제 3 잉크 포인트가 액티브 삼차 베지에 근사에 적절하게 맞는데 실패한다고 결정되는 경우의 상이한 새로운 삼차 베지에 근사를 포함할 수도 있다.
다른 실시형태에서, 본 발명은 중앙 프로세싱 유닛(central processing unit, CPU)과 그래픽 프로세싱 유닛(GPU)을 포함하는 시스템을 위한 것이다. CPU는 제 1 및 제 2 잉크 포인트들을 순차적으로 수신하며, 제 1 및 제 2 잉크 포인트들에 기초하여 액티브 스무디드 잉크 프래그먼트를 생성하며, 제 3 잉크 포인트를 (시간 순차적으로 나중에) 수신하며, 제 3 잉크 포인트가 액티브 스무디드 잉크 프래그먼트에 적절하게 맞는지의 여부를 결정하며, 제 3 잉크 포인트가 액티브 스무디드 잉크 프래그먼트에 적절하게 맞다는 결정 시, 액티브 스무디드 잉크 프래그먼트를 업데이트하도록 구성된다. 대안적으로, 제 3 잉크 포인트가 액티브 스무디드 잉크 프래그먼트에 적절하게 맞는 것은 아니라는 결정시, CPU는 액티브 스무디드 잉크 프래그먼트를 종료하고 제 2 스무디드 잉크 프래그먼트를 개시하도록 구성된다. GPU는 디스플레이 표면에 연관하여 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 스무디드 잉크 출력을 렌더링하도록 구성된다.
또 다른 실시형태에서, 본 발명은 적어도 하나의 프로세서와 디지털 잉크 스무딩 및 렌더링 루틴을 저장하는 메모리를 포함하는 장치를 위한 것이다. 적어도 하나의 프로세서에 의해 실행될 때, 디지털 잉크 스무딩 및 렌더링 루틴은 그 장치로 하여금, 제 1 잉크 포인트를 수신하게 하며; 제 2 잉크 포인트를 수신하게 하며; 제 1 및 제 2 잉크 포인트들에 기초하여 액티브 삼차 베지에 근사를 컴퓨팅하게 하며; 제 3 잉크 포인트를 (제 1 및 제 2 잉크 포인트들에 대해 시간 순차적으로 나중에) 수신하게 하며; 제 3 잉크 포인트가 액티브 삼차 베지에 근사에 적절하게 맞는지의 여부를 결정하게 하며; 제 1, 제 2 및 제 3 잉크 포인트들을 이용하여 새로운 삼차 베지에 근사를 컴퓨팅하게 하며; 그리고 디스플레이 표면에 연관하여 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 스무디드 잉크 출력을 렌더링하게 한다.
본 발명의 실시형태들의 개관을 간단히 설명하였으므로, 본 발명의 실시형태들이 구현될 수도 있는 예시적인 동작 환경이 본 발명의 다양한 양태들에 대한 일반적인 맥락을 제공하기 위하여 아래에서 설명된다. 도면들을 일반적으로 그리고 처음에 특히 도 1을 참조하면, 본 발명의 실시형태들을 구현하기 위한 예시적인 동작 환경이 도시되고 전체가 컴퓨팅 디바이스(100)로서 지정된다. 컴퓨팅 디바이스100)는 적합한 컴퓨팅 환경의 단지 하나의 예이고 본 발명의 실시형태들의 사용 또는 기능성의 범위에 관해 임의의 제한을 제시하려는 의도는 아니다. 컴퓨팅 디바이스(100)는 예시된 임의의 하나의 컴포넌트 또는 컴포넌트들의 임의의 조합에 관련한 임의의 의존성 또는 요건을 갖는 것으로서 해석되지 않아야 한다.
본 발명의 실시형태들은 컴퓨터 또는 다른 머신, 이를테면 개인 정보 단말기 또는 다른 핸드헬드 디바이스에 의해 실행되고 있는 프로그램 모듈들과 같은 컴퓨터 사용가능 또는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 코드 또는 머신 사용가능 명령어들의 일반적인 맥락에서 설명될 수도 있다. 일반적으로, 프로그램 모듈들은 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함하고, 특정 태스크들을 수행하거나 특정 추상 데이터 유형들을 구현하는 코드를 지칭한다. 본 발명의 실시형태들은 핸드헬드 디바이스들, 소비자 가전기기들, 범용 컴퓨터들, 더욱 전문적인 컴퓨팅 디바이스들 등을 비제한적으로 포함하는 다양한 시스템 구성들에서 실시될 수도 있다. 본 발명의 실시형태들은 태스크들이 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 디바이스들에 의해 수행되는 분산형 컴퓨팅 환경들에서 또한 실시될 수도 있다.
도 1을 계속 참조하면, 컴퓨팅 디바이스(100)는 다음의 디바이스들, 즉, 메모리(112), 하나 이상의 프로세서들(114), 하나 이상의 프레젠테이션 컴포넌트들(116), 하나 이상의 입출력(I/O) 포트들(118), 하나 이상의 입출력 컴포넌트들(120), 및 예시적 전력 공급부(122)를 직접적으로 또는 간접적으로 커플링하는 버스(110)를 포함한다. 버스(110)는 하나 이상의 버스들(이를테면 주소 버스, 데이터 버스, 또는 그것들의 조합)일 수도 있는 것을 나타낸다. 비록 도 1의 다양한 블록들이 명료함을 위해 선들로 도시되지만, 현실에서, 이들 블록들은 논리적이지, 반드시 실제적이지는 않은 컴포넌트들을 나타낸다. 예를 들어, 디스플레이 디바이스와 같은 프레젠테이션 컴포넌트를 I/O 컴포넌트인 것으로 간주할 수도 있다. 또한, 프로세서들은 메모리를 갖는다. 본원의 발명자들은 이러한 것이 기술의 본질임을 인식하고, 도 1의 도면이 본 발명의 하나 이상의 실시형태들에 관련하여 사용될 수 있는 예시적인 컴퓨팅 디바이스의 단순한 예시가 된다는 것을 반복하여 언급한다. "워크스테이션", "서버", "랩톱", "핸드헬드 디바이스" 등과 같은 카테고리들 간에는 구별이 이루어지지 않는데, 그 모두가 도 1의 범위 내에서 생각될 수 있고 "컴퓨팅 디바이스"에 대한 언급이라서이다.
컴퓨팅 디바이스(100)는 다양한 컴퓨터 판독가능 매체들을 통상적으로 포함한다. 컴퓨터 판독가능 매체는 컴퓨팅 디바이스(100)에 의해 액세스 가능한 그리고 휘발성 및 비휘발성 매체들, 착탈식 및 비-착탈식 매체들 양쪽 모두를 포함하는 임의의 가용 매체일 수도 있다. 컴퓨터 판독가능 매체는 컴퓨터 저장 매체와 통신 매체를 포함하며; 컴퓨터 저장 매체는 신호들 자체를 제외시킨다. 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 저장 매체는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크들(digital versatile disks, DVD) 또는 다른 광학적 디스크 스토리지, 자기 카세트들, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 원하는 정보를 저장하는데 사용될 수 있는 그리고 컴퓨팅 디바이스(100)에 의해 액세스될 수 있는 임의의 다른 매체를 비제한적으로 포함한다. 한편, 통신 매체는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터를 포함하고 임의의 정보 전달(delivery) 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호에 정보를 인코딩하는 것과 같은 방식으로 설정 또는 변경된 자신의 특성들 중의 하나 이상을 갖는 신호를 의미한다. 비제한적인 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기한 것들 중 임의의 것들의 조합들이 컴퓨터 판독가능 매체들의 범위 내에 또한 포함되어야 한다.
메모리(112)는 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 그 메모리는 착탈식, 비착탈식, 또는 그것들의 조합일 수도 있다. 예시적인 하드웨어 디바이스들은 고체 상태 메모리, 하드 드라이브들, 광 디스크 드라이브들 등을 포함한다. 컴퓨팅 디바이스(100)는 메모리(112) 또는 입출력 컴포넌트들(120)과 같은 다양한 엔티티들로부터 데이터를 판독하는 하나 이상의 프로세서들을 포함한다. 프레젠테이션 컴포넌트(들)(116)는 데이터 표시들을 사용자 또는 다른 디바이스에게 제시한다. 예시적인 프레젠테이션 컴포넌트들은 디스플레이 디바이스, 스피커, 프린팅 컴포넌트, 진동 컴포넌트 등을 포함한다.
입출력 포트들(118)은 입출력 컴포넌트들의 일부가 내장(built-in)될 수도 있는, 입출력 컴포넌트들(120)을 포함하는 다른 디바이스들에 컴퓨팅 디바이스(100)가 논리적으로 커플링되는 것을 허용한다. 예시적인 입출력 컴포넌트들은 마이크, 조이스틱, 게임 패드, 위성 접시, 스캐너, 프린터, 디스플레이 디바이스, 무선 디바이스, 제어기(이를테면 스타일러스, 키보드 및 마우스), 자연스러운 사용자 인터페이스(natural user interface, NUI) 등을 포함한다. 실시형태들에서, 펜 디지타이저(도시되지 않음)와 동반되는 입력 도구(또한 도시되지 않았지만, 단지 예로서, 펜 또는 스타일러스를 포함할 수 있음)가 프리핸드 사용자 입력을 디지털적으로 캡처하기 위하여 제공된다. 펜 디지타이저와 프로세서(들)(114) 간의 접속은 직접적이거나 또는 직렬 포트, 병렬 포트, 및/또는 본 기술분야에서 알려진 다른 인터페이스 및/또는 시스템 버스를 이용하는 커플링을 통할 수도 있다. 더욱이, 디지타이저 입력 컴포넌트는 디스플레이 디바이스와 같은 출력 컴포넌트와는 별개인 컴포넌트일 수도 있거나 또는, 일부 실시형태들에서, 디지타이저의 사용가능 입력 영역은 디스플레이 디바이스의 디스플레이 영역과 함께 존재할 수도 있거나, 디스플레이 디바이스와 통합될 수도 있거나, 또는 디스플레이 디바이스에 오버레이되거나 또는 그렇지 않으면 부착되는 별도의 디바이스로서 존재할 수도 있다. 임의의 및 모든 이러한 변형들과, 그것들의 임의의 조합은, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.
NUI가 사용자에 의해 생성되는 에어 제스처들, 음성, 또는 다른 생리적 입력들을 프로세싱한다. 적절한 NUI 입력들이 컴퓨팅 디바이스(100)에 관련하여 프레젠테이션을 위한 잉크 스트로크들로서 해석될 수도 있다. 이들 요청들은 추가의 프로세싱을 위해 적절한 네트워크 엘리먼트에게 송신될 수도 있다. NUI가 스피치 인식, 터치 및 스타일러스 인식, 안면 인식, 생체 인식, 스크린 상의 및 그 스크린에 인접한 제스처 인식 둘 다, 에어 제스처들, 머리 및 눈 추적, 그리고 컴퓨팅 디바이스(100) 상의 디스플레이들에 연관된 터치 인식의 임의의 조합을 구현한다. 컴퓨팅 디바이스(100)에는 깊이 카메라들, 이를테면, 스테레오스코픽 카메라 시스템들, 적외선 카메라 시스템들, RGB 카메라 시스템들, 및 이들의 조합들이 제스처 검출 및 인식을 위해 갖추어질 수도 있다. 덧붙여, 컴퓨팅 디바이스(100)에는 모션의 검출을 가능하게 하는 가속도계들 또는 자이로스코프들이 갖추어질 수도 있다. 가속도계들 또는 자이로스코프들의 출력은 몰입형 증강 현실 또는 가상 현실을 렌더링하기 위해 컴퓨팅 디바이스(100)의 디스플레이에 제공될 수도 있다.
본 명세서에서 설명되는 발명의 주제의 양태들은 모바일 디바이스에 의해 실행되고 있는 일반적인 맥락의 컴퓨터 실행가능 명령어들, 이를테면 프로그램 모듈들에서 설명될 수도 있다. 일반적으로, 프로그램 모듈들은 특정 태스크들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 본 명세서에서 설명되는 본 발명의 주제의 양태들은 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 디바이스들에 의해 태스크들이 수행되는 분산형 컴퓨팅 환경들에서 또한 실시될 수도 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 디바이스들을 포함하는 국부 및 원격 컴퓨터 저장 매체들 둘 다에 위치될 수도 있다. 컴퓨터 사용가능 명령어들은 컴퓨터가 입력 소스에 따라 반응하는 것을 허용하는 인터페이스를 형성한다. 명령어들은 수신된 데이터의 소스와 연계하여 수신된 데이터에 응답하여 다양한 태스크들을 개시하기 위해 다른 코드 세그먼트들과 협력한다.
이전에 언급된 바와 같이, 본 발명의 실시형태들은 효율적인 실시간 잉크 스트로크 스무딩, 궤적 예측, 및 GPU-활용(GPU-leveraged) 잉크 스트로크 렌더링을 위해 제공되는 시스템들, 방법들, 및 컴퓨터 판독가능 저장 매체들을 위한 시스템들, 방법들, 및 컴퓨터 판독가능 저장 매체들을 제공한다. 도 2를 참조하면, 본 발명의 실시형태들이 채용될 수도 있는 예시적인 컴퓨팅 시스템(200)을 도시하는 블록도가 제공된다. 일반적으로, 컴퓨팅 시스템(200)은 디지털 잉크 입력이 스트로크 입력 동안 및 후에, 심지어 상당한 줌 레벨들에서 부드럽게 보이게 되는 환경을 예시한다. 컴퓨팅 시스템(200)은 스무딩 및/또는 다른 프로세싱에 기초한 스트로크에 대한 변화들이 스트로크 입력 동안 또는 스트로크 후 중 어느 하나에서 사용자에 의해 실질적으로 감지되지 않도록 디지털 잉크 스트로크들의 스무딩 및 렌더링이 제공되는 환경을 추가로 예시한다. 더 추가로, 컴퓨팅 시스템(200)은 렌더링 레이턴시가 증가되지 않고, 적어도 부분적으로는, 본 명세서의 아래에서 추가로 설명되는 예측 기법들의 사용에 의해 종종 감소하는 환경을 예시한다.
도시되지 않은 다른 컴포넌트들 중에서, 컴퓨팅 시스템(200)은, 아래에서 더욱 충분히 설명되는 바와 같이, 디지털 잉크 입력을 수신하고 디스플레이(224)에 연관하여 스무디드 잉크 출력을 제공하도록 구성되는 사용자 컴퓨팅 디바이스(210)와, 장래의 잉크 스트로크 입력을 스무딩 및 예측하도록 구성되는 잉크 스무딩 엔진(212)을 일반적으로 포함한다. 실시형태들에서 (그리고 도 2에 도시된 바와 같이), 사용자 컴퓨팅 디바이스(210)와 잉크 스무딩 엔진(212)은 네트워크(214)를 통해 서로 통신하고 있을 수도 있다. 네트워크(214)는, 하나 이상의 국부 영역 네트워크들(local area networks, LAN들) 및/또는 광역 네트워크들(wide area networks, WAN들)을 제한 없이 포함할 수도 있다. 이러한 네트워킹 환경들은 사무실들, 전사적(enterprise-wide) 컴퓨터 네트워크들, 인트라넷들 및 인터넷에서 아주 흔하다. 따라서, 네트워크(214)는 본 명세서에서 추가로 설명되지 않는다.
임의의 수의 사용자 컴퓨팅 디바이스들(210) 및/또는 잉크 스무딩 엔진들(212)이 본 발명의 실시형태들의 범위 내의 컴퓨팅 시스템(200)에서 채용될 수도 있다는 것이 이해되어야 한다. 각각은 분산형 환경에서 협력하는 단일 디바이스/인터페이스 또는 다수의 디바이스들/인터페이스들을 포함할 수도 있다. 예를 들면, 잉크 스무딩 엔진(212)은 본 명세서에서 설명되는 잉크 스무딩 엔진(212)의 기능을 총체적으로 제공하는 분산형 환경으로 배치구성된 다수의 디바이스들 및/또는 모듈들을 포함할 수도 있다. 덧붙여, 도시되지 않은 다른 컴포넌트들 또는 모듈들은 컴퓨팅 시스템(200) 내에 또한 포함될 수도 있다.
일부 실시형태들에서, 예시된 컴포넌트들/모듈들 중 하나 이상은 독립형 애플리케이션들로서 구현될 수도 있다. 다른 실시형태들에서, 예시된 컴포넌트들/모듈들 중 하나 이상은 사용자 컴퓨팅 디바이스(210), 잉크 스무딩 엔진(212)을 통해, 또는 인터넷 기반 서비스로서 구현될 수도 있다. 도 2에 도시된 컴포넌트들/모듈들은 사실상 그리고 수적으로 예시적인 것이고 제한으로서 해석되지 않아야 한다는 것이 본 기술분야의 통상의 기술자들에 의해 이해될 것이다. 임의의 수의 컴포넌트들/모듈들이 그 실시형태들의 범위 내의 원하는 기능을 성취하기 위해 채용될 수도 있다. 게다가, 컴포넌트들/모듈들은 임의의 수의 잉크 스무딩 엔진들(212) 및/또는 사용자 컴퓨팅 디바이스들(210) 상에 위치될 수도 있다. 단지 예로서, 잉크 스무딩 엔진(212)은 단일 컴퓨팅 디바이스, 컴퓨팅 디바이스들의 클러스터, 또는 나머지 컴포넌트들 중 하나 이상의 컴포넌트로부터 원격인 컴퓨팅 디바이스로서 제공될 수도 있다.
본 명세서에서 설명되는 이 및 다른 배치구성들은 단지 예들로서만 언급된다는 것이 이해되어야 한다. 다른 배치구성들 및 엘리먼트들(예컨대, 머신들, 인터페이스들, 기능들, 순서들, 및 기능들의 그루핑들 등)이 도시된 및/또는 설명된 것들에 부가하여 또는 그것들 대신 사용될 수 있고, 일부 엘리먼트들은 함께 생략될 수도 있다. 게다가, 본 명세서에서 설명되는 다수의 엘리먼트들은, 이산 또는 분산형 컴포넌트들로서 또는 다른 컴포넌트들과 연계하여, 그리고 임의의 적합한 조합 및 로케이션에서 구현될 수도 있는 기능성 엔티티들이다. 하나 이상의 엔티티들에 의해 수행되고 있는 것으로서 본 명세서에서 설명되는 다양한 기능들은 하드웨어, 펌웨어, 애플리케이션들, 드라이버들, 및/또는 소프트웨어에 의해 수행될 수도 있다. 예를 들면, 다양한 기능들은 메모리에 저장된 명령어들을 실행하는 프로세서에 의해 수행될 수도 있다.
사용자 컴퓨팅 디바이스(210)는 도 1을 참조하여 설명된 컴퓨팅 디바이스(100)와 같은 임의의 유형의 컴퓨팅 디바이스를 포함할 수도 있다. 예시된 바와 같이, 사용자 컴퓨팅 디바이스(210)는 잉크 입력 수신 컴포넌트(216), 잉크 입력 송신 컴포넌트(218), 스무디드(및, 실시형태들에서, 연장된) 잉크 스트로크 출력 수신 컴포넌트(220), 및 디스플레이(224)에 연관하여 스무디드 잉크 출력을 렌더링하는 GPU(222)를 포함한다. 잉크 입력 수신 컴포넌트(216)는 잉크 스트로크들의 사용자 입력, 일반적으로 입출력 컴포넌트, 이를테면 펜 또는 스타일러스를 통한 입력을 수신하도록 구성된다. 잉크 입력 송신 컴포넌트(218)는 잉크 입력 수신 컴포넌트(216)에 의해 수신된 잉크 스트로크들을 잉크 스무딩 엔진(212)에게, 예를 들면, 네트워크(214)를 통해 송신하도록 구성된다. 스무디드 잉크 스트로크 출력 수신 컴포넌트(220)는 (아래에서 더욱 충분히 설명되는 바와 같이, 일반적으로 잉크 스무딩 엔진(212)으로부터 네트워크(214)를 통해), 디스플레이(224)에 연관하여 렌더링하기 위한 스무디드 잉크 출력을 수신하도록 구성된다. GPU(222)는 (아래에서 더욱 충분히 설명되는 바와 같이) 수신된 스무디드 잉크 출력을 디스플레이(224)에 연관하여 렌더링하기 위해 프로세싱하도록 구성된다.
사용자 컴퓨팅 디바이스(210)의 임의의 컴포넌트에 의해 수행되고 있는 바와 같은 본 명세서에서 설명되는 기능은 그래픽 콘텐츠를 렌더링할 수 있는 임의의 다른 애플리케이션, 애플리케이션 소프트웨어, 사용자 인터페이스 등에 의해 수행될 수도 있다. 본 발명의 실시형태들이 제스처, 터치 및/또는 음성 입력을 받아들이는 디바이스들 및 모바일 컴퓨팅 디바이스들에 동등하게 적용 가능하다는 것에 추가로 주목해야 한다. 임의의 및 모든 이러한 변형들과, 그것들의 임의의 조합은, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.
예시된 바와 같이, 잉크 스무딩 엔진(212)은 스플라인 피터(spline fitter)(226), 잉크 예측 컴포넌트(232) 및 잉크 렌더링 컴포넌트(234)를 포함한다. 스플라인 피터(226)는 삼차 베지에 세그먼트들의 세트로 잉크 포인트들의 스트로크를 근사화하도록 구성된다. 스플라인 피터(226)에는 단일 잉크 포인트가 한 번에 피드되고 각각의 새로운 잉크 포인트에 대해, 액티브 베지에 세그먼트를 업데이트하는 것, 또는 새로운 잉크 포인트가 액티브 베지에 세그먼트와 충분히 잘 맞지 않을 수 있다면 새로운 베지에 세그먼트를 개시하게 하는 것 중 어느 하나를 하도록 구성된다. 따라서, 스플라인 피터(226)는 두 개의 서브-컴포넌트들, 즉, 베지에 피터(228)와 세그먼트화 컴포넌트(230)를 포함한다.
베지에 피터(228)는 액티브 포인트들이 디지털화됨에 따라 순차적으로 한 번에 하나씩 수신되는 액티브 포인트들의 세트를 유지하도록 구성된다. 세트가 업데이트될 때마다, 베지에 피터(228)는 새로운 삼차 베지에 근사를 컴퓨팅하도록 구성된다. 그러나, 액티브 세트는 스트로크의 개시 이후의 모든 포인트들을 반드시 포함할 필요는 없는데, 아래에서 더욱 충분히 설명되는 바와 같이, 그 액티브 세트가 세그먼트화 컴포넌트(230)에 의해 리셋될 수도 있어서이다.
세그먼트화 컴포넌트(230)는 베지에 피터(228)에 의해 생성된 맞춤의 품질을 평가하고 현존 베지에 근사를 업데이트할 때와 새로운 베지에 근사 또는 곡선을 개시하게 할 때를 결정하도록 구성된다. 베지에 피터(228)는 또한, 커스프 검출과 같은 태스크들을 (아래에서 더욱 충분히 설명되는 바와 같이) 수행하고, (아래에서 더욱 충분히 설명되는 바와 같이) 베지에 피터(228)를 구성함으로써 스플라인의 분석 속성들을 제어한다.
베지에 피터(Bezier fitter)(228)
이 구역은 베지에 피터(228)가 삼차 베지에 근사 또는 곡선으로 잉크 포인트들의 세트를 근사화하는 방법을 설명한다. 간결함을 위해, 위치 정보만이 본 명세서에서 고려된다. 그러나, 공식들을 임의의 수의 특징들로 확장하는 것은 간단하다. 예를 들면, 일부 구현예들에서, 수신된 잉크 포인트의 반경(이는 연습된 압력 및 입력 브러시 스트로크의 사이즈에 비례할 수도 있음)은 이용될 수도 있다. 다른 구현들에서, 틸트, 방위각 등을 포함하는 속성들이 사용될 수도 있다. 임의의 및 모든 이러한 특징들과, 그것들의 임의의 조합이, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.
임의의 주어진 시점에 베지에 피터(228)는 액티브 포인트들의 세트
Figure 112022035890643-pat00001
와 하나의 단일 베지에 세그먼트, 즉, B(t)를 맞춘다. 피팅 태스크는 다음의 최소화 문제로서 공식화되며:
Figure 112022035890643-pat00002
여기서 E는 아래에서 더욱 충분히 설명될 에러 함수이다.
P(t), t∈[0,1]를 세트 Sk에 의해 설명되는 암시적 폴리라인(polyline)이라 하자. 그러면,
Figure 112022035890643-pat00003
Figure 112022035890643-pat00004
폴리라인 상의 포인트와 베지에 곡선 간의 거리를 컴퓨팅하는 것이 비용이 비싸므로, 본원의 실시형태들에 따라, 파라미터 t의 동일한 값에서 폴리라인 및 베지에 곡선을 샘플링함으로써 획득된 두 개의 포인트들 간의 거리는 다음으로 근사화된다:
Figure 112022035890643-pat00005
최소화가 원해지는 에러 함수는 그러면 다음으로서 정의될 수도 있다:
Figure 112022035890643-pat00006
N = k 및 t i 는 에러 함수가 Sk에서의 모든 포인트들에 대해서만 고려하도록 P(t i ) = p i , i = 0,1, ..., k-1이 되도록 선택된다. 그러나, 삼차 근사가 이용되고 있으므로, 샘플은 적어도 네 개의 포인트들을 포함한다.
최소화
최소화 문제의 변수들은 B의 제어 포인트들이다. C = [C0, C1, C2, C3]을 제어 포인트들의 벡터라고 하자. 경사도 하강 접근법(gradient descent approach)이 최적의 값들을 찾기 위해 사용된다:
Figure 112022035890643-pat00007
업데이트 규칙의 파라미터 α는 수렴 율(convergence rate)을 제어한다. 대체로, 더 적은 반복이 더 큰 값들에 요구되지만 동시에 계산들은 α가 클 때 불안정하게 될 수도 있다. 이용될 수도 있는 하나의 예시적인 파라미터 α는 다음이다:
Figure 112022035890643-pat00008
더욱이, 발산의 위험은 피팅 에러에 대한 임의의 개선들을 생성하지 않는 반복 수에 의해 α를 나눔으로써 완화될 수도 있다.
Figure 112022035890643-pat00009
은 B의 제어 포인트들에 대한 근사 에러의 경사도이고 다음과 같이 컴퓨팅될 수도 있다:
Figure 112022035890643-pat00010
업데이트 규칙에서는 삼차 베지에 근사의 네 개의 제어 포인트들에 대응하는 네 개의 자유도들이 있다는 것에 주의해야 한다. 그러나, 다음의 구역에서 설명되는 세그먼트화 컴포넌트(230)는 스플라인에 바람직한 분석 속성들(예컨대, 연속성)을 부과하기 위해 이들 자유도들의 일부를 사용할 것이다.
세그먼트화 컴포넌트(230)
세그먼트화 컴포넌트(230)는 두 개의 기본 태스크들을 완수한다. 첫째, 새로운 베지에 근사를 시작할지 또는 현재의 것을 업데이트할지를 결정한다. 둘째, 새로운 근사 또는 곡선이 시작되는 임의의 시간에 삼차 베지에 피터(228)를 재구성함으로써 스플라인 상의 분석 속성들(가장 두드러지게는 C0 또는 C1 연속성)을 강요한다. 본 명세서에서 이용되는 바와 같이, 그리고 본 기술분야의 통상의 기술자들에 의해 이해될 바와 같이, "연속성"은 인접한 베지에 곡선들이 연결되는 접합부들에서의 상대적인 스무드니스(smoothness)를 지칭한다. "C0 연속성"은 인접한 베지에 곡선들이 동일한 끝점들을 공유하는 상황들을 지칭한다. "C1 연속성"은 인접한 베지에 곡선들이 동일한 끝점들 및 동일한 도함수(derivative)들을 공유하는 상황들을 지칭한다.
새로운 베지에 근사를 시작할지 또는 현재의 것을 업데이트할지의 결정은 맞춤의 품질에 기초한다. 더 구체적으로는, 새로운 베지에 근사를 시작할지 또는 현재의 것을 업데이트할지의 결정은 수신되는 디지털화된 잉크 포인트들과 삼차 베지에 피터(228)에 의해 컴퓨팅된 최적근사(best approximation) 간의 최대 거리에 기초한다. 실시형태들에서, 차단 임계값은 10 하이메트릭 단위(0.1mm)일 수도 있으며, 그것 위의 포인트에서 유용성 연구에서의 사용자들은 새로운 포인트들이 도착함에 따른 (새로운 포인트로 연장되는 것이 아님) 잉크 변화들이 현저하였다는 것을 보여주었다. 그러나, 그 임계값은 잉크가 렌더링되고 있을 때 그 잉크의 물리적 사이즈와 상관된다는 것에 주의해야 한다. 예를 들어, 습식 잉크(다시 말하면, 입력 도구가 수신하는 표면으로부터 분리되기 전에, 스트로크 활동 동안 렌더링된 잉크)가 10x 배율로 렌더링되고 있다면, 그 임계값은 10 배 더 작게 될 것이 필요할 가능성이 있거나 또는 사용자는 잉크 변화들을 알아차릴 것이다. 물론, 건식 잉크(즉, 입력 도구가 수신 표면으로부터 일단 분리되자마자의 수신 표면 상의 잉크)가 변화하지 않으므로(다시 말하면, 세그먼트화는 이미 행해졌으므로) 이 포인트는 습식 잉크에 대해서만 의미가 있다. 그 임계값은 이전의 잉크 포인트들의 임의의 양(quantity), 이러한 잉크 포인트들의 임의의 특징들(예컨대, 좌표들, 압력, 틸트, 트위스트 등)의 함수일 수도 있고, 그리고/또는 (예컨대, DPI, 이용가능 메모리, CPU, GPU 등의) 디바이스 의존적일 수도 있다는 것에 추가로 주의해야 한다. 임의의 및 모든 이러한 변형들과, 그것들의 임의의 조합은, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.
세그먼트화 컴포넌트(230)에 의해 달성되는 다른 중요한 태스크는 스플라인 상에 바람직한 분석 속성들을 부과하는 것이다. 아무리 못해도 스플라인은 연결되어야만 하며(C0 연속성), 이는 각각의 베지에 곡선 또는 세그먼트의 제 1 제어 포인트가 이전의 곡선 또는 세그먼트의 마지막 제어 포인트와 매칭됨으로써 하나의 자유도를 손실해야만 한다는 것을 의미한다:
C0 연속성:
Figure 112022035890643-pat00011
C0 연속성이, 스플라인이 접속되는 것을 보장하지만, 원을 그린 연결 지역들이 나쁜(부드럽지 않음) 아티팩트들을 가리키는 도 3에 도시된 바와 같이 스무드 잉크를 생성하기에는 충분하지 않다.
본 발명의 실시형태들에 따라서, 도 3에서의 나쁜 아티팩트들은 C1 연속성을 부과함으로써 제거될 수도 있다. 파라미터적 C1 연속성은 다음과 같이 t=0에서의 세그먼트의 도함수가 t=1에서의 이전의 세그먼트의 도함수와 매칭되는 것을 요구한다:
Figure 112022035890643-pat00012
그러나, 양호한 맞춤들을 생성하기 위한 적은 자유도를 남기는 파라미트적 C1 연속성이 부과될 때 다른 자유도가 손실된다. 다행히도, 부드러움을 찾기 위해 스플라인에 필요한 모두는 덜 제한적이고 제 2 제어 포인트의 방향만을 제한하는 것을 요구하는 기하학적(파라미터적과는 대조적임) C1 연속성이다.
기하학적 C1 연속성:
Figure 112022035890643-pat00013
본원의 실시형태들에 따라, 업데이트 규칙이 적용된 후, 제 2 제어 포인트를 요청된 방향으로 투영함으로써 기하학적 C1 연속성이 부과될 수도 있다.
떨리는 행동 방지
가끔은, 기하학적 C1 연속성의 구현예는, 예를 들면, 도 4에 도시된 바와 같이, 불쾌한 떨리는 행동의 관찰을 초래한다. 이 행동은 C0 연속 스플라인들에서 관찰되는 가끔의 커스프(cusp)들보다 종종 더 나빠 보인다. 이 행동의 근본 원인은 t=1에서의 마지막으로 관계된 베지에의 도함수가 대응하는 디지털화된 포인트들의 도함수와 일치하지 않는 것으로 나타난다. 그러므로, 그 문제는, 도 5에 예시된 바와 같이, t=1에서의 베지에 근사의 도함수가 마지막 두 개의 디지털화된 포인트들 연결시키는 베지에 근사 또는 세그먼트의 도함수와 매칭되어야만 한다는 새로운 제약조건을 베지에 피터(228) 상에 추가함으로써 완화될 수도 있다. 다른 완화들이 본원의 실시형태들의 범위 내에서 가능하다는 것에 주의해야 한다. 예를 들면, 이전 및 현재 베지에들 둘 다가 업데이트될 수도 있다. 대안적으로, 두 개의 베지에들이 한 번에 맞춤될 수도 있으며, 연속성이 두 개 간에 부과될 수도 있고, 요건들을 맞추는 것이 충족되지 않을 때마다 베지에 세그먼트들의 새로운 쌍이 시작되었을 수도 있다.
커스프 검출
일반적으로 C1 연속성이 바람직한 속성이지만, 시행하는 것이 유익하지 않은 경우들이 있다. 가장 주목할 만하게는, C1 연속성은 심지어 의도된 커스프들조차 제거한다. 이런 이유로, 세그먼트화 컴포넌트(230)는 추가로, 커스프 검출의 결과들에 기초하여 C1 연속성을 위해 베지에 피터(228)를 구성하도록 구성된다.
커스프 검출에 대한 간단한 접근법이 마지막 세 개의 포인트들에 의해 형성된 각도를 체크하고 미리 정의된 임계값 미만의 각도들을 커스프들로서 분류하는 것이다. 유사한 접근법이 t=1에서 이전의 세그먼트의 도함수와 t=0에서의 현재 세그먼트의 도함수에 의해 형성된 각도에 대한 결정을 기초로 하는 것이다. 임의의 및 모든 이러한 접근법들과, 그것들의 임의의 조합이, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.
잉크 예측 컴포넌트(232)
입력 도구의 다음의 몇몇 로케이션들을 예측하는 것은 육필(handwriting)이 방향에서의 엄청 예리한 예측 불가능한 변화들이 되고 사용자가 임의의 시간에 펜(또는 다른 입력 도구)을 들어올림으로써 예측을 불필요하게 할뿐만 아니라 잠재적으로 유해하게 할 수도 있기 때문에 풀기 어려운 문제이다.
잉크 예측 컴포넌트(232)는 잉크 예측의 품질의 평가를 허용하는 메트릭을 정의함으로써 예측 품질을 먼저 확립하도록 구성된다. 고려할 두 개의 주요 양태들, 즉 사용자 경험과 성능이 있다. 사용자 경험의 측면에서, 잘못된 예측의 결과는 한 조각의 잉크가 스크린 또는 다른 디스플레이 표면 상에 렌더링되고 그것이 그 다음에, 예측이 잘못된 것임을 입증하자마자, 수 프레임들 내에 제거된다는 것이다. 이는 예측들이 프레임들에 걸쳐 안정적이지 않을 때 악화되는 명멸 현상(flickering effect)을 생성할 수도 있다. 메트릭은 예측 에러가 최종 사용자에 의해 관찰될 수 있는지의 여부를 반영해야만 한다.
성능의 측면에서, 예시적인 접근법이 에러 벡터의 주 성분들, 즉,
Figure 112022035890643-pat00014
Figure 112022035890643-pat00015
를 예측 품질을 위한 메트릭들로서 사용하는 것이다. 도 6은 5-포인트-앞선 예측을 위한 일 예를 제공한다. 디지털화된 포인트들이 도트들로 표현된다. 실선(610)과 연결된 것들은 이미 디지털화되어 있는 반면, 연결되지 않은 (그리고 더 큰 삼각형의 내부에서 보이는) 것들은 장래에 디지털화된다. 예측된 포인트들은 파선(612)에 의해 연결된다. 예측된 포인트와 마지막 디지털화된 포인트를 연결하는 벡터
Figure 112022035890643-pat00016
는 예측 벡터이다. 장래에 디지털화되는 포인트와 마지막 디지털화된 포인트를 연결하는 벡터
Figure 112022035890643-pat00017
는 실현 벡터이다. 벡터
Figure 112022035890643-pat00018
는 예측 에러이고,
Figure 112022035890643-pat00019
Figure 112022035890643-pat00020
는 그것의 주 성분들이다.
Figure 112022035890643-pat00021
는 얼마나 많이 예측이 지체(lag) 또는 초과(overshoot)되는지를 측정한다.
Figure 112022035890643-pat00022
은 예측된 포인트가 실현 벡터로부터 얼마나 멀리 있는지를 측정한다.
잉크 예측을 위해 잉크 예측 컴포넌트(232)에 의해 사용될 수도 있는 하나의 기법은 디지털화된 포인트들과 삼차 베지에 스플라인을 맞추는 것을 수반한다. 기본 아이디어는 마지막 베지에 세그먼트 B(t)를 어떤 t >1(도 6에서의 파선)에서 B(t)를 샘플링하는 것을 단순히 의미하는 그것의 장래로 연장함으로써 예측을 하는 것이다.
t의 선택
k를 장래의 예측이 원하여지는 포인트들의 수라고 하자, 그리고
Figure 112022035890643-pat00023
을 마지막 두 개의 디지털화된 포인트들 간의 거리라고 하자. 그러면
Figure 112022035890643-pat00024
는 B(1) 및 B(t) 간의 베지에 곡선 또는 세그먼트의 호의 길이(arc length)가
Figure 112022035890643-pat00025
와 동일한 방식으로 선택될 수도 있다.
삼차 곡선의 호의 길이에 대한 닫힌 형식의 해법이 없으므로, 다수의 알려진 사실들을 활용하는 근사가 이용될 수도 있다. 먼저, 베지에 곡선의 끝점들 간의 거리는 그 베지에 곡선의 호의 길이의 하부 경계이다. 둘째, 베지에 곡선의 제어 다각형의 길이는 그 베지에 곡선의 상부 경계이다.
재-파라미터화
예측을 렌더링하기 위한 가장 간단한 옵션은 마지막 디지털화된 포인트에서부터 예측된 포인트까지 선을 그리는 것이다. 그러나, 더 나은 접근법은 도 6에서 도시된 바와 같은 베지에 곡선의 연장부(파선으로 된 612 선)를 그리는 것이다. 따라서, 잉크 예측 컴포넌트(232)는 추가로, 곡선이 변경되지 않는 방식으로 베지에 곡선을 재-파라미터화하도록 구성되며, 그리고
Figure 112022035890643-pat00026
,
Figure 112022035890643-pat00027
,
여기서 B는 원래의 베지에이고 재-파라미터화된 것이다. 재-파라미터화의 비용은 일정한 시간에 수행될 수 있으므로 무시될 수 있다.
이 기법을 이용하면, 잉크 예측 컴포넌트(232)는 나쁜 아티팩트들(, 가시적인 예측실패들)을 도입하는 일 없이 예측들을 대략 16ms 앞서 할 수도 있다.
잉크 렌더링
피팅 및 예측의 완료 시, 그 결과는 베지에 근사들의 세트 {B i (t)} 및 대응하는 radii[R i (t)]의 세트이다. 대체로, B i 들이, 다음의 네 개의 제어 포인트들에 의해 파라미터화된 삼차 함수들이다: B i,0 , B i,1 , B i,2 , B i,3 . 일부 표현들에서, R i 들은 선형적일 수도 있고 시작 및 끝 반경들에 의해서만 파라미터화될 수도 있다:
Figure 112022035890643-pat00028
.
다른 표현들에서, 그것들은 본 기술분야의 통상의 기술자에게 널리 공지된 바와 같이, 삼차적일 수 있고 번스타인 다항식들을 사용하여, 네 개의 제어 포인트들의 각각에서 가중값들에 의해 파라미터화될 수도 있다:
Figure 112022035890643-pat00029
함께, 주어진 (B i , R i ) 쌍이, 도 7에 도시된 바와 같이, 잉크 스트로크의 세그먼트를 나타낸다. 상징적으로, 이는 포인트들의 로커스(locus)
Figure 112022035890643-pat00030
이다.
도 8의 흐름도는 본 발명의 실시형태들에 따라, 잉크를 렌더링하는 예시적인 포괄적 프로세스(800)를 도시한다. 파선의 좌측에서 설명되는 기능들은, 예를 들면 도 2의 잉크 스무딩 엔진(212)의 잉크 렌더링 컴포넌트(234)를 이용하여, 수행될 수도 있다. 파선의 우측에서 설명되는 기능들은, 예를 들면 도 2의 사용자 컴퓨팅 디바이스(210)의 GPU(222)를 사용하여, 수행될 수도 있다.
윤곽선 변환(810)
본 발명의 실시형태들은 임의적 2D 어파인 변환들(3x2 행렬
Figure 112022035890643-pat00031
에 의해 정의됨)이 잉크가 캡처된 후에 잉크에 적용되는 것과 렌더링 전에 맞춤되는 것을 허용한다. 이러한 변환들은, 예를 들면, 잉크를 포함하는 문서의 패닝 및 줌잉을 모델링하는데 유용하다.
변환들은 두 개의 단계들로 구현된다. 제 1 단계("윤곽선" 변환)에서, 베지에 기능들은 변환된다. 이는 베지에 제어 포인트들(B i,0 , B i,1 , B i,2 , B i,3 )과 특정된 행렬을 단순히 곱함으로써 달성된다(개념적으로, 이는 잉크의 전체 모양에 영향을 미치지만, 두께에는 영향을 미치지 않는다).
제 2 단계는 반경들을 변환하는 것이다. 이는 아래에서 더욱 충분히 설명되는 정점 셰이더(820)에 의해 달성된다. M의 병진 성분들(m 31m 32)은 반경들을 변환하는 경우 사용되지 않음에 주의한다. 본 명세서에서 이제부터, 심볼 M은 2x2 행렬
Figure 112022035890643-pat00032
를 지칭할 것이다.
플래트닝(Flattening)(812)
주어진 스트로크를 렌더링하기 위해, 구성성분이 되는 베지에 근사들의 각각은 "플래트닝된다". 형식적으로, t i,j 들의 세트가 각각의 쌍 (B i , R i )에 대해 선택되고, 그 함수들은 그들 t들에서 평가된다(이는 본질적으로 역방향으로의 곡선 피팅이다). t i,j 들의 세트를 선택하기 위한 정확한 방법은 정의된 구현예이다. 하나의 예시적인 구현예에서, 하이브리드 전향 계차(Forward Differencing) 알고리즘이 미국 특허 제5,367,617호에서 설명된 바와 같이 이용될 수도 있으며, 이 미국 특허는 본 명세서에서 그것의 전부가 언급된 것처럼 참조로 포함된다. 전향 계차와 같은 다른 기법들이 업계에서 일반적이고 널리 공지된 것이고 또한 이용될 수도 있다는 것이 본 기술분야의 통상의 기술자에 의해 이해될 것이다.
그 결과는 그 곡선을 따라 놓이는 포인트들 및 반경들의 리스트
Figure 112022035890643-pat00033
이다.
이 데이터는 그 다음에 GPU로 전송되고 이른바"정점 버퍼"(이제부터 VB1으로 지정됨)에 저장된다.
인스턴스 테셀레이션(Instance Tessellation)(814)
또한 GPU로 전해지게 하는 것들은 두 개의 다른 정점 버퍼들 즉, 원을 근사화하는 삼각형 메시를 포함하는 하나와 사다리꼴을 표현하는 삼각형 메시를 포함하는 다른 하나이다. 이들 메시들은 초기화 동안 한번 컴퓨팅되고 후속 렌더링 동작들에 관해 캐싱되고 재사용된다.
특정 구현예들은 그 테셀레이션들을 상이한 방도들로 나타낼 수도 있다. 하나의 예시적인 구현예는 다음의 스킴을 이용한다:
원형 삼각형 메시(circle triangle mesh)에서의 각각의 정점은 다음의 데이터를 포함한다:
CenterOrEdge: 1 비트 (0: 중앙, 1:에지)
InteriorOrExterior: 1 비트 (0: 내부, 1: 외부)
Direction: float2 (정규화됨)
내부 및 외부 정점들을 연결하는 삼각형들은 안티앨리어싱(도 9에 예시된 바와 같은 명암(light-to-dark) 경사도로 지정됨)을 제공하기 위해 사용된다. 절대 좌표들이 정점 상에 실제로 저장되지 않으며, 그 정점이 다른 것들과 관련됨에 따른 그 정점의 토폴로지적 관계만이 기록된다는 것에 주의해야 한다. 예를 들면, 다음의 다이어그램에서의 정점 A가 내부 에지 정점이고 다음으로서 저장될 것이며:
(CenterOrEdge: 1, InteriorOrExterior: 0, Direction: (1,0))
반면에 정점 B는 외부 에지 정점이고 다음으로서 저장될 것이다:
(CenterOrEdge: 1, InteriorOrExterior: 0, Direction:
Figure 112022035890643-pat00034
)
(반전된 y 축을 가정함). 오직 하나의 중앙 정점(도 9에서 C로 지정됨)이 있으며, 이는 내부이고 배정된 임의적 방향을 얻는다.
정확한 수의 삼각형들(과 따라서 정점들)이 구현예에서 가변할 수 있고 렌더링되고 있는 잉크의 최대 반경에 일반적으로 의존한다는 것에 또한 주의해야 한다.
사다리꼴에서의 각각의 정점은 다음의 데이터를 포함한다:
StartOrEnd: 1 비트 (0: 시작, 1: 끝)
InteriorOrExterior: 1 비트 (0: 내부, 1: 외부)
TopOrBottom: 1 비트(0: 상단, 1: 하단)
예를 들면, 다음의 다이어그램에서의 정점 A는 상단의 내부 시작 정점이고 다음으로서 저장될 것이다:
(StartOrEnd: 0, InteriorOrExterior: 0, TopOrBottom: 0)
정점 B는 하단의 내부 끝 정점이고 다음으로서 저장될 것이며:
(StartOrEnd: 1, InteriorOrExterior: 0, TopOrBottom: 1)
이는 도 10에 도시된 바와 같다. 이 경우, 고유 정점들의 수는, 렌더링되고 있는 잉크의 반경에 상관 없이, 8개로 고정된다.
확폭(widening) 및 래스터화(816)
일단 데이터가 GPU로 업로드되면, 래스터화의 나머지 단계들은 두 개의 과정들, 즉, 원들을 렌더링하는 과정과 사다리꼴들을 렌더링하는 과정에서 수행된다. 하나의 예시적인 구현예가, 예를 들면, 아래에서 설명되는 표준 Direct3D 파이프라인의 다섯 개 스테이지들(818, 820, 822, 824, 및 826)을 사용하여 각각의 과정을 수행한다. Direct3D에 대한 직접적으로 유사한 다른 구현예들이 OpenGL과 같은 다른 플랫폼들 상에서 가능하다는 것이 본 기술분야의 통상의 기술자들에 의해 이해되고 인정될 것이다. 임의의 및 모든 이러한 변형들과, 그것들의 임의의 조합은, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.
입력 어셈블러(818), 래스터화기(822), 및 출력 병합기(826)는 고정 기능이고 GPU 자체에 의해 본질적으로 자동으로 수행된다. 정점 셰이더(820)와 화소 셰이더(824)는 프로그래밍 가능하다.
입력 어셈블러(818)
입력 어셈블러(818)는 VB1에서 원형/사다리꼴 메시들 및 정점들을 취하고 그것들을 파이프라인의 나머지에 의한 프로세싱을 위해 준비하도록 구성된다. 부분적으로, 이는 VB1에서의 정점들 전체에 걸쳐 메시들의 사본들을 복제하는 것("인스턴싱(instancing)"으로서 본 기술분야의 통상의 기술자에게 공지된 일반적인 기법)을 수반한다. 원 과정에서, 입력 어셈블러(818)는 VB1에서 정점당 메시의 하나의 사본을 할당하도록 구성된다. 사다리꼴 과정에서, 입력 어셈블러(818)는 VB1에서 연속적인 정점들의 쌍당 하나의 사본을 할당한다. 입력 어셈블러(818)에 의해 출력된 정점들은 다음의 메시 및 VB1 둘 다의 데이터로부터의 병합된 데이터를 포함한다:
원 과정 정점 포맷:
(CenterOrEdge, InteriorOrExterior, Direction, p i , r i )
사다리꼴 과정 정점 포맷:
(StartOrEnd, InteriorOrExterior, TopOrBottom, p i , r i , p i+1 , r i+1 )
정점 셰이더(Vertex Shader)(820)
본원의 실시형태들에 따라, 입력 어셈블러(818)에 의해 출력된 각각의 정점을 취하고 그것을 어떤 포지션 및 불투명도에 이르기까지 압축하는 정점 셰이더(820)가 제공된다. 원형 과정의 경우, 다음의 공식들이 사용된다:
Figure 112022035890643-pat00035
D = Direction * M
Position = p i + CenterOrEdge * (r i * D + offset(InteriorOrExterior, D·N)*N)
Opacity = (1 - InteriorOrExterior) * OpacityModifier(D·N)
여기서, M은 본 문서에서 앞서 정의된 2x2 행렬이고, (M -1) t 는 그것의 역 전치행렬(inverse transpose)이다.
offset 및 opacityModifier 함수들이 나중에 더 자세히 논의되지만, 일반적인 경우 그것들은 단순히
Figure 112022035890643-pat00036
opacityModifier(r) - 1이다.
사다리꼴 과정의 경우, 다음의 더욱 복잡한 공식들이 사용될 수도 있다:
Figure 112022035890643-pat00037
Figure 112022035890643-pat00038
Figure 112022035890643-pat00039
Figure 112022035890643-pat00040
Figure 112022035890643-pat00041
Figure 112022035890643-pat00042
Figure 112022035890643-pat00043
Figure 112022035890643-pat00044
Figure 112022035890643-pat00045
Figure 112022035890643-pat00046
Figure 112022035890643-pat00047
여기서,
Figure 112022035890643-pat00048
는 90-도 회전 행렬
Figure 112022035890643-pat00049
이다.
이들 공식들의 유사한 버전들이 잉크 렌더링의 더 이른 버전들에서 사용되었다는 것에 주의해야 한다. 그러나, 이전의 구체화들과는 달리, 본 발명의 실시형태들은 GPU 상에서 변환을 수행한다.
이들 공식들의 도출들이 본 명세서의 범위를 벗어난다는 것에 추가로 주의해야 한다. 그러나, 도 11, 도 12, 및 도 13은 다양한 양들을 서로 관련시키는 것을 지원할 수도 있다. 도 11은 두 개의 인접한 잉크 포인트들의 도면을 예시한다(M은 항등식이라고 가정함). 도 12는 P(i+1) 주위에서 클로즈업된 것을 예시한다(TopOrBottom=0, StartOrEnd=1, 및 M은 항등식이라고 가정함). 도 13은 P+D 주위에서 클로즈업된 것을 예시한다(TopOrBottom=0, StartOrEnd=1, 및 M은 항등식이라고 가정함).
래스터화기(822)
일단 복제된 메시들의 정점들이 변환되면, 대응하는 삼각형들은 래스터화기(822)를 이용하여 GPU에 의해 "래스터화된"다. 다르게 말하면, 삼각형들에 의해 커버되는 화소들은 식별되고 화소 셰이더(824)는 커버된 화소당 한번 호출된다. D3D 래스터화는 본 기술분야의 통상의 기술자들에게 공지되어 있고, 따라서, 본 명세서에서 추가로 설명되지 않는다.
화소 셰이더(824)
화소 셰이더(824)는 래스터화기(8222)로부터 불투명도를 취하고 그것을 사용하여 잉크의 컬러를 변조하도록 구성된다:
Figure 112022035890643-pat00050
이 컬러 변조(color modulation)는 잉크의 에지들을 따르는 안티앨리어싱을 시뮬레이션한다. (일부 표현들에서, 이는 단순한 단색(solid color), 더욱 복잡한 표현들에서 컬러는 화소의 로케이션에 의존적일 수도 있다). 이 컬러 값은 그 다음에 출력 병합기(826)로 전해진다.
출력 병합기(826)
출력 병합기(826)는 컬러 값을 취하고 그것을 랜더(render) 타겟으로 블렌딩하도록 구성된다. 출력 병합은 본 기술분야의 통상의 기술자에게 알려진 것이고, 따라서, 본 명세서에서 추가로 설명되지 않는다.
얇은 특징 완화
본 명세서의 위에서 언급된 바와 같이, 본 발명의 실시형태들은 두 개의 보조 함수들 즉, offset 및 opacityModifier를 이용하는 정점 셰이더(820)를 공급한다. offset의 목적은 스크린-공간에서 1/2 화소만큼 정점을 오프셋하여, 안티앨리어싱을 시뮬레이션하는 것이다. 렌더링되고 있는 원형/사다리꼴의 치수들이 1 화소 미만일 때, 이 오프셋팅이 삼각형들을 중복시키는 것을 초래할 기회를 줄이기 위해 특수한 로직이 추가될 수도 있다. 이러한 로직이 수행될 때, 정점의 불투명도는 대응하여 수정된다.
offset 및 opacityModifier의 완전한 정의들은 다음과 같다:
Figure 112022035890643-pat00051
Figure 112022035890643-pat00052
이제 도 14로 가면, 본 발명의 일 실시형태에 따라, 디지털 잉크 입력을 스무딩하는 예시적인 방법(1400)을 도시하는 흐름도가 예시되어 있다. 블록 1410에서 나타낸 바와 같이, 제 1 잉크 포인트가 수신된다. 제 2 잉크 포인트가, 블록 1412에서 나타낸 바와 같이, 또한 수신된다. 블록 1414에서 나타낸 바와 같이, 액티브 삼차 베지에 근사가 제 1 및 제 2 잉크 포인트들에 기초하여 컴퓨팅된다. 제 3 잉크 포인트가, 블록 1416에서 나타낸 바와 같이, 수신된다. 블록 1418에서 나타낸 바와 같이, 제 3 잉크 포인트가 액티브 삼차 베지에 근사에 적절하게 맞는지의 여부가 결정되고, 블록 1420에 나타낸 바와 같이, 새로운 삼차 베지에 근사가 제 1, 제 2 및 제 3 잉크 포인트들을 이용하여 컴퓨팅된다.
도 15를 참조하면, 본 발명의 일 실시형태에 따라, 디지털 잉크 입력을 스무딩 및 렌더링하는 예시적인 방법(1500)을 도시하는 흐름도가 예시되어 있다. 블록 1510에서 나타낸 바와 같이, 제 1 및 제 2 잉크 포인트들이 순차적으로 수신된다. 블록 1512에서 나타낸 바와 같이, 액티브 스무디드 잉크 프래그먼트가 제 1 및 제 2 잉크 포인트들에 기초하여 생성된다. 제 3 잉크 포인트가, 블록 1514에서 나타낸 바와 같이, 수신된다. 그 다음에 결정 블록 1516에서 나타낸 바와 같이, 제 3 잉크 포인트가 액티브 스무디드 잉크 프래그먼트에 적절하게 맞는지의 여부가 결정된다. 제 3 잉크 포인트가 액티브 스무디드 잉크 프래그먼트에 적절하게 맞다고 결정된다면, 블록 1518에서 나타낸 바와 같이, 액티브 스무디드 잉크 프래그먼트는 업데이트된다. 그러나, 제 3 잉크 포인트가 액티브 스무디드 잉크 프래그먼트에 적절하게 맞는 것은 아니라고 결정된다면, 블록 1520에서 나타낸 바와 같이, 액티브 스무디드 잉크 프래그먼트는 종료되고 제 2 스무디드 잉크 프래그먼트가 개시된다. GPU를 이용하여, 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 스무디드 잉크 출력이 렌더링된다. 이는 블록 1522에서 나타내어진다.
이제 도 16으로 가면, 본 발명의 일 실시형태에 따라, 디지털 잉크 입력을 스무딩하고 렌더링하는 예시적인 방법(1600)을 도시하는 흐름도가 예시되어 있다. 블록 1610에서 나타낸 바와 같이, 제 1 잉크 포인트가 수신된다. 제 2 잉크 포인트가, 블록 1612에서 나타낸 바와 같이, 또한 수신된다. 블록 1614에서 나타낸 바와 같이, 액티브 삼차 베지에 근사가 제 1 및 제 2 잉크 포인트들에 기초하여 컴퓨팅된다. 제 3 잉크 포인트가, 블록 1616에서 나타낸 바와 같이, 수신된다. 블록 1618에서 나타낸 바와 같이, 제 3 잉크 포인트가 액티브 삼차 베지에 근사에 적절하게 맞는지의 여부가 그 다음에 결정된다. 블록 1620에서 나타낸 바와 같이, 새로운 삼차 베지에 근사가 제 1, 제 2 및 제 3 잉크 포인트들을 이용하여 컴퓨팅된다. 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 스무디드 잉크 출력이 그 다음에 렌더링된다. 이는 블록 1622에서 나타내어진다.
이해될 수 있는 바와 같이, 본 발명의 실시형태들은, 무엇보다도, 효율적인 실시간 잉크 스트로크 스무딩, 궤적 예측, 및 잉크 스트로크 입력의 GPU-활용 렌더링을 위한 시스템들, 방법들, 및 컴퓨터 판독가능 저장 매체들을 제공한다. 적어도 제 1 및 제 2 잉크 포인트들을 포함하는 복수의 잉크 포인트들이 수신된다. 제 1 및 제 2 잉크 포인트들에 기초하여, 액티브 베지에 근사가 컴퓨팅된다. 제 1 및 제 2 잉크 포인트들에 대해 시간 순차적으로, 제 3 잉크 포인트가 수신되고 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞는지의 여부가 결정된다. 제 3 잉크 포인트는, 렌더링 시 액티브 베지에 근사와의 차이를 사용자가 검출할 수 없을 것으로 결정된다면, 액티브 베지에 근사에 적절하게 맞는 것으로 결정된다. 이러한 결정은 미리 결정된 임계 차이 값에 일반적으로 기초한다. 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞다고 결정되면, 액티브 베지에 근사는 제 3 잉크 포인트를 포함하도록 업데이트된다. 그러나, 제 3 잉크 포인트가 액티브 베지에 근사에 적절하게 맞는 것은 아니라고 결정되면, 액티브 베지에 근사는 종료되고 새로운 베지에 근사가 컴퓨팅된다. 스트로크 수신 표면, 예를 들면, 터치-감응 디스플레이 스크린에 연관되는 제 1, 제 2 및 제 3 잉크 포인트들을 포함하는 스무디드 잉크 출력이 렌더링된다.
본 발명은 제한적인 것이 아니라 실례가 되는 모든 측면들에서 의도되는 특정 실시형태들에 관련하여 설명되었다. 대안적 실시형태들이 본 발명의 범위로부터 벗어나는 일 없이 본 발명이 관련되는 본 기술분야의 통상의 기술자들에게 명백하게 될 것이다.
본 발명이 다양한 수정들 및 대안적 구성들을 받아들일 수 있지만, 본원의 특정한 예시된 실시형태들이 도면들에서 도시되고 위에서 상세히 설명되었다. 그러나, 본 발명을 개시된 특정 형태들로 제한할 의도는 없고, 반면에, 그 의도는 본 발명의 범위 내에 속하는 모든 수정들, 대안적 구성들, 및 동등물들을 포괄하는 것이라는 것이 이해되어야 한다.
방법들(도 14의 1400, 도 15의 1500, 및 도 16의 1600)에 도시된 단계들의 순서는 본 발명의 범위를 임의의 방식으로 제한하려는 의도는 아니고, 사실상, 그 단계들은 본원의 실시형태들 내의 다양한 상이한 시퀀스들에서 일어날 수도 있다는 것이 본 기술분야의 통상의 기술자들에 의해 이해될 것이다. 임의의 및 모든 이러한 변형들과, 그것들의 임의의 조합은, 본 발명의 실시형태들의 범위 내에 있는 것으로 생각된다.

Claims (20)

  1. 적어도 하나의 프로세서를 포함하는 하나 이상의 컴퓨팅 디바이스에 의해 수행되고 있는, 스트로크(stroke) 수신 표면을 통해 수신되는 디지털 잉크 입력을 스무딩(smoothing)하는 방법에 있어서,
    복수의 잉크 포인트들을 수신하고 제1 잉크 포인트 세트를 확립하는 단계;
    상기 제1 잉크 포인트 세트에 기초하여 제1 다항식 근사(polynomial approximation)를 컴퓨팅하는 단계;
    상기 제1 잉크 포인트 세트에 관련하여 시간상 순차적으로 그리고 나중에, 제1 추가 잉크 포인트를 수신하는 단계;
    적어도 상기 제1 추가 잉크 포인트를 수신하는 것에 기초하여, 상기 제1 추가 잉크 포인트가 상기 제1 다항식 근사에 맞는지(fit) 여부를 동적으로 결정하는 단계;
    적어도 상기 제1 추가 잉크 포인트가 상기 제1 다항식 근사에 맞다는 결정에 기초하여:
    상기 제1 추가 잉크 포인트를 포함하도록 상기 제1 잉크 포인트 세트 및 상기 제1 다항식 근사를 업데이트하는 단계와;
    상기 업데이트된 제1 잉크 포인트 세트를 포함하는 제1 스무딩된 잉크 출력을 발생시키는 단계;
    적어도 상기 제1 추가 잉크 포인트가 상기 제1 다항식 근사에 맞지 않는다는 결정에 기초하여:
    상기 제1 잉크 포인트 세트를 종료하고 제2 잉크 포인트 세트를 확립하는 단계와;
    적어도 상기 제1 추가 잉크 포인트를 이용하는 제2 다항식 근사를 개시하는 단계; 및
    상기 스트로크 수신 표면과 연관된 디스플레이 상에, 상기 제1 스무딩된 잉크 출력을 렌더링하는 단계
    를 포함하는, 디지털 잉크 입력을 스무딩하는 방법.
  2. 청구항 1에 있어서,
    상기 제1 추가 잉크 포인트에 관련하여 시간상 순차적으로 그리고 나중에, 제2 추가 잉크 포인트를 수신하는 단계 및 상기 제2 추가 잉크 포인트가 상기 제1 다항식 근사 및 상기 제2 다항식 근사 중 하나에 맞는지 여부를 결정하는 단계를 더 포함하는, 디지털 잉크 입력을 스무딩하는 방법.
  3. 청구항 2에 있어서,
    상기 제2 추가 잉크 포인트를 포함하는 제2 스무딩된 잉크 출력을 발생시키고 렌더링하는 단계를 더 포함하는, 디지털 잉크 입력을 스무딩하는 방법.
  4. 청구항 1에 있어서,
    하나 이상의 의도된 커스프(cusp)가 존재하는지 여부를 결정하는 단계를 더 포함하며, 의도된 커스프가 검출되지 않을 때 C1 연속성(continuity)이 상기 제1 다항식 근사와 상기 제2 다항식 근사 사이에 보존되는 것인, 디지털 잉크 입력을 스무딩하는 방법.
  5. 청구항 1에 있어서,
    상기 제1 잉크 포인트 세트의 복수의 잉크 포인트들 및 상기 제1 추가 잉크 포인트는 그것들이 디지털화됨에 따라 순차적으로 수신되고, 상기 제1 다항식 근사는 입력 도구가 입력 데이터를 제공하는 것을 계속하는 동안 컴퓨팅되는 것인, 디지털 잉크 입력을 스무딩하는 방법.
  6. 청구항 1에 있어서,
    상기 제1 추가 잉크 포인트가 상기 제1 다항식 근사에 적절하게 맞는지 여부를 결정하는 단계는, 상기 제1 추가 잉크 포인트 바로 앞의 상기 제1 잉크 포인트 세트 내의 잉크 포인트에 의해 기술되는(described) 폴리라인과 상기 제1 다항식 근사 사이의 거리를 근사화하는 단계를 포함하는 것인, 디지털 잉크 입력을 스무딩하는 방법.
  7. 청구항 6에 있어서,
    상기 제1 추가 잉크 포인트 바로 앞의 상기 제1 잉크 포인트 세트 내의 잉크 포인트를 연결하는 상기 폴리라인과 상기 제1 다항식 근사 사이의 거리가 임계 값 이하인 경우, 상기 제1 추가 잉크 포인트가 상기 제1 다항식 근사에 적절하게 맞는다고 결정되는 것인, 디지털 잉크 입력을 스무딩하는 방법.
  8. 청구항 7에 있어서,
    상기 임계 값은, 상기 디지털 잉크가 렌더링되는 디스플레이의 해상도 및 상기 디지털 잉크가 렌더링되게 하는 변환 중 하나 또는 양쪽 모두에 적어도 부분적으로 기초하는 것인, 디지털 잉크 입력을 스무딩하는 방법.
  9. 청구항 1에 있어서,
    상기 제1 다항식 근사를 장래(future)로 확장함으로써 나중의 시점에 수신될 적어도 하나의 후속 잉크 포인트를 예측하는 단계를 더 포함하는, 디지털 잉크 입력을 스무딩하는 방법.
  10. 컴퓨팅 디바이스에 의해 실행될 때 컴퓨팅 디바이스로 하여금 방법을 수행하게 하는 컴퓨터 실행 가능 명령어를 포함하는 하나 이상의 컴퓨터 저장 매체에 있어서, 상기 방법은,
    적어도 제1 잉크 포인트 및 제2 잉크 포인트를 포함하는 복수의 잉크 포인트들을 순차적으로 수신하는 단계;
    적어도 상기 제1 및 제2 잉크 포인트에 기초하여 액티브 스무딩된 잉크 조각(fragment)을 발생시키는 단계;
    상기 제1 및 제2 잉크 포인트에 관련하여 시간상 순차적으로 그리고 나중에, 제3 잉크 포인트를 수신하는 단계;
    적어도 상기 제3 잉크 포인트를 수신하는 것에 기초하여, 상기 제3 잉크 포인트가 상기 액티브 스무딩된 잉크 조각에 적절하게 맞는지 여부를 동적으로 결정하는 단계;
    적어도 상기 제3 잉크 포인트가 상기 액티브 스무딩된 잉크 조각에 적절하게 맞는다고 결정하는 것에 기초하여, 상기 액티브 스무딩된 잉크 조각을 업데이트하고, 그렇지 않으면 상기 액티브 스무딩된 잉크 조각을 종료하며 제2 스무딩된 잉크 조각을 개시하는 단계; 및
    디스플레이 표면과 연관시켜 적어도 상기 제1, 제2 및 제3 잉크 포인트를 포함하는 스무딩된 잉크 출력을 렌더링하는 단계
    를 포함하는 방법을 수행하게 하는 컴퓨터 실행 가능 명령어를 포함하는 하나 이상의 컴퓨터 저장 매체.
  11. 청구항 10에 있어서, 상기 방법은 곡선을 적어도 상기 제1 및 제2 잉크 포인트에 맞춤으로써 상기 액티브 스무딩된 잉크 조각을 발생시키는 단계를 더 포함하는 것인, 컴퓨터 저장 매체.
  12. 청구항 10에 있어서, 상기 방법은 상기 제1, 제2 및 제3 잉크 포인트를 그것들이 디지털화됨에 따라 순차적으로 수신하는 단계를 더 포함하고, 상기 액티브 스무딩된 잉크 조각은 입력 도구가 연속적인 입력 데이터를 제공하는 것을 계속하는 동안 컴퓨팅되는 것인, 컴퓨터 저장 매체.
  13. 청구항 10에 있어서, 상기 방법은, 상기 제2 및 제3 잉크 포인트에 의해 기술되는 폴리라인과 상기 액티브 스무딩된 잉크 조각 사이의 거리를 근사화함으로써, 상기 제3 잉크 포인트가 상기 액티브 스무딩된 잉크 조각에 적절하게 맞는지 여부를 결정하는 단계를 더 포함하는 것인, 컴퓨터 저장 매체.
  14. 청구항 13에 있어서, 상기 제2 및 제3 잉크 포인트를 연결하는 상기 폴리라인과 상기 스무딩된 잉크 조각 사이의 거리가 임계 값 이하인 경우, 상기 제3 잉크 포인트가 상기 액티브 스무딩된 잉크 조각에 적절하게 맞는다고 결정되는 것인, 컴퓨터 저장 매체.
  15. 청구항 10에 있어서, 상기 방법은 상기 디스플레이 표면 상에 원형 도트 및 쿼드(quad)의 미리 발생된 테셀레이션(tessellation)을 부분적으로 포지셔닝함으로써 상기 스무딩된 잉크 출력을 렌더링하는 단계를 더 포함하는 것인, 컴퓨터 저장 매체.
  16. 청구항 10에 있어서, 상기 방법은 상기 스무딩된 잉크 출력을 렌더링하는 데에 얇은 특징 완화(thin feature mitigation)를 채용하는 단계를 더 포함하는 것인, 컴퓨터 저장 매체.
  17. 장치에 있어서,
    적어도 하나의 프로세서; 및
    디지털 잉크 스무딩 및 렌더링 루틴을 저장한 메모리를 포함하고,
    상기 디지털 잉크 스무딩 및 렌더링 루틴은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    제1 잉크 포인트를 수신하고;
    제2 잉크 포인트를 수신하고;
    적어도 상기 제1 및 제2 잉크 포인트에 기초하여 액티브 다항식 근사를 컴퓨팅하고;
    상기 제1 및 제2 잉크 포인트에 관련하여 시간상 순차적으로 그리고 나중에, 제3 잉크 포인트를 수신하고;
    적어도 상기 제3 잉크 포인트를 수신하는 것에 기초하여, 상기 제3 잉크 포인트가 상기 액티브 다항식 근사에 적절하게 맞는지 여부를 동적으로 결정하고;
    적어도 상기 제1, 제2 및 제3 잉크 포인트를 이용하는 새로운 다항식 근사를 컴퓨팅하고;
    디스플레이 표면과 연관시켜 적어도 상기 제1, 제2 및 제3 잉크 포인트를 포함하는 스무딩된 잉크 출력을 렌더링하도록 구성시키는 것인, 장치.
  18. 청구항 17에 있어서,
    적어도 상기 제3 잉크 포인트가 상기 액티브 다항식 근사에 적절하게 맞는다고 상기 장치가 결정하는 것에 기초하여, 상기 디지털 잉크 스무딩 및 렌더링 루틴은 상기 장치로 하여금, 상기 액티브 다항식 근사를 업데이트함으로써 새로운 다항식 근사를 컴퓨팅하도록 구성시키는 것인, 장치.
  19. 청구항 17에 있어서,
    적어도 상기 제3 잉크 포인트가 상기 액티브 다항식 근사에 적절하게 맞지 않는다고 상기 장치가 결정하는 것에 기초하여, 상기 디지털 잉크 스무딩 및 렌더링 루틴은 상기 장치로 하여금, 상기 액티브 다항식 근사를 종료하고 제2 다항식 근사를 개시함으로써 새로운 다항식 근사를 컴퓨팅하도록 구성시키는 것인, 장치.
  20. 청구항 17에 있어서, 렌더링을 위해 상기 스무딩된 잉크 출력을 래스터화(rasterize) 및 병합하도록 구성되는 그래픽 프로세싱 유닛을 더 포함하는, 장치.
KR1020227011163A 2014-09-15 2015-09-15 디지털 잉크의 스무딩 및 gpu-구동 렌더링 KR102450683B1 (ko)

Applications Claiming Priority (4)

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
KR1020177010313A KR102385256B1 (ko) 2014-09-15 2015-09-15 디지털 잉크의 스무딩 및 gpu-구동 렌더링
PCT/US2015/050097 WO2016044214A1 (en) 2014-09-15 2015-09-15 Smooothing and gpu-enabled rendering of digital ink

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177010313A Division KR102385256B1 (ko) 2014-09-15 2015-09-15 디지털 잉크의 스무딩 및 gpu-구동 렌더링

Publications (2)

Publication Number Publication Date
KR20220047671A KR20220047671A (ko) 2022-04-18
KR102450683B1 true KR102450683B1 (ko) 2022-10-04

Family

ID=54251732

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177010313A KR102385256B1 (ko) 2014-09-15 2015-09-15 디지털 잉크의 스무딩 및 gpu-구동 렌더링
KR1020227011163A KR102450683B1 (ko) 2014-09-15 2015-09-15 디지털 잉크의 스무딩 및 gpu-구동 렌더링

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177010313A KR102385256B1 (ko) 2014-09-15 2015-09-15 디지털 잉크의 스무딩 및 gpu-구동 렌더링

Country Status (10)

Country Link
US (2) US9508166B2 (ko)
EP (1) EP3195094B1 (ko)
JP (2) JP6553710B2 (ko)
KR (2) KR102385256B1 (ko)
CN (1) CN106687891B (ko)
AU (1) AU2015318093B2 (ko)
CA (1) CA2959665C (ko)
MX (1) MX370913B (ko)
RU (1) RU2701471C2 (ko)
WO (1) WO2016044214A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170236318A1 (en) * 2016-02-15 2017-08-17 Microsoft Technology Licensing, Llc Animated Digital Ink
US10235778B2 (en) * 2016-03-25 2019-03-19 Microsoft Technology Licensing, Llc GPU-accelerated pencil ink effect rendering
US10627910B2 (en) * 2017-02-21 2020-04-21 Adobe Inc. Stroke operation prediction for three-dimensional digital content
US10134158B2 (en) 2017-02-23 2018-11-20 Microsoft Technology Licensing, Llc Directional stamping
US10930045B2 (en) 2017-03-22 2021-02-23 Microsoft Technology Licensing, Llc Digital ink based visual components
US10147159B2 (en) 2017-04-07 2018-12-04 Microsoft Technology Licensing, Llc Ink render using high priority queues
US10657682B2 (en) 2017-04-12 2020-05-19 Adobe Inc. Drawing curves in space guided by 3-D objects
CN109544658B (zh) * 2017-09-21 2022-03-25 腾讯科技(深圳)有限公司 地图的渲染方法和装置、存储介质、电子装置
WO2019200581A1 (zh) * 2018-04-19 2019-10-24 深圳市汇顶科技股份有限公司 坐标平滑方法、触控芯片及电子终端
US10740966B2 (en) * 2018-05-14 2020-08-11 Microsoft Technology Licensing, Llc Fake thickness on a two-dimensional object
CN109408161A (zh) * 2018-08-22 2019-03-01 安徽慧视金瞳科技有限公司 一种模拟毛笔笔触的绘制算法
TWI774019B (zh) 2020-07-13 2022-08-11 元太科技工業股份有限公司 電子紙顯示裝置及電子紙顯示面板的驅動方法
US20230045646A1 (en) * 2021-06-25 2023-02-09 Tata Consultancy Services Limited SYMBOL RECOGNITION FROM RASTER IMAGES OF P&IDs USING A SINGLE INSTANCE PER SYMBOL CLASS
JP7098799B1 (ja) * 2021-07-08 2022-07-11 レノボ・シンガポール・プライベート・リミテッド 情報処理装置、情報処理システム、及び制御方法
TWI817840B (zh) * 2022-11-23 2023-10-01 大陸商北京集創北方科技股份有限公司 觸摸軌跡優化方法、觸控裝置及資訊處理裝置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030123745A1 (en) 2001-12-28 2003-07-03 Mattias Bryborn Method and apparatus for compression and reconstruction of electronic handwriting
US20030235336A1 (en) 2002-06-24 2003-12-25 Microsoft Corporation Method & apparatus for scale independent cusp detection
JP2006085695A (ja) 2004-09-03 2006-03-30 Microsoft Corp フリーフォームデジタルインク注釈認識

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367617A (en) 1992-07-02 1994-11-22 Microsoft Corporation System and method of hybrid forward differencing to render Bezier splines
US6101280A (en) 1994-07-04 2000-08-08 Hewlett-Packard Company Method and apparatus for compression of electronic ink
US5694535A (en) * 1995-03-24 1997-12-02 Novell, Inc. Direct interactive, constant-time curve apparatus and method
US6278445B1 (en) * 1995-08-31 2001-08-21 Canon Kabushiki Kaisha Coordinate input device and method having first and second sampling devices which sample input data at staggered intervals
US5897213A (en) * 1997-11-21 1999-04-27 Bayside Controls, Inc. Slide assembly for preloading roller bearings
US6850228B1 (en) 1999-10-29 2005-02-01 Microsoft Corporation Universal file format for digital rich ink data
US6707473B2 (en) 2001-08-01 2004-03-16 Microsoft Corporation Dynamic rendering of ink strokes with transparency
US6909430B2 (en) * 2001-08-01 2005-06-21 Microsoft Corporation Rendering ink strokes of variable width and angle
US7274831B2 (en) * 2003-04-03 2007-09-25 Microsoft Corporation High quality anti-aliasing
GB2406028A (en) * 2003-09-11 2005-03-16 Autodesk Canada Inc Tangent handle adjustment for Bezier curves
US7551187B2 (en) * 2004-02-10 2009-06-23 Microsoft Corporation Systems and methods that utilize a dynamic digital zooming interface in connection with digital inking
US7284192B2 (en) 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents
EP2488930B1 (en) 2009-10-15 2017-12-06 SMART Technologies ULC Method and apparatus for drawing and erasing calligraphic ink objects on a display surface
KR101126167B1 (ko) * 2010-06-07 2012-03-22 삼성전자주식회사 터치 스크린 및 디스플레이 방법
US20120050293A1 (en) * 2010-08-25 2012-03-01 Apple, Inc. Dynamically smoothing a curve
EP2649795A1 (en) 2010-12-06 2013-10-16 SMART Technologies ULC Annotation method and system for conferencing
WO2013104053A1 (en) 2012-01-11 2013-07-18 Smart Technologies Ulc Method of displaying input during a collaboration session and interactive board employing same
AU2012202651A1 (en) * 2012-05-04 2013-11-21 Canon Kabushiki Kaisha A method for stroking paths
TWI486837B (zh) * 2012-09-18 2015-06-01 Egalax Empia Technology Inc 基於預測的位置追蹤方法
EP2904484A4 (en) 2012-10-05 2016-06-01 Tactual Labs Co HYBRID SYSTEMS AND METHODS FOR THE PROCESSING AND FEEDBACK OF LOW-LATENCY USER ENTRY
CN102937848B (zh) * 2012-12-04 2015-07-22 上海合合信息科技发展有限公司 对手写笔迹进行编辑处理的方法及电子设备
WO2015159154A2 (en) * 2014-04-16 2015-10-22 Societe Bic Systems and methods for displaying free-form drawing on a contact sensitive display

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030123745A1 (en) 2001-12-28 2003-07-03 Mattias Bryborn Method and apparatus for compression and reconstruction of electronic handwriting
US20030235336A1 (en) 2002-06-24 2003-12-25 Microsoft Corporation Method & apparatus for scale independent cusp detection
JP2006085695A (ja) 2004-09-03 2006-03-30 Microsoft Corp フリーフォームデジタルインク注釈認識

Also Published As

Publication number Publication date
JP2019204522A (ja) 2019-11-28
RU2017108212A (ru) 2018-09-14
CN106687891B (zh) 2019-12-03
MX370913B (es) 2020-01-09
WO2016044214A1 (en) 2016-03-24
CA2959665A1 (en) 2016-03-24
JP2017528812A (ja) 2017-09-28
AU2015318093A1 (en) 2017-03-16
KR20220047671A (ko) 2022-04-18
CN106687891A (zh) 2017-05-17
KR20170054519A (ko) 2017-05-17
RU2017108212A3 (ko) 2019-04-23
RU2701471C2 (ru) 2019-09-26
KR102385256B1 (ko) 2022-04-08
BR112017003480A2 (pt) 2017-12-12
JP6918053B2 (ja) 2021-08-11
US9508166B2 (en) 2016-11-29
US20160078649A1 (en) 2016-03-17
EP3195094A1 (en) 2017-07-26
US9697625B2 (en) 2017-07-04
US20160358348A1 (en) 2016-12-08
CA2959665C (en) 2022-10-04
JP6553710B2 (ja) 2019-07-31
EP3195094B1 (en) 2018-07-25
AU2015318093B2 (en) 2020-06-04
MX2017003419A (es) 2017-06-19

Similar Documents

Publication Publication Date Title
KR102450683B1 (ko) 디지털 잉크의 스무딩 및 gpu-구동 렌더링
US10719168B2 (en) Wet ink predictor
US9207858B2 (en) Method and apparatus for drawing and erasing calligraphic ink objects on a display surface
JP6869249B2 (ja) 2つのタイプのインクベクトルデータを生成して選択的に出力する方法及びシステム
US10347052B2 (en) Color-based geometric feature enhancement for 3D models
WO2017165333A1 (en) Gpu-accelerated pencil ink effect rendering
US9959672B2 (en) Color-based dynamic sub-division to generate 3D mesh
US10297036B2 (en) Recording medium, information processing apparatus, and depth definition method
AU2019200269B2 (en) An interactive user interface and its corresponding engine for improving image completion quality
CN113421335B (zh) 图像处理方法、图像处理装置、电子设备和存储介质
US8605112B2 (en) Graphics drawing apparatus, method, and program and recording medium on which the program is recorded
US10586311B2 (en) Patch validity test
JP7276978B2 (ja) 画像処理装置、画像処理方法、及びプログラム
US20120223949A1 (en) Systems and methods for interactive vectorization
BR112017003480B1 (pt) Método para suavização e renderização de tinta digital
JP7294702B2 (ja) 画像処理装置、画像処理方法、及びプログラム
US9761043B1 (en) Non-multisampled anti-aliasing for clipping paths

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant