KR20140147095A - 인스턴스화가능한 제스처 객체 - Google Patents

인스턴스화가능한 제스처 객체 Download PDF

Info

Publication number
KR20140147095A
KR20140147095A KR1020147027633A KR20147027633A KR20140147095A KR 20140147095 A KR20140147095 A KR 20140147095A KR 1020147027633 A KR1020147027633 A KR 1020147027633A KR 20147027633 A KR20147027633 A KR 20147027633A KR 20140147095 A KR20140147095 A KR 20140147095A
Authority
KR
South Korea
Prior art keywords
gesture
application
input
computing device
recognizer
Prior art date
Application number
KR1020147027633A
Other languages
English (en)
Other versions
KR102108583B1 (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 KR20140147095A publication Critical patent/KR20140147095A/ko
Application granted granted Critical
Publication of KR102108583B1 publication Critical patent/KR102108583B1/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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
    • 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/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/0035User-machine interface; Control console
    • H04N1/00405Output means
    • H04N1/00408Display of information to the user, e.g. menus
    • H04N1/00411Display of information to the user, e.g. menus the display also being used for user input, e.g. touch screen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

스크립트 기반 인식 인터페이스를 사용하여 고유 제스처 기능이 애플리케이션에 추상화되는 구체적인 제스처 객체 기법이 설명된다. 제스처 객체는 동적 스크립트 언어를 사용하여 프로그램된 애플리케이션의 지시에 따라 다른 상호작용 콘텍스트에 대해 인스턴스화 될 수 있다. 제스처 객체는 제스처 인식 및 대응하는 인식된 제스처가 적용될 수 있는 콘텐트의 타깃 요소를 고려하기 위해 특정한 터치 접촉 및/또는 다른 입력을 지정하도록 구성된다. 생성 후에, 제스처 객체는 고유 제스처 시스템을 이용하는 인식기(recognizer)를 생성하고, 처리를 위한 입력 데이터를 공급하고, 원 제스처 데이터를 애플리케이션 및/또는 타깃 요소에 적합한 포맷으로 변환하는 것을 포함하는 제스처 처리 동작을 애플리케이션을 대신하여 관리한다. 따라서, 스크립트 기반 애플리케이션은 제스처 객체를 사용하여 제스처 인식과 연관된 처리 작업 부담을 덜고(offload) 고유 제스처 기능을 이용할 수 있다.

Description

인스턴스화가능한 제스처 객체{INSTANTIABLE GESTURE OBJECTS}
사용자가 콘텐츠와 상호작용하는 방식으로서 컴퓨팅 장치에 의해 지원되는 제스처(gestures)의 수 및 유형이 점차 증가하고 있다. 사용자는 지원되는 제스처가 사용자 경험 전체에서 다양한 다른 애플리케이션 및 콘텐트 상호작용을 위해 이용가능할 수 있게 되기를 기대할 수 있다. 통상적으로, 그러나 고유하게 지원되는 제스처 기능은 복잡한 구성을 요구할 수 있고, 이는 일부 개발자가 제스처를 자신의 애플리케이션에 결합하는 것을 어렵게 하거나 비용적으로 불가능하게 할 수 있다. 또한, 기존 시스템의 고유 제스처 기능은 "모던" 애플리케이션 및/또는 자바스크립트와 HTML과 같은 동적 스크립트 언어를 이용하는 콘텐트에 대해 제한되거나 전적으로 이용가능하지 않을 수 있다.
스크립트 기반 인식 인터페이스를 사용하여 고유 제스처 기능을 애플리케이션에 추상화하는 구체적인 제스처 객체 기법이 설명된다. 제스처 객체는 동적 스크립트 언어를 사용하여 프로그램된 애플리케이션의 지시에 따라 서로 다른 상호작용 콘텍스트에 대해 인스턴스화 될 수 있다. 제스처 객체는 제스처 인식 및 대응하는 인식된 제스처가 적용될 수 있는 콘텐트의 타깃 요소(target element)를 고려하기 위해 특정한 터치 접촉 및/또는 다른 입력을 지정하도록 구성된다. 생성 후에, 제스처 객체는 제스처 처리 동작을 애플리케이션을 대신하여 관리하며, 제스처 프로세싱 동작은 고유 제스처 시스템을 이용하는 인식기(recognizer)를 생성하고, 프로세싱을 위해 입력 데이터를 공급하고, 원 제스처 데이터를 애플리케이션 및/또는 타깃 요소에 적합한 포맷으로 변환하는 것을 포함한다. 따라서, 스크립트 기반 애플리케이션은 제스처 객체를 사용하여 제스처 인식과 연관된 프로세싱 작업 부담을 덜고(offload) 고유 제스처 기능을 이용할 수 있다.
본 요약은 후속하는 발명의 상세한 설명에서 설명될 개념들을 선택하여 간략한 형식으로 소개하기 위한 것이다. 본 요약은 특허청구범위의 청구 대상의 중심 특징이나 핵심 특징을 밝히고자 함이 아니며, 특허청구범위의 청구 대상의 범위를 결정하는 것을 도우려는 것도 아니다.
첨부된 도면을 참조하여 상세한 설명이 기술된다. 도면에서, 참조번호의 가장 좌측의 숫자(들)는 그 참조번호가 처음 등장한 도면을 나타낸다. 상세한 설명 및 도면의 다른 예에서 동일한 참조번호를 사용하는 것은 유사하거나 동일한 아이템을 나타낼 수 있다.
도 1은 본 명세서에 기술된 인스턴스화가능한 제스처 객체 기법을 사용하도록 동작가능한 예시적인 환경을 나타내는 도면이다.
도 2는 하나 이상의 실시예에 따라 예시적인 제스처 객체의 세부사항을 나타내는 시나리오를 나타낸다.
도 3은 복수의 제스처 객체가 제스처 인식을 위해 사용되는 예시적인 시나리오를 나타낸다.
도 4는 하나 이상의 실시예에 따라 제스처 객체를 인스턴스화하는 예시적인 절차를 나타내는 흐름도이다.
도 5는 하나 이상의 실시예에 따라 애플리케이션이 제스처 인식을 등록하는 다른 예시적인 절차를 나타내는 흐름도이다.
도 5은 본 명세서에 설명된 기법의 여러 측면을 구현하는 하나 이상의 실시예에서 사용될 수 있는 예시적인 시스템의 다양한 컴포넌트를 나타낸다.
개관
통상적으로, 플랫폼에 의해 제공되는 고유하게 지원되는 제스처 기능은 일부 개발자가 자신의 애플리케이션에 제스처를 삽입하는 것을 어렵게 하거나 비용적으로 불가능하게 하는 복잡한 구성을 요구할 수 있다. 추가로, 기존 플랫폼의 고유 제스처 기능이 자바스크립트 및 HTML과 같은 동적 스크립트 언어를 사용하는 애플리케이션에 대해 이용가능하지 않을 수 있다.
스크립트 기반 인식 인터페이스를 사용하여 고유 제스처 기능을 애플리케이션에 추상화하는 구체적인 제스처 객체 기법이 설명된다. 제스처 객체는 동적 스크립트 언어를 사용하여 프로그램되는 애플리케이션의 지시에 따라 서로 다른 상호작용 콘텍스트에 대해 인스턴스화될 수 있다. 제스처 객체는 제스처 인식 및 대응하는 인식된 제스처가 적용될 수 있는 콘텐트의 타깃 요소를 고려하기 위해 특정한 터치 접촉 및/또는 다른 입력을 지정하도록 구성될 수 있다. 제스처 객체는 생성 후에, 고유 제스처 시스템을 이용하는 인식기(recognizer)를 생성하고 프로세싱을 위한 입력 데이터를 공급하며 원 제스처 데이터를 애플리케이션 및/또는 타깃 요소에 적합한 포맷으로 변환하는 것을 포함하는 제스처 프로세싱 동작을 애플리케이션을 대신하여 관리한다. 따라서, 스크립트 기반 애플리케이션은 제스처 객체를 사용하여 제스처 인식과 연관된 프로세싱 작업 부담을 덜고(offload) 고유 제스처 기능을 이용할 수 있다.
다음의 논의에서, 본 명세서에 설명된 인스턴스화가능한 제스처 객체를 이용하도록 동작가능한 예시적인 환경이 먼저 설명된다. 예시적인 환경 및 다른 환경에서 사용될 수 있는 예시적인 시나리오 및 절차가 이후에 설명된다. 따라서, 예시적인 시나리오 및 절차는 예시적인 환경에 제한되지 않으며, 예시적인 환경은 본 명세서에 설명된 예에 추가하여 시나리오 및 절차를 포함시킬 수 있다. 마지막으로, 하나 이상의 실시예에서 인스턴스화가능한 제스처 객체 기법을 구현하기 위해 이용될 수 있는 예시적인 컴퓨팅 시스템이 설명된다.
동작 환경
도 1은 본 명세서에 설명된 기법을 이용하도록 동작가능한 예시적인 구현예의 환경(100)을 나타내는 도면이다. 도시된 환경(100)은 네트워크(106)를 통해 통신가능하게 연결된 컴퓨팅 장치(102) 및 웹 서비스(104)를 포함한다. 컴퓨팅 장치(102) 및 웹 서비스(104)는 각각 광범위한 컴퓨팅 장치에 의해 구현될 수 있다.
예를 들어, 컴퓨팅 장치(102)는 데스크톱 컴퓨터, 모바일 스테이션, 엔터테인먼트 기기, 태블릿 또는 슬레이트 장치, 서피스 컴퓨팅 장치, 디스플레이 장치에 통신가능하게 연결된 셋톱 박스, 모바일 통신 장치(예, 무선 전화), 게임 콘솔 등과 같은 네트워크(106)를 통해 통신할 수 있는 컴퓨터로서 구성될 수 있다. 컴퓨팅 장치(102)는 다양한 프로세싱 시스템을 이용하는 임의의 적합한 컴퓨팅 시스템 및/또는 장치로서 구성될 수 있고, 이들의 일부 추가적인 예는 도 6의 예시적인 시스템과 관련하여 논의된다.
컴퓨팅 장치(102)는 운영체제(108)를 포함하는 것으로 추가로 설명된다. 일반적으로, 운영체제(108)는 컴퓨팅 장치(102) 상에서 실행가능한 애플리케이션(110)에 컴퓨팅 장치(102)의 기본 기능을 추상화하도록 구성된다. 예를 들어, 운영체제(108)는 컴퓨팅 장치(102)의 프로세싱, 메모리, 네트워크 및/또는 디스플레이 기능을 추상화하여 이러한 기본 기능이 "어떻게" 구현되는지를 알지 못하더라도 애플리케이션(110)이 작성될 수 있도록 한다. 예를 들어, 애플리케이션(110)은 렌더링이 어떻게 수행될 것인 이해하지 못하여도 운영체제(108)로 데이터를 제공하여 디스플레이 장치에 의해 렌더링되고 디스플레이되게 할 수 있다. 운영체제(108)는 시스템 특징을 이용하기 위해 애플리케이션(110)이 호출할 수 있는 다양한 서비스, 인터페이스 및 기능을 제공할 수 있다. 광범위한 기능을 컴퓨팅 장치(102)에 제공하는 다양한 애플리케이션(100)이 고려되며, 그 몇몇 예로서, 웹 페이지 및/또는 다른 콘텐트를 액세스하고 렌더링하는 브라우저, 오피스 생산성 애플리케이션, 이메일 클라이언트, 게임, 멀티 미디어 관리 프로그램, 장치 관리 소프트웨어 및 소셜 네트워킹 애플리케이션을 들 수 있지만 이에 한정되는 것은 아니다.
운영체제(108)는 다른 종류의 애플리케이션(정적으로 컴파일되는 언어(예, C++, C#)를 사용하여 작성될 수 있는 "레거시(legacy)" 애플리케이션 및 자바스크립트, 하이퍼텍스트 마크업 언어 개정 5 및 캐스케이딩 스타일 시트(HTML5/CSS) 및 확장성 애플리케이션 마크업 언어(XAML)와 같이 런타임 시에 동적으로 컴파일될 수 있는 동적 스크립트 언어를 사용하여 작성될 수 있는 "모던" 애플리케이션을 포함함)을 위한 서비스, 인터페이스 및 기능을 추가로 제공할 수 있다. 모던 애플리케이션은 대응하는 애플리케이션에 대해 개별적인 실행 환경을 제공하도록 구성되는 운영체제(108)에 의해 지원되는 하나 이상의 런타임 플랫폼을 통해 동작할 수 있다. 런타임 플랫폼은 호환가능한 애플리케이션에 대해 특징, 루틴 및 함수의 공통 세트를 제공하고 이로써 애플리케이션 개발에서 공통 작업에 대한 코딩을 배제한다. 따라서, 런타임 플랫폼은 다시 컴파일하지 않고 및/또는 애플리케이션에 대한 동적 스크립트에 대한 변경을 거의 또는 전혀 하지 않고, 다른 종류의 시스템에 대한 애플리케이션의 이식성(portability)을 용이하게 할 수 있다. 런타임 플랫폼의 예로는, JAVATM 런타임 환경(JRE), AdobeTM FlashTM, MicrosoftTM . NET 프레임워크, Microsoft SilverlightTM 및 WinRTTM을 들 수 있다.
도시된 예에서, 컴퓨팅 장치(102)는 터치스크린 및 제스처 기능을 인에이블시키는 터치스크린/터치 디지타이저를 포함하도록 구성될 수 있는 디스플레이 장치(112)를 포함하거나 사용한다. 따라서, 컴퓨팅 장치(102)는 디스플레이 드라이버, 제스처 모듈(114) 및/또는 디스플레이 장치(112)의 터치 기능을 통해 이용가능한 터치스크린 및 제스처 기능을 제공하도록 동작가능한 다른 모듈을 포함할 수 있다. 결과적으로, 컴퓨팅 장치는 대응하는 동작이 수행되게 하는 입력 및 제스처를 인식하도록 구성될 수 있다.
예를 들어, 제스처 모듈(114)은 도 1에 나타낸 운영체제(108)의 컴포넌트로서 구현될 수 있다. 제스처 모듈(114)은 운영체제(108)를 통해 애플리케이션(110)에 액세스가능하게 될 수 있는 제스처의 지원 및 인식을 위한 네이티브 기능(예, 네이티브 제스처 시스템)을 제시한다. 예를 들어, 운영체제(108)는 제스처 인식 기능을 호출하도록 동작가능한 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 구체적으로, 제스처 모듈(114)은 터치 입력(예, 터치스크린 기능을 사용하여 컴퓨팅 장치(102)의 디스플레이 장치(112) 상의 또는 근접한 사용자의 손의 손가락과 같은 터치 입력)을 인식하도록 구성될 수 있다. 제한이 아닌 예시로서 단일 형태의 입력으로부터 인식되는 제스처(예, 터치 제스처) 및 복수 형태의 입력과 관계되는 제스처를 포함하는 다양한 다른 유형의 제스처가 컴퓨팅 장치에 의해 인식될 수 있다. 예를 들어, 하나의 손가락 제스처와 베젤(bezel) 제스처, 복수의 손가락/동일한 손 제스처와 베젤 제스처, 및/또는 복수의 손가락/다른 손 제스처와 베젤 제스처를 인식하는 것이 사용될 수 있다. 또한, 제스처 모듈(114)은 제스처, 터치 입력, 카메라 기반 입력, 스타일러스 입력 및 다른 상이한 유형의 입력을 검출하고 이들을 차별화하도록 구성될 수 있다. 또한, 다른 소스(터치스크린, 마우스, 터치패드, 카메라, 소프트웨어 또는 하드웨어 키보드, 및/또는 장치(예, 입력 장치)의 하드웨어 키)로부터 획득된 다양한 종류의 입력이 대응하는 장치 동작을 발생시키도록 조합되어 사용될 수 있다.
컴퓨팅 장치(102)는 추가로 렌더링 엔진(116)을 포함하는 것으로 도시된다. 렌더링 엔진(116)은 콘텐트의 디스플레이를 위한 다양한 콘텐트 렌더링 동작을 처리하도록 동작가능한 컴퓨팅 장치(102)의 컴포넌트를 나타낸다. 예를 들어, 렌더링 엔진(116)은 대응하는 마크 업 언어 콘텐트를 처리하고 디스플레이 장치(112) 상의 디스플레이를 위한 포맷화된 콘텐트를 출력할 수 있다. 적어도 일부 실시예에서, 렌더링 엔진(116)은 웹페이지 및, 웹 서비스(104)로부터 네트워크(106)를 통해 획득될 수 있는 다른 자원(118)의 렌더링을 용이하게 하는 브라우저의 컴포넌트로서 구성된다. 자원(118)은 하나 이상의 서비스 제공자에 의해 네트워크 상에서 일반적으로 이용가능하게 되는 콘텐트 및/또는 서비스의 임의의 적합한 조합을 포함할 수 있다. 렌더링 엔진(116)은 또한 단독 애플리케이션 또는 운영체제 컴포넌트로서 구현될 수 있다. 컴퓨팅 장치의 브라우저 및 다른 애플리케이션(110)이 애플리케이션에 대응하는 콘텐트 아이템의 렌더링을 처리하도록 렌더링 엔진(116)을 호출할 수 있다. 예를 들어, 동적 스크립트 언어를 사용할 수 있는 다양한 종류의 "모던" 애플리케이션이 대응하는 페이지, 문서, 미디어, 이미지, 폼, 사용자 인터페이스 및/또는 다른 유형의 애플리케이션 콘텐트의 처리 및 디스플레이를 위해 렌더링 엔진(116)의 기능을 사용할 수 있다.
인스턴스화가능한 제스처 객체 기법을 구현하기 위해, 렌더링 엔진(116)은 인식 인터페이스(120)를 포함하거나 그렇지 않으면 이를 이용하도록 구성될 수 있다. 인식 인터페이스(120)는 제스처 모듈(114)에 의해 제시되는 제스처의 지원 및 인식을 위한 고유 기능과의 상호작용을 가능하게 하기 위해 렌더링 엔진(116)을 통해 애플리케이션(110)에 노출될 수 있는 기능을 나타낸다. 일반적으로, 제스처 모듈(114)을 통한 제스처의 직접적인 구성(configuration)은 복잡하고 자원 집약적일 수 있다. 또한, 기존 시스템의 고유 제스처 기능이 동적 스크립트 언어를 사용하는 "모던" 애플리케이션에 대해 제한적이거나 완전히 이용가능하지 않을 수 있다. 따라서, 고유 제스처 기능을 이용하는 애플리케이션을 생성하기 위해, 애플리케이션 개발자는 통상적으로 제스처 모듈(114)을 통해 제공되는 복합 구성 관리 옵션에 대한 세부화된 지식을 유지하거나, 애플리케이션 코드로부터 직접 기능을 호출하도록 복합적인 및/또는 정적인 프로그래밍을 수행해야 할 수 있다. 본 명세서에 상세하게 설명된 바와 같이, 인식 인터페이스(120)는 애플리케이션을 대신하여 다양한 제스처 구성, 처리 및 프로세싱 동작을 수행함으로써 애플리케이션 개발을 단순화 할 수 있다. 따라서, 인식 인터페이스(120)는 애플리케이션으로부터 제스처 인식을 위한 다양한 프로세싱 및 처리 동작을 분담(offload)할 수 있고, 이는 애플리케이션 개발자가 이러한 동작에 대한 코드를 기록해야 하고 또는 제스처 구성 옵션에 대한 세부화된 지식을 가져야하는 부담을 덜어준다.
하나의 접근법에서, 애플리케이션(110)은 인식 인터페이스(120)를 호출하여 다양한 상호작용에 대한 제스처 객체(122)를 인스턴스화할 수 있다. 제스처 객체(122)는 이후에 애플리케이션을 대신하여 제스처 모듈(114)을 통해 제스처 인식 동작을 자동으로 처리한다. 예를 들어, 제스처 객체(122)는 다른 상호작용에 대해 적합한 인식기(124)를 생성하고 제스처 프로세싱을 위해 인식기(124)로 입력 데이터를 공급하기 위해 애플리케이션을 대신하여 제스처 모듈(114)과 통신하도록 구성될 수 있다. 제스처 객체(122)는 일반적으로 기본 인식기 및 고유 제스처 기능의 조작을 위한 스크립트 기반 표현 및 이를 위한 인터페이스이다. 제스처 객체(122) 및 대응하는 인식기(124)는 각각의 특정한 상호작용 콘텍스트에 대해 생성될 수 있다. 본 명세서에 사용된 상호작용 콘텍스트는 제스처 인식을 위해 제스처 모듈(114)에 의해 추적되는 특정한 입력 또는 입력 그룹(예, 터치 콘택트, 스타일러스 입력, 포인터 입력, 카메라 입력 등)을 나타낸다.
인식기(124)는 서로 다른 상호작용 콘텍스트에 대한 입력을 추적하고, 입력을 지원되는 제스처의 라이브러리에 매핑하며, 특정한 제스처가 발생하는 경우를 검출하고, 제스처 인식을 위한 적합한 이벤트를 발사(fire)하도록 구성되는, 고유 제스처 시스템을 위해 생성된 컴포넌트/객체이다. 따라서, 인식기(124)는 서로 다른 콘텍스트의 제스처 인식을 위한 시스템 레벨에서의 프로세싱을 처리하는 기능을 나타낸다. 인식기(124)는 지정된 시스템 포맷 및 프로토콜을 사용하여 입력 세트에 대한 고유 제스처 기능을 어떻게 호출하는지를 이해한다. 인식기(124)는 다양한 지원되는 제스처(이들의 예는 탭(tap), 홀드(hold), 회전(rotate), 스케일(scale), 줌(zoom), 팬(pan) 및 병진(translate) 제스처를 포함하나 이에 한정되는 것은 아님)를 검출하도록 구성될 수 있다.
제스처 객체(122)는 애플리케이션을 대신하여 인식기(124)에 의해 생성되는 원 제스처 이벤트의 프로세싱을 용이하게 한다. 제스처 객체(122)는 인식기에 의해 사용되는 시스템 포맷과 동적 스크립트 언어를 사용하여 프로그램되는 애플리케이션이 이해할 수 있는 스크립트 기반 포맷 간의 정보의 번역(translation)을 용이하게 할 수 있다. 이것은, 인식기에 의해 발사되는 이벤트를 검출하는 것, 특정한 애플리케이션에 대한 제스처 정보/이벤트를 포맷하는 것, 원 제스처 데이터를 애플리케이션 및/또는 상호작용 콘텍스트/제스처와 연관된 요소의 좌표 공간으로 변환하는 것 등을 포함할 수 있으며, 이들에 대한 세부사항은 다음의 논의에서 찾아볼 수 있다.
예시적인 동작 환경을 설명하였으나, 지금부터는 하나 이상의 실시예에서 인스턴스화가능한 제스처 객체에 관한 일부 예시적인 구현 세부사항에 대한 논의를 고려한다.
인스턴스화가능한 제스처 객체 세부사항
추가 설명을 위해, 이제부터 도 2를 참조하며, 도 2에는 애플리케이션(110) 을 대신하여 제스처 인식을 처리하기 위해 인식 인터페이스(120)가 호출되어 제스처 객체(122)를 인스턴스화는 예시적인 시나리오가 200에 포괄적으로 도시된다. 렌더링 엔진(116)(또는 그 외의 것)에 의해 애플리케이션을 위해 렌더링되는 콘텐트가 대응하는 콘텐트 모델(202)에 따라 표현될 수 있다. 콘텐트 모델(202)은 문서, 페이지 또는 다른 애플리케이션 콘텐트의 구조의 계층적 표현이다. 콘텐트 모델은 콘텐트를 소비하는 애플리케이션이 콘텐트에 포함된 다양한 요소(204)를 참조하고 조작하는 것을 가능하게 한다. 요소(204)는 예를 들면, 콘텐트에 포함된 이미지, 콘트롤, 텍스트, 메뉴, 그래픽 등을 포함할 수 있다. 하나의 특정한 예에서, 문서 객체 모델(DOM:document object model)이 애플리케이션에 의해 사용될 수 있다. DOM은 브라우저(또는 다른 애플리케이션)를 위한 페이지의 요소를 표현하고 이와 상호작용하기 위한 표준 컨벤션(convention)이다. 페이지의 DOM은 브라우저에 의해 구축될 수 있고 웹 페이지에 포함된 요소(204)를 참조, 수정, 효과적용 및/또는 기타 다르게 조작하는 데 사용될 수 있다. 또한, 다른 애플리케이션에 대한 콘텐트도 대응하는 페이지, 파일 및/또는 문서의 요소(204)를 나타내도록 DOM에 따라 구성될 수 있다. 또한, 다른 종류의 콘텐트 모델(202)이 하나 이상의 실시예에 사용될 수 있다.
도 2에 나타낸 것과 같이, 애플리케이션은 인식 인터페이스(120)와 상호작용하여 하나 이상의 상호작용 콘텍스트에 대해 제스처 객체(122)를 생성하라고 인식 인터페이스(120)에 지시할 수 있다. 이어서, 제스처 객체(122)는 컴퓨팅 장치(102)의 고유 제스처 기능과 연관된 대응하는 인식기(124)를 생성하고 래핑(warp)하도록 동작한다. 인식기 및/또는 제스처 모듈(114)을 통해 수행되는 프로세싱에 기초하여 제스처 객체는 입력 데이터를 래핑된 인식기로 공급하고 원 제스처 인식 데이터/이벤트를 다시 인식기로부터 수신한다. 또한, 제스처 객체(122)는 대응하는 콘텐트 모델(202)에 기초하여 특정한 요소(204)에 매핑될 수 있다. 이러한 방식으로, 애플리케이션은 제스처 객체에 대한 제스처 프로세싱의 결과가 적용될 요소를 명시적으로 특정할 수 있다. 또한, 애플리케이션은 별개의 아이템의 콜렉션을 제스처 애플리케이션의 목적을 위한 요소로서 특정할 수 있다. 이는 제스처가 적용되는 요소가 개별적인 아이템에 대한 히트 테스팅(hit testing) 또는 다른 비슷한 선택 기법을 사용하여 휴리스틱 방식으로 추론되는 전통적인 기법과 대조된다.
제스처 객체
구체적으로, 제스처 객체(122)는 상호작용 입력(206), 타깃 요소(208) 및 지정된 상호작용 콘텍스트에 대한 객체를 생성하기 위해 애플리케이션에 의해 설정될 수 있는 맞춤형 속성(210, custom properties)을 포함하는 것으로 도 2에 도시된다. 상호작용 입력(206)(포인터라고도 지칭됨)은 터치 접촉, 포인터 위치/이동, 스타일러스 입력, 마우스 입력 및/또는 상호작용 콘텍스트에 대해 추적되는 다른 입력 등의 입력이다. 제스처 객체(122)는 하나 이상의 개별적인 입력/접촉(예, 포인터)를 포함하도록 구성될 수 있다. 제스처 객체는 동일한 입력원으로부터의 동일한 유형의 복수의 포인터 및/또는 서로 다른 입력원으로부터의 서로 다른 유형의 포인터의 조합을 포함할 수 있다. 제스처 객체(122)에 입력/접촉을 포함시키는 것은 이러한 입력/접촉이 제스처 검출을 위해 고려되도록 한다. 타깃 요소(208)는 제스처 객체(122)가 매핑되는 콘텐트 모델(202) 내의 요소를 나타낸다. 예를 들어, 콘텐트의 DOM 표현 내의 요소는 제스처 객체에 대한 타깃으로서 특정될 수 있다. 개별적인 요소는 사용자 인터페이스, 페이지 또는 렌더링되고 있는 문서의 하나 이상의 개별적인 컴포넌트/아이템을 포함하도록 정의될 수 있다. 제스처 객체(122)에 대해 타깃 요소(208)를 지정하는 것은 제스처 객체(122)에 관해 생성된 제스처 이벤트가 명시적으로 지정된 요소를 향하게 한다. 단일 타깃 요소 또는 복수의 타깃 요소가 다양한 다른 상호작용 시나리오/제스처를 인에이블 시키는 제스처 객체에 대해 지정될 수 있다. 또한, 요소(들)는 미리 알려져 있기 때문에, 제스처 모듈(114) 및/또는 인식기(124)를 통해 획득된 원 제스처 데이터가 특정한 요소에 대해 포맷될 수 있다. 따라서, 제스처 객체는 애플리케이션 레벨에서 추가 프로세싱을 거의 또는 전혀 하지 않고, 대응하는 요소에 적용될 수 있는 포맷된 제스처 데이터를 애플리케이션에 공급할 수 있다. 추가로, 맞춤형 속성(210)이 제공되어 제스처 객체 동작의 확장 및 맞춤화를 가능하게 하고 수명 관리(lifetime management)를 용이하게 할 수 있으며, 이에 대한 세부사항은 본 명세서에서 이후에 논의된다.
적어도 일부 실시예에서, 제스처 객체(122)는 개발자에게 이용가능한 빌트인 객체 유형으로서 자바스크립트와 같은 스크립트 기반 프로그래밍 언어로 구현된다. 제스처 객체(122)는 객체의 속성으로서 상호작용 입력(206) 및 타깃 요소(208)를 포함한다. 개발자는 객체에 대한 메소드를 사용하여 속성을 설정하고 인식 인터페이스(120)로 하여금 지정된 상호작용 콘텍스트에 적합한 객체를 인스턴스화 하게 할 수 있다. 이러한 메소드는 개발자/애플리케이션이 터치 접촉 및/또는 다른 입력을 객체에 추가하는 것을 가능하게 하고, DOM 또는 다른 콘텐트 모델의 타깃 요소를 특정하는 것을 가능하게 한다. 또한, 개발자는 비슷한 방식으로 노출된 메소드를 통해 맞춤형 속성(210)을 설정할 수 있다. 하나의 접근법에서, 인식 인터페이스(120)는 제스처 인식을 위해 제스처 객체(122)를 정의하고 생성하는 데 사용되는 메소드를 노출하는 애플리케이션 프로그래밍 인터페이스로서 구성될 수 있다.
제한이 아닌 예시로서, 다음의 유사-코드는 설명된 기법에 적합한 제스처 객체 및 메소드에 대한 하나의 스크립트 기반 구현예를 나타낸다.
Figure pct00001
전술한 바와 같이, 제스처 객체는 인식 인터페이스(120)에 의해 지원되는 빌트 인 객체 유형을 사용하여 생성될 수 있다. 요소 및 상호작용 입력(예, 접촉/입력)이 생성된 객체의 속성으로서 지정될 수 있다. 접촉/입력은 접촉/입력이 제스처 프로세싱의 일부로서 더 이상 고려되지 않도록 제거 메소드(remove method)에 의해 제거될 수 있다. 중단 메소드(stop method)는 주문형 프로세싱(processing on demand)의 종료를 가능하게 한다. 중단 메소드는 객체로부터 접촉/입력을 제거하고, 프로세싱을 종료하며, 제스처에 대한 종료 이벤트를 발사하고, 다른 제스처를 준비하도록 객체/인식기를 리셋한다. 또는, 객체가 지속될 수 있고 이하에 설명되는 수명 관리 기법에 따라 객체가 자동으로 정리된다.
따라서, 지정된 상호작용 콘텍스트에 대한 제스처 이벤트를 시작하기 위해, 애플리케이션은 인식 인터페이스(120)를 호출하고 타깃 요소 및 하나 이상의 상호작용 입력을 지정할 수 있다. 이는 인식 인터페이스(120)를 통해 대응하는 제스처 객체(122)를 생성하게 한다. 이후에 제스처 인식에 대한 대부분의 프로세싱이 애플리케이션을 대신하여 제스처 객체(122)를 통해 처리되며, 프로세싱은 입력 데이터를 인식기에 공급하고, 제스처 이벤트 메시지를 처리하며, 원 제스처 데이터를 변환하는 것 등을 포함한다. 실제로, 애플리케이션은 선택된 타깃 요소(예, 상호작용 콘텍스트)에 관한 특정한 입력/접촉에 대해 제스처 업데이트를 하기 위해 인식 인터페이스(120)에 등록하고, 이어서 인식 인터페이스(120)가 상호작용 콘텍스트에 대한 적절한 정보를 반환하기를 기다릴 수 있다. 예를 들어, 인식 인터페이스(120)는 애플리케이션 콘텐트에 대한 DOM의 DOM 이벤트로서 또는 애플리케이션에 의해 사용되는 다른 콘텐트 모델에 적합한 비슷한 이벤트로서 제스처 이벤트/데이터를 대응하는 요소에 관해 이미 변환된 요소에게 공급할 수 있다.
사용자가 자신의 집게 손가락의 터치를 이용하여 이미지를 선택하고 디스플레이를 가로질러 이미지를 드래그하는 예를 고려한다. 이미지의 처음 선택 시에, 애플리케이션은 이미지를 타깃 요소(208)로서 그리고 집게 손가락 터치를 상호작용 입력(206)으로 하여 인식 인터페이스(120)를 통해 대응하는 제스처 객체(122)를 형성하도록 동작할 수 있다. 이제, 애플리케이션 자체는 더 이상 손가락 위치의 변화(예, 드래그)를 모니터하거나 인식 시스템으로 그러한 정보를 공급할 필요가 없다. 대신에, 이러한 시나리오에서 인스턴스화되는 제스처 객체(122)는 애플리케이션을 대신하여 상호작용 입력(206)을 자동으로 추적하고 접촉 위치의 변화에 관한 정보를 인식기(124)로 공급하며, 이는 대응하는 드래그 제스처를 검출할 수 있다. 또한, 제스처 객체(122) 및/또는 인식 인터페이스(120)는 인식기(124)에 의해 생성되는 제스처 이벤트 메시지를 처리하고 이러한 이벤트 메시지는 애플리케이션에 의해 사용되는 콘텐트 모델에 따라 이러한 이벤트 메시지를 애플리케이션에 공급할 수 있다.
좌표 변환
간략하게 전술한 바와 같이, 제스처 프로세싱의 결과는 타깃화된 요소에 대해 결과를 특정적으로 변환하기 위해 사전 처리될 수 있다. 제스처 객체(122)에 대한 타깃 요소(208)의 지정은 시스템 요소를 효과적으로 인식하게 한다. 이와 같이, 인식 인터페이스(120)는 제스처가 목표로 하는 요소와 연관된 좌표 공간으로 제스처 검출 결과를 변환하도록 구성된다. 일반적으로, 제스처 결과는 이전 상태 및 새로운 상태 간의 델타(delta, 증분)로서 또는 초기 상태에 관한 누계로서 표현될 수 있다. 제스처에 대한 원(raw) 델타 또는 누계 데이터가 애플리케이션에 공급되면, 애플리케이션은 특정한 요소에 대해 원 델타를 변환하기 위한 작업(work)을 수행해야 한다. 예를 들어, 요소가 사전에 회전된 경우에, 애플리케이션은 기존 회전에 관한 제스처를 어떻게 적용할지를 결정해야 한다. 요소를 인식하지 않는 통상적인 시스템에서, 개발자는 자신의 애플리케이션 코드에서 이러한 상황을 처리할 선택의 여지를 갖지 못하고, 이는 개발을 복잡하게 한다. 한편, 본 명세서에 설명된 기법에 따라 제스처 객체(122)에 대해 명시적으로 타깃 요소(208)를 정의하는 것은 인식 인터페이스(120)가 요소의 상태를 추적하는 것을 가능하게 한다. 요소 상태는 적용된 제스처에 기초하여 업데이트될 수 있고, 업데이트된 상태는 요소에 대해 정의된 좌표 공간에서 후속 인식되는 제스처(또는 제스처 변화)에 대한 델타를 계산하는 데 사용된다. 따라서, 제스처가 검출될 때마다, 애플리케이션을 대신하여, 제스처 모듈(114)에 의해 제공되는 원 델타 정보가 적합한 좌표 공간으로 변환될 수 있다. 따라서, 애플리케이션은 추가 프로세싱을 거의 또는 전혀 하지 않고 결과를 대응하는 요소에 직접 적용할 수 있다.
적어도 일부 실시예에서, 또한 애플리케이션은 제스처 데이터가 변환되는 특정한 좌표 공간을 명시적으로 지정할 수 있다. 그렇게 함으로써, 애플리케이션은 타깃 요소를 설정할 수 있고 또한 타깃 요소에 대응하거나 대응하지 않을 수 있는 좌표 공간을 특정하도록 구성되는 제스처 객체의 다른 지정된 및/또는 맞춤형 속성을 설정할 수 있다. 이는 애플리케이션이 제스처 이벤트가 발사되는 타깃 요소의 좌표 공간과 다를 수 있는 좌표 공간을 선택하는 것을 가능하게 한다. 예를 들어, 제스처 데이터는 타깃 요소의 좌표 공간 이외에 페이지/문서의 범용(global) 좌표 공간으로 변환될 수 있다. 심지어, 애플리케이션은 제스처 객체에 대한 임의의 또는 범용 좌표 공간 변환을 정의할 수 있어, 대응하는 제스처 데이터가 변환되고 애플리케이션에 의해 선택된 정의된 좌표 공간에 있는 것으로 보고된다.
수명 관리
인식 인터페이스(120) 및 제스처 객체(122)는, 객체의 재사용을 가능하게 하고, 활성 상호작용 입력(206)을 가지는 객체를 액세스/참조하는 기능을 보전하며, 적합한 시점에 객체를 정리(clean-up)하도록 자동 회수(automatic collection)를 제어하는 관리 수명 스킴(managed lifetime scheme)을 구현하도록 추가로 구성될 수 있다. 일반적으로, 스코프(예, 기능위주 또는 범용)를 가지는 자바스크립트 및 다른 스크립트 기반 객체가 생성되고, 연관된 스코프의 지속시간 동안 유지될 수 있다. 스코프는 특정한 기능/모듈에 관련되거나, 페이지 또는 애플리케이션 인스턴스의 수명에 관한 것일 수 있다. 이후에 객체는 객체가 더 이상 사용되지 않는 경우를 인식할 수 있고 자동으로 자체적으로 회수될 수 있다(예, 자신을 제거/또는 자신이 삭제되게 함).
활성 상호작용 입력(206)(예, 접촉/입력)을 여전히 가지는 제스처 객체(122)가 자동으로 자체 회수/제거되는 것을 방지하기 위해, 객체에 대한 상호작용 입력(206)이 고정 레퍼런스(pinning reference)로서 구성될 수 있다. 고정 레퍼런스는 상호작용 입력(206)이 활성상태를 유지하는 동안 객체가 존속하게 한다. 이는 객체의 스코프가 더 이상 유효하지 않은 경우(예, 객체의 스코프를 정의하는 기능/모듈이 종료된 경우)에도 그러할 수 있다. 또한, 객체에 대한 타깃 요소(208)는 타깃 요소가 제거될 때까지 각각의 객체가 존속되도록 고정 레퍼런스의 역할을 할 수 있다. 따라서, 제스처 객체(122)는 제스처를 작동시키는 상호작용 입력(206)이 지속되는 한 지속될 수 있고, 제스처 이벤트가 제스처 객체(122)를 통해 계속 공급될 수 있다. 상호작용 입력(206)이 제거되는 경우에(예, 사용자가 자신의 손가락을 디스플레이로부터 치움), 제스처 객체(122)는 객체가 더 이상 사용되지 않는다고 인식하고 이를 자동으로 거둬들이도록 진행할 수 있다. 이는 애플리케이션이 자신을 대신하여 생성되는 제스처 객체를 관리할 필요 없이 이루어질 수 있다.
수명 중에 제스처 객체(122)에 대한 지속적인 액세스를 가능하게 하기 위해, 인식 인터페이스에 의해 공급되는 제스처 이벤트는 대응하는 제스처 객체에 대한 액세스를 식별하고 제공하는 정보를 포함할 수 있다. 따라서, 레퍼런스가 객체에서 제거되는 경우에도, 이벤트에 포함되는 속성(property)을 식별시키는 객체가 대응하는 제스처 객체를 액세스하는 데 사용될 수 있다. 추가로, 맞춤형 속성(210)이 맞춤형 정보 및 기능까지 포함하도록 설정될 수 있다. 예를 들어, 이벤트가 객체에 의해 시작될 때마다 호출하는 특정한 기능이 맞춤형 속성(210)을 통해 지정될 수 있다. 다른 예에서, 속성은 애플리케이션에 대해 지정된 객체와 현재 연관된 접촉/입력의 목록을 전달하도록 구성될 수 있다. 또한 다양한 다른 예가 고려된다.
전술한 바와 같이, 제스처 객체(122)는 또한 재사용될 수 있다. 객체가 생성되고 상호작용 입력(206) 및 타깃 요소(208)와 연관되면, 객체는 전술한 바와 같이 지속될 수 있다. 객체와 연관된 상호작용 입력(206)이 활성상태인 동안, 타깃 요소가 동일하게 유지된다. 추가 상호작용 입력이 객체에 추가될 수 있다. 또한 상호작용 입력(206)은 제스처를 유도하는 콘택트/입력이 완료되는 경우에(예, 손가락이 들어올려짐), 명시적으로(제거 메소드를 사용하여) 또는 자동으로 제거될 수 있다. 따라서, 제스처 객체(122)에 대해 고려되는 특정한 접촉/입력은 객체의 수명에 걸쳐 변할 수 있다. 모든 상호작용 입력(206)이 제거되면, 객체가 자동으로 리셋될 수 있다. 또한, 객체는 전술한 명시적 중단(explicit stop)에 응답하여 리셋될 수 있다. 이후에, 동일한 요소에 적용되는 다른 상호작용 입력(206)이 객체를 재사용하도록 제스처 객체(122)에 추가될 수 있다. 또한, 제스처 객체(122)는 객체가 다른 요소에 대해 활발히 사용되는 것이 아닌 한(예, 제스처가 진행중임) 다른 요소와 연관될 수 있다.
제스처 객체의 다른 특징은 애플리케이션이 관성 프로세싱(inertial processing)을 매끄럽게 처리하는 기능이다. 관성 프로세싱은 사용자가 자신의 손가락을 들어올린 후 또는 제스처를 유도하는 입력이 종료된 후에 사용자 인터페이스 요소가 제스처를 통해 조정되어 자연적 상호작용 효과를 제공하는 경우에, 관성(inertia)을 시뮬레이션하는 데 사용된다. 따라서 사용자 상호작용이 종결된 후의 시간 동안, 조정된 요소가 저절로 멈추고, 가장자리(border)에 부딪혀 튕겨나가며, 계속 스크롤 하는 것 등을 할 수 있다. 관성은 제스처를 시작하는 사용자 상호작용의 속도(예, 사용자 팬, 줌 또는 회전이 얼마나 빠른가 또는 느린가)에 의존할 수 있다. 관성 프로세싱은 속도에 기초하여 소정 시간 동안 지속되고 이후에 천천히 중단된다. 관성 프로세싱은 상호작용에 사용된 최종 접촉/입력이 종결되면 타이머를 설정함으로써 얻어질 수 있다. 타이머가 동작하는 동안, 관성 프로세싱을 통해 생성된 제스처 이벤트는 그 이벤트가 직접적인 상호작용에 의해 생성된 것처럼 애플리케이션에 지속적으로 공급될 수 있다. 관성 프로세싱을 통해 생성된 제스처 이벤트는 직접 상호작용을 통해 생성된 제스처 이벤트와 동일한 방식으로 애플리케이션 및/또는 타깃 요소를 향한다.
애플리케이션은 직접적인 상호작용으로부터 관성 프로세싱으로 모드 변경이루어지는 경우를 검출하도록 구성될 수 있다. 예를 들어, 모드 식별자가 제스처 이벤트에 포함될 수 있고 또는 통지 메시지가 제스처를 위한 접촉이 종결되는 경우에 송신될 수 있다. 따라서, 애플리케이션은 관성 프로세싱을 통해 생성된 제스처이벤트를 선택적으로 사용하거나 무시할 수 있다. 예를 들어, 애플리케이션은 관성 프로세싱과 연관된 이벤트를 단순히 무시할 수 있고 이에 따라 직접적인 사용자 조작이 종결되는 경우에 요소는 이동/반응을 중단한다. 추가로 또는 대안으로서, 애플리케이션은 제스처를 리셋하기 위해 전술한 중단 메소드 "g.stop()"을 호출할 수 있고, 이는 관성 프로세싱 및 제스처 이벤트의 애플리케이션으로의 전달을 차단한다.
도 3은 본 명세서에 기술된 인스턴스화가능한 제스처 객체의 추가적인 특징을 설명하는 예시적인 상호작용 시나리오를 300에 포괄적으로 나타낸다. 구체적으로 도 3의 시나리오는 컴퓨팅 장치(102)의 제1 요소(302) 및 제2 요소(304)의 조작을 나타낸다. 이 예에서, 요소는 서로 다른 차량의 이미지이다. 또한 개별적인 문자 A 내지 D를 사용하여 라벨이 붙여진 복수의 상호작용 입력(306)이 도시된다. 이 예에서, 상호작용 입력(306)은 디스플레이 장치(112)와 사용자의 손의 터치 접촉에 대응한다. 이러한 시나리오에 대해, 사용자의 각 손과의 상호작용마다 다른 상호작용 콘텍스트가 정의될 수 있다. 따라서, 다른 제스처 객체(122)가 이전에 설명된 방식으로 각각의 손에 대해 인스턴스화될 수 있다.
도 3에 나타낸 바와 같이, 사용자의 왼손에 대응하는 제스처 객체(122)는 접촉 A 및 B를 추적하도록 구성되고, 타깃 요소로서 제1 요소(302)와 연관된다. 사용자의 오른손에 대응하는 다른 제스처 객체(122)는 접촉 C 및 D를 추적하도록 구성되고, 타깃 요소로서 제2 요소(304)와 연관된다. 서로 다른 제스처 객체(122)가 동시에 활성화되고 서로 독립적으로 관리/처리될 수 있다. 예를 들어, 한 핀치의(a pinch of) 접촉 A 및 B가 제1 요소(302)에 줌인(zoom-in)을 일으키는 줌 제스처로서 인식될 수 있으나, 접촉 D는 제2 요소(304)에 적용되는 선택 및 홀드 제스처로서 인식된다. 이러한 예에서, 접촉 C는 제2 요소(304)에 관하여 고려될 수 있으나 인식된 선택 및 홀드 제스처에는 기여할 수 없다.
서로 다른 상호작용을 동시에 제어하기 위해 복수의 다른 제스처 객체(122)를 사용하는 것은 다양한 다른 다중 터치 입력 및 다중 제스처 시나리오를 가능하게 한다. 대응하는 제스처 객체(122)를 통해 추적된 다양한 다른 콘텍스트/제스처가 동시에 활성화될 수 있다. 각각의 객체는 하나 또는 복수의 개별적인 접촉/입력을 추적하는 데 사용될 수 있다. 또한, 개별적인 접촉이 동시에 복수의 제스처 객체에 추가될 수 있고 이에 따라 복수의 제스처의 검출이 동시에 고려될 수 있다.
서로 다른 요소와 연관된 객체가 도 3에 도시되었으나, 제스처를 추적하는 복수의 서로 다른 제스처 객체(122)가 동시에 동일한 요소와 연관될 수 있다. 예를 들어, 도 3에 나타낸 양손이 제1 요소(302)에 적용되는 예를 고려한다. 이러한 예에서, 계속하여 서로 다른 제스처 객체(122)가 생성될 수 있다. 그러나, 여기서 서로 다른 객체에 대한 타깃 요소는 동일한 요소일 수 있다. 서로 다른 제스처 객체(122)가 동일한 요소에 다른 액션을 가하도록 구성될 수 있다. 예를 들어, 왼손이 줌 제스처를 수행할 수 있는 한편, 오른손은 동일한 요소에 회전 제스처를 수행한다.
다른 예에서, 왼손은 요소를 거칠게 회전시키도록 구성될 수 있으나, 오른손은 요소의 정밀한 회전을 수행한다. 그러한 다른 제스처가 검출되고 개별적인 제스처 객체(122)를 통해 제1 요소(302)에 동시에 적용될 수 있다. 또한, 하나 이상의 제스처 객체(122)의 사용을 통해 인에이블되는 다중 터치 및 다중 제스처 시나리오의 다양한 다른 예가 고려되며, 이러한 예는 다른 입력원(예, 터치, 스타일러스, 카메라, 마우스 등) 및/또는 복수의 입력원의 조합(예, 터치 및 마우스, 스타일러스 및 카메라, 터치 및 카메라 등)이 사용되는 시나리오를 포함한다.
인스턴스화가능한 제스처 객체에 관한 일부 세부사항이 설명되었으나, 지금부터는 하나 이상의 실시예에 따른 몇몇 예시적인 절차를 고려한다.
예시적인 절차
다음의 논의는 전술한 시스템 및 장치를 사용하여 구현될 수 있는 인스턴스화가능한 제스처 객체 기법을 설명한다. 각각의 절차의 특징은 하드웨어, 펌웨어, 또는 이들의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 블록 세트로서 도시되며, 각각의 블록에 의해 동작을 수행하기 위한 도시된 순서에 반드시 제한되는 것은 아니다. 다음의 논의의 일부에서, 동작 환경(100) 및 도 2와 도 3의 예시적인 시나리오(200 및 300)가 각각 참조될 수 있다.
도 4는 제스처 객체(122)가 애플리케이션을 대신하여 제스처 인식을 수행하는 데 사용되는 예시적인 절차(400)를 나타낸다. 적어도 일부 실시예에서, 적합하게 구성된 컴퓨팅 장치(예, 인식 인터페이스(120)를 구현하는 렌더링 엔진(116)의 포함하거나 이를 사용하는 도 1의 예시적인 컴퓨팅 장치(102))에 의해 수행될 수 있다.
제스처 객체는 애플리케이션에 대해 인스턴스화된다(블록 402). 예를 들어, 렌더링 엔진(116)은 컴퓨팅 장치(102) 및/또는 운영체제(108)의 고유 제스처 기능을 호출하기 위해 렌더링 엔진(116)에 의존하는 스크립트 기반 애플리케이션을 인에이블시키는 인터페이스를 제공할 수 있다. 인터페이스는 자바스크립트와 같은 동적 스크립트 언어로 작성된 애플리케이션이 제스처에 관한 프로세싱을 애플리케이션으로부터 전가하는 것을 가능하게 한다. 그렇게 함으로써 렌더링 엔진(116)은 애플리케이션이 대상으로 하는 제스처 객체(122)를 인스턴스화할 수 있다. 제스처 객체(122)는 전술한 바와 같이 애플리케이션을 대신하여 제스처 인식을 위한 동작을 처리하도록 구성된다.
인스턴스화되는 제스처 객체는 상호작용 입력 및 애플리케이션에 의해 지정된 타깃 요소와 연관된다(블록 404). 예를 들어, 도 2에 관하여 전술한 바와 같이, 제스처 객체(122)의 속성은 지정된 특정한 상호작용 입력(206) 및 객체와 연관된 타깃 요소(208)에 대해 설정될 수 있다. 객체에 추가된 상호작용 입력(206)은 이후에 제스처 인식을 위해 함께 고려될 수 있고, 제스처 모듈(114)에 의해 인식되는 임의의 대응하는 제스처는 명시적으로 선택된 타깃 요소(208)를 대상으로 할 수 있다. 서로 다른 상호작용 입력(206)이 다양한 시점에 추가되고 객체로부터 제거될 수 있으며, 객체 자체가 다른 상호작용 콘텍스트를 위해 재사용될 수 있다.
이어서 인식기가 애플리케이션을 대신하여 제스처 인식을 용이하게 하기 위해 생성된다(블록 406). 이후에 상호작용 입력 데이터가 인식 처리를 위해 인식기로 공급된다(블록 408). 전술한 바와 같이, 인식기(124)는 고유 제스처 시스템을 통한 제스처 인식을 용이하게 하는 시스템 레벨 객체/추상체이다. 제스처 객체(122)는 모던 애플리케이션(110)과의 상호작용을 위한 스크립트 기반 포맷을 사용하도록 구현될 수 있고, 각각의 객체는 고유 시스템 포맷을 사용하여 고유 제스처 기능을 호출하는 대응하는 인식기(124)를 생성할 수 있다. 이어서, 제스처 객체(122)는 프로세싱을 위해 대응하는 인식기로 상호작용 입력에 관한 입력 데이터를 공급한다. 상호작용 콘텍스트를 위한 상호작용 입력 세트(206)가 주어지면, 인식기(124)는 제스처 모듈(114)을 통해 이러한 입력의 추적 및 제스처 인식을 관리한다. 예를 들어, 상호작용 입력(206)은 전술한 바와 같이 제스처 모듈(114)에 의해 지원되는 제스처의 라이브러리에 매핑될 수 있다.
인식된 제스처를 나타내는 제스처 이벤트 메시지가 인식기로부터 획득되고(블록 410), 애플리케이션을 대신하여, 인식기로부터 획득된 제스처 이벤트 메시지의 원(raw) 제스처 데이터가 처리된다(블록 412). 예를 들어, 대응하는 제스처 객체(122)에 의해 공급되는 입력을 사용한 제스처의 인식에 응답하여, 인식기(124)는 제스처 객체(122)가 수신하도록 제스처 이벤트 메시지를 송신할 수 있다. 제스처 객체(122)는 대응하는 제스처 이벤트 메시지를 획득할 수 있으며, 이는 일반적으로 고유 제스처 시스템을 통해 산출되는 원 제스처 데이터를 포함한다. 본 명세서에 설명된 기법을 참조하여, 제스처 객체(122)는 원 데이터에 대한 프로세싱이 그 데이터를 특정한 타깃 요소 및/또는 애플리케이션에 대해 특정적으로 변환하도록 한다. 예를 들어, 원 제스처 데이터는 전술한 방식으로 제스처 객체(122)에 의해 정의된 타깃 요소에 대응하는 좌표 공간으로 변환될 수 있다. 따라서, 애플리케이션은 그러한 계산을 수행해야 하는 부담을 덜 수 있다.
제스처 이벤트는 애플리케이션을 위한 콘텐트 모델에 따라 타깃 요소를 향해 발사된다(블록 414). 타깃 요소를 향해 발사된 제스처 이벤트는 애플리케이션 및/또는 타깃 요소에 대해 변환된 프로세싱된 제스처 데이터를 포함한다. 따라서, 애플리케이션은 제스처 이벤트를 통해 전달되는 제스처/액션을 적합한 요소에 간단히 적용할 수 있다.
도 5는 애플리케이션이 제스처 객체를 사용한 제스처 인식을 위해 상호작용 입력을 등록하는 예시적인 절차(500)를 나타낸다. 적어도 일부 실시예에서, 절차는 컴퓨팅 장치의 렌더링 엔진(116)을 통해 구현된 인식 인터페이스(120)를 호출하도록 구성되는, 도 1의 적합하게 구성된 애플리케이션(110)에 의해 수행될 수 있다.
애플리케이션은 스크립트 기반 인터페이스를 통한 제스처 인식을 등록하기 위해 대응하는 콘텐트 아이템의 선택된 타깃 요소에 대한 제스처 객체의 생성을 지시할 수 있다(블록 502). 예를 들어, 동적 스크립트 언어를 사용하여 프로그램된 애플리케이션이 애플리케이션을 위한 콘텐트를 렌더링하는 데 사용되는 렌더링 엔진(116)에 의해 노출된 인식 인터페이스(120)와 상호작용할 수 있다. 상호작용은 인식 인터페이스(120)로 하여금 전술한 방식으로 지정된 상호작용 콘텍스트에 대해 제스처 객체(122)를 인스턴스화하게 할 수 있다. 상호작용 콘텍스트를 정의하기 위해, 애플리케이션은 객체에 대한 메소드를 사용하여 객체의 다양한 속성을 설정함으로써 객체를 구성할 수 있다. 일반적으로, 도 2에 관하여 설명한 바와 같이, 이는 적어도 상호작용 입력(206) 및 타깃 요소(208)를 지정하는 것을 포함한다. 또한, 애플리케이션은 제스처 객체(122)의 동작의 제어 및/또는 기능의 확장을 위한 맞춤형 속성(210)을 설정할 수 있다. 그러한 맞춤화의 예는 특정한 제스처에 응답하여 호출할 함수를 시작하는 것, 콘텍스트에 적용가능한 및/또는 무시할 수 있는 특정한 종류의 제스처를 지정하는 것, 제스처 및/또는 제스처를 연산하는데 사용되는 입력에 관한 지정된 데이터/속성을 반환하는 것, 환경설정 파라미터 및 제스처를 제어하기 위한 임계치를 제공하는 것 등을 포함하나 이에 한정되는 것은 아니다.
이어서, 타깃 요소에 대해 시작되며 타깃 요소와의 사용자 상호작용에 기초하여 인식된 제스처를 나타내는 제스처 이벤트가 획득되고(블록 504), 제스처 이벤트가 인식된 제스처에 따라 타깃 요소의 디스플레이를 조작하도록 타깃 요소에 적용된다(블록 506). 전술한 바와 같이, 제스처 객체(122)는 애플리케이션(110)이 제스처의 프로세싱을 위한 작업부하(workload)의 대부분을 덜어내는 것을 가능하게 한다. 따라서, 블럭(502)에서 객체의 생성을 지시한 후에, 애플리케이션은 대응하는 상호작용 콘텍스트에 대한 제스처 이벤트를 자동으로 획득하기 시작한다. 이는 애플리케이션이 제스처를 인식하기 위한 추가 작업을 수행하지 않고 이루어질 수 있다. 애플리케이션은 간단히 제스처 이벤트를 주시하거나 획득하기 위한 핸들러를 포함할 수 있고 핸들러를 제스처 이벤트를 적합한 요소에 적용할 수 있다. 또한, 제스처 데이터가 애플리케이션에 의해 인식될 수 있는 스크립트 포맷이 되고 대응하는 타켓 요소를 위해 사전에 변환되도록 요소로 발사되는 제스처 이벤트에 의해 기술되는 제스처 데이터가 사전 프로세싱될 수 있다.
예시적인 절차를 고려하였으나, 지금부터는 본 명세서에 설명된 인스턴스화가능한 제스처 객체 기법의 특징을 구현하도록 하나 이상의 실시예에서 사용될 수 있는 예시적인 시스템을 고려한다.
예시적인 시스템
도 6은 전술한 다양한 기법을 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 장치를 나타내는 예시적인 컴퓨팅 장치(602)를 포함하는 예시적인 시스템(600)을 도시한다. 컴퓨팅 장치(602)는, 예를 들어, 서비스 제공자의 서버, 클라이언트(예, 클라이언트 장치)와 연관된 장치, 온-칩 시스템 및/또는 임의의 다른 적합한 컴퓨팅 장치나 컴퓨팅 시스템일 수 있다.
예시적인 컴퓨팅 장치(602)는 하나 이상의 프로세서 또는 프로세싱 장치를 포함할 수 있는 프로세싱 시스템(604), 하나 이상의 메모리 및/또는 저장 컴포넌트(508)를 포함할 수 있는 하나 이상의 컴퓨터 판독가능 저장 매체(606), 및 입/출력(I/O) 장치를 위한 하나 이상의 I/O 인터페이스(610)를 포함한다. 컴퓨터 판독가능 매체(606) 및/또는 하나 이상의 I/O 장치는 컴퓨팅 장치(602)의 일부로서 포함될 수 있거나 또는 대안으로서 컴퓨팅 장치(602)에 연결될 수 있다. 도시된 바와 같이, 또한 프로세싱 시스템(604)은 본 명세서 기술된 절차 및 기법의 적어도 일부 특징을 하드웨어로 구현하는 기능을 나타내는 하나 이상의 하드웨어 구성요소(612)를 포함할 수 있다. 도시되지는 않았지만, 컴퓨팅 장치(602)는 다양한 컴포넌트들을 서로 연결하는 시스템 버스 또는 데이터 전송 시스템을 더 포함할 수 있다. 시스템 버스는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, USB, 및/또는 임의의 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 비롯한 임의의 하나 또는 상이한 버스 구조들의 조합을 포함할 수 있다.
프로세싱 시스템(604), 프로세서 및 하드웨어 구성요소(612)는 이들을 형성하는 재료나 내부에서 사용되는 프로세싱 메커니즘에 의해 한정되지 않는다. 예를 들어, 프로세서는 반도체(들) 및/또는 트랜지스터(전자 집적 회로(IC))를 포함할 수 있다. 이런 맥락에서, 프로세서 실행 가능 명령어는 전자적으로 실행 가능한 명령어일 수 있다. 메모리/저장 컴포넌트(608)를 하나 이상의 컴퓨터 판독가능 저장 매체와 관련된 메모리/저장 기능을 나타낸다. 메모리/저장 컴포넌트(608)는 (랜덤 액세스 메모리(RAM)와 같은) 휘발성 매체 및/또는 (판독 전용 메모리(ROM), 플래시 메모리, 광 디스크, 자기 디스크 등의) 비휘발성 매체를 포함할 수 있다. 메모리/저장 컴포넌트(608)는 고정식 매체(예컨대, RAM, ROM, 고정 하드 드라이브 등)뿐만 아니라 이동식 매체(예컨대, 플래시 메모리, 이동식 하드 드라이브, 광 디스크 등)를 포함할 수 있다.
입/출력 인터페이스(들)(610)는 사용자가 컴퓨팅 장치(602)로 명령(command) 및 정보를 입력할 수 있고, 또한 다양한 입/출력 장치를 이용해 정보가 사용자 및/또는 그 밖의 다른 컴포넌트 또는 장치로 제시되게 하는 기능을 나타낸다. 입력 장치의 예로는 키보드, 커서 제어 장치(예컨대, 마우스), 오디오/비디오 입력 용의 마이크로폰, 스캐너, 카메라 등을 포함한다. 출력 장치의 예로는 디스플레이 장치(예컨대, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
본 명세서에서는 다양한 기법이 소프트웨어, 하드웨어 구성요소, 또는 프로그램 모듈로서 일반적으로 설명된다. 일반적으로, 그러한 모듈은 특정 작업을 실행하거나 특정 추상화 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 컴포넌트, 데이터 구조 등을 포함한다. 본 명세서에서 사용된 "모듈" 및 "기능" 및 "컴포넌트"라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 본 명세서에 기술된 기법의 특징은 플랫폼 독립적(platform-independent)이며, 이는 기법이 다양한 프로세싱 시스템, 하드웨어 구성요소, 컴퓨터 판독가능 매체 및/또는 메모리/저장 컴포넌트를 갖는 다양한 상업용 컴퓨팅 플랫폼 상에서 구현될 수 있음을 의미한다.
설명된 모듈 및 기법의 구현예는 소정 형태의 컴퓨터 판독가능 매체에 저장되거나 또는 컴퓨터 판독 가능 매체로 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 장치가 액세스할 수 있는 다양한 매체를 포함할 수 있다. 예를 들어, 그러나 제한 없이, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체" 및 "컴퓨터 판독가능 통신 매체"를 포함할 수 있다.
"컴퓨터 판독가능 저장 매체"는 단지 신호 전송, 반송파, 또는 신호 그 자체와 달리 정보의 영속적(persistent) 및/또는 비-일시적(non-transitory) 저장을 가능하게 하는 매체 및/또는 장치를 지칭할 수 있다. 따라서, 컴퓨터 판독가능 저장 매체는 비-신호 운반(bearing) 매체를 지칭한다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 로직 요소/회로, 또는 그 밖의 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기법으로 구현되는 휘발성 및 비-휘발성, 이동식 및 비-이동식 매체 및/또는 저장 장치 등의 하드웨어를 포함한다. 컴퓨터 판독가능 저장 매체의 예로는, RAM, ROM, EEPROM, 플래시 메모리 또는 그 밖의 다른 메모리 기법, CD-ROM, DVD(digital versatile disk), 또는 기타 광 저장장치, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 그 밖의 다른 저장 장치, 유형 매체(tangible media) 또는 컴퓨터에 의해 액세스될 수 있는 바람직한 정보를 저장하기에 적합한 제조 물품이 있으며, 그러나 이에 제한되지는 않는다.
"컴퓨터 판독가능 통신 매체"는 가령 네트워크를 통해 컴퓨팅 장치(602)의 하드웨어로 명령어를 송신하도록 구성된 신호 운반 매체를 지칭할 수 있다. 일반적으로 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터를 반송파, 데이터 신호 또는 그 밖의 다른 전송 메커니즘을 비롯한 변조 데이터 신호로 구현할 수 있다. 통신 매체는 임의의 정보 전달 매체를 더 포함한다. "변조된 데이터 신호"라는 용어는 신호 내 정보를 인코딩하도록 특징들 중 하나 이상 설정 또는 변경된 신호를 의미한다. 예를 들어, 그러나 제한 없이, 통신 매체는 유선 네트워크 또는 직접 배선된 연결과 같은 유선 매체, 및 음향, RF, 적외선 및 그 밖의 다른 무선 매체와 같은 무선 매체를 포함한다.
전술한 바와 같이, 하드웨어 구성요소(612)는, 전술된 기법의 적어도 일부 특징을 구현하기 위해 일부 실시예에서 이용할 수 있는 하드웨어 형태로 구현된 명령어, 모듈, 프로그램 가능한 장치 로직 및/또는 고정 장치 로직을 나타낸다. 하드웨어 구성요소는 집적 회로 또는 온칩 시스템, ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), CPLD(complex programmable logic device) 등의 컴포넌트들을 포함할 수 있다. 이런 맥락에서, 하드웨어 구성요소는 명령어에 의해 정의되는 프로그램 태스크를 실행하는 프로세싱 장치, 모듈 및/또는 하드웨어 구성요소에 의해 구현되는 로직으로서 동작할 수 있다.
본 명세서에 설명된 다양한 기법 및 모듈을 구현하기 위해 전술한 것들의 조합을 이용할 수 있다. 따라서, 소프트웨어, 하드웨어, 또는 모듈(제스처 모듈(114)렌더링 엔진(116), 인식 인터페이스(120), 애프리케이션(110), 운영체제(108) 및 다른 프로그램 모듈을 포함함)은 일부 형태의 컴퓨터 판독가능 저장 매체에 구현된 하나 이상의 명령어 및/또는 로직으로서 및/또는 하나 이상의 하드웨어 구성요소(612)에 의해 구현될 수 있다. 컴퓨팅 장치(602)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 명령어 및/또는 기능을 구현하도록 구성될 수 있다. 명령어 및/또는 기능은 본 명세서에 설명된 기법, 모듈, 및 예시적 절차를 구현하기 위해 하나 이상의 제조물품(예컨대, 하나 이상의 컴퓨팅 장치(602) 및/또는 프로세싱 시스템(604))으로 실행/동작될 수 있다.
도 6에 추가로 도시된 바와 같이, 예시적인 시스템(600)은 퍼스널 컴퓨터(PC), 텔레비전 장치 및/또는 모바일 장치상에서 애플리케이션을 실행하는 경우에 끊김 없는 사용자 경험을 위한 유비쿼터스 환경을 가능하게 한다. 서비스 및 애플리케이션은 애플리케이션을 사용하고 비디오 게임을 플레이하며 비디오를 시청 등을 하는 동안, 하나의 장치에서 다음 장치로 전환되는 경우에 공통 사용자 경험을 위한 세 개의 환경 모두에서 실질적으로 유사하게 실행된다.
예시적인 시스템(600)에서, 복수의 장치가 중앙 컴퓨팅 장치를 통해 상호연결된다. 중앙 컴퓨팅 장치는 복수의 장치에 로컬로 배치될 수 있고 복수의 장치로부터 원거리에 배치될 수도 있다. 일 실시예에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷 또는 다른 데이터 통신 링크를 통해 복수의 장치에 연결된 하나 이상의 서버 컴퓨터의 클라우드일 수 있다. 일 실시예에서, 이러한 연결 아키텍처는 복수의 장치의 사용자에게 공통적이고 끊김 없는 경험을 제공하도록 복수의 장치에 걸쳐 전달되는 기능을 가능하게 한다. 복수의 장치 각각은 서로 다른 물리적 조건 및 성능을 가질 수 있으며, 중앙 컴퓨팅 장치는 플랫폼을 사용하여 특정 장치에 맞춤화되나 모든 장치에 공통적인 장치로의 경험의 전달을 가능하게 한다. 일 실시예에서, 타깃 장치의 클래스가 생성되고 경험이 장치의 일반 클래스에 대해 맞춤화된다. 장치의 클래스는 물리적 특징, 사용 타입 또는 장치의 공통 특성에 의해 정의될 수 있다.
다양한 구현예에서, 컴퓨팅 장치(602)는 컴퓨터(614), 모바일(616) 및 텔레비전(618) 사용과 같은 다양한 다른 구성을 가정할 수 있다. 이러한 구성 각각은 일반적으로 다른 구조와 성능을 가질 수 있는 장치를 포함할 수 있고, 따라서 컴퓨팅 장치(602)는 서로 다른 장치 클래스 중 하나 이상에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(602)는 퍼스널 컴퓨터, 데스크톱 컴퓨터, 멀티 스크린 컴퓨터, 랩톱 컴퓨터, 넷북 등을 포함하는 컴퓨터(614) 장치 클래스로서 구현될 수 있다.
컴퓨팅 장치(602)는 또한 모바일 폰과 같은 모바일 장치, 휴대용 뮤직 플레이어, 휴대용 게임기, 태블릿 컴퓨터, 멀티 스크린 컴퓨터 등을 포함하는 모바일(616) 장치 클래스로서 구현될 수 있다. 또한, 컴퓨팅 장치(602)는 평상의 보기 환경 내에 일반적으로 대형 스크린을 가지거나 이에 연결되는 장치를 포함하는 텔레비전(618) 장치 클래스로서 구현될 수 있다. 이러한 장치는 텔레비전, 셋톱 박스, 게임 콘솔 등을 포함한다. 본 명세서에 기술된 기법은 컴퓨팅 장치(602)의 이러한 다양한 구성에 의해 지원될 수 있으며, 본 명세서에 설명된 기법의 특정한 예에 한정되지 않는다. 이는 컴퓨팅 장치(602) 상에 인식 인터페이스(120)를 포함하는 것을 통해 설명된다. 인식 인터페이스(120)의 기능 및/또는 다른 애플리케이션/모듈은 또한 플랫폼(622)을 통해 "클라우드"(620)와 같은 분산형 시스템의 사용을 통해 전체적으로 또는 부분적으로 구현될 수 있다.
클라우드(620)는 자원(624)에 대한 플랫폼(622)을 포함하거나 이를 나타낸다. 플랫폼(622)은 클라우드(620)의 하드웨어(에, 서버) 및 소프트웨어 자원의 기본 기능을 추상화한다. 자원(624)은 컴퓨터 프로세싱이 컴퓨팅 장치(602)로부터 원격인 서버에서 실행되는 동안 사용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 또한, 자원(624)은 인터넷을 통해 및/또는 셀룰러나 와이 파이 네트워크와 같은 가입자 네트워크를 통해 제공되는 서비스를 포함할 수 있다.
플랫폼(622)은 컴퓨팅 장치(602)를 다른 컴퓨팅 장치와 연결하기 위한 자원 및 기능을 추상화할 수 있다. 또한, 플랫폼(622)은 플랫폼(622)을 통해 구현되는 자원(624)에 대한 충돌하는 요구에 대한 대응한 레벨을 스케일을 제공하도록 자원 스케일링을 추상화하는 데 기여할 수 있다. 따라서, 상호연결된 장치 구현예에서, 본 명세서에 설명된 기능의 구현예가 시스템(600) 전체에 분산될 수 있다. 예를 들어, 기능은 컴퓨팅 장치(602)에서 부분적으로 그리고 클라우드(620)의 기능을 추상화하는 플랫폼(622)을 통해 구현될 수 있다.
결론
구현예가 구조적 특징부 및/또는 방법론적 동작에 특정적인 언어로 기술되었지만, 이하의 특허청구범위에서 정의되는 본 구현은 반드시 기술된 특정 특징부 또는 동작에 한정되는 것은 아님을 알아야 한다. 오히려, 특정 특징부 및 동작은 특허청구된 특징부를 구현하는 예시적인 형태로서 개시된 것이다.

Claims (10)

  1. 컴퓨팅 장치에 의해 제공되는 고유 제스처 기능(native gesture functionality)을 통해 상기 애플리케이션을 위한 제스처 인식을 처리하기 위해 애플리케이션을 위한 제스처 객체를 인스턴스화하는 단계와,
    상기 제스처를 상기 애플리케이션에 의해 지정된 상호작용 입력(interaction inputs) 및 타깃 요소(target element)와 연관시키는 단계와,
    상기 컴퓨팅 장치에 의해 제공되는 상기 고유 제스처 기능을 통해 상기 애플리케이션을 대신하여 제스처 인식(gesture recognition)을 용이하게 하는 인식기(recognizer)를 생성하는 단계와,
    상기 상호작용 입력에 대한 상호작용 입력 데이터를 상기 인식기에 공급하여 상기 상호작용 입력 데이터에 기초한 제스처의 인식을 가능하게 하는 단계와,
    인식된 제스처를 나타내는 제스처 이벤트 메시지를 상기 인식기로부터 획득하는 단계와,
    상기 애플리케이션을 대신하여, 상기 제스처 이벤트 메시지에 의해 기술되는 원 제스처 데이터(raw gesture data)를 프로세싱하는 단계와,
    상기 애플리케이션을 위한 콘텐트 모델에 따라 처리된 제스처 데이터를 갖는 제스처 이벤트를 상기 연관된 타깃 요소로 발사(firing)하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제스처 객체는 상기 컴퓨팅 장치에 의해 제공되는 기본적인 고유 제스처 기능의 스크립트 기반 추상체(script-based abstraction)인
    방법.
  3. 제1항에 있어서,
    상기 애플리케이션은 동적 스크립트 언어를 사용하여 프로그램되는
    방법.
  4. 제1항에 있어서,
    상기 방법은 상기 애플리케이션에 의해 사용되어 상기 애플리케이션을 위한 콘텐트를 렌더링하는 렌더링 엔진에 의해 노출된 인터페이스를 통해 수행되는
    방법.
  5. 제1항에 있어서,
    상기 상호작용 입력은 상기 컴퓨팅 장치와 연관된 터치스크린에 가해지는 터치 접촉(touch contacts)을 포함하는
    방법.
  6. 제1항에 있어서,
    상기 프로세싱하는 단계는 상기 원 제스처 데이터를 상기 애플리케이션에 의해 지정되는 좌표 공간으로 변환하는 단계를 포함하는
    방법.
  7. 제1항에 있어서,
    상기 인식기는 상기 제스처 객체에 의해 지정된 상호작용 입력을 추적하고 상기 상호작용 입력을 지원되는 제스처의 라이브러리에 매핑하여 특정한 제스처가 발생하는 경우를 인식하는
    방법.
  8. 제1항에 있어서,
    상기 제스처 객체는 인식된 제스처에 대한 데이터를 상기 인식기에 의해 사용되는 시스템 포맷과 상기 애플리케이션에 의해 인지되는 스크립트 기반 포맷 간에 번역하도록 구성되는
    방법.
  9. 제1항에 있어서,
    상기 상호작용 입력은 상기 상호작용 입력이 활성상태를 유지하는 한 상기 제스처 객체가 자체적으로 회수(collecting)되는 것을 방지하는 상기 제스처 객체에 대한 고정 레퍼런스(pinning references)로서 구성되는
    방법.
  10. 제1항에서 있어서,
    상기 타깃 요소로 발사된 제스처 이벤트는 상기 제스처 객체에 대한 레퍼런스가 손실되는 경우에 상기 제스처 객체에 대한 지속적인 액세스를 가능하게 하도록 상기 제스처 객체를 식별하는 정보를 포함하는
    방법.
KR1020147027633A 2012-03-31 2013-03-15 인스턴스화가능한 제스처 객체 KR102108583B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/436,877 2012-03-31
US13/436,877 US9575652B2 (en) 2012-03-31 2012-03-31 Instantiable gesture objects
PCT/US2013/031809 WO2013148293A1 (en) 2012-03-31 2013-03-15 Instantiable gesture objects

Publications (2)

Publication Number Publication Date
KR20140147095A true KR20140147095A (ko) 2014-12-29
KR102108583B1 KR102108583B1 (ko) 2020-05-07

Family

ID=49236795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027633A KR102108583B1 (ko) 2012-03-31 2013-03-15 인스턴스화가능한 제스처 객체

Country Status (6)

Country Link
US (1) US9575652B2 (ko)
EP (1) EP2831704A4 (ko)
JP (1) JP6226394B2 (ko)
KR (1) KR102108583B1 (ko)
CN (1) CN104246659B (ko)
WO (1) WO2013148293A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507512B1 (en) * 2012-04-25 2016-11-29 Amazon Technologies, Inc. Using gestures to deliver content to predefined destinations
JP5377709B2 (ja) * 2012-05-23 2013-12-25 株式会社スクウェア・エニックス 情報処理装置,情報処理方法,及びゲーム装置
CN103577079B (zh) * 2012-07-24 2017-11-07 腾讯科技(深圳)有限公司 电子设备中实现与应用交互的方法及电子设备
US20140253430A1 (en) * 2013-03-08 2014-09-11 Google Inc. Providing events responsive to spatial gestures
US9519351B2 (en) 2013-03-08 2016-12-13 Google Inc. Providing a gesture-based interface
US9575560B2 (en) 2014-06-03 2017-02-21 Google Inc. Radar-based gesture-recognition through a wearable device
KR102182401B1 (ko) * 2014-06-11 2020-11-24 엘지전자 주식회사 이동단말기 및 그 제어방법
CN104156063B (zh) * 2014-07-14 2015-09-09 济南大学 一种面向三维交互界面的手势速度估计方法
US9430142B2 (en) * 2014-07-17 2016-08-30 Facebook, Inc. Touch-based gesture recognition and application navigation
US9778749B2 (en) 2014-08-22 2017-10-03 Google Inc. Occluded gesture recognition
US11169988B2 (en) 2014-08-22 2021-11-09 Google Llc Radar recognition-aided search
US9600080B2 (en) 2014-10-02 2017-03-21 Google Inc. Non-line-of-sight radar-based gesture recognition
KR102002112B1 (ko) 2015-04-30 2019-07-19 구글 엘엘씨 제스처 추적 및 인식을 위한 rf―기반 마이크로―모션 추적
CN111880650A (zh) * 2015-04-30 2020-11-03 谷歌有限责任公司 基于宽场雷达的手势识别
US10088908B1 (en) 2015-05-27 2018-10-02 Google Llc Gesture detection and interactions
CN105007525A (zh) * 2015-06-09 2015-10-28 济南大学 一种面向智能电视应用的交互情景事件关联智能感知方法
US10521100B2 (en) * 2015-08-28 2019-12-31 Facebook, Inc. Systems and methods for providing interactivity for panoramic media content
US20170060404A1 (en) * 2015-08-28 2017-03-02 Facebook, Inc. Systems and methods for providing interactivity for panoramic media content
US10521099B2 (en) * 2015-08-28 2019-12-31 Facebook, Inc. Systems and methods for providing interactivity for panoramic media content
US10817065B1 (en) 2015-10-06 2020-10-27 Google Llc Gesture recognition using multiple antenna
US11029836B2 (en) 2016-03-25 2021-06-08 Microsoft Technology Licensing, Llc Cross-platform interactivity architecture
WO2017192167A1 (en) 2016-05-03 2017-11-09 Google Llc Connecting an electronic component to an interactive textile
CN107608609B (zh) * 2016-07-11 2021-02-19 斑马智行网络(香港)有限公司 一种事件对象发送方法与装置
CN107423060B (zh) * 2017-07-07 2021-03-30 北京小米移动软件有限公司 动画效果的呈现方法、装置及终端
CN111801641A (zh) * 2018-02-22 2020-10-20 奇跃公司 采用物理操纵的对象创建
JP7280032B2 (ja) 2018-11-27 2023-05-23 ローム株式会社 入力デバイス、自動車
US20220391268A1 (en) * 2021-05-28 2022-12-08 Roku, Inc. Cloud Computation for Applications on Media Devices
CN116166143B (zh) * 2023-04-25 2023-07-04 麒麟软件有限公司 全局触摸手势识别方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050057524A1 (en) * 2003-09-16 2005-03-17 Hill Douglas B. Gesture recognition method and touch system incorporating the same
US20080052945A1 (en) * 2006-09-06 2008-03-06 Michael Matas Portable Electronic Device for Photo Management

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2089784C (en) 1992-04-15 1996-12-24 William Joseph Anderson Apparatus and method for disambiguating an input stream generated by a stylus-based user interface
US5592566A (en) 1992-05-27 1997-01-07 Apple Computer, Incorporated Method and apparatus for computerized recognition
WO1996009579A1 (en) 1994-09-22 1996-03-28 Izak Van Cruyningen Popup menus with directional gestures
US6310610B1 (en) 1997-12-04 2001-10-30 Nortel Networks Limited Intelligent touch display
US20070177804A1 (en) 2006-01-30 2007-08-02 Apple Computer, Inc. Multi-touch gesture dictionary
US9292111B2 (en) 1998-01-26 2016-03-22 Apple Inc. Gesturing with a multipoint sensing device
US6643824B1 (en) 1999-01-15 2003-11-04 International Business Machines Corporation Touch screen region assist for hypertext links
EP1148411A3 (en) 2000-04-21 2005-09-14 Sony Corporation Information processing apparatus and method for recognising user gesture
US20030037181A1 (en) * 2000-07-07 2003-02-20 Freed Erik J. Method and apparatus for providing process-container platforms
US6897853B2 (en) 2000-11-10 2005-05-24 Microsoft Corp. Highlevel active pen matrix
US7284192B2 (en) 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents
JP4583893B2 (ja) 2004-11-19 2010-11-17 任天堂株式会社 ゲームプログラムおよびゲーム装置
US8643605B2 (en) 2005-11-21 2014-02-04 Core Wireless Licensing S.A.R.L Gesture based document editor
US8296684B2 (en) 2008-05-23 2012-10-23 Hewlett-Packard Development Company, L.P. Navigating among activities in a computing device
US7936341B2 (en) 2007-05-30 2011-05-03 Microsoft Corporation Recognizing selection regions from multiple simultaneous inputs
US7932896B2 (en) 2007-06-13 2011-04-26 Apple Inc. Techniques for reducing jitter for taps
US8181122B2 (en) * 2007-07-30 2012-05-15 Perceptive Pixel Inc. Graphical user interface for large-scale, multi-user, multi-touch systems
US8174502B2 (en) 2008-03-04 2012-05-08 Apple Inc. Touch event processing for web pages
US8416196B2 (en) 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
JP4171770B1 (ja) 2008-04-24 2008-10-29 任天堂株式会社 オブジェクト表示順変更プログラム及び装置
US8276093B2 (en) 2008-04-24 2012-09-25 Nintendo Co., Ltd. Computer-readable storage medium having object display order changing program stored therein and apparatus
CN101581992A (zh) 2008-05-16 2009-11-18 鸿富锦精密工业(深圳)有限公司 触摸屏装置及其输入方法
US8375336B2 (en) 2008-05-23 2013-02-12 Microsoft Corporation Panning content utilizing a drag operation
KR101477743B1 (ko) 2008-06-16 2014-12-31 삼성전자 주식회사 단말 및 그의 기능 수행 방법
US8390577B2 (en) 2008-07-25 2013-03-05 Intuilab Continuous recognition of multi-touch gestures
US20100042933A1 (en) 2008-08-15 2010-02-18 International Business Machines Corporation Region selection control for selecting browser rendered elements
US8836645B2 (en) 2008-12-09 2014-09-16 Microsoft Corporation Touch input interpretation
KR101854141B1 (ko) 2009-01-19 2018-06-14 삼성전자주식회사 디스플레이 정보 제어 장치 및 방법
US8285499B2 (en) 2009-03-16 2012-10-09 Apple Inc. Event recognition
US9684521B2 (en) * 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
EP2256592A1 (en) 2009-05-18 2010-12-01 Lg Electronics Inc. Touchless control of an electronic device
EP2480957B1 (en) 2009-09-22 2017-08-09 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US8766928B2 (en) 2009-09-25 2014-07-01 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
CA2686995A1 (en) 2009-12-03 2011-06-03 Ibm Canada Limited - Ibm Canada Limitee Handling user-interface gestures in non-rectangular regions
US20110167336A1 (en) 2010-01-04 2011-07-07 Hit Development Llc Gesture-based web site design
JP5569062B2 (ja) 2010-03-15 2014-08-13 オムロン株式会社 ジェスチャ認識装置、ジェスチャ認識装置の制御方法、および、制御プログラム
JP2011232894A (ja) 2010-04-26 2011-11-17 Renesas Electronics Corp インタフェース装置、ジェスチャ認識方法及びジェスチャ認識プログラム
US20130120280A1 (en) * 2010-05-28 2013-05-16 Tim Kukulski System and Method for Evaluating Interoperability of Gesture Recognizers
US20110304541A1 (en) 2010-06-11 2011-12-15 Navneet Dalal Method and system for detecting gestures
CN101959051A (zh) 2010-09-01 2011-01-26 华为终端有限公司 远程呈现系统的屏幕选看方法及装置
US9146674B2 (en) 2010-11-23 2015-09-29 Sectra Ab GUI controls with movable touch-control objects for alternate interactions
DE102010054859A1 (de) * 2010-12-17 2012-06-21 Rohde & Schwarz Gmbh & Co. Kg System mit Gestenerkennungseinheit
US20120249422A1 (en) * 2011-03-31 2012-10-04 Smart Technologies Ulc Interactive input system and method
US20130024819A1 (en) * 2011-07-18 2013-01-24 Fuji Xerox Co., Ltd. Systems and methods for gesture-based creation of interactive hotspots in a real world environment
US10389778B2 (en) * 2012-01-23 2019-08-20 Time Warner Cable Enterprises Llc Transitioning video between devices using touch gestures
US9304646B2 (en) * 2012-03-20 2016-04-05 A9.Com, Inc. Multi-user content interactions
US9335913B2 (en) 2012-11-12 2016-05-10 Microsoft Technology Licensing, Llc Cross slide gesture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050057524A1 (en) * 2003-09-16 2005-03-17 Hill Douglas B. Gesture recognition method and touch system incorporating the same
US20080052945A1 (en) * 2006-09-06 2008-03-06 Michael Matas Portable Electronic Device for Photo Management

Also Published As

Publication number Publication date
CN104246659A (zh) 2014-12-24
EP2831704A4 (en) 2015-11-11
JP2015512540A (ja) 2015-04-27
EP2831704A1 (en) 2015-02-04
CN104246659B (zh) 2017-09-22
KR102108583B1 (ko) 2020-05-07
US20130263029A1 (en) 2013-10-03
JP6226394B2 (ja) 2017-11-08
WO2013148293A1 (en) 2013-10-03
US9575652B2 (en) 2017-02-21

Similar Documents

Publication Publication Date Title
KR102108583B1 (ko) 인스턴스화가능한 제스처 객체
CN108369456B (zh) 用于触摸输入设备的触觉反馈
CN106687922B (zh) 参数惯性和api
US10417018B2 (en) Navigation of immersive and desktop shells
US10163245B2 (en) Multi-mode animation system
US9747004B2 (en) Web content navigation using tab switching
US10691880B2 (en) Ink in an electronic document
US10055388B2 (en) Declarative style rules for default touch behaviors
JP2022520263A (ja) ミニプログラムのデータバインディング方法、装置、デバイス及びコンピュータプログラム
EP3757739A1 (en) Method for display when exiting an application, and terminal
JP2022521720A (ja) ミニプログラム作成方法、装置、端末及びプログラム
KR102040359B1 (ko) 상태 정보를 위한 동기화 지점
US20150026689A1 (en) Independent Hit Testing
US10956663B2 (en) Controlling digital input
Helal et al. Mobile platforms and development environments
US10708391B1 (en) Delivery of apps in a media stream
KR20160019526A (ko) 그래픽 동작들 통합
KR101313283B1 (ko) 입력 처리 장치 및 그 방법
Cohen et al. GUI Design for Android Apps, Part 1: General Overview
Waleetorncheepsawat The Study of Web Application Development Versus Native Application Development on IPhone
Helal et al. iOS

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant