KR102355391B1 - 가상 기재로서 사용하기 위한 평면 및/또는 쿼드트리들을 검출하기 위한 방법 및 디바이스 - Google Patents

가상 기재로서 사용하기 위한 평면 및/또는 쿼드트리들을 검출하기 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR102355391B1
KR102355391B1 KR1020197035029A KR20197035029A KR102355391B1 KR 102355391 B1 KR102355391 B1 KR 102355391B1 KR 1020197035029 A KR1020197035029 A KR 1020197035029A KR 20197035029 A KR20197035029 A KR 20197035029A KR 102355391 B1 KR102355391 B1 KR 102355391B1
Authority
KR
South Korea
Prior art keywords
reticle element
plane
user input
display
appearance state
Prior art date
Application number
KR1020197035029A
Other languages
English (en)
Other versions
KR20190141748A (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 KR20190141748A publication Critical patent/KR20190141748A/ko
Application granted granted Critical
Publication of KR102355391B1 publication Critical patent/KR102355391B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • 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/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Abstract

전자 디바이스는: 전자 디바이스의 디스플레이 상에, 전자 디바이스의 이미지 센서의 시야 내의 객체들의 미디어 캡처 미리보기 상에 오버레이되는 제1 외관 상태로 망선 요소를 디스플레이하고 - 미디어 캡처 미리보기는 이미지 센서의 시야 내의 객체들이 변경됨에 따라 변경됨 -; 미디어 캡처 미리보기에서 평면을 검출하고; 평면을 검출한 것에 응답하여, 디스플레이 상에, 미디어 캡처 미리보기 상에 오버레이되는 제2 외관 상태로 망선 요소를 디스플레이하는데, 망선 요소는 제2 외관 상태로 디스플레이되는 동안 평면의 범위의 일부분의 표시에 대응한다. 전자 디바이스는: 이미지들의 복수의 세트들을 획득하고; 이미지들의 복수의 세트들 각각에 대한 3차원 포인트 클라우드를 합성하고; 개개의 3차원 포인트 클라우드들을 사용하여 평면들을 구성하고; 3차원 포인트 클라우드들에 걸쳐서 평면들의 병합된 세트를 특징짓는 쿼드트리들의 병합된 세트를 생성한다.

Description

가상 기재로서 사용하기 위한 평면 및/또는 쿼드트리들을 검출하기 위한 방법 및 디바이스
본 발명은, 대체로, 장면 내에서 평면들 및/또는 쿼드트리(quadtree)들을 검출하는 것에 관한 것으로, 검출된 평면들 및/또는 쿼드트리들이 가상 기재(virtual substrate)들로서 요청될 수 있게 하는 전자 디바이스들을 포함하지만 이들로 제한되지 않는다.
비맵핑 또는 동적 장면 내에 증강 현실/가상 현실(augmented reality/virtual reality, AR/VR) 객체들을 배치하는 것은, 적어도 사용자 경험 관점에서, 난제를 제시한다. AR/VR 객체가 적합한 가상 기재 없이 장면 내에 배치되는 경우, 그 AR/VR 객체는 장면 내의 현실 세계 표면(real-world surface)에 앵커링되지 않을 수도 있다. 이와 같이, AR/VR은 공중에 부유할 수 있거나, 현실 세계 객체를 폐색할 수 있거나, 또는 현실 세계 객체와 충돌할 수 있다. 이는 실물과 똑같지도 않고 신용할 수도 없는 불량한 사용자 경험을 초래한다.
후술되는 실시예들에서, 이러한 난제는 AR/VR 객체들을 위에 배치하는 가상 기재들을 제공하기 위해, 장면 내에서 평면들 또는 쿼드트리들을 검출하고 이들의 범위를 판정함으로써 해결된다.
일부 실시예들에 따르면, 하나 이상의 프로세서들, 비일시적 메모리, 이미지 센서, 디스플레이, 및 하나 이상의 입력 디바이스들을 갖는 전자 디바이스에서 방법이 수행된다. 방법은, 디스플레이 상에, 이미지 센서의 시야 내에 객체들의 미디어 캡처 미리보기 상에 오버레이되는(overlaid) 제1 외관 상태로 망선 요소(reticle element)를 디스플레이하는 단계 - 미디어 캡처 미리보기는 이미지 센서의 시야 내의 객체들이 변경됨에 따라 변경됨 - 를 포함한다. 방법은, 또한, 미디어 캡처 미리보기에서 평면을 검출하는 단계; 및 평면을 검출한 것에 응답하여, 디스플레이 상에, 미디어 캡처 미리보기 상에 오버레이되는 제2 외관 상태로 망선 요소를 디스플레이하는 단계 - 망선 요소는 제2 외관 상태로 디스플레이되는 동안 평면의 범위의 일부분의 표시에 대응함 - 를 포함한다.
일부 실시예들에 따르면, 방법은 하나 이상의 프로세서들 및 비일시적 메모리를 갖는 전자 디바이스에서 수행된다. 방법은: 이미지들의 복수의 세트들을 획득하는 단계; 이미지들의 복수의 세트들 각각에 대한 3차원 포인트 클라우드를 합성하는 단계; 개개의 3차원 포인트 클라우드들을 사용하여 평면들을 구성하는 단계; 및 3차원 포인트 클라우드들에 걸쳐서 평면들의 병합된 세트를 특징짓는 쿼드트리들의 병합된 세트를 생성하는 단계를 포함한다.
일부 실시예들에 따르면, 전자 디바이스는 디스플레이, 하나 이상의 입력 디바이스들, 하나 이상의 프로세서들, 비일시적 메모리, 및 하나 이상의 프로그램들을 포함하며; 하나 이상의 프로그램들은 비일시적 메모리에 저장되고 하나 이상의 프로세서들에 의해 실행되도록 구성되며, 하나 이상의 프로그램들은 본 명세서에 기술된 방법들 중 임의의 방법의 동작들을 수행하거나 또는 그의 수행을 야기하기 위한 명령어들을 포함한다. 일부 실시예들에 따르면, 비일시적 컴퓨터 판독가능 저장 매체는 디스플레이 및 하나 이상의 입력 디바이스들을 갖는 전자 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금 본 명세서에서 기술되는 방법들 중 임의의 방법의 동작들을 수행하거나 그의 수행을 야기하게 하는 명령어들을 내부에 저장하였다. 일부 실시예들에 따르면, 전자 디바이스는: 디스플레이, 하나 이상의 입력 디바이스들; 및 본 명세서에서 기술되는 방법들 중 임의의 방법의 동작들을 수행하거나 그의 수행을 야기하기 위한 수단을 포함한다. 일부 실시예들에 따르면, 디스플레이 및 하나 이상의 입력 디바이스들을 갖는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치는 본 명세서에서 기술되는 방법들 중 임의의 방법의 동작들을 수행하거나 그의 수행을 야기하기 위한 수단을 포함한다.
다양하게 기술된 실시예들의 보다 양호한 이해를 위해, 유사한 도면 부호들이 도면 전체에 걸쳐서 대응 부분들을 나타내는 하기의 도면들과 관련하여 하기의 발명을 실시하기 위한 구체적인 내용이 참조되어야 한다.
도 1a는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 휴대용 다기능 디바이스를 도시한 블록도이다.
도 1b는 일부 실시예들에 따른, 이벤트 처리를 위한 예시적인 컴포넌트들을 도시한 블록도이다.
도 2는 일부 실시예들에 따른, 터치 스크린을 갖는 휴대용 다기능 디바이스를 도시한다.
도 3은 일부 실시예들에 따른, 디스플레이 및 터치 감응형 표면을 갖는 예시적인 다기능 디바이스의 블록도이다.
도 4a 내지 도 4m은 일부 실시예들에 따른, 가상 기재를 검출하고 그 위에 객체들을 배치하기 위한 예시적인 사용자 인터페이스들을 도시한다.
도 5a 및 도 5b는 일부 실시예들에 따른, 쿼드트리들의 세트를 생성하기 위한 예시적인 관념적 블록도들을 도시한다.
도 6a 내지 도 6g는 일부 실시예들에 따른, 가상 기재들을 검출하기 위한 예시적인 사용자 인터페이스들을 도시한다.
도 7은 일부 실시예들에 따른, 가상 기재를 검출하고 그 위에 객체들을 배치하는 방법의 흐름도를 도시한다.
도 8은 일부 실시예들에 따른, 가상 기재로서 사용하기 위한 쿼드트리들의 병합된 세트를 생성하는 방법의 흐름도를 도시한다.
도 9는 일부 실시예들에 따른, 가상 기재로서 사용하기 위한 쿼드트리들의 세트를 생성하는 방법의 흐름도를 도시한다.
도 10은 일부 실시예들에 따른, 가상 기재로서 사용하기 위한 쿼드트리들의 병합된 세트를 생성하는 방법의 흐름도를 도시한다.
도 11은 일부 실시예들에 따른, 컴퓨팅 디바이스의 블록도이다.
후술되는 실시예들에서, 이미지 센서의 시야 내의 장면의 미디어 캡처 미리보기를 디스플레이하는 동안, 미디어 캡처 미리보기 상에 오버레이되는 망선 요소는 제1 외관 상태로부터 제2 외관으로 전이되어, 장면 내에서 평면이 검출되었다는 시각적 단서(cue)를 제공한다. 후술되는 실시예들에서, 제2 외관 상태로 디스플레이되는 동안, 망선 요소는 검출된 평면의 범위를 나타낸다. 따라서, 후술되는 실시예들은, 가상 기재로서 사용되는 검출된 평면에 대한 장면 내에 증강 현실/가상 현실(AR/VR) 객체들을 배치할 때 더 적은 시간 및 사용자 입력들을 필요로 하는 원활한 사용자 경험을 제공한다. 이는, 또한, 사용자가 디바이스를 더 빠르고 효율적으로 사용할 수 있게 함으로써, 디바이스의 전력 사용량을 감소시키고 그의 배터리 수명을 개선한다.
후술되는 실시예들에서, 상이한 시점(vantage point)들 또는 시야들에 대한 평면들 또는 쿼드트리들의 세트들은, 이어서 가상 기재들로서 사용되는 쿼드트리들의 병합된 세트를 획득하도록 시간적 차원에 걸쳐서 상관된다. 이와 같이, 후술되는 실시예들은 시간 경과에 따른 장면의 상이한 시야들에 기초하여 가상 기재들의 정확한 범위들을 식별하기 위한 프로세스를 제공한다. 따라서, 후술되는 실시예들은, 쿼드트리들(또는 이들과 연관된 평면들)의 병합된 세트에 대한 장면 내에 AR/VR 객체들을 배치할 때, 더 적은 시간 및 사용자 입력들을 필요로 하는 원활한 사용자 경험을 제공한다. 이는, 또한, 사용자가 디바이스를 더 빠르고 효율적으로 사용할 수 있게 함으로써, 디바이스의 전력 사용량을 감소시키고 그의 배터리 수명을 개선한다.
이하에서, 도 1a, 도 1b, 도 2, 도 3 및 도 11은 예시적인 디바이스들의 설명을 제공한다. 도 7은 가상 기재를 검출하고 그 위에 객체들을 배치하는 방법의 흐름도를 도시한다. 도 4a 내지 도 4m에서의 사용자 인터페이스들은 도 7에서의 프로세스를 예시하기 위해 사용된다. 도 8 내지 도 10은 가상 기재로서 사용하기 위한 쿼드트리들의 세트를 생성하는 방법들의 흐름도들을 도시한다. 도 5a 및 도 5b에서의 관념적 블록도들 및 도 6a 내지 도 6g에서의 사용자 인터페이스들은 도 8 내지 도 10에서의 프로세스들을 예시하기 위해 사용된다.
예시적인 디바이스
이제, 실시예들이 상세하게 참조될 것이며, 그 실시예들의 예들이 첨부 도면들에 예시된다. 하기의 상세한 설명에서, 많은 구체적인 세부사항들이 다양하게 기술된 실시예들의 완전한 이해를 제공하기 위해 기재된다. 그러나, 다양하게 기술된 실시예들이 이들 구체적인 세부사항들 없이 실시될 수 있다는 것은 당업자에게 명백할 것이다. 다른 예들에서, 잘 알려진 방법들, 절차들, 컴포넌트들, 회로들, 및 네트워크들은 실시예들의 양태들을 불필요하게 모호하게 하지 않기 위해 상세히 기술되지 않았다.
일부 예들에서, 용어들, 제1, 제2 등이 본 명세서에서 다양한 요소들을 기술하는 데 사용되지만, 이들 요소들은 이들 용어들에 의해 제한되어서는 안 된다는 것이 또한 이해될 것이다. 이러한 용어들은 하나의 요소를 다른 요소와 구별하는 데에만 사용된다. 예를 들면, 다양하게 기술된 실시예들의 범주로부터 벗어남이 없이, 제1 접촉이 제2 접촉으로 지칭될 수 있고, 유사하게, 제2 접촉이 제1 접촉으로 지칭될 수 있다. 제1 접촉 및 제2 접촉은 둘 모두 접촉이지만, 문맥상 명백히 달리 나타내지 않는 한, 이들은 동일한 접촉인 것은 아니다.
본 명세서에서 다양하게 기술된 실시예들의 설명에 사용되는 용어는 특정 실시예들을 기술하는 목적만을 위한 것이고, 제한하려는 의도는 아니다. 다양한 기술된 실시예들의 설명 및 첨부된 청구범위에 사용되는 바와 같이, 단수의 형태("a", "an", 및 "the")는 문맥상 명백히 달리 나타내지 않는다면 복수의 형태도 마찬가지로 포함하려는 것으로 의도된다. 또한, 본 명세서에서 사용되는 바와 같은 용어 "및/또는"은 열거되는 연관된 항목들 중 하나 이상의 항목들의 임의의 및 모든 가능한 조합들을 나타내고 그들을 포괄하는 것임이 이해될 것이다. 용어들 "포함한다(include)", "포함하는(including)", "포함한다(comprise)", 및/또는 "포함하는(comprising)"은, 본 명세서에서 사용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않음이 추가로 이해될 것이다.
본 명세서에서 사용되는 바와 같이, "~는 경우(if)"라는 용어는, 선택적으로, 문맥에 따라 "~할 때(when)" 또는 "~ 시(upon)" 또는 "결정한 것에 응답하여(in response to determining)" 또는 "검출한 것에 응답하여(in response to detecting)"를 의미하는 것으로 해석된다. 유사하게, 어구 "~라고 결정된 경우" 또는 "[언급된 조건 또는 이벤트가] 검출된 경우"는, 선택적으로, 문맥에 따라 "~라고 결정할 시" 또는 "~라고 결정한 것에 응답하여" 또는 "[언급된 조건 또는 이벤트]를 검출할 시" 또는 "[언급된 조건 또는 이벤트]를 검출한 것에 응답하여"를 의미하는 것으로 해석된다.
전자 디바이스들, 그러한 디바이스들에 대한 사용자 인터페이스들, 및 그러한 디바이스들을 사용하기 위한 연관된 프로세스들의 실시예들이 기술된다. 일부 실시예들에서, 디바이스는 PDA 및/또는 음악 재생기 기능들과 같은 다른 기능들을 또한 포함하는 휴대용 통신 디바이스, 예컨대 이동 전화기이다. 휴대용 다기능 디바이스들의 예시적인 실시예들은 미국 캘리포니아주 쿠퍼티노 소재의 애플 인크.(Apple Inc.)로부터의 아이폰(iPhone)®, 아이팟 터치(iPod Touch)®, 및 아이패드(iPad)® 디바이스들을 제한 없이 포함한다. 터치 감응형 표면들(예를 들면, 터치 스크린 디스플레이들 및/또는 터치패드들)을 갖는 랩톱 또는 태블릿 컴퓨터들과 같은 다른 휴대용 전자 디바이스들이 선택적으로 사용된다. 일부 실시예들에서, 디바이스는 휴대용 통신 디바이스가 아니라 터치 감응형 표면(예컨대, 터치 스크린 디스플레이 및/또는 터치패드)을 갖는 데스크톱 컴퓨터임이 또한 이해되어야 한다.
이하의 논의에서, 디스플레이 및 터치 감응형 표면을 포함하는 전자 디바이스가 기술된다. 그러나, 전자 디바이스가 선택적으로 물리적 키보드, 마우스 및/또는 조이스틱과 같은 하나 이상의 다른 물리적 사용자 인터페이스 디바이스들을 포함한다는 것이 이해되어야 한다.
디바이스는 전형적으로 다음 중 하나 이상과 같은 다양한 애플리케이션들을 지원한다: 그리기 애플리케이션, 프레젠테이션 애플리케이션, 워드 프로세싱 애플리케이션, 웹사이트 제작 애플리케이션, 디스크 저작 애플리케이션, 스프레드시트 애플리케이션, 게임 애플리케이션, 전화 애플리케이션, 화상 회의 애플리케이션, 이메일 애플리케이션, 인스턴트 메시징 애플리케이션, 운동 지원 애플리케이션, 사진 관리 애플리케이션, 디지털 카메라 애플리케이션, 디지털 비디오 카메라 애플리케이션, 웹 브라우징 애플리케이션, 디지털 음악 재생기 애플리케이션, 및/또는 디지털 비디오 재생기 애플리케이션.
디바이스 상에서 실행되는 다양한 애플리케이션들은, 선택적으로, 터치 감응형 표면과 같은 적어도 하나의 보편적인 물리적 사용자 인터페이스 디바이스를 사용한다. 터치 감응형 표면의 하나 이상의 기능들뿐만 아니라 디바이스 상에 디스플레이되는 대응하는 정보는, 선택적으로, 하나의 애플리케이션으로부터 다음 애플리케이션으로 그리고/또는 개개의 애플리케이션 내에서 조정되고/되거나 변경된다. 이러한 방식으로, 디바이스의 (터치 감응형 표면과 같은) 보편적인 물리적 아키텍처는, 선택적으로, 사용자에게 직관적이고 투명한 사용자 인터페이스들을 이용하여 다양한 애플리케이션들을 지원한다.
이제, 터치 감응형 디스플레이들을 갖는 휴대용 디바이스들의 실시예들에 주목한다. 도 1a는 일부 실시예들에 따른, 터치 감응형 디스플레이 시스템(112)을 갖는 휴대용 다기능 디바이스(100)를 도시한 블록도이다. 터치 감응형 디스플레이 시스템(112)은 때때로 편의상 "터치 스크린"이라고 지칭되고, 때때로 터치 감응형 디스플레이로 단순히 지칭된다. 디바이스(100)는 메모리(102)(선택적으로 하나 이상의 컴퓨터 판독가능 저장 매체들을 포함함), 메모리 제어기(122), 하나 이상의 프로세싱 유닛(CPU)들(120), 주변기기 인터페이스(118), RF 회로부(108), 오디오 회로부(110), 스피커(111), 마이크로폰(113), 입출력(I/O) 서브시스템(106), 다른 입력 또는 제어 디바이스들(116), 및 외부 포트(124)를 포함한다. 디바이스(100)는 선택적으로 하나 이상의 광 센서(optical sensor)들(164)을 포함한다. 디바이스(100)는, 선택적으로, 디바이스(100)(예컨대, 디바이스(100)의 터치 감응형 디스플레이 시스템(112)과 같은 터치 감응형 표면) 상에서의 접촉들의 세기를 검출하기 위한 하나 이상의 세기 센서들(165)을 포함한다. 디바이스(100)는, 선택적으로, 디바이스(100) 상에 촉각적 출력들을 생성하기 위한(예컨대, 디바이스(100)의 터치 감응형 디스플레이 시스템(112) 또는 디바이스(300)의 터치패드(355)와 같은 터치 감응형 표면 상에 촉각적 출력들을 생성하기 위한) 하나 이상의 촉각적 출력 생성기들(163)을 포함한다. 이들 컴포넌트는 선택적으로 하나 이상의 통신 버스들 또는 신호 라인들(103)을 통해 통신한다.
명세서 및 청구범위에 사용되는 바와 같이, "촉각적 출력"이라는 용어는 디바이스의 이전 위치에 대한 디바이스의 물리적 변위, 디바이스의 다른 컴포넌트(예컨대, 하우징)에 대한 디바이스의 컴포넌트(예컨대, 터치 감응형 표면)의 물리적 변위, 또는 사용자의 촉각을 이용하여 사용자에 의해 검출될 디바이스의 질량 중심에 대한 컴포넌트의 변위를 지칭한다. 예컨대, 디바이스 또는 디바이스의 컴포넌트가 터치에 민감한 사용자의 표면(예컨대, 사용자의 손의 손가락, 손바닥, 또는 다른 부위)과 접촉하는 상황에서, 물리적 변위에 의해 생성된 촉각적 출력은 사용자에 의해 디바이스 또는 디바이스의 컴포넌트의 물리적 특성들의 인지된 변화에 대응하는 촉감(tactile sensation)으로서 해석될 것이다. 예컨대, 터치 감응형 표면(예컨대, 터치 감응형 디스플레이 또는 트랙패드)의 이동은, 선택적으로, 사용자에 의해 물리적 액추에이터 버튼의 "다운 클릭" 또는 "업 클릭"으로서 해석된다. 일부 경우에, 사용자는 사용자의 이동에 의해 물리적으로 눌리는(예컨대, 변위되는) 터치 감응형 표면과 연관된 물리적 액추에이터 버튼의 이동이 없는 경우에도 "다운 클릭" 또는 "업 클릭"과 같은 촉감을 느낄 것이다. 다른 예로서, 터치 감응형 표면의 이동은, 터치 감응형 표면의 평탄성의 변화가 없는 경우에도, 선택적으로, 사용자에 의해 터치 감응형 표면의 "거칠기(roughness)"로서 해석 또는 감지된다. 사용자에 의한 터치의 이러한 해석들이 사용자의 개별화된 감각 인지(sensory perception)에 영향을 받기 쉬울 것이지만, 대다수의 사용자들에게 보편적인 많은 터치 감각 인지가 있다. 따라서, 촉각적 출력이 사용자의 특정 감각 인지(예컨대, "업 클릭", "다운 클릭", "거칠기")에 대응하는 것으로서 기술될 때, 달리 언급되지 않는다면, 생성된 촉각적 출력은 전형적인(또는 평균적인) 사용자에 대한 기술된 감각 인지를 생성할 디바이스 또는 그의 컴포넌트의 물리적 변위에 대응한다.
디바이스(100)는 휴대용 다기능 디바이스의 일례일 뿐이고, 디바이스(100)는, 선택적으로, 도시된 것보다 더 많거나 더 적은 컴포넌트들을 갖거나, 선택적으로, 둘 이상의 컴포넌트들을 조합하거나, 또는 선택적으로 컴포넌트들의 상이한 구성 또는 배열을 갖는다는 것이 이해되어야 한다. 도 1a에 도시된 다양한 컴포넌트들은, 하나 이상의 신호 프로세싱 및/또는 주문형 집적 회로들을 비롯한, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로 구현된다.
메모리(102)는, 선택적으로, 고속 랜덤 액세스 메모리를 포함하고, 또한 선택적으로, 하나 이상의 자기 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 다른 비휘발성 솔리드 스테이트 메모리 디바이스(non-volatile solid-state memory device)와 같은 비휘발성 메모리를 포함한다. CPU(들)(120) 및 주변기기 인터페이스(118)와 같은 디바이스(100)의 다른 컴포넌트들에 의한 메모리(102)에 대한 액세스는 선택적으로 메모리 제어기(122)에 의해 제어된다.
주변기기 인터페이스(118)는 디바이스의 입력 및 출력 주변기기들을 CPU(들)(120) 및 메모리(102)에 커플링시키는 데 사용될 수 있다. 하나 이상의 프로세서들(120)은 디바이스(100)에 대한 다양한 기능들을 수행하기 위해 그리고 데이터를 프로세싱하기 위해 메모리(102)에 저장된 다양한 소프트웨어 프로그램들 및/또는 명령어들의 세트들을 구동 또는 실행시킨다.
일부 실시예들에서, 주변기기 인터페이스(118), CPU(들)(120) 및 메모리 제어기(122)는 선택적으로 칩(104)과 같은 단일 칩 상에서 구현된다. 일부 다른 실시예들에서, 이들은, 선택적으로, 별개의 칩들 상에서 구현된다.
RF(radio frequency) 회로부(108)는 전자기 신호들이라고도 지칭되는 RF 신호들을 수신 및 전송한다. RF 회로부(108)는 전기 신호들을 전자기 신호들로/로부터 변환하고, 전자기 신호들을 통해 통신 네트워크들 및 다른 통신 디바이스들과 통신한다. RF 회로부(108)는, 선택적으로, 안테나 시스템, RF 송수신기, 하나 이상의 증폭기, 튜너, 하나 이상의 발진기, 디지털 신호 프로세서, CODEC 칩셋, SIM(subscriber identity module) 카드, 메모리 등을 포함하지만 이들로 제한되지 않는, 이러한 기능들을 수행하기 위한 잘 알려진 회로부를 포함한다. RF 회로부(108)는, 선택적으로, 블루투스 네트워크와 같은 개인 영역 네트워크(personal area network, PAN); 802.11x Wi-Fi 네트워크와 같은 근거리 통신망(local area network, LAN); 및/또는 4G 셀룰러 네트워크와 같은 광역 네트워크(wide area network, WAN)와 통신한다.
오디오 회로부(110), 스피커(111), 및 마이크로폰(113)은 사용자와 디바이스(100) 사이에서 오디오 인터페이스를 제공한다. 오디오 회로부(110)는 주변기기 인터페이스(118)로부터 오디오 데이터를 수신하고, 그 오디오 데이터를 전기 신호로 변환하고, 그 전기 신호를 스피커(111)로 송신한다. 스피커(111)는 전기 신호를 사람이 들을 수 있는 음파로 변환한다. 오디오 회로부(110)는, 또한, 마이크로폰(113)에 의해 음파로부터 변환된 전기 신호들을 수신한다. 오디오 회로부(110)는 전기 신호를 오디오 데이터로 변환하고, 프로세싱을 위해 오디오 데이터를 주변기기 인터페이스(118)로 송신한다. 오디오 데이터는, 선택적으로, 주변기기 인터페이스(118)에 의해 메모리(102) 및/또는 RF 회로부(108)로부터 인출되고/되거나 메모리(102) 및/또는 RF 회로부(108)로 송신된다. 일부 실시예들에서, 오디오 회로부(110)는 또한 헤드셋 잭(예컨대, 도 2의 212)을 포함한다. 헤드셋 잭은 출력-전용 헤드폰들, 또는 출력(예컨대, 한쪽 또는 양쪽 귀용 헤드폰) 및 입력(예컨대, 마이크로폰) 양쪽 모두를 갖는 헤드셋과 같은 분리가능한 오디오 입/출력 주변기기들과 오디오 회로부(110) 사이의 인터페이스를 제공한다.
I/O 서브시스템(106)은 터치 감응형 디스플레이 시스템(112) 및 다른 입력 또는 제어 디바이스들(116)과 같은, 디바이스(100) 상의 입출력 주변기기들을 주변기기 인터페이스(118)와 커플링시킨다. I/O 서브시스템(106)은 선택적으로 디스플레이 제어기(156), 광 센서 제어기(158), 세기 센서 제어기(159), 햅틱 피드백 제어기(161), 및 다른 입력 또는 제어 디바이스들을 위한 하나 이상의 입력 제어기들(160)을 포함한다. 하나 이상의 입력 제어기들(160)은 다른 입력 또는 제어 디바이스들(116)로부터/로 전기 신호들을 수신/전송한다. 다른 입력 또는 제어 디바이스들(116)은 선택적으로 물리적 버튼들(예컨대, 푸시 버튼, 로커 버튼(rocker button) 등), 다이얼, 슬라이더 스위치, 조이스틱, 클릭 휠 등을 포함한다. 일부 다른 실시예들에서, 입력 제어기(들)(160)는 선택적으로 키보드, 적외선 포트, USB 포트, 스타일러스, 및/또는 마우스와 같은 포인터 디바이스 중 임의의 것과 커플링된다(또는 어떠한 것에도 커플링되지 않는다). 하나 이상의 버튼들(예컨대, 도 2의 208)은 선택적으로 스피커(111) 및/또는 마이크로폰(113)의 음량 제어를 위한 업/다운 버튼을 포함한다. 하나 이상의 버튼들은 선택적으로 푸시 버튼(예컨대, 도 2의 206)을 포함한다.
터치 감응형 디스플레이 시스템(112)은 디바이스와 사용자 사이의 입력 인터페이스 및 출력 인터페이스를 제공한다. 디스플레이 제어기(156)는 터치 감응형 디스플레이 시스템(112)으로부터/으로 전기 신호들을 수신하고/하거나 전송한다. 터치 감응형 디스플레이 시스템(112)은 사용자에게 시각적 출력을 디스플레이한다. 시각적 출력은 선택적으로 그래픽들, 텍스트, 아이콘들, 비디오 및 이들의 임의의 조합(총칭하여 "그래픽들"로 지칭됨)을 포함한다. 일부 실시예들에서, 시각적 출력의 일부 또는 전부가 사용자 인터페이스 객체들에 대응한다.
터치 감응형 디스플레이 시스템(112)은 햅틱/촉각적 접촉에 기초하여 사용자로부터의 입력을 수용하는 터치 감응형 표면, 센서 또는 센서들의 세트를 갖는다. 터치 감응형 디스플레이 시스템(112) 및 디스플레이 제어기(156)는 (메모리(102) 내의 임의의 연관된 모듈들 및/또는 명령어들의 세트들과 함께) 터치 감응형 디스플레이 시스템(112) 상의 접촉(및 접촉의 임의의 이동 또는 중단)을 검출하고, 검출된 접촉을 터치 감응형 디스플레이 시스템(112) 상에 디스플레이된 사용자 인터페이스 객체들(예컨대, 하나 이상의 소프트 키들, 아이콘들, 웹 페이지들 또는 이미지들)과의 상호작용으로 변환한다. 예시적인 실시예에서, 터치 감응형 디스플레이 시스템(112)과 사용자 사이의 접촉 지점은 사용자의 손가락 또는 스타일러스에 대응한다.
터치 감응형 디스플레이 시스템(112)은, 선택적으로, 액정 디스플레이(liquid crystal display, LCD) 기술, 발광 중합체 디스플레이(light emitting polymer display, LPD) 기술, 또는 발광 다이오드(light emitting diode, LED) 기술을 이용하지만, 다른 실시예들에서는 다른 디스플레이 기술들이 이용된다. 터치 감응형 디스플레이 시스템(112) 및 디스플레이 제어기(156)는, 선택적으로, 용량성, 저항성, 적외선 및 표면 음향파 기술들뿐만 아니라, 다른 근접 센서 어레이들 또는 터치 감응형 디스플레이 시스템(112)과의 하나 이상의 접촉 지점들을 판정하기 위한 다른 요소들을 포함하지만 이들로 제한되지 않는, 현재 알려져 있거나 추후에 개발될 복수의 터치 감지 기술들 중 임의의 것을 이용하여, 접촉 및 그의 임의의 이동 또는 중단을 검출한다. 예시적인 실시예에서, 미국 캘리포니아주 쿠퍼티노 소재의 Apple Inc.로부터의 iPhone®, iPod Touch®, 및 iPad®에서 발견되는 것과 같은 투영형 상호 정전용량식 감지 기술(projected mutual capacitance sensing technology)이 이용된다.
터치 감응형 디스플레이 시스템(112)은, 선택적으로, 100 dpi를 초과하는 비디오 해상도를 갖는다. 일부 실시예들에서, 터치 스크린 비디오 해상도는 400 dpi를 초과한다(예컨대, 500 dpi, 800 dpi, 또는 그 이상). 사용자는, 선택적으로, 스타일러스, 손가락 등과 같은 임의의 적합한 객체 또는 부속물을 사용하여 터치 감응형 디스플레이 시스템(112)과 접촉한다. 일부 실시예들에서, 사용자 인터페이스는 손가락 기반 접촉 및 제스처를 이용하여 작업하도록 설계되는데, 이는 터치 스크린 상의 손가락의 더 넓은 접촉 면적으로 인해 스타일러스 기반 입력보다 덜 정밀할 수 있다. 일부 실시예들에서, 디바이스는 대략적인 손가락 기반 입력을 사용자가 원하는 동작들을 수행하기 위한 정밀한 포인터/커서 위치 또는 커맨드로 변환한다.
일부 실시예들에서, 터치 스크린에 더하여, 디바이스(100)는, 선택적으로, 특정 기능들을 활성화시키거나 비활성화시키기 위한 터치패드를 포함한다. 일부 실시예들에서, 터치패드는, 터치 스크린과는 달리, 시각적 출력을 디스플레이하지 않는 디바이스의 터치 감응형 영역이다. 터치패드는, 선택적으로, 터치 감응형 디스플레이 시스템(112)과는 별개인 터치 감응형 표면, 또는 터치 스크린에 의해 형성된 터치 감응형 표면의 연장부이다.
디바이스(100)는, 또한, 다양한 컴포넌트들에 전력을 공급하기 위한 전력 시스템(162)을 포함한다. 전력 시스템(162)은, 선택적으로, 전력 관리 시스템, 하나 이상의 전원들(예컨대, 배터리, 교류 전류(alternating current, AC)), 재충전 시스템, 전력 고장 검출 회로, 전력 변환기 또는 인버터, 전력 상태 표시자(예컨대, 발광 다이오드(LED)), 및 휴대용 디바이스들 내에서의 전력의 생성, 관리 및 분배와 연관된 임의의 다른 컴포넌트들을 포함한다.
디바이스(100)는, 또한, 선택적으로 하나 이상의 광 센서들(164)(때때로 본 명세서에서 "이미지 센서" 또는 "카메라 조립체"로도 지칭됨)을 포함한다. 도 1a는 I/O 서브시스템(106) 내의 광 센서 제어기(158)와 커플링된 광 센서를 도시한다. 광 센서(들)(164)는 선택적으로 CCD(charge-coupled device) 또는 CMOS(complementary metal-oxide semiconductor) 포토트랜지스터들을 포함한다. 광 센서(들)(164)는 하나 이상의 렌즈를 통해 투영된 환경으로부터 광을 수신하고, 그 광을 이미지를 표현하는 데이터로 변환한다. 이미징 모듈(143)(카메라 모듈로도 지칭됨)과 함께, 광 센서(들)(164)는 선택적으로 정지 이미지들 및/또는 비디오를 캡처한다. 일부 실시예들에서, 광 센서는 디바이스(100)의 전면 상의 터치 감응형 디스플레이 시스템(112)의 반대편인 디바이스의 배면 상에 위치되어, 터치 스크린이 정지 및/또는 비디오 이미지 획득을 위한 뷰파인더로서 사용하도록 인에이블될 수 있게 한다. 일부 실시예들에서, 다른 광 센서가 (예를 들어, 셀카를 위해, 사용자가 터치 스크린 상에서 다른 화상 회의 참가자들을 보면서 화상 회의를 하기 위해, 등등을 위해) 사용자의 이미지가 획득되도록 디바이스의 전면 상에 위치된다.
디바이스(100)는, 또한, 선택적으로 하나 이상의 접촉 세기 센서들(165)을 포함한다. 도 1a는 I/O 서브시스템(106) 내의 세기 센서 제어기(159)와 커플링된 접촉 세기 센서를 도시한다. 접촉 세기 센서(들)(165)는 선택적으로 하나 이상의 압전 저항 스트레인 게이지, 용량성 힘 센서, 전기적 힘 센서, 압전 힘 센서, 광학적 힘 센서, 용량성 터치 감응형 표면, 또는 다른 세기 센서들(예를 들면, 터치 감응형 표면 상의 접촉 힘(또는 압력)을 측정하는 데 사용되는 센서들)을 포함한다. 접촉 세기 센서(들)(165)는 환경으로부터 접촉 세기 정보(예컨대, 압력 정보 또는 압력 정보에 대한 프록시(proxy))를 수신한다. 일부 실시예들에서, 적어도 하나의 접촉 세기 센서는 터치 감응형 표면(예컨대, 터치 감응형 디스플레이 시스템(112))과 함께 위치(collocate)되거나 그에 근접한다. 일부 실시예들에서, 적어도 하나의 접촉 세기 센서는 디바이스(100)의 전면 상에 위치된 터치 스크린 디스플레이 시스템(112)의 반대편인 디바이스(100)의 배면 상에 위치된다.
디바이스(100)는 또한 선택적으로 하나 이상의 근접 센서들(166)을 포함한다. 도 1a는 주변기기 인터페이스(118)와 커플링된 근접 센서(166)를 도시한다. 대안으로, 근접 센서(166)는 I/O 서브시스템(106) 내의 입력 제어기(160)와 커플링된다. 일부 실시예들에서, 근접 센서는 다기능 디바이스가 사용자의 귀 근처에 배치될 때(예컨대, 사용자가 전화 통화를 하고 있을 때), 터치 감응형 디스플레이 시스템(112)을 턴오프하고 디스에이블시킨다.
디바이스(100)는, 또한, 선택적으로 하나 이상의 촉각적 출력 생성기들(163)을 포함한다. 도 1a는 I/O 서브시스템(106) 내의 햅틱 피드백 제어기(161)와 커플링된 촉각적 출력 생성기를 도시한다. 촉각적 출력 생성기(들)(163)는 선택적으로 스피커 또는 다른 오디오 컴포넌트와 같은 하나 이상의 전자음향 디바이스들, 및/또는 모터, 솔레노이드, 전기활성 중합체, 압전 액추에이터, 정전 액추에이터, 또는 다른 촉각적 출력 생성 컴포넌트(예컨대, 전기 신호들을 디바이스 상의 촉각적 출력들로 변환하는 컴포넌트)와 같이, 에너지를 선형 모션(linear motion)으로 변환하는 전자기계 디바이스들을 포함한다. 촉각적 출력 생성기(들)(163)는 햅틱 피드백 모듈(133)로부터 촉각적 피드백 생성 명령어들을 수신하고, 디바이스(100)의 사용자에 의해 감지될 수 있는 디바이스(100) 상의 촉각적 출력들을 생성한다. 일부 실시예들에서, 적어도 하나의 촉각적 출력 생성기는 터치 감응형 표면(예컨대, 터치 감응형 디스플레이 시스템(112))과 함께 위치되거나 그에 근접하며, 선택적으로, 터치 감응형 표면을 수직으로(예컨대, 디바이스(100)의 표면 내/외로) 또는 측방향으로(예컨대, 디바이스(100)의 표면과 동일한 평면에서 전후로) 이동시킴으로써 촉각적 출력을 생성한다. 일부 실시예들에서, 적어도 하나의 촉각적 출력 생성기 센서는 디바이스(100)의 전면 상에 위치된 터치 감응형 디스플레이 시스템(112)의 반대편인 디바이스(100)의 배면 상에 위치된다.
디바이스(100)는 또한 선택적으로 디바이스의 위치(예컨대, 자세)에 관한 정보를 획득하기 위한(예컨대, 관성 측정 유닛(inertial measurement unit, IMU)의 일부로서) 하나 이상의 가속도계들(167), 자이로스코프들(168), 및/또는 자력계들(169)을 포함한다. 도 1a는 주변기기 인터페이스(118)와 커플링된 센서들(167, 168, 169)을 도시한다. 대안으로, 센서들(167, 168, 169)은 선택적으로 I/O 서브시스템(106) 내의 입력 제어기(160)와 커플링된다. 일부 실시예들에서, 하나 이상의 가속도계들로부터 수신된 데이터의 분석에 기초하여 터치 스크린 디스플레이 상에 세로보기(portrait view) 또는 가로보기(landscape view)로 정보가 디스플레이된다. 디바이스(100)는, 선택적으로, 디바이스(100)의 위치에 관한 정보를 획득하기 위한 GPS(또는 GLONASS 또는 다른 글로벌 내비게이션 시스템) 수신기를 포함한다.
일부 실시예들에서, 메모리(102)에 저장된 소프트웨어 컴포넌트들은 운영 체제(126), 통신 모듈(또는 명령어들의 세트)(128), 접촉/모션 모듈(또는 명령어들의 세트)(130), 그래픽 모듈(또는 명령어들의 세트)(132), 햅틱 피드백 모듈(또는 명령어들의 세트)(133), 텍스트 입력 모듈(또는 명령어들의 세트)(134), GPS 모듈(또는 명령어들의 세트)(135), 및 애플리케이션들(또는 명령어들의 세트들)(136)을 포함한다. 또한, 일부 실시예들에서, 메모리(102)는, 도 1a 및 도 3에 도시된 바와 같이, 디바이스/글로벌 내부 상태(157)를 저장한다. 디바이스/글로벌 내부 상태(157)는, 존재하는 경우, 어느 애플리케이션들이 현재 활성인지를 나타내는 활성 애플리케이션 상태; 어떤 애플리케이션들, 뷰들 또는 다른 정보가 터치 감응형 디스플레이 시스템(112)의 다양한 영역들을 점유하는지를 나타내는 디스플레이 상태; 디바이스의 다양한 센서들 및 다른 입력 또는 제어 디바이스들(116)로부터 획득된 정보를 포함하는 센서 상태; 및 디바이스의 위치 및/또는 자세에 관한 위치 및/또는 위치관련 정보 중 하나 이상을 포함한다.
운영 체제(126)(예컨대, iOS, MacOS, Darwin, LINUX, UNIX, WINDOWS, 또는 VxWorks와 같은 내장형 운영 체제)는 일반적인 시스템 태스크들(예컨대, 메모리 관리, 저장 디바이스 제어, 전력 관리 등)을 제어 및 관리하기 위한 다양한 소프트웨어 컴포넌트들 및/또는 드라이버들을 포함하고, 다양한 하드웨어 및 소프트웨어 컴포넌트들 사이의 통신을 용이하게 한다.
통신 모듈(128)은 하나 이상의 외부 포트들(124)을 통한 다른 디바이스들과의 통신을 가능하게 하고, 또한, RF 회로부(108) 및/또는 외부 포트(124)에 의해 수신되는 데이터를 처리하기 위한 다양한 소프트웨어 컴포넌트들을 포함한다. 외부 포트(124)(예컨대, USB, 파이어와이어(FIREWIRE) 등)는 다른 디바이스들에 직접적으로 또는 네트워크(예컨대, 인터넷, 무선 LAN 등)를 통해 간접적으로 커플링하도록 구성된다. 일부 실시예들에서, 외부 포트는 미국 캘리포니아주 쿠퍼티노 소재의 Apple Inc.로부터의 일부 iPhone®, iPod Touch®, 및 iPad® 디바이스들에서 사용되는 30-핀 커넥터와 동일하거나 유사하고/하거나 호환가능한 멀티-핀(예컨대, 30-핀) 커넥터이다. 일부 실시예들에서, 외부 포트는 미국 캘리포니아주 쿠퍼티노 소재의 Apple Inc.로부터의 일부 iPhone®, iPod Touch®, 및 iPad® 디바이스들에서 사용되는 라이트닝 커넥터(Lightning connector)와 동일하거나 유사하고/하거나 호환가능한 라이트닝 커넥터이다.
접촉/모션 모듈(130)은, 선택적으로, (디스플레이 제어기(156)와 함께) 터치 감응형 디스플레이 시스템(112), 및 다른 터치 감응형 디바이스들(예컨대, 터치패드 또는 물리적 클릭 휠)과의 접촉을 검출한다. 접촉/모션 모듈(130)은 접촉이 발생했는지의 여부를 판정하는 것(예컨대, 손가락-다운 이벤트(finger-down event)를 검출하는 것), 접촉의 세기(예컨대, 접촉의 힘 또는 압력, 또는 접촉의 힘 또는 압력에 대한 대체물)를 판정하는 것, 접촉의 이동이 있는지의 여부를 판정하고 터치 감응형 표면을 가로지르는 이동을 추적하는 것(예컨대, 하나 이상의 손가락-드래그 이벤트(finger-dragging event)를 검출하는 것), 및 접촉이 중단되었는지의 여부를 판정하는 것(예컨대, 손가락-업 이벤트(finger-up event) 또는 접촉 중단을 검출하는 것)과 같은, (예컨대, 손가락에 의한 또는 스타일러스에 의한) 접촉의 검출에 관련된 다양한 동작들을 수행하기 위한 소프트웨어 컴포넌트들을 포함한다. 접촉/모션 모듈(130)은 터치 감응형 표면으로부터 접촉 데이터를 수신한다. 일련의 접촉 데이터에 의해 표현되는 접촉 지점의 이동을 판정하는 것은, 선택적으로, 접촉 지점의 속력(크기), 속도(크기 및 방향), 및/또는 가속도(크기 및/또는 방향의 변화)를 판정하는 것을 포함한다. 이러한 동작들은, 선택적으로, 단일 접촉들(예컨대, 한 손가락 접촉들 또는 스타일러스 접촉들)에 또는 복수의 동시 접촉(예컨대, "멀티터치"/다수의 손가락 접촉 및/또는 스타일러스 접촉)에 적용된다. 일부 실시예들에서, 접촉/모션 모듈(130) 및 디스플레이 제어기(156)는 터치패드 상의 접촉을 검출한다.
접촉/모션 모듈(130)은, 선택적으로, 사용자에 의한 제스처 입력을 검출한다. 터치 감응형 표면 상에서의 상이한 제스처들은 상이한 접촉 패턴들(예컨대, 검출된 접촉들의 상이한 모션들, 타이밍들, 및/또는 세기들)을 갖는다. 따라서, 제스처는, 선택적으로, 특정 접촉 패턴을 검출함으로써 검출된다. 예를 들어, 손가락 탭 제스처(finger tap gesture)를 검출하는 것은 손가락-다운 이벤트를 검출한 다음에 손가락-다운 이벤트와 동일한 위치(또는 실질적으로 동일한 위치)에서(예를 들어, 아이콘의 위치에서) 손가락-업(리프트오프) 이벤트를 검출하는 것을 포함한다. 다른 예로서, 터치 감응형 표면 상에서 손가락 스와이프 제스처(finger swipe gesture)를 검출하는 것은 손가락-다운 이벤트를 검출한 다음에 하나 이상의 손가락-드래그 이벤트들을 검출하고, 그에 후속하여 손가락-업(리프트오프) 이벤트를 검출하는 것을 포함한다. 유사하게, 탭, 스와이프, 드래그, 및 다른 제스처들은 선택적으로 스타일러스를 위한 특정 접촉 패턴을 검출함으로써 스타일러스를 위해 검출된다.
그래픽 모듈(132)은 디스플레이되는 그래픽의 시각적 효과(예컨대, 밝기, 투명도, 채도, 콘트라스트 또는 다른 시각적 속성)를 변경하기 위한 컴포넌트들을 포함하는, 터치 감응형 디스플레이 시스템(112) 또는 다른 디스플레이 상에서 그래픽을 렌더링 및 디스플레이하기 위한 다양한 공지된 소프트웨어 컴포넌트들을 포함한다. 본 명세서에서 사용되는 바와 같이, "그래픽"이라는 용어는, 텍스트, 웹 페이지들, 아이콘들(예컨대, 소프트 키들을 포함하는 사용자 인터페이스 객체들), 디지털 이미지들, 비디오들, 애니메이션들 등을 제한 없이 포함하는, 사용자에게 디스플레이될 수 있는 임의의 객체를 포함한다.
일부 실시예들에서, 그래픽 모듈(132)은 사용될 그래픽을 표현하는 데이터를 저장한다. 각각의 그래픽에는, 선택적으로, 대응하는 코드가 할당된다. 그래픽 모듈(132)은, 필요한 경우, 좌표 데이터 및 다른 그래픽 속성 데이터와 함께, 디스플레이될 그래픽을 특정하는 하나 이상의 코드들을 애플리케이션들 등으로부터 수신하며, 이어서 스크린 이미지 데이터를 생성하여 디스플레이 제어기(156)에 출력한다.
햅틱 피드백 모듈(133)은 디바이스(100)와의 사용자 상호작용들에 응답하여 디바이스(100) 상의 하나 이상의 위치들에서 촉각적 출력들을 생성하기 위하여 촉각적 출력 생성기(들)(163)에 의해 이용되는 명령어들을 생성하기 위한 다양한 소프트웨어 컴포넌트들을 포함한다.
선택적으로 그래픽 모듈(132)의 컴포넌트인 텍스트 입력 모듈(134)은 다양한 애플리케이션들(예컨대, 연락처 모듈(137), 이메일 혼란(140), IM 모듈(141), 웹 브라우저 모듈(147), 및/또는 텍스트 입력을 수용하는 임의의 다른 애플리케이션들)에 텍스트를 입력하기 위한 소프트 키보드들을 제공한다.
GPS 모듈(135)은 디바이스의 위치를 판정하고, 이 정보를 다양한 애플리케이션들에서의 사용을 위해 (예컨대, 위치 기반 다이얼링에서 사용하기 위해 전화(138)에, 사진/비디오 메타데이터로서 카메라(143)에, 그리고 날씨 위젯들, 지역 옐로 페이지 위젯들 및 지도/내비게이션 위젯들과 같은 위치 기반 서비스들을 제공하는 애플리케이션들에) 제공한다.
애플리케이션들(136)은 선택적으로 하기의 모듈들(또는 명령어들의 세트들) 또는 이들의 서브세트 또는 수퍼세트를 포함한다: 연락처 모듈(137)(때때로, 주소록 또는 연락처 리스트로 지칭됨); 전화 모듈(138); 화상 회의 모듈(139); 이메일 클라이언트 모듈(140); 인스턴트 메시징(IM) 모듈(141); 건강/운동 모듈(142); 정지 및/또는 비디오 이미지들을 위한 카메라 모듈(143); 이미지 관리 모듈(144); 웹 브라우저 모듈(147); 캘린더 모듈(148); 날씨 위젯, 주식 위젯, 계산기 위젯, 알람 시계 위젯, 사전 위젯, 및 사용자에 의해 획득되는 다른 위젯들뿐 아니라 사용자 생성 위젯들 중 하나 이상을 선택적으로 포함하는 위젯 모듈들(149); 사용자 생성 위젯들을 만들기 위한 위젯 생성기 모듈(150); 검색 모듈(151); 비디오 재생기 모듈 및 음악 재생기 모듈로 선택적으로 구성된 비디오 및 음악 재생기 모듈(152); 메모 모듈(153); 지도 모듈(154); 및/또는 온라인 비디오 모듈(155).
선택적으로 메모리(102) 내에 저장되는 다른 애플리케이션들(136)의 예들은 다른 워드 프로세싱 애플리케이션들, 다른 이미지 편집 애플리케이션들, 드로잉 애플리케이션들, 프레젠테이션 애플리케이션들, JAVA-인에이블형 애플리케이션들, 암호화, 디지털 저작권 관리, 음성 인식 및 음성 복제를 포함한다.
앞서 식별된 모듈들 및 애플리케이션들 각각은 전술된 하나 이상의 기능들 및 본 출원에서 기술되는 방법들(예컨대, 컴퓨터 구현 방법들 및 본 명세서에서 기술되는 다른 정보 프로세싱 방법들)을 수행하기 위한 실행가능 명령어들의 세트에 대응한다. 이러한 모듈들(즉, 명령어들의 세트들)은 개별적인 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없으며, 이에 따라 이러한 모듈들의 다양한 서브세트들은, 선택적으로, 다양한 실시예들에서 조합되거나 다른 방식으로 재배열된다. 일부 실시예들에서, 메모리(102)는, 선택적으로, 앞서 식별된 모듈들 및 데이터 구조들의 서브세트를 저장한다. 또한, 메모리(102)는, 선택적으로, 전술되지 않은 추가의 모듈들 및 데이터 구조들을 저장한다.
일부 실시예들에서, 디바이스(100)는 디바이스 상의 사전정의된 세트의 기능들의 동작이 터치 스크린 및/또는 터치패드를 통해 전용으로 수행되는 디바이스이다. 터치 스크린 및/또는 터치패드를 디바이스(100)의 동작을 위한 주 입력 제어 디바이스로서 사용함으로써, 디바이스(100) 상의 (푸시 버튼들, 다이얼들 등과 같은) 물리적 입력 제어 디바이스들의 수가 선택적으로 감소된다.
전적으로 터치 스크린 및/또는 터치패드를 통해 수행되는 사전정의된 세트의 기능들은, 선택적으로, 사용자 인터페이스들 간의 내비게이션을 포함한다. 일부 실시예들에서, 터치패드는, 사용자에 의해 터치될 때, 디바이스(100)를 디바이스(100) 상에 디스플레이되는 임의의 사용자 인터페이스로부터 메인, 홈 또는 루트 메뉴로 내비게이팅한다. 그러한 실시예들에서, "메뉴 버튼"이 터치패드를 사용하여 구현된다. 일부 다른 실시예들에서, 메뉴 버튼은 터치패드 대신에 물리적 푸시 버튼 또는 다른 물리적 입력 제어 디바이스이다.
도 1b는 일부 실시예들에 따른, 이벤트 처리를 위한 예시적인 컴포넌트들을 도시한 블록도이다. 일부 실시예들에서, 메모리(102(도 1a) 또는 370(도 3))는 (예컨대, 운영 체제(126)에서의) 이벤트 분류기(170) 및 각자의 애플리케이션(136-1)(예컨대, 전술된 애플리케이션들(136, 137 내지 155, 380 내지 390) 중 임의의 것)을 포함한다.
이벤트 분류기(170)는 이벤트 정보를 수신하고, 이벤트 정보를 전달할 애플리케이션(136-1), 및 애플리케이션(136-1)의 애플리케이션 뷰(191)를 결정한다. 이벤트 분류기(170)는 이벤트 모니터(171) 및 이벤트 디스패처 모듈(event dispatcher module)(174)을 포함한다. 일부 실시예들에서, 애플리케이션(136-1)은 애플리케이션이 활성 상태이거나 실행 중일 때 터치 감응형 디스플레이 시스템(112) 상에 디스플레이되는 현재 애플리케이션 뷰(들)를 나타내는 애플리케이션 내부 상태(192)를 포함한다. 일부 실시예들에서, 디바이스/글로벌 내부 상태(157)는 이벤트 분류기(170)에 의해 어느 애플리케이션(들)이 현재 활성인지를 판정하는 데 이용되며, 애플리케이션 내부 상태(192)는 이벤트 분류기(170)에 의해 이벤트 정보를 전달할 애플리케이션 뷰들(191)을 결정하는 데 이용된다.
일부 실시예들에서, 애플리케이션 내부 상태(192)는 애플리케이션(136-1)이 실행을 재개할 때 이용될 재개 정보, 애플리케이션(136-1)에 의해 디스플레이되고 있거나 디스플레이될 준비가 된 정보를 나타내는 사용자 인터페이스 상태 정보, 사용자가 애플리케이션(136-1)의 이전 상태 또는 뷰로 되돌아가는 것을 가능하게 하기 위한 상태 큐(queue), 및 사용자에 의해 취해진 이전 액션들의 재실행(redo)/실행취소(undo) 큐 중 하나 이상과 같은 추가 정보를 포함한다.
이벤트 모니터(171)는 주변기기 인터페이스(118)로부터 이벤트 정보를 수신한다. 이벤트 정보는 서브이벤트(예컨대, 멀티-터치 제스처의 일부로서 터치 감응형 디스플레이 시스템(112) 상의 사용자 터치)에 대한 정보를 포함한다. 주변기기 인터페이스(118)는 I/O 서브시스템(106) 또는 센서, 예컨대 근접 센서(166), 가속도계(들)(167), 자이로스코프(들)(168), 자력계(들)(169), 및/또는 (오디오 회로부(110)를 통한) 마이크로폰(113)으로부터 수신하는 정보를 전송한다. 주변기기 인터페이스(118)가 I/O 서브시스템(106)으로부터 수신하는 정보는 터치 감응형 디스플레이 시스템(112) 또는 터치 감응형 표면으로부터의 정보를 포함한다.
일부 실시예들에서, 이벤트 모니터(171)는 요청들을 사전결정된 간격으로 주변기기 인터페이스(118)로 전송한다. 이에 응답하여, 주변기기 인터페이스(118)는 이벤트 정보를 송신한다. 다른 실시예들에서, 주변기기 인터페이스(118)는 중요한 이벤트(예컨대, 사전결정된 잡음 임계치를 초과하는 입력 및/또는 사전결정된 지속기간 초과 동안의 입력을 수신하는 것)가 있을 때에만 이벤트 정보를 송신한다.
일부 실시예들에서, 이벤트 분류기(170)는 또한 히트 뷰(hit view) 판정 모듈(172) 및/또는 활성 이벤트 인식기 결정 모듈(173)을 포함한다.
히트 뷰 판정 모듈(172)은 터치 감응형 디스플레이 시스템(112)이 하나 초과의 뷰를 디스플레이할 때 하나 이상의 뷰들 내에서 서브이벤트가 발생한 장소를 판정하기 위한 소프트웨어 절차들을 제공한다. 뷰들은 사용자가 디스플레이 상에서 볼 수 있는 제어부들 및 다른 요소들로 구성된다.
애플리케이션과 연관된 사용자 인터페이스의 다른 태양은 본 명세서에서 때때로 애플리케이션 뷰들 또는 사용자 인터페이스 창(user interface window)들로 지칭되는 한 세트의 뷰들인데, 여기서 정보가 디스플레이되고 터치 기반 제스처가 발생한다. 터치가 검출되는 (개개의 애플리케이션의) 애플리케이션 뷰들은 선택적으로 애플리케이션의 프로그램 또는 뷰 계층구조 내의 프로그램 레벨들에 대응한다. 예를 들어, 터치가 검출되는 최하위 레벨의 뷰는 선택적으로 히트 뷰로 지칭되고, 적절한 입력들로서 인식되는 이벤트들의 세트는, 선택적으로, 터치 기반 제스처를 시작하는 초기 터치의 히트 뷰에 적어도 부분적으로 기초하여 결정된다.
히트 뷰 판정 모듈(172)은 터치 기반 제스처의 서브이벤트들과 관련된 정보를 수신한다. 애플리케이션이 계층구조에서 조직화된 다수의 뷰들을 갖는 경우, 히트 뷰 판정 모듈(172)은 히트 뷰를, 서브이벤트를 처리해야 하는 계층구조 내의 최하위 뷰로서 식별한다. 대부분의 상황에서, 히트 뷰는 개시되는 서브이벤트가 발생하는 최하위 레벨 뷰이다(즉, 이벤트 또는 잠재적 이벤트를 형성하는 서브이벤트들의 시퀀스에서의 제1 서브이벤트임). 일단 히트 뷰가 히트 뷰 판정 모듈에 의해 식별되면, 히트 뷰는 전형적으로 그것이 히트 뷰로서 식별되게 하는 것과 동일한 터치 또는 입력 소스에 관련된 모든 서브이벤트들을 수신한다.
활성 이벤트 인식기 결정 모듈(173)은 뷰 계층구조 내에서 어느 뷰 또는 뷰들이 서브이벤트들의 특정 시퀀스를 수신해야 하는지를 결정한다. 일부 실시예들에서, 활성 이벤트 인식기 결정 모듈(173)은 히트 뷰만이 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 다른 실시예들에서, 활성 이벤트 인식기 결정 모듈(173)은 서브이벤트의 물리적 위치를 포함하는 모든 뷰들이 적극 참여 뷰(actively involved view)들인 것으로 판정하고, 그에 따라 모든 적극 참여 뷰들이 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 다른 실시예들에서, 터치 서브이벤트들이 전적으로 하나의 특정 뷰와 연관된 영역으로 한정되었더라도, 계층구조 내의 상위 뷰들은 여전히 적극 참여 뷰들로서 유지될 것이다.
이벤트 디스패처 모듈(174)은 이벤트 정보를 이벤트 인식기(예컨대, 이벤트 인식기(180))로 디스패치한다. 활성 이벤트 인식기 결정 모듈(173)을 포함하는 일부 실시예들에서, 이벤트 디스패처 모듈(174)은 이벤트 정보를 활성 이벤트 인식기 결정 모듈(173)에 의해 결정된 이벤트 인식기에 전달한다. 일부 실시예들에서, 이벤트 디스패처 모듈(174)은 이벤트 큐 내에 이벤트 정보를 저장하는데, 이벤트 정보는 개개의 이벤트 수신기 모듈(182)에 의해 인출된다.
일부 실시예들에서, 운영 체제(126)는 이벤트 분류기(170)를 포함한다. 대안으로, 애플리케이션(136-1)은 이벤트 분류기(170)를 포함한다. 또 다른 실시예들에서, 이벤트 분류기(170)는 독립형 모듈이거나, 또는 접촉/모션 모듈(130)과 같이 메모리(102)에 저장되는 다른 모듈의 일부이다.
일부 실시예들에서, 애플리케이션(136-1)은 복수의 이벤트 핸들러들(190) 및 하나 이상의 애플리케이션 뷰들(191)을 포함하며, 이들의 각각은 애플리케이션의 사용자 인터페이스의 각각의 뷰 내에 발생하는 터치 이벤트들을 처리하기 위한 명령어들을 포함한다. 애플리케이션(136-1)의 각각의 애플리케이션 뷰(191)는 하나 이상의 이벤트 인식기들(180)을 포함한다. 전형적으로, 개개의 애플리케이션 뷰(191)는 복수의 이벤트 인식기들(180)을 포함한다. 다른 실시예들에서, 이벤트 인식기들(180) 중 하나 이상은 사용자 인터페이스 키트 또는 애플리케이션(136-1)이 방법들 및 다른 속성들을 물려받는 상위 레벨 객체와 같은 별개의 모듈의 일부이다. 일부 실시예들에서, 개개의 이벤트 핸들러(190)는 데이터 업데이터(176), 객체 업데이터(177), GUI 업데이터(178), 및/또는 이벤트 분류기(170)로부터 수신된 이벤트 데이터(179) 중 하나 이상을 포함한다. 이벤트 핸들러(190)는, 선택적으로, 데이터 업데이터(176), 객체 업데이터(177) 또는 GUI 업데이터(178)를 사용하거나 호출하여 애플리케이션 내부 상태(192)를 업데이트한다. 대안으로, 애플리케이션 뷰들(191) 중 하나 이상은 하나 이상의 개개의 이벤트 핸들러들(190)을 포함한다. 또한, 일부 실시예들에서, 데이터 업데이터(176), 객체 업데이터(177), 및 GUI 업데이터(178) 중 하나 이상은 개개의 애플리케이션 뷰(191) 내에 포함된다.
개개의 이벤트 인식기(180)는 이벤트 분류기(170)로부터 이벤트 정보(예컨대, 이벤트 데이터(179))를 수신하고 그 이벤트 정보로부터 이벤트를 식별한다. 이벤트 인식기(180)는 이벤트 수신기(182) 및 이벤트 비교기(184)를 포함한다. 일부 실시예들에서, 이벤트 인식기(180)는 또한 적어도 메타데이터(183) 및 이벤트 전달 명령어들(188)(선택적으로 서브이벤트 전달 명령어들을 포함함)의 서브세트를 포함한다.
이벤트 수신기(182)는 이벤트 분류기(170)로부터 이벤트 정보를 수신한다. 이벤트 정보는 서브이벤트, 예를 들어 터치 또는 터치 이동에 관한 정보를 포함한다. 서브이벤트에 따라서, 이벤트 정보는 또한 서브이벤트의 위치와 같은 추가 정보를 포함한다. 서브이벤트가 터치의 모션과 관련되는 경우, 이벤트 정보는 또한 선택적으로 서브이벤트의 속력 및 방향을 포함한다. 일부 실시예들에서, 이벤트들은 하나의 배향으로부터 다른 배향으로(예컨대, 세로 배향으로부터 가로 배향으로, 또는 그 반대로)의 디바이스의 회전을 포함하며, 이벤트 정보는 디바이스의 현재 배향(디바이스 자세로도 지칭됨)에 관한 대응하는 정보를 포함한다.
이벤트 비교기(184)는 이벤트 정보를 사전정의된 이벤트 또는 서브이벤트 정의들과 비교하고, 그 비교에 기초하여, 이벤트 또는 서브이벤트를 판정하거나, 이벤트 또는 서브이벤트의 상태를 판정 또는 업데이트한다. 일부 실시예들에서, 이벤트 비교기(184)는 이벤트 정의들(186)을 포함한다. 이벤트 정의들(186)은 이벤트들(예컨대, 서브이벤트들의 사전정의된 시퀀스들), 예를 들어 이벤트 1(187-1), 이벤트 2(187-2) 등의 정의들을 포함한다. 일부 실시예들에서, 이벤트(187) 내의 서브이벤트들은, 예를 들어, 터치 시작, 터치 종료, 터치 이동, 터치 취소, 및 다중 터치를 포함한다. 일례에서, 이벤트 1(187-1)에 대한 정의는 디스플레이된 객체 상에의 더블 탭(double tap)이다. 더블 탭은, 예를 들어 사전결정된 단계 동안의 디스플레이된 객체 상의 제1 터치(터치 시작), 사전결정된 단계 동안의 제1 리프트오프(터치 종료), 사전결정된 단계 동안의 디스플레이된 객체 상의 제2 터치(터치 시작), 및 사전결정된 단계 동안의 제2 리프트오프(터치 종료)를 포함한다. 다른 예에서, 이벤트 2(187-2)에 대한 정의는 디스플레이된 객체 상에의 드래깅이다. 드래그는, 예를 들어, 사전결정된 페이즈 동안의 디스플레이된 객체 상의 터치(또는 접촉), 터치 감응형 디스플레이 시스템(112)을 가로지르는 터치의 이동, 및 터치의 리프트오프(터치 종료)를 포함한다. 일부 실시예들에서, 이벤트는 또한 하나 이상의 연관된 이벤트 핸들러들(190)에 대한 정보를 포함한다.
일부 실시예들에서, 이벤트 정의(187)는 개개의 사용자 인터페이스 객체에 대한 이벤트의 정의를 포함한다. 일부 실시예들에서, 이벤트 비교기(184)는 어느 사용자 인터페이스 객체가 서브이벤트와 연관되어 있는지를 판정하도록 히트 테스트(hit test)를 수행한다. 예를 들어, 3개의 사용자 인터페이스 객체들이 터치 감응형 디스플레이 시스템(112) 상에 디스플레이된 애플리케이션 뷰에서, 터치 감응형 디스플레이 시스템(112) 상에서 터치가 검출되는 경우에, 이벤트 비교기(184)는 3개의 사용자 인터페이스 객체들 중 어느 것이 터치(서브이벤트)와 연관되어 있는지를 판정하도록 히트 테스트를 수행한다. 각각의 디스플레이된 객체가 개개의 이벤트 핸들러(190)와 연관되는 경우, 이벤트 비교기는 어느 이벤트 핸들러(190)가 활성화되어야 하는지를 결정하는 데 히트 테스트의 결과를 이용한다. 예를 들어, 이벤트 비교기(184)는 히트 테스트를 트리거하는 객체 및 서브이벤트와 연관된 이벤트 핸들러를 선택한다.
일부 실시예들에서, 개개의 이벤트(187)에 대한 정의는, 또한, 서브이벤트들의 시퀀스가 이벤트 인식기의 이벤트 타입에 대응하는지 대응하지 않는지의 여부가 결정된 후까지 이벤트 정보의 전달을 지연시키는 지연된 액션들을 포함한다.
개개의 이벤트 인식기(180)가, 일련의 서브이벤트들이 이벤트 정의들(186) 내의 이벤트들 중 어떠한 것과도 매칭되지 않는 것으로 판정하는 경우, 개개의 이벤트 인식기(180)는 이벤트 불가능, 이벤트 실패, 또는 이벤트 종료 상태에 진입하고, 그 후 개개의 이벤트 인식기는 터치 기반 제스처의 후속 서브이벤트들을 무시한다. 이러한 상황에서, 만일 있다면, 히트 뷰에 대해 활성 상태로 유지되는 다른 이벤트 인식기들이 진행 중인 터치 기반 제스처의 서브이벤트들을 계속해서 추적 및 프로세싱한다.
일부 실시예들에서, 개개의 이벤트 인식기(180)는 이벤트 전달 시스템이 어떻게 적극 참여 이벤트 인식기들에 대한 서브이벤트 전달을 수행해야 하는지를 나타내는 구성가능한 속성들, 플래그(flag)들, 및/또는 목록들을 갖는 메타데이터(183)를 포함한다. 일부 실시예들에서, 메타데이터(183)는 이벤트 인식기들이 어떻게 서로 상호작용하는지, 또는 상호작용하게 되는지를 나타내는 구성가능한 속성들, 플래그들, 및/또는 목록들을 포함한다. 일부 실시예들에서, 메타데이터(183)는, 서브이벤트들이 뷰 또는 프로그램 계층구조에서의 다양한 레벨들에 전달되는지의 여부를 나타내는 구성가능한 속성들, 플래그들, 및/또는 목록들을 포함한다.
일부 실시예들에서, 개개의 이벤트 인식기(180)는 이벤트의 하나 이상의 특정 서브이벤트들이 인식될 때 이벤트와 연관된 이벤트 핸들러(190)를 활성화시킨다. 일부 실시예들에서, 개개의 이벤트 인식기(180)는 이벤트와 연관된 이벤트 정보를 이벤트 핸들러(190)에 전달한다. 이벤트 핸들러(190)를 활성화시키는 것은 개개의 히트 뷰에 서브이벤트들을 전송(및 지연 전송)하는 것과는 별개이다. 일부 실시예들에서, 이벤트 인식기(180)는 인식된 이벤트와 연관된 플래그를 보내고, 그 플래그와 연관된 이벤트 핸들러(190)는 그 플래그를 캐치하고 사전정의된 프로세스를 수행한다.
일부 실시예들에서, 이벤트 전달 명령어들(188)은 이벤트 핸들러를 활성화하지 않으면서 서브이벤트에 관한 이벤트 정보를 전달하는 서브이벤트 전달 명령어들을 포함한다. 대신에, 서브이벤트 전달 명령어들은 일련의 서브이벤트들과 연관된 이벤트 핸들러들에 또는 적극 참여 뷰들에 이벤트 정보를 전달한다. 일련의 서브이벤트들 또는 적극 참여 뷰들과 연관된 이벤트 핸들러들은 이벤트 정보를 수신하고 사전결정된 프로세스를 수행한다.
일부 실시예들에서, 데이터 업데이터(176)는 애플리케이션(136-1)에서 이용되는 데이터를 생성 및 업데이트한다. 예를 들어, 데이터 업데이터(176)는 연락처 모듈(137)에서 이용되는 전화번호를 업데이트하거나, 비디오 재생기 모듈(145)에서 이용되는 비디오 파일을 저장한다. 일부 실시예들에서, 객체 업데이터(177)는 애플리케이션(136-1)에서 이용되는 객체들을 생성 및 업데이트한다. 예를 들어, 객체 업데이터(176)는 새로운 사용자 인터페이스 객체를 생성하거나, 또는 사용자 인터페이스 객체의 위치를 업데이트한다. GUI 업데이터(178)는 GUI를 업데이트한다. 예를 들어, GUI 업데이터(178)는 터치 감응형 디스플레이 상의 디스플레이를 위해 디스플레이 정보를 준비하고 이를 그래픽 모듈(132)로 전송한다.
일부 실시예들에서, 이벤트 핸들러(들)(190)는 데이터 업데이터(176), 객체 업데이터(177), 및 GUI 업데이터(178)를 포함하거나 이들에 액세스한다. 일부 실시예들에서, 데이터 업데이터(176), 객체 업데이터(177), 및 GUI 업데이터(178)는 개개의 애플리케이션(136-1) 또는 애플리케이션 뷰(191)의 단일 모듈 내에 포함된다. 다른 실시예들에서, 이들은 2개 이상의 소프트웨어 모듈들 내에 포함된다.
터치 감응형 디스플레이 상의 사용자 터치들의 이벤트 처리에 관한 전술한 논의는 또한 입력 디바이스들을 갖는 다기능 디바이스들(100)을 동작시키기 위한 다른 형태들의 사용자 입력들에도 적용되지만, 그 모두가 터치 스크린들 상에서 개시되는 것은 아니라는 것이 이해되어야 한다. 예를 들어, 단일 또는 다수의 키보드 누르기 또는 유지하기(hold)와 선택적으로 조화된 마우스 이동 및 마우스 버튼 누르기; 터치 패드 상에서의, 탭, 드래그, 스크롤 등과 같은 접촉 이동들; 펜 스타일러스 입력들; 디바이스의 이동; 구두 명령어들; 검출된 눈 이동들; 생체측정 입력들; 및/또는 이들의 임의의 조합은, 인식될 이벤트를 정의하는 서브이벤트들에 대응하는 입력들로서 선택적으로 이용된다.
도 2는 일부 실시예들에 따른, 터치 스크린(예컨대, 터치 감응형 디스플레이 시스템(112), 도 1a)을 갖는 휴대용 다기능 디바이스(100)를 도시한다. 터치 스크린은, 선택적으로, 사용자 인터페이스(UI)(200) 내에서 하나 이상의 그래픽들을 디스플레이한다. 이러한 실시예는 물론 하기에 기술되는 다른 실시예들에서, 사용자는, 예를 들어, 하나 이상의 손가락들(202)(도면에서 축척대로 도시되지 않음) 또는 하나 이상의 스타일러스들(203)(도면에서 축척대로 도시되지 않음)을 사용하여 그래픽 상에 제스처를 행함으로써 그래픽들 중 하나 이상을 선택하는 것이 가능하게 된다. 일부 실시예들에서, 하나 이상의 그래픽의 선택은 사용자가 하나 이상의 그래픽과의 접촉을 중단할 때 발생한다. 일부 실시예들에서, 제스처는, 선택적으로, 디바이스(100)와 접촉한 손가락의 하나 이상의 탭들, (좌측에서 우측으로의, 우측에서 좌측으로의, 상측으로의 그리고/또는 하측으로의) 하나 이상의 스와이프들, 및/또는 (우측에서 좌측으로의, 좌측에서 우측으로의, 상측으로의 그리고/또는 하측으로의) 롤링을 포함한다. 일부 실시예들 또는 상황들에서, 그래픽과의 부주의한 접촉이 그 그래픽을 선택하지 않는다. 예를 들면, 선택에 대응하는 제스처가 탭일 때, 애플리케이션 아이콘 위를 스윕(sweep)하는 스와이프 제스처는, 선택적으로, 대응하는 애플리케이션을 선택하지 않는다.
디바이스(100)는 또한 선택적으로 "홈" 또는 메뉴 버튼(204)과 같은 하나 이상의 물리적 버튼들을 포함한다. 전술된 바와 같이, 메뉴 버튼(204)은, 선택적으로, 디바이스(100) 상에서 선택적으로 실행되는 애플리케이션들의 세트 내의 임의의 애플리케이션(136)으로 내비게이팅하는 데 사용된다. 대안으로, 일부 실시예들에서, 메뉴 버튼은 터치 스크린 디스플레이 상에 디스플레이된 GUI에서 소프트 키로서 구현된다.
일부 실시예들에서, 디바이스(100)는 터치 스크린 디스플레이, 메뉴 버튼(204), 디바이스의 전원을 온/오프시키고 디바이스를 잠그기 위한 푸시 버튼(206), 음량 조절 버튼(들)(208), 가입자 식별 모듈(SIM) 카드 슬롯(210), 헤드셋 잭(212), 및 도킹/충전 외부 포트(124)를 포함한다. 푸시 버튼(206)은, 선택적으로, 버튼을 누르고 버튼을 사전정의된 시간 간격 동안 누른 상태로 유지함으로써 디바이스의 전원을 온/오프시키고/시키거나; 버튼을 누르고 사전정의된 시간 간격이 경과하기 전에 버튼을 누름해제함으로써 디바이스를 잠그고/잠그거나; 디바이스를 잠금해제하거나 잠금해제 프로세스를 개시하는 데 사용된다. 일부 실시예들에서, 디바이스(100)는 또한 마이크로폰(113)을 통해 일부 기능들의 활성화 또는 비활성화를 위한 구두 입력을 수신한다. 디바이스(100)는, 또한, 선택적으로 터치 감응형 디스플레이 시스템(112) 상의 접촉들의 세기를 검출하기 위한 하나 이상의 접촉 세기 센서(165) 및/또는 디바이스(100)의 사용자를 위해 촉각적 출력들을 생성하기 위한 하나 이상의 촉각적 출력 생성기(163)를 포함한다.
도 3은 일부 실시예들에 따른, 디스플레이 및 터치 감응형 표면을 갖는 예시적인 다기능 디바이스의 블록도이다. 디바이스(300)가 휴대용일 필요는 없다. 일부 실시예들에서, 디바이스(300)는, 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 멀티미디어 재생기 디바이스, 내비게이션 디바이스, (어린이 학습 장난감과 같은) 교육용 디바이스, 게이밍 시스템, 또는 제어 디바이스(예컨대, 가정용 또는 산업용 제어기)이다. 디바이스(300)는, 전형적으로, 하나 이상의 프로세싱 유닛(CPU)들(310), 하나 이상의 네트워크 또는 다른 통신 인터페이스들(360), 메모리(370), 및 이러한 컴포넌트들을 상호접속시키기 위한 하나 이상의 통신 버스들(320)을 포함한다. 통신 버스들(320)은, 선택적으로, 시스템 컴포넌트들을 상호접속시키고 이들 사이의 통신을 제어하는 회로부(때때로 칩셋이라고 지칭됨)를 포함한다. 디바이스(300)는, 전형적으로 터치 스크린 디스플레이인 디스플레이(340)를 포함하는 입출력(I/O) 인터페이스(330)를 포함한다. I/O 인터페이스(330)는 또한 선택적으로 키보드 및/또는 마우스(또는 다른 포인팅 디바이스)(350) 및 터치패드(355), (예컨대, 도 1a를 참조하여 전술한 촉각적 출력 생성기(들)(163)와 유사한) 디바이스(300) 상에 촉각적 출력들을 생성하기 위한 촉각적 출력 생성기(357), 및 센서들(359)(예컨대, 도 1a를 참조하여 전술한 센서(들)(112, 164, 165, 166, 167, 168, 169)와 유사한 터치 감응형, 광, 접촉 세기, 근접, 가속도, 자세, 및/또는 자기 센서들)을 포함한다. 메모리(370)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 솔리드 스테이트 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하며; 선택적으로 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 다른 비휘발성 솔리드 스테이트 저장 디바이스와 같은 비휘발성 메모리를 포함한다. 메모리(370)는, 선택적으로, CPU(들)(310)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. 일부 실시예들에서, 메모리(370)는 휴대용 다기능 디바이스(100)(도 1a)의 메모리(102)에 저장된 프로그램들, 모듈들 및 프로그램들과 유사한 데이터 구조들, 모듈들 및 데이터 구조들, 또는 그의 서브세트를 저장한다. 또한, 메모리(370)는, 선택적으로, 휴대용 다기능 디바이스(100)의 메모리(102) 내에 존재하지 않는 추가의 프로그램들, 모듈들 및 데이터 구조들을 저장한다. 예를 들어, 디바이스(300)의 메모리(370)는 선택적으로 그리기 모듈(380), 프레젠테이션 모듈(382), 워드 프로세싱 모듈(384), 웹사이트 제작 모듈(386), 디스크 저작 모듈(388), 및/또는 스프레드시트 모듈(390)을 저장하고, 반면에 휴대용 다기능 디바이스(100)(도 1a)의 메모리(102)는 선택적으로 이러한 모듈들을 저장하지 않는다.
도 3에서의 앞서 식별된 요소들 각각은, 선택적으로, 전술된 메모리 디바이스들 중 하나 이상에 저장된다. 앞서 식별된 모듈들 각각은 앞서 기술된 기능을 수행하기 위한 명령어들의 세트에 대응한다. 앞서 확인된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별개의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없으며, 따라서 다양한 실시예들에서 이들 모듈의 다양한 서브세트들이 선택적으로 조합되거나 다른 방식으로 재배열된다. 일부 실시예들에서, 메모리(370)는, 선택적으로, 앞서 식별된 모듈들 및 데이터 구조들의 서브세트를 저장한다. 또한, 메모리(370)는, 선택적으로, 전술되지 않은 추가의 모듈들 및 데이터 구조들을 저장한다.
사용자 인터페이스 및 연관된 프로세스
이제, 디스플레이, 터치 감응형 표면, 및 선택적으로, 터치 감응형 표면과의 접촉들의 세기를 검출하기 위한 하나 이상의 센서들을 갖는 휴대용 다기능 디바이스(PMD)(100), 또는 하나 이상의 프로세서들, 비일시적 메모리, 디스플레이, 및 입력 디바이스를 갖는 디바이스(300)와 같은 전자 디바이스 상에 구현될 수 있는 연관된 프로세스들 및 사용자 인터페이스("UI")들의 실시예들에 주목한다.
하기의 예들이 주로 손가락 입력들(예컨대, 손가락 접촉들, 손가락 탭 제스처들, 손가락 스와이프 제스처들 등)과 관련하여 주어지는 반면, 일부 실시예들에서, 손가락 입력들 중 하나 이상은 다른 입력 디바이스로부터의 입력(예컨대, 마우스 기반 입력 또는 스타일러스 입력)으로 대체되는 것이 이해되어야 한다. 예컨대, 스와이프 제스처는, 선택적으로, 마우스 클릭(예컨대, 접촉 대신) 및 뒤이은 스와이프의 경로를 따른 커서의 이동(예컨대, 접촉의 이동 대신)으로 대체된다. 다른 예로서, (예컨대, 접촉의 검출에 이어 접촉을 검출하는 것을 중지하는 것 대신에) 커서가 탭 제스처의 위치 위에 위치되어 있는 동안에 탭 제스처가 선택적으로 마우스 클릭으로 대체된다. 유사하게, 다수의 사용자 입력이 동시에 검출되는 경우, 다수의 컴퓨터 마우스가 선택적으로 동시에 사용되거나, 또는 마우스와 손가락 접촉들이 선택적으로 동시에 사용되는 것으로 이해하여야 한다.
도 4a 내지 도 4m은 일부 실시예들에 따른, 가상 기재를 검출하고 그 위에 객체들을 배치하기 위한 예시적인 사용자 인터페이스들을 도시한다. 이 도면들에서의 사용자 인터페이스들은 도 7에서의 프로세스를 비롯한, 아래에서 기술되는 프로세스들을 설명하는 데 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 스크린 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스(예컨대, 별개의 터치패드 및 디스플레이를 갖는 랩톱, 또는 별개의 마우스 및 디스플레이를 갖는 데스크톱)는 디스플레이와는 별개인 입력 디바이스를 통해 입력들을 검출한다.
도 4a에 도시된 바와 같이, 디바이스(100)는, 평면들을 검출하기 위해 그리고 증강 현실 및/또는 가상 현실(AR/VR) 객체들을 위에 배치하기 위해 제공된 미디어 캡처/상호작용 인터페이스(402)를 디스플레이한다. 일부 실시예에 따르면, 미디어 캡처/상호작용 인터페이스(402)는 이미지 센서의 시야가 변화함에 따라 변화하는 디바이스의 이미지 센서의 시야에서 객체들을 갖는 장면의 미디어 캡처 미리보기에 대응한다. 예를 들어, 도 4a에서, 미디어 캡처 미리보기는 안에 테이블(415)이 있는 방으로의 열린 출입구를 포함한다.
도 4a에서, 미디어 캡처/상호작용 인터페이스(402)는: 스냅숏 어포던스(404a) - 이는 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 이미지를 캡처하기 위해 제공됨 -; AR/VR 객체 메뉴 어포던스(404b) - 이는 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 (예컨대, 도 4e 및 도 4f에 도시된 바와 같은) 객체 선택 인터페이스를 디스플레이하도록 제공됨 -; 및 옵션 어포던스(404c) - 이는 옵션들을 디스플레이하고/하거나 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 설정 메뉴를 디스플레이하기 위해 제공됨 - 를 포함한다. 도 4a에서, 미디어 캡처/상호작용 인터페이스(402)는, 또한, 제1 외관 상태(410)로 디스플레이되는 망선 요소를 포함한다. 도 4a에 도시된 바와 같이, 제1 외관 상태(410)에서, 망선 요소는 불투명 코너들을 갖지만 에지들을 갖지 않는 투명 직사각형에 대응한다. 일부 실시예들에서, 망선 요소는 직사각형, 타원형, 다각형, 확대경, 십자선 등에 대응한다.
도 4a 및 도 4b는 미디어 캡처/상호작용 인터페이스(402)가 디바이스(100)의 이미지 센서의 시야의 변화에 기초하여 업데이트되는 시퀀스를 도시한다. 예를 들어, 도 4b에서, 미디어 캡처 미리보기는 안에 테이블(415)이 있는 방의 2개의 벽들을 포함한다. 이와 같이, 디바이스(100)의 관점 또는 시점은 도 4a와 도 4b 사이에서 변화한다.
도 4b 및 도 4c는 망선 요소의 외관 상태가 그에 근접한 평면을 검출한 것에 응답하여 제1 외관 상태로부터 제2 외관 상태로 변경되는 시퀀스를 도시한다. 예를 들어, 디바이스(100)는 테이블(415)과 연관된 평면을 검출한다. 이러한 예를 계속 참조하면, 평면을 검출한 것에 응답하여, 디바이스(100)는 망선 요소를 제1 외관 상태(410)로부터 제2 외관 상태(410')로 변화시킨다. 도 4c에 도시된 바와 같이, 제2 외관 상태(410')에서, 망선 요소는 점선 에지들을 갖는 음영 직사각형에 대응한다. 일부 실시예들에서, 제2 외관 상태(410')에서, 망선 요소의 에지들은 깜박이거나(blink) 번쩍인다(flash). 일부 실시예들에서, 제2 외관 상태(410')에서, 망선 요소의 에지들은 시계방향 또는 반시계방향 방식으로 깜박이거나 번쩍인다. 일부 실시예들에 따르면, 제2 외관 상태(410')로 디스플레이되는 동안, 망선 요소는 디바이스(100)가 장면 내의 평면을 검출했다는 시각적 단서를 제공한다. 일부 실시예들에 따르면, 제2 외관 상태(410')로 디스플레이되는 동안, 망선 요소는 테이블(415)과 연관된 검출된 평면의 범위의 일부분의 시각적 표시를 제공한다.
도 4c 및 도 4d는 평면의 배향을 검출한 것에 응답하여 망선 요소의 외관 상태가 제2 외관 상태로부터 제3 외관 상태로 변화하는 시퀀스를 도시한다. 예를 들어, 도 4d에서, 디바이스(100)는 망선 요소를 테이블(415)과 연관된 검출된 평면의 배향으로 회전시키고/시키거나 정렬시킴으로써 망선 요소를 제3 외관 상태(410'')로 디스플레이한다.
도 4d 및 도 4e는 평면의 더 넓은 범위를 검출한 것에 응답하여 망선 요소의 외관 상태가 제3 외관 상태로부터 제4 외관 상태로 변화하는 시퀀스를 도시한다. 예를 들어, 도 4e에서, 디바이스(100)는 범위가 이전에 검출된 것보다 더 큼을 나타내는 평면과 연관된 추가 포인트들을 검출한 것에 응답하여 망선 요소의 영역을 확장함으로써 망선 요소를 제4 외관 상태(410''')로 디스플레이한다.
도 4e 내지 도 4g는 AR/VR 객체가 검출된 평면에 대해 장면 내에 배치되는 시퀀스를 도시한다. 도 4e에 도시된 바와 같이, 디바이스(100)는 AR/VR 객체 메뉴 어포던스(404b)에 대응하는 위치에서 접촉(412)(예컨대, 탭 또는 선택 제스처)을 검출한다. 도 4f에 도시된 바와 같이, 디바이스(100)는 도 4e에서의 AR/VR 객체 메뉴 어포던스(404b)의 선택을 검출한 것에 응답하여 미디어 캡처/상호작용 인터페이스(402) 상에 오버레이되는 객체 선택 인터페이스(472)를 디스플레이한다.
도 4f에서, 객체 선택 인터페이스(472)는 형상들, 동물들 및 수송과 각각 연관된 복수의 AR/VR 객체 카테고리 탭(category tab)들(474a, 474b, 474c)을 포함한다. 도 4f에서, 형상들과 연관된 AR/VR 객체 카테고리 탭들(474a)이 현재 선택된다. 그 결과, 객체 선택 인터페이스(472)는 형상 카테고리와 연관된 복수의 사용자 선택가능 AR/VR 객체들(476a, 476b, 476c, 476d, 476e, 476f)(때때로, 본 명세서에서 "사용자 선택가능 AR/VR 객체들(476)"로 총칭됨)을 포함한다. 일부 실시예들에서, 사용자 선택가능 AR/VR 객체들(476) 각각은 이름, 미리보기 이미지, 연관된 메타데이터 등과 연관된다. 도 4f에서, 객체 선택 인터페이스(472)는, 또한, 추가적인 카테고리 어포던스(478)를 포함하는데, 이는 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 AR/VR 객체들의 추가 카테고리들을 디스플레이하기 위해 제공된다.
도 4f에 도시된 바와 같이, 디바이스(100)는 사용자 선택가능 AR/VR 객체(476f)(예컨대, 장방형(cuboid) 객체)에 대응하는 위치에서 접촉(414)(예컨대, 탭 또는 선택 제스처)을 검출한다. 도 4g에 도시된 바와 같이, 디바이스(100)는 도 4f에서의 사용자 선택가능 AR/VR 객체(476f)의 선택을 검출한 것에 응답하여, 검출된 평면에 대해 장면 내에 장방형 AR/VR 객체(420)를 디스플레이한다. 일부 실시예들에서, 디바이스는 검출된 평면의 기하학적 중심(예컨대, 도심(centroid)) 상에 장방형 AR/VR 객체(420)를 디스플레이한다.
도 4g 및 도 4h는 장방형 AR/VR 객체(420)의 크기가 증가하는 시퀀스를 도시한다. 도 4g에 도시된 바와 같이, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉들(416a, 416b)에 의한 역방향 핀치 제스처를 검출한다. 도 4h에 도시된 바와 같이, 디바이스(100)는 도 4g에서 역방향 핀치 제스처를 검출한 것에 응답하여, 검출된 평면에 대해 장면 내에서 장방형 AR/VR 객체(420)의 크기를 증가시킨다.
도 4h 및 도 4i는 장방형 AR/VR 객체(420)가 검출된 평면에 대해 이동하는 시퀀스를 도시한다. 도 4h에 도시된 바와 같이, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉(418)으로 탭-앤드-드래그(tap-and-drag) 제스처를 검출한다. 도 4i에 도시된 바와 같이, 디바이스(100)는 도 4h에서 탭-앤드-드래그 제스처를 검출한 것에 응답하여 장방형 AR/VR 객체(420)를 검출된 평면에 대해 테이블(415)의 전방 에지(423)에 더 가깝게 디스플레이한다.
도 4i 및 도 4j는 장방형 AR/VR 객체(420)의 배향이 변화되는 시퀀스를 도시한다. 도 4i에 도시된 바와 같이, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉들(422a, 422b)에 의한 반시계방향 회전 제스처를 검출한다. 도 4j에 도시된 바와 같이, 디바이스(100)는 도 4i에서 반시계방향 회전 제스처를 검출한 것에 응답하여, 검출된 평면에 대해 장면 내에서 장방형 AR/VR 객체(420)를 반시계방향으로 회전시킨다.
도 4j 및 도 4k는 장방형 AR/VR 객체(420)가 장방형 AR/VR 객체들(430a, 430b)로 분할되는 시퀀스를 도시한다. 도 4j에 도시된 바와 같이, 디바이스(100)는 장방형 AR/VR 객체(420)의 중간 전방 상측 에지(427)에 대응하는 위치에서 접촉(424)에 의한 사전정의된 상호작용 제스처(예컨대, 단일 또는 더블 탭 제스처)를 검출한다. 도 4k에 도시된 바와 같이, 디바이스(100)는 도 4h에서의 상호작용 제스처의 위치에 기초하여 장방형 AR/VR 객체(420)를 장방형 AR/VR 객체들(430a, 430b)로 분할하고, 검출된 평면에 대해 장방형 AR/VR 객체들(430a, 430b)을 디스플레이한다.
도 4k 및 도 4l은 미디어 캡처/상호작용 인터페이스(402)가 디바이스(100)의 이미지 센서의 시야의 변화에 기초하여 업데이트되는 시퀀스를 도시한다. 예를 들어, 도 4l에서, 미디어 캡처 미리보기는 안에 테이블(415)이 있는 방의 단일 벽을 포함한다. 이와 같이, 디바이스(100)의 관점 또는 시점은 변화하고, 그에 따라 장방형 AR/VR 객체들(430a, 430b)의 사시도가 변화한다.
도 4l 및 도 4m은 사용자 입력이 망선 요소의 에지와 상호작용함을 검출한 것에 응답하여 망선 요소의 외관 상태가 제4 외관 상태로부터 제5 외관 상태로 변화하는 시퀀스를 도시한다. 도 4l에 도시된 바와 같이, 디바이스(100)는 접촉(426)에 의한 탭-앤드-드래그 제스처를 검출하고, 이에 의해, 망선 요소의 에지(442)가 테이블(415)의 에지(444)를 향해 드래깅된다. 예를 들어, 도 4m에서, 디바이스(100)는 도 4l에서 탭-앤드-드래그 제스처를 검출한 것에 응답하여 망선 요소의 크기를 증가시킴으로써 망선 요소를 제5 외관 상태(410'''')로 디스플레이한다.
도 5a는 일부 실시예들에 따른, 쿼드트리들의 세트를 생성하기 위한 프로세스(500)와 연관된 관념적 블록도를 도시한다. 관련 특징부들이 도시되어 있지만, 당업자는 본 발명으로부터, 간결함을 위해 그리고 본 명세서에 개시되는 예시적인 실시예들의 더 많은 관련 태양들을 불명료하게 하지 않도록 하기 위해 다양한 다른 특징부들이 예시되지 않았음을 인식할 것이다. 예를 들어, 일부 실시예들에서, 프로세스(500)에서, 쿼드트리들의 세트(525)는 시간 경과에 따른 상이한 기준점들/시점들(예컨대, 카메라 위치 또는 시야들)에서 캡처된 이미지들의 세트들로부터 구성되는 평면들의 세트들(520a, 520b, …, 520n)을 병합함으로써 생성된다.
도 5a에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 제1 기준점/시점(502a)에 대한 이미지들의 제1 세트(504a)(예컨대, 이미지 데이터)를 획득한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 이미지들의 제1 세트(504a)에 기초하여 제1 3차원(3d) 포인트 클라우드(506a)를 합성한다. 일부 실시예들에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제1 3d 포인트 클라우드(506a)에 기초하여 평면들의 제1 세트(520a)를 구성한다. 예를 들어, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들(예컨대, 최소 피팅 제곱(least fitting square), 주 성분 분석, 동시 로컬화 및 맵핑(simultaneous localization and mapping, SLAM) 등)에 따라 제1 3d 포인트 클라우드(506a)에 평면들을 피팅함으로써 평면들의 제1 세트(520a)를 구성한다.
유사하게, 도 5a에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 제2 기준점/시점(502b)에 대한 이미지들의 제2 세트(504b)들 획득한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 이미지들의 제2 세트(504b)에 기초하여 제2 3d 포인트 클라우드(506b)를 합성한다. 일부 실시예들에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제2 3d 포인트 클라우드(506b)에 기초하여 평면들의 제2 세트(520b)를 구성한다.
유사하게, 도 5a에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 제n 기준점/시점(502n)에 대한 이미지들의 제n 세트(504n)를 획득한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 이미지들의 제n 세트(504n)에 기초하여 제n 3d 포인트 클라우드(506n)를 합성한다. 일부 실시예들에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제n 3d 포인트 클라우드(506n)에 기초하여 평면들의 제n 세트(520n)를 구성한다.
일부 실시예들에 따르면, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 상관 모듈(1162))는 평면들의 제1 세트(520a), 평면들의 제2 세트(520b), ..., 및 평면들의 제n 세트(520n)를 상관시켜서 평면들의 병합된 세트를 생성한다. 이어서, 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 평면들의 병합된 세트에 기초하여 쿼드트리들의 세트(525)를 생성한다. 예를 들어, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 쿼드트리들의 세트(525)를 생성한다.
도 5b는 일부 실시예들에 따른, 쿼드트리들의 세트를 생성하기 위한 프로세스(550)와 연관된 관념적 블록도를 도시한다. 관련 특징부들이 도시되어 있지만, 당업자는 본 발명으로부터, 간결함을 위해 그리고 본 명세서에 개시되는 예시적인 실시예들의 더 많은 관련 태양들을 불명료하게 하지 않도록 하기 위해 다양한 다른 특징부들이 예시되지 않았음을 인식할 것이다. 예를 들어, 일부 실시예들에서, 프로세스(550)에서, 쿼드트리들의 병합된 세트(540)는 시간 경과에 따른 상이한 기준점들/시점들(예컨대, 카메라 위치 또는 시야들)과 연관된 3d 포인트 클라우드들로부터 구성되는 쿼드트리들의 세트들(530a, 530b, …, 530n)을 병합함으로써 생성된다.
도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 제1 기준점/시점(502a)에 대한 이미지들의 제1 세트(504a)(예컨대, 이미지 데이터)를 획득한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 이미지들의 제1 세트(504a)에 기초하여 제1 3d 포인트 클라우드(506a)를 합성한다. 일부 실시예들에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제1 3d 포인트 클라우드(506a) 및/또는 이미지들의 제1 세트(504a)에 기초하여 평면들의 제1 세트(520a)를 구성한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 평면들의 제1 세트(520a) 및/또는 제1 3d 포인트 클라우드(506a)에 기초하여 쿼드트리들의 제1 세트(530a)를 생성한다. 예를 들어, 디바이스(100)는 도 10을 참조하여 기술되는 세부사항들에 따라 쿼드트리들의 제1 세트(530a)를 생성한다.
유사하게, 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 제2 기준점/시점(502b)에 대한 이미지들의 제2 세트(504b)들 획득한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 이미지들의 제2 세트(504b)에 기초하여 제2 3d 포인트 클라우드(506b)를 합성한다. 일부 실시예들에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제2 3d 포인트 클라우드(506b) 및/또는 이미지들의 제2 세트(504b)에 기초하여 평면들의 제2 세트(520b)를 구성한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 평면들의 제2 세트(520b) 및/또는 제2 3d 포인트 클라우드(506b)에 기초하여 쿼드트리들의 제2 세트(530b)를 생성한다.
유사하게, 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 제n 기준점/시점(502n)에 대한 이미지들의 제n 세트(504n)를 획득한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 이미지들의 제n 세트(504n)에 기초하여 제n 3d 포인트 클라우드(506n)를 합성한다. 일부 실시예들에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제n 3d 포인트 클라우드(506n) 및/또는 이미지들의 제n 세트(504n)에 기초하여 평면들의 제n 세트(520n)를 구성한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 평면들의 제n 세트(520n) 및/또는 제n 3d 포인트 클라우드(506n)에 기초하여 쿼드트리들의 제n 세트(530n)를 생성한다.
일부 실시예들에 따르면, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 상관 모듈(1162))는 쿼드트리들의 제1 세트(530a), 쿼드트리들의 제2 세트(530b), ..., 및 쿼드트리들의 제n 세트(530n)를 상관시켜서 쿼드트리들의 병합된 세트(540)를 생성한다. 예를 들어, 디바이스(100)는 도 10을 참조하여 기술되는 세부사항들에 따라 쿼드트리들의 병합된 세트(540)를 생성한다.
도 6a 내지 도 6g는 일부 실시예들에 따른, 가상 기재들을 검출하기 위한 예시적인 사용자 인터페이스들을 도시한다. 이 도면들에서의 사용자 인터페이스들은 도 8 내지 도 10에서의 프로세스들을 비롯한, 아래에서 기술되는 프로세스들을 설명하는 데 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 스크린 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 4b에 도시된 바와 같이 디스플레이(450)와 별개인 터치 감응형 표면(451) 상의 입력들을 검출한다.
일부 실시예들에서, 디바이스(100)는 도 6g에서의 미디어 캡처/상호작용 인터페이스(652)와 유사한 사용자 인터페이스 내에 도 6a 내지 도 6h에서 수행되는 단계들을 디스플레이한다. 일부 실시예들에서, 디바이스(100)는 도 6a 내지 도 6h에서의 단계들을 수행하지만 디스플레이하지 않고, 대신에, 도 6g에서의 미디어 캡처/상호작용 인터페이스(652) 내에 생성된 평면들(650a, 650b, 650c, 650d)을 디스플레이한다.
도 6a에 도시된 바와 같이, 디바이스(100)는 장면 내에서 포인트들의 복수의 클러스터들(605a, 605b, 605c, 605d)을 검출한다. 예를 들어, 포인트들의 클러스터(605a)는 장면 내에서 제1 테이블(604a)에 대응한다. 예를 들어, 포인트들의 클러스터(605b)는 장면 내에서 바닥의 일부분에 대응한다. 예를 들어, 포인트들의 클러스터(605c)는 장면 내에서 바닥의 다른 부분에 대응한다. 예를 들어, 포인트들의 클러스터(605d)는 장면 내에서 제2 테이블(604b)에 대응한다. 일부 실시예들에 따르면, 디바이스(100)는 장면의 복수의 이미지들을 획득하고, 포인트들의 클러스터들(605a, 605b, 605c, 605d)을 포함하는 장면 내에서 식별된 포인트들의 3차원(3d) 포인트 클라우드를 합성한다. 일부 실시예들에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 좌표 변환 모듈(1154))는 디바이스 좌표들(602b)과 연관된 이미지 공간과 세계 좌표들(602a)과 연관된 3d 공간(예컨대, 도 6a 내지 도 6g에서의 방 또는 장면) 사이의 변환을 수행하기 위해 세계 좌표들(602a) 및 디바이스 좌표들(602b)을 추적한다.
도 6b에 도시된 바와 같이, 3d 포인트 클라우드와 연관된 3d 좌표 공간에서, 디바이스(100)는 도 6a에서의 포인트들의 클러스터들(605a, 605b, 605c, 605d)에 기초하여 복수의 평면들(610a, 610b, 610c, 610d)(예컨대, 무한 평면들)을 구성한다(예컨대, 식별한다). 일부 실시예들에서, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들(예컨대, 최소 피팅 제곱, 주 성분 분석, 동시 로컬화 및 맵핑(SLAM) 등)에 따라 3d 포인트 클라우드(506a)에 포인트들의 클러스터들(605a, 605b, 605c, 605d)에 무한 평면들을 피팅함으로써 복수의 평면들(610a, 610b, 610c, 610d)을 구성한다.
도 6c에 도시된 바와 같이, 3d 포인트 클라우드를 합성하는 데 사용되는 복수의 이미지들과 연관된 2차원(2d) 좌표 공간에서, 디바이스(100)는 도 6a에서 포인트들의 클러스터들(605a, 605b, 605c, 605d) 내의 포인트들을 삼각측량한다.
도 6d에 도시된 바와 같이, 2d 좌표 공간에서, 디바이스(100)는 도 6b에서의 복수의 평면들(610a, 610b, 610c, 610d)에 기초하여 동일한 평면과 연관되지 않은 포인트들을 갖는 삼각형들을 제거하여 복수의 제한된 삼각측량 영역들(620a, 620b, 620c, 620d)을 획득한다.
도 6e에 도시된 바와 같이, 디바이스(100)는 복수의 제한된 삼각측량 영역들(620a, 620b, 620c, 620d)을 3d 좌표 공간 내로 다시 투영하고 복수의 제한된 삼각측량 영역들(620a, 620b, 620c, 620d)을 사각형화(quadratize)하여 쿼드트리들(630a, 630b, 630c, 630d)을 획득한다. 도 6e에서, 쿼드트리들(630a, 630b, 630c, 630d)은 그들의 범위에 기초한 경계 박스들에 의해 둘러싸인다.
도 6f에 도시된 바와 같이, 추가 포인트들의 검출로 인해, 제1 테이블(604a)과 연관된 쿼드트리(630a)는 크기가 상태(630a')로 확대되었고, 바닥과 연관된 쿼드트리들(630b, 630c)은 쿼드트리(630e)로 병합되었고, 제2 테이블(604b)과 연관된 쿼드트리(630d)는 크기가 상태(630d')로 확대되었고, 장면 내에서 방의 벽과 연관된 새로운 쿼드트리(630f)가 검출되었다.
도 4g에 도시된 바와 같이, 디바이스(100)는, 평면들을 검출하기 위해 그리고 그 위에 증강 현실 및/또는 가상 현실(AR/VR) 객체들을 배치하기 위해 제공된 미디어 캡처/상호작용 인터페이스(652)를 디스플레이한다. 일부 실시예에 따르면, 미디어 캡처/상호작용 인터페이스(652)는 이미지 센서의 시야가 변화함에 따라 변화하는 디바이스의 이미지 센서의 시야에서 객체들을 갖는 장면의 미디어 캡처 미리보기에 대응한다. 예를 들어, 도 6g에서, 미디어 캡처 미리보기는 테이블들(604a, 604b)과 함께 도 6a 내지 도 6f에 도시된 장면을 포함한다. 일부 실시예들에서, 도 6g에서의 미디어 캡처/상호작용 인터페이스(652)는 도 4a 내지 도 4m에서의 미디어 캡처/상호작용 인터페이스(402)와 유사하거나 또는 그들로부터 적응된다.
도 6g에서, 미디어 캡처/상호작용 인터페이스(652)는: 스냅숏 어포던스(654a) - 이는 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 이미지를 캡처하기 위해 제공됨 -; AR/VR 객체 메뉴 어포던스(654b) - 이는 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 객체 선택 인터페이스를 디스플레이하도록 제공됨 -; 및 옵션 어포던스(654c) - 이는 옵션들을 디스플레이하고/하거나 (예컨대, 접촉 또는 선택 제스처에 의한) 그의 선택에 응답하여 설정 메뉴를 디스플레이하기 위해 제공됨 - 를 포함한다. 도 6g에서, 사용자 인터페이스(602)는, 또한, 도 6f의 쿼드트리들(630a', 630d', 630e, 630f)의 경계 박스들에 각각 대응하는 평면 범위들(650a, 650b, 650c, 650d)을 포함한다.
도 6g에 도시된 바와 같이, 평면 범위들(650a, 650b, 650c, 650d) 각각은 고유의 외관, 패턴, 채워짐 등으로 디스플레이된다. 일부 실시예들에 따르면, 평면 범위들(650a, 650b, 650c, 650d) 각각은 AR/VR 객체가 (예컨대, 도 4f 및 도 4g에 도시된 바와 같이) 배치될 수 있고 (예컨대, 도 4g 내지 도 4k에 도시된 바와 같이) 조작될 수 있는 가상 기재에 대응한다. 일부 실시예들에서, 평면 범위들(650a, 650b, 650c, 650d) 각각은 장면 내에서 평면이 검출되었다는 시각적 단서를 제공한다. 일부 실시예들에서, 평면 범위들(650a, 650b, 650c, 650d) 각각은 연관된 검출된 쿼드트리들의 범위의 일부분의 시각적 표시를 제공한다.
도 7은 일부 실시예들에 따른, 가상 기재를 검출하고 그 위에 객체들을 배치하는 방법(700)의 흐름도를 도시한다. 일부 실시예들에서(그리고 일례로서 아래에서 상세히 설명되는 바와 같이), 방법(700)은 하나 이상의 프로세서들, 비일시적 메모리, 이미지 센서 또는 카메라 조립체, 디스플레이, 및 하나 이상의 입력 디바이스들을 포함하는, 도 1에서의 전자 디바이스(100) 또는 도 3에서의 디바이스(300)와 같은, 전자 디바이스(또는 그의 일부분)에 의해 수행된다. 예를 들어, 디스플레이 및 하나 이상의 입력 디바이스들은 터치 스크린 디스플레이로 조합된다. 이러한 예에서, 전자 디바이스는 스마트폰 또는 태블릿에 대응한다. 다른 예에서, 디스플레이 및 하나 이상의 입력 디바이스들은 분리되어 있다. 이러한 예에서, 전자 디바이스는 랩톱 또는 데스크톱 컴퓨터에 대응한다. 예를 들어, 전자 디바이스는 착용 컴퓨팅 디바이스, 스마트폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 키오스크, 셋톱박스(set-top box, STB), 오버톱(over-the-top, OTT) 박스, 게이밍 콘솔(gaming console) 등에 대응한다.
일부 실시예들에서, 방법(700)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 적합한 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 실시예들에서, 방법(700)은 비일시적 컴퓨터 판독가능 저장 매체(예컨대, 비일시적 메모리)에 저장된 코드, 프로그램들, 또는 명령어들을 실행시키는 하나 이상의 프로세서들에 의해 수행된다. 방법(700)에서의 일부 동작들이 선택적으로 조합되고/되거나, 일부 동작들의 순서는 선택적으로 변경된다. 간략하게, 방법(700)은: 장면 내에서 평면을 검출한 것에 응답하여 망선 요소를 제1 외관 상태로부터 제2 외관 상태로 변경하는 단계; 증강 현실/가상 현실(AR/VR) 객체를 검출된 평면에 대해 장면 내에 배치하는 단계; 및 사용자 입력에 기초하여 AR/VR 객체를 수정/조작하는 단계를 포함한다.
방법(700)은, 블록(702)에서, 전자 디바이스가 미디어 캡처 미리보기 상에 오버레이되는 망선 요소를 제1 외관 상태로 디스플레이하는 것으로 시작된다. 예를 들어, 도 4b에서, 디바이스(100)는 안에 테이블(415) 및 2개의 벽들이 있는 방에 대응하는 장면의 미디어 캡처 미리보기를 포함하는 미디어 캡처/상호작용 인터페이스(402)를 디스플레이한다. 이러한 예를 계속 참조하면, 도 4b에서, 미디어 캡처/상호작용 인터페이스(402)는, 또한, 제1 외관 상태(410)로 디스플레이되는 망선 요소를 포함한다. 일부 실시예들에서, 제1 외관 상태(410)에서, 망선 요소는 불투명 코너들을 갖지만 에지들을 갖지 않는 투명 직사각형에 대응한다. 일부 실시예들에서, 망선 요소는 직사각형, 타원형, 다각형, 확대경, 십자선 등에 대응한다.
방법(700)은, 블록(704)에서, 전자 디바이스가 장면 데이터를 획득하는 단계로 계속된다. 일부 실시예들에 따르면, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 이미지 센서 또는 카메라 조립체로 장면의 2개 이상의 이미지들을 제1 기준점/시점(예컨대, 카메라 위치 또는 시야)으로부터 캡처함으로써 장면 데이터(예컨대, 이미지 데이터)를 획득한다.
방법(700)은, 블록(706)에서, 전자 디바이스가 장면 데이터에 기초하여 평면을 검출하는 단계로 계속된다. 예를 들어, 디바이스는 장면 데이터 내에서 평면 표면(예컨대, 바닥, 벽, 테이블 상판 등)을 검출한다. 일부 실시예들에 따르면, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 장면 데이터를 프로세싱함으로써 적어도 하나의 평면을 검출한다. 예를 들어, 도 4b를 참조하면, 디바이스(100)는 테이블(415)의 상판에 대응하는 평면을 검출한다. 일부 실시예들에서, 평면 전체가 망선 요소 내에 있다. 일부 실시예들에서, 평면의 적어도 일부분이 망선 요소 내에 있다. 일부 실시예들에서, 평면은 망선 요소의 범위보다 크다. 일부 실시예들에서, 평면은 망선 요소의 범위보다 작다. 일부 실시예들에서, 2개 이상의 평면들을 검출한 것에 응답하여, 디바이스는 2개 이상의 검출된 평면들에 근접한 위치들에서 다수의 망선 요소들을 제2 외관 상태로 디스플레이한다.
방법(700)은, 블록(708)에서, 전자 디바이스가 망선 요소를, 평면의 검출을 나타내는 제2 외관 상태로 디스플레이하는 단계로 계속된다. 예를 들어, 도 4c에서, 디바이스(100)는 망선 요소에 근접한 테이블(415)의 상판과 연관된 평면을 검출한 것에 응답하여 망선 요소를 제1 외관 상태(410)로부터 제2 외관 상태(410')로 변경한다. 일부 실시예들에서, 제2 외관 상태에서, 망선 요소는 불투명한 또는 번쩍이는 에지들을 갖는 투명 직사각형으로서 디스플레이된다. 일부 실시예들에서, 제2 외관 상태에서, 망선 요소는 불투명한 또는 번쩍이는 에지들을 갖는 부분 투명 직사각형으로서 디스플레이된다. 일부 실시예들에서, 제2 외관 상태로 디스플레이되는 동안, 망선 요소는 AR/VR 객체들에 대한 가상 기재로서 사용될 수 있는 평면이 검출되었다는 시각적 단서를 제공한다. 일부 실시예들에서, 제2 외관 상태로 디스플레이되는 동안, 망선 요소는, 또한, AR/VR 객체들에 대한 가상 기재로서 사용될 수 있는 검출된 평면의 경계들의 시각적 단서를 제공한다.
일부 실시예들에서, 디바이스는 제1 외관 상태로 디스플레이되는 동안 검출된 평면이 망선 요소에 근접해 있다는 판정에 따라 망선 요소를 제1 외관 상태로부터 제2 외관 상태로 전이시킨다. 일부 실시예들에 따르면, 검출된 평면이 장면 데이터와 연관된 이미지 공간(예컨대, 디바이스 좌표들과 연관된 2차원 공간) 상에 투영되고 망선 요소와 검출된 평면 사이에 적어도 사전정의된 수의 픽셀들이 중첩될 때, 검출된 평면은 망선 요소에 근접해 있다. 일부 실시예들에 따르면, 망선 요소가 장면과 연관된 현실 세계 공간(예컨대, 세계 좌표들과 연관된 3차원 공간) 상에 투영되고 망선 요소와 검출된 평면 사이에 적어도 사전정의된 수의 픽셀들이 중첩될 때, 검출된 평면은 망선 요소에 근접해 있다.
일부 실시예들에서, 디바이스는 제1 외관 상태로 디스플레이되는 동안 검출된 평면이 망선 요소의 임계 거리 내에 있다는 판정에 따라 망선 요소를 제1 외관 상태로부터 제2 외관 상태로 전이시킨다. 일부 실시예들에 따르면, 검출된 평면이 디바이스의 사전결정된 거리 내에 있을 때, 검출된 평면은 망선 요소의 임계 거리 내에 있다.
일부 실시예들에서, 블록(712)에 의해 표현되는 바와 같이, 디바이스는 망선 요소를 검출된 평면의 배향에 정렬시킨다. 예를 들어, 도 4d에서, 디바이스(100)는 망선 요소를 테이블(415)과 연관된 검출된 평면의 배향으로 회전시키고/시키거나 정렬시킴으로써 망선 요소를 제3 외관 상태(410'')로 디스플레이한다. 일부 실시예들에서, 망선 요소는 검출된 평면의 요우(yaw), 피치(pitch), 및/또는 롤(roll)과 정렬된다.
일부 실시예들에서, 블록(714)에 의해 표현되는 바와 같이, 디바이스는 망선 요소를 확대시킨다. 예를 들어, 도 4e에서, 디바이스(100)는 범위가 이전에 검출된 것보다 더 큼을 나타내는 평면과 연관된 추가 포인트들을 검출한 것에 응답하여 망선 요소의 영역을 확장함으로써 망선 요소를 제4 외관 상태(410''')로 디스플레이한다. 일부 실시예들에서, 망선 요소는 평면의 검출된 크기로 확대된다. 일부 실시예들에서, 망선 요소는 평면의 검출된 크기로 축소된다. 일부 실시예들에서, 망선 요소가 제2 외관 상태로 디스플레이되는 동안, 망선 요소의 크기는 추가 포인트들의 검출에 기초하여 검출된 평면의 크기가 변경됨에 따라 동적으로 변경된다.
예를 들어, 디바이스는 핀치 제스처, 디-핀치 제스처, 탭-앤드-드래그 제스처 등과 같은, 망선 요소의 하나 이상의 치수들을 변경하는 것에 대응하는 사용자 입력을 검출한다. 예를 들어, 도 4l 및 도 4m은 도 4l에서 망선 요소 상에서 탭-앤드-드래그 제스처를 검출한 것에 응답하여 망선 요소의 치수가 변경되는(예컨대, 망선 요소의 높이가 테이블(415)의 전방 에지(444)를 향해 이동되는) 시퀀스를 도시한다. 일부 실시예들에서, 사용자 입력은 검출된 평면의 경계들 내에서 망선 요소의 크기를 수정한다. 이와 같이, 일부 실시예들에서, 사용자 입력은 검출된 평면의 범위 초과로 망선 요소를 크기조정하지 않는다.
방법(700)은, 블록(716)에서, 전자 디바이스가 장면 내에서 제1 사용자 입력이 증강 현실 및/또는 가상 현실(AR/VR) 객체를 배치함을 검출하는 단계로 계속된다. 예를 들어, 도 4f에 도시된 바와 같이, 디바이스(100)는 객체 선택 인터페이스(472) 내에서 사용자 선택가능 AR/VR 객체(476f)(예컨대, 장방형 객체)에 대응하는 위치에서 접촉(414)(예컨대, 탭 또는 선택 제스처)을 검출한다. 일부 실시예들에서, 디바이스는 사전정의된 어포던스(예컨대, 에서의 AR/VR 객체 메뉴 어포던스(404b)를 선택한 것에 응답하여 객체 선택 인터페이스(예컨대, 팝-오버 또는 풀-다운 메뉴/패널)를 디스플레이한다.
방법(700)은, 블록(718)에서, 전자 디바이스가 검출된 평면에 대해 장면 내에 AR/VR 객체를 디스플레이하는 단계로 계속된다. 예를 들어, 도 4g에서, 디바이스(100)는 도 4f에서의 사용자 선택가능 AR/VR 객체(476f)의 선택을 검출한 것에 응답하여, 검출된 평면에 대해 장면 내에 장방형 AR/VR 객체(420)를 디스플레이한다. 일부 실시예들에서, AR/VR 객체는 검출된 평면의 기하학적 중심(예컨대, 도심) 상에 디스플레이된다. 일부 실시예들에서, 검출된 평면에 대해 장면 내에 AR/VR 객체를 배치한 후에, 디바이스(100)는 망선 요소를 제거한다. 일부 실시예들에서, 디바이스(100)는 AR/VR 객체를 디스플레이할 때 폐색 및 클러터(clutter)를 감소시키기 위해 망선 요소를 제거한다. 일부 실시예들에서, 디바이스는 검출된 평면의 배향에 기초하여 AR/VR 객체에 회전(예컨대, 요우, 피치, 및/또는 롤)을 적용한다.
방법(700)은, 블록(720)에서, 전자 디바이스가 제2 사용자 입력이 AR/VR 객체와 상호작용하는 것을 배치하는 것을 검출하는 단계로 계속된다. 일례로서, 도 4g에서, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉들(416a, 416b)에 의한 역방향 핀치 제스처를 검출한다. 다른 예로서, 도 4h에서, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉(418)으로 탭-앤드-드래그 제스처를 검출한다. 또 다른 예로서, 도 4i에서, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉들(422a, 422b)에 의한 두 손가락 반시계방향 회전 제스처를 검출한다. 또 다른 예로서, 도 4i에서, 디바이스(100)는 장방형 AR/VR 객체(420) 상에서의 접촉(424)을 갖는 한 손가락 탭 제스처를 검출한다.
방법(700)은, 블록(722)에서, 전자 디바이스가 제2 사용자 입력의 하나 이상의 특성들에 기초하여 AR/VR 객체를 수정하는 단계로 계속된다. 일례로서, 도 4h 및 도 4i는 도 4h에서 장방형 AR/VR 객체(420) 상에서 탭-앤드-드래그 제스처를 검출한 것에 응답하여 장방형 AR/VR 객체(420)가 테이블(415)의 전방 에지(423)에 더 가깝게 이동하는 시퀀스를 도시한다. 일부 실시예들에서, 제2 사용자 입력의 하나 이상의 특성들은 입력 타입(예컨대, 음성 커맨드, 핀치 제스처, 역방향 핀치 제스처, 탭-앤드-프래그 제스처, 스와이프 제스처, 한 손가락 탭 제스처, 두 손가락 탭 제스처, 한 손가락 더블 탭 제스처, 두 손가락 더블 탭 제스처 등), 입력 방향, 입력 크기, 입력 속도 등에 대응한다.
일부 실시예들에서, 하나 이상의 특성들은 입력 타입에 대응한다. 예를 들어, 제3 사용자 입력이 탭-앤드-드래그 제스처에 대응하는 경우, 디바이스는 검출된 평면에 대한 AR/VR 객체의 위치를 수정한다. 일부 실시예들에서, 탭-앤드-드래그 제스처가 검출된 평면 밖으로 AR/VR 객체를 이동시키는 경우, 디바이스는 다음으로 가장 가까운 평면(예컨대, 바닥 평면) 상에 AR/VR 객체를 디스플레이한다. 일부 실시예들에서, 탭-앤드-드래그 제스처가 검출된 평면 밖으로 AR/VR 객체를 이동시키는 경우, 디바이스는 검출된 평면의 에지 상에서의 AR/VR 객체의 디스플레이들을 유지한다. 다른 예에서, 제3 사용자 입력이 핀치 제스처에 대응하는 경우, 디바이스는 AR/VR 객체의 크기를 수정한다. 다른 예에서, 제3 사용자 입력이 사전정의된 제스처에 대응하는 경우, 디바이스는 AR/VR 객체에 대한 사전정의된 애니메이션을 디스플레이하거나 AR/VR 객체에 대한 사전정의된 동작을 수행한다. 일부 실시예들에서, 디바이스는 AR/VR 객체에 대한 사전정의된 애니메이션을 디스플레이하거나, AR/VR 객체에 대한 디바이스의 거리에 기초하여 AR/VR 객체 상에서 사전정의된 동작을 수행한다. 일부 실시예들에서, 디바이스의 위치가 AR/VR 객체에 대해 변경될 때, 디바이스는 AR/VR 객체의 관점을 유지한다(예컨대, 크기를 증가/감소시킴, AR/VR 객체의 상이한 각도를 보여줌, 등등).
일부 실시예들에서, 블록(724)에 의해 표현된 바와 같이, 디바이스는 AR/VR 객체를 회전시킨다. 예를 들어, 도 4i 및 도 4j는 도 4i에서 장방형 AR/VR 객체(420) 상에서의 반시계 방향 회전 제스처를 검출한 것에 응답하여 장방형 AR/VR 객체(420)의 배향이 변경되는 시퀀스를 도시한다.
일부 실시예들에서, 블록(726)에 의해 표현된 바와 같이, 디바이스는 AR/VR 객체를 크기조정한다. 예를 들어, 도 4g 및 도 4h는 도 4g에서 장방형 AR/VR 객체(420) 상에서의 역방향 핀치 제스처를 검출한 것에 응답하여 장방형 AR/VR 객체(420)의 크기가 증가되는 시퀀스를 도시한다.
일부 실시예들에서, 블록(728)에 의해 표현된 바와 같이, 디바이스는 AR/VR 객체와 연관된 거동을 트리거한다. 일부 실시예들에서, 거동은 AR/VR 객체에 대해 수행되는 사전정의된 애니메이션 또는 동작, 예컨대 AR/VR 동물을 쓰다듬어 그것이 짖거나 야옹하고 울게 하는 것, AR/VR 차량을 탭핑하여 그것이 경적을 울리거나 그의 엔진 속도를 올리게 하는 것, 망치와 같은 AR/VR 정육면체를 탭핑하여 그것이 절반으로 분할되게 하는 것, AR/VR 화산을 탭핑하여 그것이 분출하게 하는 것 등에 대응한다. 예를 들어, 도 4j 및 도 4k는, 도 4j에서 장방형 AR/VR 객체(420) 상에서의 사전정의된 상호작용 제스처를 검출한 것에 응답하여 장방형 AR/VR 객체(420)가 장방형 AR/VR 객체들(430a, 430b)로 분할되는 시퀀스를 도시한다.
도 8은 일부 실시예들에 따른, 가상 기재로서 사용하기 위한 쿼드트리들의 병합된 세트를 생성하는 방법(800)의 흐름도를 도시한다. 일부 실시예들에서(그리고 일례로서 아래에서 상세히 설명되는 바와 같이), 방법(800)은 하나 이상의 프로세서들 및 비일시적 메모리를 포함하는, 도 1에서의 전자 디바이스(100) 또는 도 3에서의 디바이스(300)와 같은, 전자 디바이스(또는 그의 일부분)에 의해 수행된다. 일부 실시예들에서, 디바이스는 선택적으로 디스플레이, 이미지 센서 또는 카메라 조립체, 및 하나 이상의 입력 디바이스들(예컨대, 터치 스크린 디스플레이, 터치패드, 마우스, 키보드, 물리적 버튼들, 마이크로폰 등)을 포함한다. 예를 들어, 디스플레이 및 하나 이상의 입력 디바이스들은 터치 스크린 디스플레이로 조합된다. 이러한 예에서, 전자 디바이스는 스마트폰 또는 태블릿에 대응한다. 다른 예에서, 디스플레이 및 하나 이상의 입력 디바이스들은 분리되어 있다. 이러한 예에서, 전자 디바이스는 랩톱 또는 데스크톱 컴퓨터에 대응한다. 예를 들어, 전자 디바이스는 착용 컴퓨팅 디바이스, 스마트폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 키오스크, 셋톱박스(STB), 오버톱(OTT) 박스, 게이밍 콘솔 등에 대응한다.
일부 실시예들에서, 방법(800)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 적합한 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 실시예들에서, 방법(800)은 비일시적 컴퓨터 판독가능 저장 매체(예컨대, 비일시적 메모리)에 저장된 코드, 프로그램들, 또는 명령어들을 실행시키는 하나 이상의 프로세서들에 의해 수행된다. 방법(800)에서의 일부 동작들이 선택적으로 조합되고/되거나, 일부 동작들의 순서는 선택적으로 변경된다. 간략하게, 방법(800)은: 상이한 기준점들/시점들에 대한 이미지들의 복수의 세트들을 획득하는 단계; 이미지들의 복수의 세트들 각각에 대한 3d 포인트 클라우드를 합성하는 단계; 각각의 3d 포인트 클라우드들을 사용하여 평면들을 구성하는 단계; 및 3d 포인트 클라우드들에 걸쳐서 평면들의 병합된 세트를 특징짓는 쿼드트리들의 세트를 생성하는 단계를 포함한다.
방법(800)은, 블록(802)에서, 전자 디바이스가 상이한 기준점들/시점들에 대한 이미지들의 복수의 세트들을 획득하는 단계로 시작된다. 예를 들어, 도 5a 및 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 이미지 캡처 제어 모듈(1150))는 기준점들/시점들(502a, 502b, ..., 502n)에 대해 각각 이미지들의 세트들(504a, 504b, ..., 504n)(예컨대, 이미지 데이터)을 획득한다. 일부 실시예들에서, 이미지들의 세트들 각각은 2개 이상의 이미지들을 포함한다. 일부 실시예들에서, 이미지들의 세트들 각각은 상이한 기준점들/시점들(예컨대, 상이한 카메라 위치들 또는 시야들)에 대응한다.
방법(800)은, 블록(804)에서, 전자 디바이스가 이미지들의 복수의 세트들 각각에 대한 3차원(3d) 포인트 클라우드를 합성하는 단계로 계속된다. 예를 들어, 도 5a 및 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 기준점들/시점들(502a, 502b, ..., 502n)에 대한 이미지들의 세트들(504a, 504b, ..., 504n)에 기초하여 각각 3차원(3d) 포인트 클라우드들(506a, 506b, ..., 506n)을 합성한다. 일부 실시예들에서, 디바이스(100)는, 이미지들의 각각의 세트들에 대한 포인트들의 세트를 식별하고 3d 공간에 이러한 포인트들을 위치시킴으로써, 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 3d 포인트 클라우드들을 합성한다.
방법(800)은, 블록(806)에서, 전자 디바이스가 개개의 3d 포인트 클라우드들을 사용하여 평면들을 구성하는 단계로 계속된다. 예를 들어, 도 5a 및 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 3d 포인트 클라우드들(506a, 506b, ..., 506n)에 기초하여 각각 평면들(520a, 520b, ..., 520n)의 세트를 구성한다. 일부 실시예들에서, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들(예컨대, 최소 피팅 제곱, 주 성분 분석, 동시 로컬화 및 맵핑(SLAM) 등)에 따라 3d 포인트 클라우드들에 대해 평면들을 구성한다(예컨대, 피팅한다).
방법(800)은, 블록(808)에서, 전자 디바이스가 3d 포인트 클라우드들에 걸쳐서 평면들의 병합된 세트를 특징짓는 쿼드트리들의 세트를 생성하는 단계로 계속된다. 예를 들어, 도 5a에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 시간 경과에 따라 3d 포인트 클라우드들(506a, 506b, ..., 506n)에 걸쳐서 평면들의 병합된 세트를 특징짓는 쿼드트리들의 세트(525)를 생성한다. 예를 들어, 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 시간 경과에 따라 3d 포인트 클라우드들(506a, 506b, ..., 506n)에 걸쳐서 평면들의 병합된 세트를 특징짓는 쿼드트리들의 병합된 세트(540)를 생성한다. 일부 실시예들에서, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 쿼드트리들의 세트를 생성한다. 일부 실시예들에 따르면, 당업자에 의해 이해되는 바와 같이, 방법(800)은, 또한, 장면을 특징짓는 옥트리(octree)들을 생성하는 데 적용가능하다.
일부 실시예들에서, 블록(810)에 의해 표현되는 바와 같이, 디바이스는 3d 포인트 클라우드들 각각에 대한 평면들의 세트를 생성하고, 평면들의 세트들을 상관시킴으로써 평면들의 병합된 세트를 생성한다. 일부 실시예들에서, 블록(812)에 의해 표현되는 바와 같이, 디바이스는 평면들의 병합된 세트에 기초하여 쿼드트리들의 세트를 생성한다. 예를 들어, 도 5a에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 상관 모듈(1162))는 평면들의 제1 세트(520a), 평면들의 제2 세트(520b), ..., 및 평면들의 제n 세트(520n)를 상관시켜서 평면들의 병합된 세트를 생성한다. 이어서, 도 5a에서의 예를 계속 참조하면, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 평면들의 병합된 세트에 기초하여 쿼드트리들의 세트(525)를 생성한다.
일부 실시예들에서, 블록(814)에 의해 표현되는 바와 같이, 디바이스는 연관된 평면들에 기초하여 3d 포인트 클라우드들 각각에 대한 쿼드트리들의 중간 세트를 생성한다. 일부 실시예들에서, 블록(816)에 의해 표현되는 바와 같이, 디바이스는 쿼드트리들의 중간 세트들을 상관시킴으로써 쿼드트리들의 세트를 생성한다. 예를 들어, 도 5b에 도시된 바와 같이, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 평면들의 세트들(520a, 520n, ..., 520n) 및/또는 3d 포인트 클라우드들(506a, 506b, ..., 506n)에 기초하여 각각 쿼드트리들의 세트들(530a, 530b, ..., 530n)을 생성한다. 이어서, 도 5b에서의 예를 계속 참조하면, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 상관 모듈(1162))는 쿼드트리들의 세트들(530a, 530b, ..., 530n)을 상관시켜서 쿼드트리들의 병합된 세트(540)를 생성한다.
도 9는 일부 실시예들에 따른, 가상 기재로서 사용하기 위한 쿼드트리들의 세트를 생성하는 방법(900)의 흐름도를 도시한다. 일부 실시예들에서(그리고 일례로서 아래에서 상세히 설명되는 바와 같이), 방법(900)은 하나 이상의 프로세서들, 비일시적 메모리, 선택적 이미지 센서 또는 카메라 조립체, 선택적 디스플레이, 및 하나 이상의 선택적 입력 디바이스들을 포함하는, 도 1에서의 전자 디바이스(100) 또는 도 3에서의 디바이스(300)와 같은, 전자 디바이스(또는 그의 일부분)에 의해 수행된다. 예를 들어, 전자 디바이스는 착용 컴퓨팅 디바이스, 스마트폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 키오스크, 셋톱박스(STB), 오버톱(OTT) 박스, 게이밍 콘솔 등에 대응한다.
일부 실시예들에서, 방법(900)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 적합한 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 실시예들에서, 방법(900)은 비일시적 컴퓨터 판독가능 저장 매체(예컨대, 비일시적 메모리)에 저장된 코드, 프로그램들, 또는 명령어들을 실행시키는 하나 이상의 프로세서들에 의해 수행된다. 방법(900)에서의 일부 동작들이 선택적으로 조합되고/되거나, 일부 동작들의 순서는 선택적으로 변경된다. 간략하게, 방법(900)은: 상이한 기준점들/시점들에 대한 평면들의 복수의 세트들을 생성하는 단계; 평면들의 세트들을 상관시켜서 시간 경과에 따른 평면들의 병합된 세트를 획득하는 단계; 및 평면들의 병합된 세트에 기초하여 쿼드트리들의 세트를 생성하는 단계를 포함한다.
방법(900)은, 블록(902)에서, 전자 디바이스가 기준점(X)(예컨대, 기간 또는 카메라 위치)에 대한 이미지들의 세트에 기초하여 3차원(3d) 포인트 클라우드를 획득하는 단계로 시작된다. 일례로서, 도 5a에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 제n 기준점/시점(502n)(예컨대, 기준점 (X))에 대해 이미지들의 제n 세트(504n)에 기초하여 제n 3d 포인트 클라우드(506n)를 합성한다. 예를 들어, 디바이스(100)는, 이미지들의 제n 세트(504n) 내의 포인트들을 식별함으로써 그리고 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 디바이스 좌표들과 연관된 이미지 공간 내의 포인트들의 위치를 세계 좌표들로 변환하여 포인트들을 세계 좌표들에 대해 위치시킴으로써 제n 3d 포인트 클라우드(506n)를 합성한다.
방법(900)은, 블록(904)에서, 전자 디바이스가 기준점(X)에 대한 3d 포인트 클라우드에 평면들을 피팅하는 단계로 계속된다. 일례로서, 도 5a에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제n 3d 포인트 클라우드(506n)에 기초하여 평면들의 제n 세트(520n)를 구성한다. 예를 들어, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들(예컨대, 최소 피팅 제곱, 주 성분 분석, 동시 로컬화 및 맵핑(SLAM) 등)에 따라 제n 3d 포인트 클라우드(506n)에 평면들을 피팅함으로써 평면들의 제n 세트(520n)를 구성한다.
방법(900)은, 블록(906)에서, 기준점들(X, X-1, X-2, …, X-N)에 대한 3d 포인트 클라우드들에 피팅된 평면들을 병합하고/하거나 확장하고/하거나 정정함으로써 전자 디바이스가 시간 누적 평면들의 세트를 획득하는 단계로 계속된다. 일례로서, 도 5a에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 상관 모듈(1162))는 평면들의 제1 세트(520a)(예컨대, 기준점(X-2)과 연관됨), 평면들의 제2 세트(520b)(예컨대, 기준점(X-1)과 연관됨), …, 및 평면들의 제n 세트(520n)(예컨대, 기준점(X)과 연관됨)를 상관시켜서 평면들의 병합된 세트를 생성한다. 예를 들어, 기준점들(X, X-1, X-2, …, X-N)에 대한 3d 포인트 클라우드들에 피팅된 평면들의 세트들을 상관시키는 것은 기준점들(X, X-1, X-2, …, X-N)에 대한 3d 포인트 클라우드들에 피팅된 평면들의 위치, 크기, 및/또는 배향에서의 식별된 유사도들 및/또는 차이들에 기초하여 평면들을 확장하는 것, 평면들을 병합하는 것, 및/또는 시간 차원에 걸쳐서 평면들의 크기 또는 배향을 정정하는 것을 포함한다. 일부 실시예들에서, 평면들의 세트들을 상관시키는 것은 시간 경과에 따라 변경되는 크기들을 갖는 동적 평면들을 정정한다. 일부 실시예들에서, 평면들의 세트들을 상관시키는 것은 추가의 연관된 포인트들이 시간 경과에 따라 검출됨에 따라 평면들을 확대한다. 일부 실시예들에서, 평면들의 세트들을 상관시키는 것은 2개 이상의 평면들이 시간 경과에 따라 동일한 평면의 일부인 것으로 판정됨에 따라 평면들을 병합한다.
방법(900)은, 블록(908)에서, 전자 디바이스가 시간 누적 평면들의 세트에 기초하여 쿼드트리들의 세트를 생성하는 단계로 계속된다. 일례로서, 도 5a에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 쿼드트리 생성 모듈(1160))는 블록(906)으로부터의 평면들의 병합된 세트에 기초하여 쿼드트리들의 세트(525)를 생성한다. 예를 들어, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 쿼드트리들의 세트(525)를 생성한다.
도 10은 일부 실시예들에 따른, 쿼드트리들의 병합된 세트를 생성하는 방법(1000)의 흐름도를 도시한다. 일부 실시예들에서(그리고 일례로서 아래에서 상세히 설명되는 바와 같이), 방법(1000)은 하나 이상의 프로세서들, 비일시적 메모리, 선택적 이미지 센서 또는 카메라 조립체, 선택적 디스플레이, 및 하나 이상의 선택적 입력 디바이스들을 포함하는, 도 1에서의 전자 디바이스(100) 또는 도 3에서의 디바이스(300)와 같은, 전자 디바이스(또는 그의 일부분)에 의해 수행된다. 예를 들어, 전자 디바이스는 착용 컴퓨팅 디바이스, 스마트폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 키오스크, 셋톱박스(STB), 오버톱(OTT) 박스, 게이밍 콘솔 등에 대응한다.
일부 실시예들에서, 방법(1000)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 적합한 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 실시예들에서, 방법(1000)은 비일시적 컴퓨터 판독가능 저장 매체(예컨대, 비일시적 메모리)에 저장된 코드, 프로그램들, 또는 명령어들을 실행시키는 하나 이상의 프로세서들에 의해 수행된다. 방법(1000)에서의 일부 동작들이 선택적으로 조합되고/되거나, 일부 동작들의 순서는 선택적으로 변경된다. 간략하게, 방법(1000)은 상이한 기준점들/시점들에 대한 쿼드트리들의 세트들을 생성하는 단계; 및 쿼드트리들의 세트들을 상관시켜서 시간 경과에 따른 쿼드트리들의 병합된 세트를 획득하는 단계를 포함한다.
방법(1000)은, 블록(1002)에서, 전자 디바이스가 기준점(X)(예컨대, 기간 또는 카메라 위치)에 대한 이미지들의 세트에 기초하여 3차원(3d) 포인트 클라우드를 획득하는 단계로 시작된다. 일례로서, 도 5b에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 포인트 클라우드 합성 모듈(1156))는 제n 기준점/시점(502n)(예컨대, 기준점 (X))에 대해 이미지들의 제n 세트(504n)에 기초하여 제n 3d 포인트 클라우드(506n)를 합성한다. 예를 들어, 디바이스(100)는, 이미지들의 제n 세트(504n) 내의 포인트들을 식별함으로써 그리고 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 디바이스 좌표들과 연관된 이미지 공간 내의 포인트들의 위치를 세계 좌표들로 변환하여 포인트들을 세계 좌표들에 대해 위치시킴으로써 제n 3d 포인트 클라우드(506n)를 합성한다.
방법(1000)은, 블록(1004)에서, 전자 디바이스가 기준점(X)에 대한 3d 포인트 클라우드에 평면들을 피팅하는 단계로 계속된다. 일례로서, 도 5b에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 제n 3d 포인트 클라우드(506n)(예컨대, 기준점(X)과 연관됨)에 기초하여 평면들의 제n 세트(520n)를 구성한다. 예를 들어, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들(예컨대, 최소 피팅 제곱, 주 성분 분석, 동시 로컬화 및 맵핑(SLAM) 등)에 따라 제n 3d 포인트 클라우드(506n)에 평면들을 피팅함으로써 평면들의 제n 세트(520n)를 구성한다. 도 6b에 도시된 바와 같이, 예를 들어, 3d 포인트 클라우드와 연관된 3d 좌표 공간에서, 디바이스(100)는 도 6a에서의 포인트들의 클러스터들(605a, 605b, 605c, 605d)에 기초하여 복수의 평면들(610a, 610b, 610c, 610d)(예컨대, 무한 평면들)을 구성한다(예컨대, 식별한다).
방법(1000)은, 블록(1006)에서, 전자 디바이스가 기준점(X)에 대한 이미지들의 세트와 연관된 2차원(2d) 좌표 공간에서 3d 포인트 클라우드와 연관된 포인트들을 삼각측량하는 단계로 계속된다. 도 6c에 도시된 바와 같이, 예를 들어, 3d 포인트 클라우드를 합성하는 데 사용되는 복수의 이미지들과 연관된 2차원(2d) 좌표 공간에서, 디바이스(100)는 도 6a에서 포인트들의 클러스터들(605a, 605b, 605c, 605d) 내의 포인트들을 삼각측량한다.
방법(1000)은, 블록(1008)에서, 전자 디바이스가 3d 포인트 클라우드에 피팅된 평면들과 상관되지 않는 2d 좌표 공간 내의 삼각형들을 제거하여 기준점(X)에 대한 제한된 삼각측량 영역들을 획득하는 단계로 계속된다. 도 6d에 도시된 바와 같이, 예를 들어, 2d 좌표 공간에서, 디바이스(100)는 도 6b에서의 복수의 평면들(610a, 610b, 610c, 610d)에 기초하여 동일한 평면과 연관되지 않은 포인트들을 갖는 삼각형들을 제거하여 복수의 제한된 삼각측량 영역들(620a, 620b, 620c, 620d)을 획득한다.
일부 실시예들에서, 전자 디바이스는 도 10에 도시된 순서에 따라 블록들(1004, 1006, 1008, 1010)에 대응하는 동작들을 순차적으로 수행한다. 일부 실시예들에서, 전자 디바이스는 도 10에 도시된 순서와는 상이한 순서에 따라 블록들(1004, 1006, 1008, 1010)에 대응하는 동작들을 순차적으로 수행한다. 일부 실시예들에서, 전자 디바이스는 블록들(1004, 1006, 1008, 1010)에 대응하는 동작들을 동시에 수행한다.
방법(1000)은, 블록(1010)에서, 전자 디바이스가 3d 포인트 클라우드와 연관된 3d 좌표 공간 상에 제한된 삼각측량 영역들을 투영하는 단계로 계속된다. 방법(1000)은, 블록(1012)에서, 전자 디바이스가 기준점(X)에 대한 제한된 삼각측량 영역들에 기초하여 쿼드트리들의 세트를 생성하는 단계로 계속된다. 일례로서, 도 5b에서, 디바이스(100) 그의 컴포넌트(예컨대, 도 11에서의 평면 피팅 모듈(1158))는 평면들의 제n 세트(520n) 및/또는 제n 3d 포인트 클라우드(506n)에 기초하여 쿼드트리들의 제n 세트(530n)(예컨대, 기준점(X)과 연관됨)를 생성한다. 예를 들어, 디바이스(100)는 당업계에서의 공지된 알고리즘들 또는 기법들에 따라 쿼드트리들의 제n 세트(530n)를 생성한다. 도 6e에 도시된 바와 같이, 예를 들어, 디바이스(100)는 복수의 제한된 삼각측량 영역들(620a, 620b, 620c, 620d)을 3d 좌표 공간 내로 다시 투영하고 복수의 제한된 삼각측량 영역들(620a, 620b, 620c, 620d)을 사각형화하여 쿼드트리들(630a, 630b, 630c, 630d)을 획득한다. 도 6e에서, 쿼드트리들(630a, 630b, 630c, 630d)은 그들의 범위에 기초한 경계 박스들에 의해 둘러싸인다.
방법(1000)은, 블록(1014)에서, 전자 디바이스가 기준점(X-1, X-2, ..., X-N)에 대한 쿼드트리들의 세트들에 기초하여 기준점(X)에 대한 쿼드트리들의 세트의 부분들을 병합하고/하거나 확장하고/하거나 수정하는 단계로 계속된다. 일례로서, 도 5b에서, 디바이스(100) 또는 그의 컴포넌트(예컨대, 도 11에서의 상관 모듈(1162))는 쿼드트리들의 제1 세트(530a)(예컨대, 기준점(X-2)과 연관됨), 쿼드트리들의 제2 세트(530b)(예컨대, 기준점(X-1)과 연관됨), 및 쿼드트리들의 제n 세트(530n)(예컨대, 기준점(X)과 연관됨)를 상관시켜서 쿼드트리들의 병합된 세트(540)를 생성한다.
예를 들어, 기준점들(X, X-1, X-2, ..., X-N)에 대한 쿼드트리들의 세트들을 상관시키는 것은 기준점들(X, X-1, X-2, …, X-N)에 대한 쿼드트리들의 세트들의 위치, 크기, 및/또는 배향에서의 식별된 유사도들 및/또는 차이들에 기초하여 쿼드트리 평면들, 쿼드트리들을 병합하는 것, 및/또는 시간 차원에 걸쳐서 쿼드트리들의 크기 또는 배향을 정정하는 것을 포함한다. 일부 실시예들에서, 쿼드트리들의 세트들을 상관시키는 것은 시간 경과에 따라 변경되는 크기들을 갖는 동적 평면들과 연관된 쿼드트리들을 정정한다. 일부 실시예들에서, 쿼드트리들의 세트들을 상관시키는 것은 추가의 연관된 포인트들이 시간 경과에 따라 검출됨에 따라 쿼드트리들을 확대한다. 일부 실시예들에서, 쿼드트리들의 세트들을 상관시키는 것은 2개 이상의 쿼드트리들이 시간 경과에 따라 동일한 쿼드트리의 일부인 것으로 판정됨에 따라 쿼드트리들을 병합한다. 일부 실시예들에서, 쿼드트리들의 병합된 세트에서의 각각의 쿼드트리는: 실질적 수평 평면, 실질적 수직 평면, 또는 3개의 자유도들 중 하나 이상에 따라 경사진 평면 중 하나의 평면의 표시를 제공한다. 일부 실시예들에서, 병합된 쿼드트리들의 세트 각각은 가상 기재에 대응한다.
도 11은 일부 실시예들에 따른, 컴퓨팅 디바이스(1100)의 블록도이다. 일부 실시예들에서, 컴퓨팅 디바이스(1100)는 도 1에서의 디바이스(100) 또는 도 3에서의 디바이스(300)의 적어도 일부분에 대응하고, 전술된 기능들 중 하나 이상을 수행한다. 특정의 구체적인 특징부들이 도시되어 있지만, 당업자는 본 발명으로부터, 간결함을 위해 그리고 본 명세서에 개시되는 실시예들의 더 많은 관련 태양들을 불명료하게 하지 않도록 하기 위해 다양한 다른 특징부들이 예시되지 않았음을 인식할 것이다. 그를 위해, 비제한적인 예로서, 일부 실시예들에서, 컴퓨팅 디바이스(1100)는 하나 이상의 프로세싱 유닛(CPU)들(1102)(예컨대, 프로세서들), 하나 이상의 입출력(I/O) 인터페이스들(1103)(예컨대, 네트워크 인터페이스들, 입력 디바이스들, 출력 디바이스들, 및/또는 센서 인터페이스들), 메모리(1110), 프로그래밍 인터페이스(1105), 및 이들 및 다양한 다른 컴포넌트들을 상호접속시키기 위한 하나 이상의 통신 버스들(1104)을 포함한다.
일부 실시예들에서, 통신 버스들(1104)은, 시스템 컴포넌트들을 상호접속시키고 그들 사이의 통신을 제어하는 회로부를 포함한다. 메모리(1110)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 솔리드 스테이트 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하며; 일부 실시예들에서, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 다른 비휘발성 솔리드 스테이트 저장 디바이스와 같은 비휘발성 메모리를 포함한다. 메모리(1110)는, 선택적으로, CPU(들)(1102)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. 메모리(1110)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 또한, 일부 실시예들에서, 메모리(1110) 또는 메모리(1110)의 비일시적 컴퓨터 판독가능 저장 매체는 하기의 프로그램들, 모듈들 및 데이터 구조들, 또는 그들의 서브세트 - 선택적인 운영 체제(1120), 이미지 캡처 제어 모듈(1150), 이미지 프로세싱 모듈(1152), 좌표 변환 모듈(1154), 포인트 클라우드 합성 모듈(1156), 평면 피팅 모듈(1158), 쿼드트리 생성 모듈(1160), 상관 모듈(1162), 및 증강 현실 및/또는 가상 현실(AR/VR) 처리 모듈(1164)을 포함함 - 를 저장한다. 일부 실시예들에서, 하나 이상의 명령어들은 로직과 비일시적 메모리의 조합에 포함된다. 운영체제(1120)는, 다양한 기본 시스템 서비스들을 처리하기 위한 그리고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함한다.
일부 실시예들에서, 이미지 캡처 제어 모듈(1150)은, 이미지들을 캡처하거나 이미지 데이터를 획득하기 위해 이미지 센서 또는 카메라 조립체의 기능을 제어하도록 구성된다. 그를 위해, 이미지 캡처 제어 모듈(1150)은 한 세트의 명령어들(1151a) 및 휴리스틱 및 메타데이터(1151b)를 포함한다.
일부 실시예들에서, 이미지 프로세싱 모듈(1152)은 이미지 센서 또는 카메라 조립체로부터 원시 이미지 데이터를 사전프로세싱하도록(예컨대, 원시 이미지 데이터를 RGB 또는 YCbCr 이미지 데이터로 변환하도록) 구성된다. 그를 위해, 이미지 프로세싱 모듈(1152)은 한 세트의 명령어들(1153a) 및 휴리스틱 및 메타데이터(1153b)를 포함한다.
일부 실시예들에서, 좌표 변환 모듈(1154)은 세계 좌표들 및 디바이스 좌표들을 유지하도록 구성된다. 일부 실시예들에서, 좌표 변환 모듈(1154)은, 또한, 좌표 세트들 사이에서 변환하도록 구성된다. 그를 위해, 좌표 변환 모듈(1154)은 한 세트의 명령어들(1155a) 및 휴리스틱 및 메타데이터(1155b)를 포함한다.
일부 실시예들에서, 포인트 클라우드 합성 모듈(1156)은 2개 이상의 이미지들에 기초하여 기준점/시점(예컨대, 카메라 위치)에 대한 3차원(3d) 포인트 클라우드를 합성하도록 구성된다. 그를 위해, 포인트 클라우드 합성 모듈(1156)은 한 세트의 명령어들(1157a) 및 휴리스틱 및 메타데이터(1157b)를 포함한다.
일부 실시예들에서, 평면 피팅 모듈(1158)은 (예컨대, 최소 피팅 제곱, 주 성분 분석, 동시 로컬화 및 맵핑(SLAM) 등에 의해) 개개의 3d 포인트 클라우드에 대한 평면들의 세트를 구성(예컨대, 피팅)하도록 구성된다. 그를 위해, 평면 피팅 모듈(1158)은 한 세트의 명령어들(1159a) 및 휴리스틱 및 메타데이터(1159b)를 포함한다.
일부 실시예들에서, 쿼드트리 생성 모듈(1160)은 개개의 3d 포인트 클라우드에 대한 쿼드트리들의 세트를 생성하도록 구성된다. 그를 위해, 쿼드트리 생성 모듈(1160)은 한 세트의 명령어들(1161a) 및 휴리스틱 및 메타데이터(1161b)를 포함한다.
일부 실시예들에서, 상관 모듈(1162)은 시간적 차원에 걸쳐서 상이한 기준점들/시점들에 대한 쿼드트리들의 세트들을 상관시켜서 쿼드트리들의 병합된 세트를 획득하도록 구성된다. 일부 실시예들에서, 상관 모듈(1162)은, 또한, 시간적 차원에 걸쳐서 상이한 기준점들/시점들에 대한 평면들의 세트들을 상관시켜서 평면들의 병합된 세트를 획득하도록 구성된다. 그를 위해, 상관 모듈(1162)은 한 세트의 명령어들(1163a) 및 휴리스틱 및 메타데이터(1163b)를 포함한다.
일부 실시예들에서, AR/VR 처리 모듈(1164)은 검출된 평면들 및/또는 쿼드트리들의 시각적 표시들을 디스플레이하도록 구성된다. 일부 실시예들에서, AR/VR 처리 모듈(1164)은 AR/VR 객체들을 디스플레이 및 수정하도록 구성된다. 그를 위해, AR/VR 처리 모듈(1164)은 한 세트의 명령어들(1165a) 및 휴리스틱 및 메타데이터(1165b)를 포함한다.
이미지 캡처 제어 모듈(1150), 이미지 프로세싱 모듈(1152), 좌표 변환 모듈(1154), 포인트 클라우드 합성 모듈(1156), 평면 피팅 모듈(1158), 쿼드트리 생성 모듈(1160), 상관 모듈(1162), 및 AR/VR 처리 모듈(1164)은 단일 컴퓨팅 디바이스(1100) 상에 존재하는 것으로 예시되어 있지만, 다른 실시예들에서, 이미지 캡처 제어 모듈(1150), 이미지 프로세싱 모듈(1152), 좌표 변환 모듈(1154), 포인트 클라우드 합성 모듈(1156), 평면 피팅 모듈(1158), 쿼드트리 생성 모듈(1160), 상관 모듈(1162), 및 AR/VR 처리 모듈(1164)의 임의의 조합은 다양한 실시예들에서 별개의 컴퓨팅 디바이스들 내에 존재할 수 있다는 것이 이해되어야 한다. 예를 들어, 일부 실시예들에서, 이미지 캡처 제어 모듈(1150), 이미지 프로세싱 모듈(1152), 좌표 변환 모듈(1154), 포인트 클라우드 합성 모듈(1156), 평면 피팅 모듈(1158), 쿼드트리 생성 모듈(1160), 상관 모듈(1162), 및 AR/VR 처리 모듈(1164)의 각각은 별개의 컴퓨팅 디바이스 상에 또는 클라우드 내에 존재한다.
또한, 도 11은 본 명세서에 기술된 실시예들의 구조적 개략도와는 반대로 특정 구현예에 존재하는 다양한 특징부들의 기능 설명으로서 더 의도된다. 당업자에 의해 인식되는 바와 같이, 별개로 도시된 아이템들은 조합될 수 있고 일부 아이템들은 분리될 수 있다. 예를 들어, 도 11에 별개로 도시된 일부 기능 모듈들은 단일 모듈로 구현될 수 있고, 단일 기능 블록들의 다양한 기능들은 다양한 실시예들에서 하나 이상의 기능 블록들에 의해 구현될 수 있다. 모듈들의 실제 수 및 특정 기능들의 분할, 그리고 특징부들이 그들 사이에서 어떻게 할당되는지는 실시예들마다 다를 것이고, 특정 실시예에 대해 선택된 하드웨어, 소프트웨어, 및/또는 펌웨어의 특정 조합에 부분적으로 의존할 수 있다.
본 발명은 다양한 특징부들을 기술하며, 그들 중 어떠한 단일의 특징부도 본 명세서에 기술된 이익들에 단독으로 원인이 있는 것은 아니다. 당업자에게 명백한 바와 같이, 본 명세서에 기술된 다양한 특징부들이 조합, 수정, 또는 생략될 수 있음이 이해될 것이다. 본 명세서에 구체적으로 기술된 것들 이외의 다른 조합들 및 하위 조합들이 당업자에게 명백할 것이며, 본 발명의 일부를 형성하는 것으로 의도된다. 다양한 방법들이 다양한 흐름도 단계들 및/또는 상태들과 관련하여 본 명세서에 기술되어 있다. 많은 경우에, 흐름도들에 도시된 다수의 단계들 및/또는 상태들이 단일 단계 및/또는 상태로서 수행될 수 있도록 특정 단계들 및/또는 상태들이 함께 조합될 수 있다는 것이 이해될 것이다. 또한, 특정 단계들 및/또는 상태들은 개별적으로 수행되도록 추가 하위 구성요소들로 분할될 수 있다. 일부 경우에, 단계들 및/또는 상태들의 순서는 재배열될 수 있고, 소정 단계들 및/또는 상태들은 전적으로 생략될 수 있다. 또한, 본 명세서에 기술된 방법들은 본 명세서에 도시되고 기술된 것들에 대한 추가 단계들 및/또는 상태들이 또한 수행될 수 있도록 열린 결말(open-ended)인 것으로 이해되어야 한다.
본 명세서에 기술된 방법들 및 태스크들 중 일부 또는 전부는 컴퓨터 시스템에 의해 수행될 수 있고 완전히 자동화될 수 있다. 컴퓨터 시스템은, 일부 경우에, 기술된 기능들을 수행하기 위해 네트워크를 통해 통신 및 상호동작하는 다수의 별개의 컴퓨터들 또는 컴퓨팅 디바이스들(예컨대, 물리적 서버들, 워크스테이션들, 저장 어레이들 등)을 포함할 수 있다. 각각의 그러한 컴퓨팅 디바이스는, 전형적으로, 메모리 또는 다른 비일시적 컴퓨터 판독가능 저장 매체 또는 디바이스에 저장된 프로그램 명령어들 또는 모듈들을 실행하는 프로세서(또는 다수의 프로세서들)를 포함한다. 본 명세서에 개시된 다양한 기능들은 그러한 프로그램 명령어들로 구현될 수 있지만, 개시된 기능들 중 일부 또는 전부는 대안으로 컴퓨터 시스템의 애플리케이션 특정 회로부(예컨대, ASIC 또는 FPGA 또는 GP-GPU)로 구현될 수 있다. 컴퓨터 시스템이 다수의 컴퓨팅 디바이스들을 포함하는 경우, 이러한 디바이스들은 함께 위치될 수 있지만, 반드시 그러할 필요는 없다. 개시된 방법들 및 태스크들의 결과들은 솔리드 스테이트 메모리 칩들 및/또는 자기 디스크들과 같은 물리적 저장 디바이스들을 상이한 상태로 변환함으로써 지속적으로 저장될 수 있다.
본 발명은 본 명세서에 도시된 실시예들로 제한되는 것으로 의도되지 않는다. 본 발명에 기술된 실시예들에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 수 있으며, 본 명세서에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범주로부터 벗어남이 없이 다른 실시예들에 적용될 수 있다. 본 명세서에 제공된 본 발명의 교시는 다른 방법들 및 시스템들에 적용될 수 있고, 전술된 방법들 및 시스템들로 제한되지 않으며, 전술된 다양한 실시예들의 요소들 및 작용들이 조합되어 추가 실시예들을 제공할 수 있다. 따라서, 본 명세서에 기술된 신규한 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수 있으며; 또한, 본 명세서에 기술된 방법들 및 시스템들의 형태에서 다양한 생략, 치환 및 변화가 본 발명의 사상으로부터 벗어남이 없이 이루어질 수 있다. 첨부된 청구범위 및 이들의 등가물들은 본 발명의 범주 및 사상 내에 속하는 바로서 그러한 형태들 또는 수정들을 포함하도록 의도된다.

Claims (28)

  1. 방법으로서,
    하나 이상의 프로세서들, 비일시적 메모리, 이미지 센서, 디스플레이, 및 하나 이상의 입력 디바이스들을 갖는 전자 디바이스에서:
    상기 디스플레이 상에, 상기 이미지 센서의 시야 내에 객체들의 미디어 캡처 미리보기 상에 오버레이되는(overlaid) 제1 외관 상태로 망선 요소(reticle element)를 디스플레이하는 단계 - 상기 미디어 캡처 미리보기는 상기 이미지 센서의 시야 내의 객체들이 변경됨에 따라 변경됨 -;
    상기 미디어 캡처 미리보기에서 평면을 검출하는 단계; 및
    상기 평면을 검출한 것에 응답하여, 상기 디스플레이 상에, 상기 미디어 캡처 미리보기 상에 오버레이되는 제2 외관 상태로 상기 망선 요소를 디스플레이하는 단계 - 상기 망선 요소는 상기 제2 외관 상태로 디스플레이되는 동안 상기 평면의 범위의 일부분의 표시에 대응함 -
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 검출된 평면과 상기 망선 요소 사이에 적어도 사전정의된 수의 픽셀들이 중첩하는, 방법.
  3. 제1항에 있어서, 상기 검출된 평면은 상기 망선 요소의 임계 거리 내에 있는, 방법.
  4. 제1항에 있어서,
    상기 망선 요소의 제1 외관 상태로부터 상기 망선 요소의 제2 외관 상태로의 전이 애니메이션을 디스플레이하는 단계 - 상기 전이 애니메이션은 상기 망선 요소의 배향을 조정하여 상기 검출된 평면의 배향과 매칭시키는 것에 대응함 - 를 추가로 포함하는, 방법.
  5. 제1항에 있어서,
    상기 망선 요소가 상기 제2 외관 상태로 디스플레이되는 동안, 상기 망선 요소의 크기를 상기 검출된 평면의 크기에 대응하도록 수정하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서,
    상기 망선 요소가 상기 제2 외관 상태로 디스플레이되는 동안, 상기 하나 이상의 입력 디바이스들을 통해, 상기 망선 요소의 크기를 조정하는 것에 대응하는 제1 사용자 입력을 검출하는 단계; 및
    상기 제1 사용자 입력을 검출한 것에 응답하여, 상기 제1 사용자 입력의 방향, 상기 제1 사용자 입력의 크기, 또는 상기 제1 사용자 입력의 속도 중 적어도 하나 및 상기 검출된 평면에 기초하여 상기 망선 요소의 크기를 수정하는 단계
    를 추가로 포함하는, 방법.
  7. 제1항에 있어서,
    상기 망선 요소가 상기 제2 외관 상태로 디스플레이되는 동안, 상기 하나 이상의 입력 디바이스들을 통해, 객체 선택 인터페이스로부터 증강 또는 가상 현실 객체를 선택하는 것에 대응하는 제2 사용자 입력을 검출하는 단계; 및
    상기 제2 사용자 입력을 검출한 것에 응답하여, 상기 디스플레이 상에, 상기 검출된 평면에 대해 상기 미디어 캡처 미리보기 상에 오버레이되는 상기 선택된 증강 또는 가상 현실 객체를 디스플레이하는 단계
    를 추가로 포함하는, 방법.
  8. 제7항에 있어서, 상기 검출된 평면에 대해 상기 미디어 캡처 이전 상에 오버레이되는 상기 선택된 증강 또는 가상에 대한 객체를 디스플레이하는 단계는:
    상기 평면의 배향에 기초하여 상기 선택된 증강 또는 가상 현실 객체 상에 회전을 적용하는 단계를 포함하는, 방법.
  9. 제7항에 있어서,
    상기 제2 사용자 입력을 검출한 것에 응답하여, 상기 미디어 캡처 미리보기 상에 오버레이되는 상기 망선 요소를 디스플레이하기를 중지하는 단계를 추가로 포함하는, 방법.
  10. 제7항에 있어서,
    상기 하나 이상의 입력 디바이스들을 통해, 상기 증강 또는 가상 현실 객체와 상호작용하는 것에 대응하는 제3 사용자 입력을 검출하는 단계; 및
    상기 제3 사용자 입력을 검출한 것에 응답하여, 상기 제3 사용자 입력의 하나 이상의 특성들에 적어도 부분적으로 기초하여 상기 증강 또는 가상 현실 객체를 수정하는 단계를 추가로 포함하는, 방법.
  11. 전자 디바이스로서,
    디스플레이;
    이미지 센서;
    하나 이상의 입력 디바이스들;
    비일시적 메모리; 및
    하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은:
    상기 디스플레이 상에, 상기 이미지 센서의 시야 내에 객체들의 미디어 캡처 미리보기 상에 오버레이되는 제1 외관 상태로 망선 요소를 디스플레이하도록 - 상기 미디어 캡처 미리보기는 상기 이미지 센서의 시야 내의 객체들이 변경됨에 따라 변경됨 -;
    상기 미디어 캡처 미리보기에서 평면을 검출하도록; 그리고
    상기 평면을 검출한 것에 응답하여, 상기 디스플레이 상에, 상기 미디어 캡처 미리보기 상에 오버레이되는 제2 외관 상태로 상기 망선 요소를 디스플레이하도록 - 상기 망선 요소는 상기 제2 외관 상태로 디스플레이되는 동안 상기 평면의 범위의 일부분의 표시에 대응함 - 구성된, 전자 디바이스.
  12. 제11항에 있어서, 상기 검출된 평면과 상기 망선 요소 사이에 적어도 사전정의된 수의 픽셀들이 중첩하는, 전자 디바이스.
  13. 제11항에 있어서, 상기 검출된 평면은 상기 망선 요소의 임계 거리 내에 있는, 전자 디바이스.
  14. 제11항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 망선 요소의 제1 외관 상태로부터 상기 망선 요소의 제2 외관 상태로의 전이 애니메이션을 디스플레이하도록 - 상기 전이 애니메이션은 상기 망선 요소의 배향을 조정하여 상기 검출된 평면의 배향과 매칭시키는 것에 대응함 - 추가로 구성된, 전자 디바이스.
  15. 제11항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 망선 요소가 상기 제2 외관 상태로 디스플레이되는 동안, 상기 망선 요소의 크기를 상기 검출된 평면의 크기에 대응하도록 수정하도록 추가로 구성된, 전자 디바이스.
  16. 제11항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 망선 요소가 상기 제2 외관 상태로 디스플레이되는 동안, 상기 하나 이상의 입력 디바이스들을 통해, 상기 망선 요소의 크기를 조정하는 것에 대응하는 제1 사용자 입력을 검출하도록; 그리고
    상기 제1 사용자 입력을 검출한 것에 응답하여, 상기 제1 사용자 입력의 방향, 상기 제1 사용자 입력의 크기, 또는 상기 제1 사용자 입력의 속도 중 적어도 하나 및 상기 검출된 평면에 기초하여 상기 망선 요소의 크기를 수정하도록 추가로 구성된, 전자 디바이스.
  17. 제11항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 망선 요소가 상기 제2 외관 상태로 디스플레이되는 동안, 상기 하나 이상의 입력 디바이스들을 통해, 객체 선택 인터페이스로부터 증강 또는 가상 현실 객체를 선택하는 것에 대응하는 제2 사용자 입력을 검출하도록; 그리고
    상기 제2 사용자 입력을 검출한 것에 응답하여, 상기 디스플레이 상에, 상기 검출된 평면에 대해 상기 미디어 캡처 미리보기 상에 오버레이되는 상기 선택된 증강 또는 가상 현실 객체를 디스플레이하도록 추가로 구성된, 전자 디바이스.
  18. 제17항에 있어서, 상기 하나 이상의 프로세서들은
    상기 평면의 배향에 기초하여 상기 선택된 증강 또는 가상 현실 객체 상에 회전을 적용함으로써, 상기 검출된 평면에 대해 상기 미디어 캡처 이전 상에 오버레이되는 상기 선택된 증강 또는 가상에 대한 객체를 디스플레이하도록 구성된, 전자 디바이스.
  19. 제17항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 제2 사용자 입력을 검출한 것에 응답하여, 상기 미디어 캡처 미리보기 상에 오버레이되는 상기 망선 요소를 디스플레이하기를 중지하도록 추가로 구성된, 전자 디바이스.
  20. 제17항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 하나 이상의 입력 디바이스들을 통해, 상기 증강 또는 가상 현실 객체와 상호작용하는 것에 대응하는 제3 사용자 입력을 검출하도록; 그리고
    상기 제3 사용자 입력을 검출한 것에 응답하여, 상기 제3 사용자 입력의 하나 이상의 특성들에 적어도 부분적으로 기초하여 상기 증강 또는 가상 현실 객체를 수정하도록 추가로 구성된, 전자 디바이스.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020197035029A 2017-06-02 2018-03-21 가상 기재로서 사용하기 위한 평면 및/또는 쿼드트리들을 검출하기 위한 방법 및 디바이스 KR102355391B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762514529P 2017-06-02 2017-06-02
US62/514,529 2017-06-02
PCT/US2018/023493 WO2018222248A1 (en) 2017-06-02 2018-03-21 Method and device for detecting planes and/or quadtrees for use as a virtual substrate

Publications (2)

Publication Number Publication Date
KR20190141748A KR20190141748A (ko) 2019-12-24
KR102355391B1 true KR102355391B1 (ko) 2022-01-24

Family

ID=61972207

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197035029A KR102355391B1 (ko) 2017-06-02 2018-03-21 가상 기재로서 사용하기 위한 평면 및/또는 쿼드트리들을 검출하기 위한 방법 및 디바이스

Country Status (6)

Country Link
US (2) US10796445B2 (ko)
JP (1) JP6812579B2 (ko)
KR (1) KR102355391B1 (ko)
CN (1) CN111033572B (ko)
DE (1) DE112018002775T5 (ko)
WO (1) WO2018222248A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005091A (ja) * 2016-07-06 2018-01-11 富士通株式会社 表示制御プログラム、表示制御方法および表示制御装置
US10748345B2 (en) * 2017-07-07 2020-08-18 Adobe Inc. 3D object composition as part of a 2D digital image through use of a visual guide
NL2020562B1 (en) * 2018-03-09 2019-09-13 Holding Hemiglass B V Device, System and Methods for Compensating for Partial Loss of Visual Field
US11609675B2 (en) * 2018-12-19 2023-03-21 Google Llc Placement of objects in an augmented reality environment
CN113508361A (zh) * 2019-05-06 2021-10-15 苹果公司 用于呈现计算机生成现实文件的设备、方法和计算机可读介质
WO2021073562A1 (zh) * 2019-10-17 2021-04-22 贝壳找房(北京)科技有限公司 多点云平面融合方法及装置
US11554323B2 (en) 2020-09-11 2023-01-17 Riot Games, Inc. System and method for precise positioning with touchscreen gestures
CN114756162B (zh) * 2021-01-05 2023-09-05 成都极米科技股份有限公司 触控系统及方法、电子设备及计算机可读存储介质
US11741676B2 (en) 2021-01-21 2023-08-29 Samsung Electronics Co., Ltd. System and method for target plane detection and space estimation
US20230040610A1 (en) * 2021-08-06 2023-02-09 Apple Inc. Object placement for electronic devices
US11682180B1 (en) * 2021-12-09 2023-06-20 Qualcomm Incorporated Anchoring virtual content to physical surfaces

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3246382A (en) * 1964-11-13 1966-04-19 Frank P Zierden Adapter for seating carbide cutters
US5644324A (en) * 1993-03-03 1997-07-01 Maguire, Jr.; Francis J. Apparatus and method for presenting successive images
US7234937B2 (en) * 1999-11-30 2007-06-26 Orametrix, Inc. Unified workstation for virtual craniofacial diagnosis, treatment planning and therapeutics
JP4103073B2 (ja) * 2001-01-09 2008-06-18 ミクロナス ミュニッヒ ゲーエムベーハー ビデオ信号を変換する方法および装置
DE10126119C1 (de) * 2001-05-29 2002-11-07 Breed Automotive Tech Vorrichtung zum seitlichen Herausführen eines in einem Rohr verlegten elektrischen Kabels
US7755667B2 (en) * 2005-05-17 2010-07-13 Eastman Kodak Company Image sequence stabilization method and camera having dual path image sequence stabilization
JP2009505477A (ja) * 2005-08-12 2009-02-05 エヌエックスピー ビー ヴィ ディジタル画像安定化のための方法及びシステム
US7627174B1 (en) * 2005-08-24 2009-12-01 Qurio Holdings, Inc. Digital image crop and order linked to a physical cropping tool
AU2006352758A1 (en) * 2006-04-10 2008-12-24 Avaworks Incorporated Talking Head Creation System and Method
CN101529201B (zh) * 2006-10-20 2012-06-13 电子地图有限公司 用于匹配不同来源的位置数据的计算机布置和方法
CN101464999B (zh) * 2007-12-19 2011-01-05 鸿富锦精密工业(深圳)有限公司 三维色阶比对系统及方法
US7855737B2 (en) * 2008-03-26 2010-12-21 Fotonation Ireland Limited Method of making a digital camera image of a scene including the camera user
JP2010217719A (ja) * 2009-03-18 2010-09-30 Ricoh Co Ltd 装着型表示装置、その制御方法及びプログラム
US8264499B1 (en) * 2009-06-02 2012-09-11 Sprint Communications Company L.P. Enhancing viewability of information presented on a mobile device
KR20120040573A (ko) * 2010-10-19 2012-04-27 주식회사 팬택 이동식 태그를 이용한 증강 현실 제공 장치 및 방법
US9292973B2 (en) * 2010-11-08 2016-03-22 Microsoft Technology Licensing, Llc Automatic variable virtual focus for augmented reality displays
US8659697B2 (en) * 2010-11-11 2014-02-25 DigitalOptics Corporation Europe Limited Rapid auto-focus using classifier chains, MEMS and/or multiple object focusing
WO2012071478A2 (en) * 2010-11-24 2012-05-31 Liberty Plugins, Inc. System and method for secure addition of machine readable identification to an off-line database
EP3654147A1 (en) * 2011-03-29 2020-05-20 QUALCOMM Incorporated System for the rendering of shared digital interfaces relative to each user's point of view
US8638986B2 (en) * 2011-04-20 2014-01-28 Qualcomm Incorporated Online reference patch generation and pose estimation for augmented reality
US9324190B2 (en) * 2012-02-24 2016-04-26 Matterport, Inc. Capturing and aligning three-dimensional scenes
GB201208088D0 (en) * 2012-05-09 2012-06-20 Ncam Sollutions Ltd Ncam
US9279983B1 (en) * 2012-10-30 2016-03-08 Google Inc. Image cropping
US9619911B2 (en) * 2012-11-13 2017-04-11 Qualcomm Incorporated Modifying virtual object display properties
US9047706B1 (en) * 2013-03-13 2015-06-02 Google Inc. Aligning digital 3D models using synthetic images
CN104704494A (zh) * 2013-06-09 2015-06-10 苹果公司 管理具有多页面的文件夹的设备、方法和图形用户界面
CN107219628B (zh) * 2013-11-27 2020-05-01 奇跃公司 虚拟和增强现实系统与方法
CN112346638A (zh) * 2014-01-17 2021-02-09 曼托第一收购有限责任公司 透视计算机显示系统
JP6421445B2 (ja) * 2014-01-24 2018-11-14 株式会社リコー 投影システム、画像処理装置、校正方法、システムおよびプログラム

Also Published As

Publication number Publication date
US20180350099A1 (en) 2018-12-06
US11443453B2 (en) 2022-09-13
CN111033572A (zh) 2020-04-17
CN111033572B (zh) 2023-09-05
KR20190141748A (ko) 2019-12-24
US20200364897A1 (en) 2020-11-19
JP6812579B2 (ja) 2021-01-13
US10796445B2 (en) 2020-10-06
DE112018002775T5 (de) 2020-02-20
JP2020522809A (ja) 2020-07-30
WO2018222248A1 (en) 2018-12-06

Similar Documents

Publication Publication Date Title
KR102355391B1 (ko) 가상 기재로서 사용하기 위한 평면 및/또는 쿼드트리들을 검출하기 위한 방법 및 디바이스
US11727650B2 (en) Systems, methods, and graphical user interfaces for displaying and manipulating virtual objects in augmented reality environments
US11868543B1 (en) Gesture keyboard method and apparatus
US11227446B2 (en) Systems, methods, and graphical user interfaces for modeling, measuring, and drawing using augmented reality
KR102606618B1 (ko) 증강 및 가상 현실 환경들과 상호작용하기 위한 시스템들, 방법들, 및 그래픽 사용자 인터페이스들
US11488406B2 (en) Text detection using global geometry estimators
US10198101B2 (en) Multi-touch manipulation of application objects
US9600120B2 (en) Device, method, and graphical user interface for orientation-based parallax display
US20220335697A1 (en) Systems, Methods, and Graphical User Interfaces for Adding Effects in Augmented Reality Environments
US11112959B2 (en) Linking multiple windows in a user interface display
WO2009150522A1 (en) Camera gestures for user interface control
WO2016200455A1 (en) Selecting content items in a user interface display
US11393164B2 (en) Device, method, and graphical user interface for generating CGR objects
US11641460B1 (en) Generating a volumetric representation of a capture region
US11914646B1 (en) Generating textual content based on an expected viewing angle
KR20220131838A (ko) 폐색된 물리적 객체의 위치 표시
CN117980870A (zh) 经由触控板的计算机生成的表示进行内容操纵
Jeon et al. Interacting with a tabletop display using a camera equipped mobile phone

Legal Events

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