KR101707095B1 - 비정적 3d 맵 뷰들 - Google Patents

비정적 3d 맵 뷰들 Download PDF

Info

Publication number
KR101707095B1
KR101707095B1 KR1020147033055A KR20147033055A KR101707095B1 KR 101707095 B1 KR101707095 B1 KR 101707095B1 KR 1020147033055 A KR1020147033055 A KR 1020147033055A KR 20147033055 A KR20147033055 A KR 20147033055A KR 101707095 B1 KR101707095 B1 KR 101707095B1
Authority
KR
South Korea
Prior art keywords
map
geographic
objects
mapping application
input
Prior art date
Application number
KR1020147033055A
Other languages
English (en)
Other versions
KR20150007324A (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 KR20150007324A publication Critical patent/KR20150007324A/ko
Application granted granted Critical
Publication of KR101707095B1 publication Critical patent/KR101707095B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching
    • G01C21/32Structuring or formatting of map data
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3605Destination input or retrieval
    • G01C21/3611Destination input or retrieval using character input or menus, e.g. menus of POIs
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3605Destination input or retrieval
    • G01C21/3617Destination input or retrieval using user history, behaviour, conditions or preferences, e.g. predicted or inferred from previous use or current movement
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3626Details of the output of route guidance instructions
    • G01C21/3635Guidance using 3D or perspective road maps
    • G01C21/3638Guidance using 3D or perspective road maps including 3D objects and buildings
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • G01C21/367Details, e.g. road map scale, orientation, zooming, illumination, level of detail, scrolling of road map or positioning of current position marker
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • G01C21/3673Labelling using text of road map data items, e.g. road names, POI names
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3679Retrieval, searching and output of POI information, e.g. hotels, restaurants, shops, filling stations, parking facilities
    • G01C21/3682Retrieval, searching and output of POI information, e.g. hotels, restaurants, shops, filling stations, parking facilities output of POI information on a road map
    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B29/00Maps; Plans; Charts; Diagrams, e.g. route diagram
    • G09B29/003Maps
    • G09B29/006Representation of non-cartographic information on maps, e.g. population distribution, wind direction, radiation levels, air and sea routes
    • G09B29/007Representation of non-cartographic information on maps, e.g. population distribution, wind direction, radiation levels, air and sea routes using computer methods
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B29/00Maps; Plans; Charts; Diagrams, e.g. route diagram
    • G09B29/10Map spot or coordinate position indicators; Map reading aids
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S345/00Computer graphics processing and selective visual display systems
    • Y10S345/949Animation processing method
    • Y10S345/956Language driven animation

Landscapes

  • Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Computer Hardware Design (AREA)
  • Social Psychology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Ecology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

일부 실시예들이 3차원(3D) 맵의 뷰들을 생성하기 위한 맵핑 애플리케이션을 제공한다. 맵핑 애플리케이션은 3D 맵의 일부분에 대한 3D 맵 데이터를 식별하기 위한 지리적 데이터 모듈을 포함한다. 3D 맵 데이터는 (1) 3D 맵의 일부분이 나타내는 현실 세계 중 일부의 카메라 캡처 이미지(CCI)들, (2) CCI들에 텍스처링되는 것으로 지정되는 3D 맵의 일부분 내의 맵 요소들의 제1 세트, 및 (3) 비-CCI들에 텍스처링되는 것으로 지정되는 3D 맵의 일부분 내의 맵 요소들의 제2 세트를 포함한다. 맵핑 애플리케이션은 또한 3D 맵 내의 몇몇 맵 요소들에 대한 효과들을 생성함으로써 3D 맵의 뷰를 렌더링하여 몇몇 맵 요소들이 3D 맵의 뷰에서 애니메이션화된 것으로 보이게 하는 렌더링 엔진을 포함한다.

Description

비정적 3D 맵 뷰들{NON-STATIC 3D MAP VIEWS}
오늘날 이용가능한 많은 맵 기반 애플리케이션들은 여러 상이한 디바이스들(예컨대, 데스크톱들, 랩톱들, 태블릿 디바이스들, 스마트폰들, 핸드헬드 글로벌 포지셔닝 시스템(GPS) 수신기들 등)을 위해 그리고 여러 상이한 목적들(예컨대, 내비게이션, 브라우징, 스포츠 등)을 위해 설계된다. 이들 애플리케이션들 중 대부분은 맵에서 거리들, 고속도로들, 관심 지점들 등의 상대적 위치를 설명하는 맵 데이터에 기초하여 맵의 디스플레이들을 생성한다.
일부 맵 기반 애플리케이션들은, 맵의 상이한 유형들의 뷰(view)들을 제공하고 사용자들이 맵을 디스플레이하는 데 사용하는 애플리케이션에 대한 뷰의 유형을 선택하게 한다. 그러한 유형들의 뷰들의 예들은 맵 뷰, 위성 뷰, 하이브리드 뷰(hybrid view) 등을 포함한다. 맵의 상이한 유형들의 뷰들 중 일부 또는 전부에 대해, 다수의 맵 기반 애플리케이션들이 2차원(2D) 뷰잉 모드, 3차원(3D) 뷰잉 모드, 또는 둘 모두의 뷰잉 모드들을 제공한다.
본 발명의 일부 실시예들은, 맵핑 애플리케이션이 위성 뷰잉 모드에 있는 동안에 3차원(3D) 뷰들을 렌더링(rendering)할 때 맵의 3D 뷰들을 애니메이션화하는(animate) 신규한 맵핑 애플리케이션을 제공한다. 일부 실시예들에서, 맵핑 애플리케이션은 맵핑 애플리케이션이 위성 뷰잉 모드에 있을 때 카메라 캡처 이미지(camera captured image: CCI)들을 사용하여 맵의 3D 뷰들을 렌더링한다.
일부 실시예들의 맵핑 애플리케이션은 맵의 3D 뷰 내의 상이한 정의된 유형들의 맵 요소들 및/또는 구성물(construct)들(예컨대, 수역(body of water)들, 해안선(shoreline)들, 빌딩들, 경엽(foliage) 등)을 애니메이션화한다. 일부 실시예들의 맵핑 애플리케이션은 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들 중 일부 또는 전부를 상이하게 애니메이션화한다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 수역들 및 빌딩들을 렌더링하기 위한 상이한 셰이더(shader)들을 사용함으로써 수역들 및 빌딩들을 상이하게 애니메이션화한다.
일부 실시예들에서, 맵핑 애플리케이션은 맵핑 애플리케이션이 동작 중인 디바이스에 수신된 상이한 유형의 입력(예컨대, 터치 입력, 제스처 입력(gesture input), 오디오 입력, 모션 입력 등)에 기초하여 정의된 유형의 맵 요소들 및/또는 구성물들을 상이하게 애니메이션화한다. 예를 들어, 일부 실시예들의 맵핑 애플리케이션은 맵핑 애플리케이션이 오디오 입력, 모션 입력 등에 기초하여 수역들을 애니메이션화하는 경우와는 상이하게 터치 입력에 기초하여 수역들을 애니메이션화한다.
전술된 발명의 내용은 본 발명의 일부 실시예들에 대해 간단히 소개하는 역할을 하려는 것이다. 이는 본 문서에 개시되는 모든 발명의 주제의 소개 또는 개요인 것으로 의도되지 않는다. 다음의 상세한 설명 및 상세한 설명에서 참조되는 도면들은 발명의 내용에 기술된 실시예들뿐만 아니라 다른 실시예들을 추가로 기술할 것이다. 따라서, 본 문서에 의해 기술되는 실시예들 모두를 이해하기 위해, 발명의 내용, 발명을 실시하기 위한 구체적인 내용, 및 도면에 대한 전체적인 검토가 요구된다. 더욱이, 청구되는 주제는 발명의 내용, 발명을 실시하기 위한 구체적인 내용, 및 도면들 내의 예시적인 상세사항들에 의해 제한되는 것이 아니라, 보다 정확히 말해서, 첨부되는 특허청구범위에 의해 정의되어야 하는데, 그 이유는 청구되는 주제가 주제의 사상으로부터 벗어남이 없이 다른 특정 형태들로 구현될 수 있기 때문이다.
본 발명의 신규한 특징들은 첨부된 특허청구범위에 제시된다. 그러나, 설명의 목적을 위해, 본 발명의 여러 실시예들이 다음의 도면들에서 제시된다.
<도 1>
도 1은 애니메이션화된 3D 위성 맵 뷰들을 제공하는 일부 실시예들의 맵핑 애플리케이션을 실행시키는 디바이스를 개념적으로 도시한 도면이다.
<도 2>
도 2는 터치 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한 도면이다.
<도 3>
도 3은 제스처 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한 도면이다.
<도 4>
도 4는 모션 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한 도면이다.
<도 5>
도 5는 오디오 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한 도면이다.
<도 6>
도 6은 3D 위성 맵 뷰 내의 경엽을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한 도면이다.
<도 7>
도 7은, 3D 위성 맵 뷰 내의 빌딩들의 표면으로부터의 물의 반사 이미지들을 애니메이션화하고 3D 위성 맵 뷰 내의 해안선들을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한 도면이다.
<도 8>
도 8은 일부 실시예들의 시스템의 소프트웨어 아키텍처(software architecture)를 개념적으로 도시한 도면이다.
<도 9>
도 9는 3D 위성 맵 뷰들을 애니메이션화하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면이다.
<도 10>
도 10은 일부 실시예들의 맵핑 애플리케이션의 상태 다이어그램(state diagram)을 개념적으로 도시한 도면이다.
<도 11>
도 11은 클라이언트 디바이스(client device)에서의 디스플레이를 위해 맵의 뷰를 렌더링하도록 일부 실시예들의 맵핑 애플리케이션에 의해 수행되는 프로세싱 파이프라인을 개념적으로 도시한 도면이다.
<도 12>
도 12는 본 발명의 일부 실시예들에 따른, 3D 위성 맵 뷰들 내의 애니메이션화된 물 및 빌딩들의 렌더링을 관리하는 렌더링 제어기를 개념적으로 도시한 도면이다.
<도 13>
도 13은 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들을 위해 빌딩들을 렌더링하는 렌더링 엔진을 개념적으로 도시한 도면이다.
<도 14>
도 14는 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들을 위해 물을 렌더링하는 도 13에 도시된 렌더링 엔진을 개념적으로 도시한 도면이다.
<도 15>
도 15는 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들을 위해 해안선들을 렌더링하는 도 13에 도시된 렌더링 엔진을 개념적으로 도시한 도면이다.
<도 16>
도 16은 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들을 위해 경엽을 렌더링하는 도 13에 도시된 렌더링 엔진을 개념적으로 도시한 도면이다.
<도 17>
도 17은 모바일 컴퓨팅 디바이스의 아키텍처의 일례의 도면이다.
<도 18>
도 18은 본 발명의 일부 실시예들을 구현하는 전자 시스템의 일례를 개념적으로 도시한 도면이다.
<도 19>
도 19는 일부 실시예들에 따른 맵 서비스 동작 환경을 도시한 도면이다.
본 발명에 대한 다음의 상세한 설명에서는, 본 발명의 많은 상세사항들, 예들, 및 실시예들이 설명 및 기술된다. 그러나, 본 발명이 기술된 실시예들로 제한되지 않고 본 발명이 논의되는 구체적인 상세사항들 및 예들 중 일부가 없이 실시될 수 있음은 명백하고 당업자에게 자명할 것이다.
본 발명의 일부 실시예들은, 맵핑 애플리케이션이 위성 뷰잉 모드에 있는 동안에 3차원(3D) 뷰들을 렌더링할 때 맵의 3D 뷰들을 애니메이션화하는 신규한 맵핑 애플리케이션을 제공한다. 일부 실시예들에서, 맵핑 애플리케이션은 맵핑 애플리케이션이 위성 뷰잉 모드에 있을 때 CCI들을 사용하여 맵의 3D 뷰들을 렌더링한다.
일부 실시예들의 맵핑 애플리케이션은 맵의 3D 뷰 내의 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들(예컨대, 수역들, 해안선들, 빌딩들, 경엽 등)을 애니메이션화한다. 일부 실시예들의 맵핑 애플리케이션은 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들 중 일부 또는 전부를 상이하게 애니메이션화한다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 수역들 및 빌딩들을 렌더링하기 위한 상이한 셰이더들을 사용함으로써 수역들 및 빌딩들을 상이하게 애니메이션화한다.
도 1은 애니메이션화된 3D 위성 맵 뷰 피처(animated 3D satellite map view feature)를 제공하는 일부 실시예들의 맵핑 애플리케이션을 실행시키는 디바이스(100)를 개념적으로 도시한다. 구체적으로, 도 1은 맵핑 애플리케이션과의 상호작용에 대한 4개의 상이한 스테이지들(105 내지 120)을 도시한다.
제1 스테이지(105)는 디바이스(100)의 그래픽 사용자 인터페이스(graphical user interface: GUI)(175)를 보여주는데, 이는 GUI(175)의 페이지(page) 상의 그리고 도크 영역(dock area)(125) 내의 몇몇 애플리케이션들의 몇몇 선택가능 사용자 인터페이스(UI) 아이템들(예컨대, 아이콘들)을 포함한다. 이러한 스테이지(105)에서의 페이지 상에 디스플레이되는 선택가능 UI 아이템들 중 하나는 맵핑 애플리케이션을 호출하기(invoking) 위한 선택가능 UI 아이템(130)이다. 제1 스테이지(105)에 도시된 바와 같이, 사용자는 맵핑 애플리케이션을 열기 위해 UI 아이템(130)의 위치에서 디바이스의 디스플레이 스크린과의 터치 접촉을 통해 UI 아이템(130)을 선택하고 있다.
제2 스테이지(110)는 맵핑 애플케이션이 열린 후의 디바이스(100)를 도시한다. 이러한 스테이지에 도시된 바와 같이, 맵핑 애플리케이션은 2개의 교차하는 도로들, 2개의 빌딩들, 및 도로들과 빌딩들 뒤의 수역을 포함하는 맵의 뷰(또한, 맵 뷰로도 지칭됨)를 디스플레이하고 있다. 맵핑 애플리케이션은 또한 플로팅 제어부(floating control)들의 세트를 디스플레이하고 있다. 이러한 예에서, 맵핑 애플리케이션은 아래에 기술되는 "표준(Standard)" 뷰잉 모드에서 시작된다.
도시된 바와 같이, 플로팅 제어부들의 세트는 포지션 제어부(145), 3D 제어부(150), 및 페이지 컬 제어부(page curl control)(155)를 포함한다. 포지션 제어부(145)는 디바이스(100)의 현재 포지션을 포함하는 맵 뷰로 전환(transitioning)되기 위한 것이다. 예를 들어, 포지션 제어부(145)가 선택될 때, 일부 실시예들의 맵핑 애플리케이션은 디바이스(100)의 현재 포지션이 대략적으로 맵 뷰의 중심(예컨대, 디바이스(100)의 디스플레이 스크린의 중심)에 위치되는 맵 뷰로 전환된다. 일부 실시예들에서, 맵핑 애플리케이션은 디바이스(100)가 이동 중일 때 그러한 맵 뷰를 유지한다. 일부 실시예들의 맵핑 애플리케이션은 또한 디바이스(100)가 현재 가리키는 방향을 식별한다. 일부 실시예들에서, 맵핑 애플리케이션은 디바이스(100)가 글로벌 포지셔닝 시스템(GPS) 위성들로부터 수신하는 GPS 신호들을 이용하여 디바이스(100)의 위치를 식별한다. 대안적으로 또는 결합하여, 맵핑 애플리케이션은 디바이스(100)의 현재 위치를 계산하기 위한 다른 방법들(예컨대, 셀 타워 삼각측량법(cell tower triangulation))을 이용한다.
3D 제어부(150)는 맵 또는 그 맵을 따르는 경로를 3차원(3D)으로 브라우징하도록 허용하는 피처를 인에이블(enable) 및 디스에이블(disable)하기 위한 제어부이다. 일부 실시예들에서, 맵핑 애플리케이션은 맵의 2차원(2D) 뷰와 맵의 3D 뷰 사이를 신속하게 전환하기 위해 3D 제어부(150)를 제공한다. 3D 제어부(150)는 또한 (1) 맵의 현재 뷰가 3D 뷰라는 표시자, 및 (2) 3D 관점(3D perspective)이 주어진 맵 뷰에 이용가능하다(예컨대, 3D 뷰는 맵 뷰가 정의된 임계 줌 레벨을 지나 줌 아웃되는 경우에 이용가능하지 않을 수 있음)는 표시자로서 기능한다. 일부 실시예들에서, 맵핑 애플리케이션은 이들 표시들 중 일부에 대응하는 상이한 외양들의 3D 제어부(150)를 제공한다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은, 맵의 3D 뷰가 이용불가능한 경우에는 회색으로 보이는 것으로서, 3D 뷰가 이용가능하지만 맵이 2D 뷰에 있는 경우에는 흑색으로 보이는 것으로서, 그리고 맵이 3D 뷰에 있는 경우에는 청색으로 보이는 것으로서 3D 제어부(150)에 "3D"를 나타낸다. 일부 실시예들의 맵핑 애플리케이션은, 맵핑 애플리케이션이 위성 뷰잉 모드에 있고 맵의 3D 뷰가 이용가능한 경우(예컨대, 맵 뷰의 줌 레벨이 정의된 임계 줌 레벨보다 더 큰 경우)에 3D 제어부(150)의 제4 외양(예컨대, "3D" 문자 대신 빌딩 이미지 또는 형상)을 나타낸다. 제2 스테이지(110)에 도시된 바와 같이, 3D 피처는 이러한 예에서 3D 제어부(150)의 하이라이트화(highlighting)에 의해 나타낸 바와 같이 (예컨대, 3D 제어부(150)를 선택함으로써) 인에이블된다. 이와 같이, 맵핑 애플리케이션은 맵의 3D 뷰를 나타내고 있다.
페이지 컬 제어부(155)는, 페이지 컬 제어부(155)의 선택을 통해 액세스가능한 2차 UI 스크린에 덜 빈번하게 사용되는 소정의 옵션들을 배치함으로써 애플리케이션이 온-스크린 제어부(on-screen control)들의 개수를 최소화하도록 허용하는 제어부이다. 이러한 방식으로, 페이지 컬 제어부(155)는 맵핑 애플리케이션이 다른 세트의 제어부들에 의해 제공되는 추가적인 기능에 액세스하는 데 소극적 방식(unobtrusive way)을 제공하면서 맵을 더 많이 디스플레이하도록 허용한다.
일부 실시예들에서, 페이지 컬 제어부(155)는 맵핑 애플리케이션이 제공하는 맵 뷰들 중 적어도 일부 상에 영구적으로 디스플레이된다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 맵핑 애플리케이션이 맵 브라우징 모드(map-browsing mode), 위치 검색 모드(location-searching mode), 또는 경로 식별 모드(route-identification mode)에 있을 때 페이지 컬 제어부(155)를 영구적으로 디스플레이한다. 일부 실시예들의 맵핑 애플리케이션은 추가적인 기능이 실행 중인 태스크에 부적절한 것으로 생각되는 맵 뷰들에는 페이지 컬 제어부(155)를 제공하지 않는다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 맵핑 애플리케이션이 경로 내비게이션 모드에 있는 동안에는 페이지 컬 제어부(155)를 나타내지 않는다.
페이지 컬 제어부(155)는, 개념적으로 현재 뷰의 "뒤" 또는 "아래"에 있는 다른 세트의 제어부들의 위치를 나타낸다. 페이지 컬 제어부(155)가 선택될 때, 맵핑 애플리케이션은 현재 뷰를 "필링(peel)"하여 다른 세트의 제어부들을 보여주는 다른 뷰를 디스플레이하는 애니메이션을 나타낸다. 제3 스테이지(115)는 사용자가 페이지 컬 제어부(155)를 선택(또는 선택하여 드래그)한 후의 맵핑 애플리케이션을 도시하는데, 그 맵핑 애플리케이션은 그러한 애니메이션을 도시한다. 도 1이 페이지 컬 제어부(155)를 선택함으로써 다른 세트의 제어부들을 나타내는 것을 도시하지만, 일부 실시예들의 맵핑 애플리케이션은 상이한 기술들을 이용하여 다른 세트의 제어부들을 나타낸다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 맵핑 애플리케이션이 디바이스의 디스플레이 스크린 상에서의 제스처 입력(예컨대, 스와이프 제스처(swipe gesture))을 수신할 때 다른 세트의 제어부들을 (예컨대, 디바이스의 디스플레이 스크린 상으로 그 다른 세트의 제어부들을 슬라이드함으로써) 나타낸다.
이러한 스테이지에 의해 도시된 바와 같이, 맵핑 애플리케이션은, 일단 맵핑 애플리케이션이 제2 스테이지(110)에 보인 페이지를 "필링"하면, 몇몇 제어부들을 나타낸다. 일부 실시예들의 맵핑 애플리케이션이 페이지 컬 제어부(155)의 선택 후에 나타내는 제어부들 중에는 "표준" 뷰잉 모드를 활성화시키기 위한 표준 뷰잉 모드 제어부(160), 하이브리드 뷰잉 모드(hybrid viewing mode)를 활성화시키기 위한 하이브리드 뷰잉 모드 제어부(165), 및 위성 뷰잉 모드를 활성화시키기 위한 위성 뷰잉 모드 제어부(170)를 포함하는 뷰잉 모드 제어부들의 세트가 있다.
맵핑 애플리케이션이 위성 뷰잉 모드에 있는 경우, 일부 실시예들의 맵핑 애플리케이션은 CCI들을 사용하여 맵 뷰들을 렌더링한다. 일부 실시예들에서, CCI들은 (3D 모델의 뷰들을 렌더링하는 데 사용되는 가상 카메라와는 상반되는 바와 같이) 사람들 및/또는 기계들에 의해 동작되는 실제 카메라들에 의해 캡처된 현실 세계의 이미지들이다. CCI들은 위성들 상의 실제 카메라들에 의해 캡처된 이미지들, 비행 캡처 이미지들(예컨대, 항공기, 우주 왕복선, 헬리콥터, 열기구 풍선, 및/또는 항공 사진 촬영에 사용되는 임의의 다른 디바이스 상의 실제 카메라에 의해 캡처된 이미지들), 주행 중 캡처 이미지들(예컨대, 승용차, 트럭, 오토바이, 버스, 자전거, 기차, 및/또는 지상에서 운행되는 임의의 다른 유형의 운송수단 상의 실제 카메라에 의해 캡처된 이미지들) 등을 포함한다. CCI들은 일부 실시예들에서 현실 세계 캡처 이미지들로 지칭된다. 일부 실시예들의 맵핑 애플리케이션은 맵, 맵 요소들, 및/또는 맵 구성물들에 CCI들을 텍스처 맵핑(texture mapping)함으로써 위성 맵 뷰들을 렌더링한다.
일부 실시예들에서, 맵 서비스는 현실 세계를 나타내는 맵의 3D 모델을 현실 세계로부터 수집된 지리적 데이터에 기초하여 생성한다. 맵의 3D 모델의 3D 프리미티브(primitive)들(예컨대, 점, 선, 폴리곤(polygon), 표면 등) 중 일부 또는 전부는 현실 세계에서의 대응하는 위치를 맵핑하는 위치 데이터를 포함한다. 일부 실시예들에서, 캡처링 디바이스(예컨대, 실제 카메라)가 CCI들을 캡처하는 경우, 캡처링 디바이스는 또한 캡처링 디바이스의 위치(예컨대, GPS 데이터) 및 포지션을 기록한다.
특정 CCI를 캡처하는 데 사용되는 캡처링 디바이스의 위치 및 포지션에 관한 정보에 기초하여, 일부 실시예들의 맵 서비스는 그 특정 CCI 내의 픽셀들 및/또는 픽셀들의 그룹들이 상관하는 맵의 3D 모델에서의 포지션들을 식별한다. 이어서, 일부 실시예들에서, 맵 서비스는 식별된 포지션들에 기초하여 맵의 3D 모델에 그 특정 CCI를 맵핑한다. 그러한 맵핑은, 일부 실시예들에서, 텍스처 맵핑으로 지칭된다. 일부 실시예들에서, 맵 서비스는 특정 CCI 내의 요소들이 맵의 3D 모델 내의 대응하는 요소들과 더 잘 정렬하도록 그 특정 CCI를 조작한다(예컨대, 회전시키고, 병진시키고, 스케일링하는 등을 한다).
일부 실시예들에서, 맵핑 애플리케이션은 위에 기술된 맵 서비스에 (예컨대, 인터넷을 통해) 액세스함으로써 그리고 맵핑 애플리케이션이 맵 뷰들을 렌더링하게 되는 맵의 3D 모델의 일부분을 나타내는 (예컨대, 위성 맵 타일(satellite map tile)들로서 저장된) 데이터를 검색함으로써 CCI들에 텍스처링되는 맵의 3D 모델을 사용하여 맵 뷰들을 렌더링한다. 데이터는, 일부 실시예들에서, 3D 모델의 일부분 내의 맵 요소들 및/또는 맵 구성물들을 나타내는 폴리곤들, 및 맵핑 애플리케이션이 그 폴리곤들에 텍스처 맵핑시키는 대응하는 CCI들을 포함한다. 그러한 렌더링은 일부 실시예들에서 CCI들을 사용하는 입체 렌더링(stereographic rendering)으로 지칭된다. 일부 실시예들에서, 맵핑 애플리케이션은, 맵핑 애플리케이션이 위성 뷰잉 모드에 있고 본 출원에 기술된 3D 위성 맵 뷰들을 렌더링하고 있는 경우, 맵의 3D 모델의 그러한 맵 뷰들을 렌더링한다. CCI들로 3D 맵들을 생성하는 것에 대한 상세사항들은 발명의 명칭이 "3D 거리들(3D Streets)"인 PCT 출원 PCT/EP2011/054155에 기술되어 있다. PCT 출원 PCT/EP2011/054155는 참조로서 본 명세서에 포함된다.
맵핑 애플리케이션이 "표준" 뷰잉 모드에 있는 경우, 일부 실시예들의 맵핑 애플리케이션은 비-CCI들(예컨대, 사용자 생성 텍스처들/이미지들, 기계 생성 텍스처들/이미지들 등)을 사용하여 맵 뷰들을 렌더링한다. 다시 말해, 일부 그러한 실시예들의 맵핑 애플리케이션은 어떠한 CCI들도 사용함이 없이 "표준" 맵 뷰들을 렌더링한다.
또한, 제3 스테이지(115)는 사용자가 위성 뷰잉 모드를 활성시키고 있는 것을 도시한다. 구체적으로, 사용자는 위성 뷰잉 모드 제어부(170)의 하이라이트화에 의해 나타낸 바와 같이 위성 뷰잉 모드 제어부(170)를 (예컨대, 손가락을 사용해서 탭핑(tapping)하여) 선택함으로써 위성 뷰잉 모드를 활성화시킨다. 맵핑 애플리케이션이 위성 뷰잉 모드 제어부(170)의 선택을 수신하는 경우, 일부 실시예들의 맵핑 애플리케이션은 표준 뷰잉 모드에서 맵을 렌더링하는 것으로부터 위성 뷰잉 모드에서 맵을 렌더링하는 것으로 전환된다.
제4 스테이지(120)는 맵핑 애플리케이션이 위성 뷰잉 모드가 활성화된 후의 맵 뷰를 디스플레이하고 있는 것을 도시한다. 위에 언급된 바와 같이, 일부 실시예들의 위성 뷰잉 모드 동안, CCI들은 맵, 맵 요소들, 및/또는 맵 구성물들에 텍스처 맵핑된다. 이와 같이, 이러한 스테이지에서의 빌딩들은 창문들을 갖는 것으로 도시되고 도로들은 차선 표시들을 갖는 것으로 도시된다.
일부 실시예들에서, 맵핑 애플리케이션의 애니메이션화된 3D 위성 맵 뷰 피처는 맵 뷰 내의 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들(예컨대, 수역들, 해안선들, 빌딩들, 경엽 등)을 애니메이션화한다. 맵핑 애플리케이션의 상이한 실시예들은 임의의 수의 상이한 정의된 유형들의 맵 요소들을 애니메이션화한다. 이러한 예에 대해, 맵핑 애플리케이션은 물에서의 잔물결(ripple wave)들의 애니메이션을 (예컨대, 잔잔한 물(still water)을 애니메이션화하기 위한 셰이더를 사용하여) 생성함으로써 수역들(예컨대, 바다, 호수, 강, 저수지, 항만 등)로서 식별되는 맵 요소들을 애니메이션화한다. 제4 스테이지(120)에서의 애니메이션은 물에서의 잔물결들을 개념적으로 나타내는 수역 내의 짧은 곡선들에 의해 묘사된다.
본 출원에 기술된 많은 예들 및 실시예들은 도 1에 도시된 일 세트의 UI 요소들 및 제어부들, 또는 상이한 세트의 UI 요소들 및/또는 제어부들을 갖거나 설명 및 간소성을 위해 어느 것도 갖지 않는 맵핑 애플리케이션의 GUI를 보여준다. 당업자는, 일부 실시예들의 맵핑 애플리케이션의 GUI가 맵핑 애플리케이션의 상이한 모드들(예컨대, 맵 브라우징 모드, 위치 검색 모드, 경로 식별 모드, 경로 내비게이션 모드 등)에 대한 추가적인 그리고/또는 상이한 UI 요소들 및/또는 제어부들을 포함할 수 있음을 이해할 것이다. 예를 들어, 맵 브라우징 모드에 있는 동안, 일부 실시예들의 맵핑 애플리케이션은 도 1에 도시된 UI 요소들 및 제어부들뿐만 아니라, 시작 위치 및 종료 위치로부터의 맵을 따르는 경로들을 요청하기 위한 방향 제어부를 포함하는 디바이스의 디스플레이 스크린 상단 근처에 포지셔닝되는 상단 바(top bar), 맵 내의 소정 맵 아이템들(예컨대, 거리, 업체, 관심 지점 등)의 위치를 검색하기 위한 검색 필드, 맵 요소들 및 경로들의 위치들을 북마킹(bookmarking)하기 위한 북마크 제어부 등을 포함한다.
또한, 본 출원에 기술되는 많은 예들 및 실시예들은 맵 브라우징 모드에서의 맵핑 애플리케이션을 예시한다. 일부 실시예들에서, 맵핑 애플리케이션은 맵과 상호작용하기 위한 몇몇 상이한 모드들(예컨대, 위치 검색 모드, 경로 식별 모드, 경로 내비게이션 모드 등)을 포함한다. 일부 실시예들의 애플리케이션은 가능한 한 콘텐츠를 많이 디스플레이하기 위해 콘텐츠의 상단에 떠 있는 최소 세트의 온-스크린 제어부들을 사용함으로써 그의 상이한 모드들 각각에 대한 제어부들을 끊김없이 결합하여 통합하는 신규한 사용자 인터페이스(UI) 설계를 포함한다. 추가적으로, 이러한 클러스터(cluster)는 실행 중인 태스크에 적응되어, 사용자가 상이한 모드들 사이(예컨대, 브라우징과 검색과 경로 식별과 경로 내비게이션 사이)를 이동하는 경우, 애니메이션화된 방식으로 그의 콘텐츠들을 조정한다. 적응적 특성(adaptive nature)을 갖는 이러한 공통 요소는 맵핑 애플리케이션이 상이한 태스크들에 대해, 그들 태스크들 사이에서 이동하는 동안 일관적인 외양 및 상호작용 모델을 유지하면서, 최적화하는 것을 가능하게 한다.
본 발명의 보다 상세한 몇몇 실시예들이 아래의 섹션들에 기술된다. 섹션 I은 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰 피처에 대한 예시적인 용례들의 상세사항들을 기술한다. 이어서, 섹션 II는 일부 실시예들의 애니메이션화된 3D 위성 맵 뷰 피처에 대한 이미지 프로세싱의 상세사항들을 기술한다. 다음으로, 섹션 III은 본 발명의 일부 실시예들을 구현하는 예시적인 전자 시스템들을 기술한다. 마지막으로, 섹션 IV는 본 발명의 일부 실시예들이 동작하는 맵 서비스 동작 환경을 기술한다.
I. 애니메이션화된 3D 위성 맵 뷰들에 대한 예시적인 용례들
위에 논의된 바와 같이, 맵핑 애플리케이션이 위성 뷰잉 모드에 있는 경우, 일부 실시예들의 맵핑 애플리케이션은 3D 위성 맵 뷰들 내의 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들을 애니메이션화하는 특징을 제공한다. 3D 위성 맵 뷰들 내의 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들을 애니메이션화하는 것에 대안적으로 또는 이와 관련하여, 일부 실시예들의 맵핑 애플리케이션은 맵핑 애플리케이션이 동작 중인 디바이스에 수신된 입력의 상이한 유형들(예컨대, 터치 입력, 제스처 입력, 오디오 입력, 모션 입력 등)에 기초하여, 정의된 유형들의 맵 요소들 및/또는 구성물들을 상이하게 애니메이션화한다.
A. 물의 애니메이션들
도 2는 터치 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한다. 구체적으로, 도 2는 터치 입력에 응답하여 수역을 애니메이션화하는 4개의 상이한 스테이지들(205 내지 220)에서의 일부 실시예들의 맵핑 애플리케이션의 GUI(200)를 도시한다.
제1 스테이지(205)는, 물에서의 잔물결들을 개념적으로 나타내는 수역 내의 짧은 곡선들에 의해 묘사된 수역의 애니메이션이 설명 및 간소성을 위해 도시되어 있지 않다는 점을 제외하면 도 1에 도시된 제4 스테이지(120)와 유사하다. 즉, 도 2의 제1 스테이지(205)는 2개의 교차하는 도로들, 2개의 빌딩들, 및 도로들과 빌딩들 뒤의 수역을 포함하는 3D 위성 맵 뷰를 도시한다.
제2 스테이지(210)는 사용자가 수역 상의 소정 위치를 선택하는 것을 도시한다. 이러한 예에서, 사용자는 맵핑 애플리케이션이 동작 중인 디바이스의 터치스크린을 손가락을 사용해서 탭핑함으로써 수역의 위치를 선택한다.
제3 스테이지(215)는 사용자가 수역의 그 위치를 선택한 후의 GUI(200)를 도시한다. 맵핑 애플리케이션이 수역의 선택을 수신한 경우, 이러한 예에 대한 맵핑 애플리케이션은 사용자에 의해 선택된 수역의 위치 또는 그 근처를 발원으로 하는 파문(water ripple)들의 애니메이션을 (예컨대, 파문들을 애니메이션화하기 위한 셰이더를 사용하여) 생성한다. 도시된 바와 같이, 여러 개의 파문들(225)이 제2 스테이지(210)에서 사용자에 의해 선택된 수역의 위치에 또는 그 근처에 도시된다.
제4 스테이지(220)는 제3 스테이지(215)에 예시된 파문들의 애니메이션의 진행을 도시한다. 이러한 예에 대해, 맵핑 애플리케이션은, 파문들이 사용자에 의해 선택된 수역의 그 위치로부터 멀리 전파되었도록 파문들을 애니메이션화함으로써 제3 스테이지(215)에 도시된 파문들을 계속해서 애니메이션화한다.
도 2가 단일 터치 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일례를 도시하지만, 당업자는 일부 실시예들의 맵핑 애플리케이션이 다수의 터치 입력들에 대한 파문 효과들의 애니메이션들을 생성한다는 것을 인식할 것이다. 또한, 일부 실시예들에서, 맵핑 애플리케이션은 상이한 유형들의 터치 입력에 기초하여 파문 효과들 및/또는 다른 효과들의 애니메이션들을 생성한다. 예를 들어, 사용자는 한 손가락을 사용해서 물을 터치하고 유지하는 한편 다른 손가락을 사용해서 물을 터치하고 이를 통해 이동하여 물에 파문 효과들 및/또는 파도 효과들을 생성하게 할 수 있다.
도 3은 제스처 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한다. 구체적으로, 도 3은 제스처 입력에 응답하여 수역을 애니메이션화하는 4개의 상이한 스테이지들(305 내지 320)에서의 일부 실시예들의 맵핑 애플리케이션의 GUI(200)를 도시한다.
제1 스테이지(305)는, 물에서의 잔물결들을 개념적으로 나타내는 수역 내의 짧은 곡선들에 의해 묘사된 수역의 애니메이션이 설명 및 간소성을 위해 도시되어 있지 않다는 점을 제외하면 도 1에 도시된 제4 스테이지(120)와 유사하다. 이와 같이, 도 3의 제1 스테이지(305)는 2개의 교차하는 도로들, 2개의 빌딩들, 및 도로들과 빌딩들 뒤의 수역을 포함하는 3D 위성 맵 뷰를 도시한다.
제2 스테이지(310)는 사용자가 맵 상에서 패닝 동작(panning operation)을 수행하는 것을 도시한다. 도시된 바와 같이, 이러한 예에서의 사용자는 맵핑 애플리케이션이 동작 중인 디바이스의 터치스크린을 손가락을 사용해서 터치하고 맵을 우측으로 패닝하도록 터치스크린의 좌측으로 터치스크린을 따라 손가락을 드래그함으로써 맵을 패닝한다.
제3 스테이지(315)는 사용자가 맵 상에서의 패닝 동작을 거의 완료할 때의 GUI(200)를 도시한다. 이러한 스테이지(315)에서, 사용자는 2개의 도로들 및 2개의 빌딩들이 제2 스테이지(310)에 예시된 도로들 및 빌딩들보다 좌측으로 더 멀어진 것으로 보이도록 맵을 우측으로 패닝했다.
제4 스테이지(320)는 사용자가 맵 상에서의 패닝 동작을 완료한 후의 GUI(200)를 도시한다. 이러한 예에서, 사용자는 디바이스의 터치스크린으로부터 손가락을 들어 올림으로써 패닝 동작을 완료한다. 일부 실시예들에서, 맵핑 애플리케이션이 패닝 동작의 완료를 수신한 경우, 맵핑 애플리케이션은 맵의 패닝에 의해 야기되는 것으로 보이는 수역 내의 파도들의 애니메이션을 (예컨대, 파도들을 애니메이션화하기 위한 셰이더를 사용하여) 생성한다. 이러한 예에 대해, 맵핑 애플리케이션은 수역에서 우측으로부터 좌측으로 너울대는(roll) 것으로 보이는 파도들을 생성한다. 이러한 파도들은 제4 스테이지(320)에서 너울대는 파도(rolling wave)들을 개념적으로 나타내는 수역 내의 긴 곡선들에 의해 도시된다.
도 3이 특정 제스처 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일례를 도시하지만, 당업자는 일부 실시예들의 맵핑 애플리케이션이 상이한 유형들의 제스처 입력에 대한 파도 효과들의 애니메이션들을 생성한다는 것을 인식할 것이다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 맵이 보이는 줌 레벨을 감소시키기 위한 핀치 제스처(pinch gesture)들, 맵이 보이는 줌 레벨을 증가시키기 위한 스프레드 제스처(spread gesture)들 등에 응답하여 파도 효과들의 애니메이션들을 생성한다. 또한, 일부 실시예들의 맵핑 애플리케이션은 추가적인 그리고/또는 상이한 유형들의 맵 브라우징 동작들(예컨대, 회전시키기, 기울이기, 줌하기 등)을 수행하기 위해 정의된 제스처들에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화한다.
도 4는 모션 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한다. 구체적으로, 도 4는 모션 입력에 응답하여 수역을 애니메이션화하는 3개의 상이한 스테이지들(405 내지 415)에서의, 맵핑 애플리케이션이 동작 중인 디바이스(400) 상에 디스플레이되는 일부 실시예들의 맵핑 애플리케이션의 GUI(200)를 도시한다.
제1 스테이지(405)는, 물에서의 잔물결들을 개념적으로 나타내는 수역 내의 짧은 곡선들에 의해 묘사된 수역의 애니메이션이 설명 및 간소성을 위해 도시되어 있지 않다는 점을 제외하면 도 1에 도시된 제4 스테이지(120)와 유사하다. 이와 같이, 제1 스테이지(405)는 2개의 교차하는 도로들, 2개의 빌딩들, 및 도로들과 빌딩들 뒤의 수역을 포함하는 3D 위성 맵 뷰를 도시한다.
제2 스테이지(410)는 사용자가 맵핑 애플리케이션이 동작 중인 디바이스(400)를 이동시키는 것을 도시한다. 도시된 바와 같이, 이러한 예에서, 사용자는 손가락을 사용해서 디바이스(400)의 우측 측면을 탭핑함으로써 디바이스(400)를 이동시킨다.
제3 스테이지 (415)는 사용자가 디바이스(400)를 탭핑한 후의 GUI(200)를 도시한다. 일부 실시예들에서, 맵핑 애플리케이션이 디바이스(400)의 이동을 (예컨대, 가속도계 또는 자이로스코프와 같은 디바이스(400)의 모션 센서를 사용하여) 검출하는 경우, 맵핑 애플리케이션은 디바이스(400)의 이동에 의해 야기되는 것으로 보이는 수역 내의 파도들의 애니메이션을 (예컨대, 파도들을 애니메이션화하기 위한 셰이더를 사용하여) 생성한다. 이러한 예에서, 맵핑 애플리케이션은 수역에서 우측으로부터 좌측으로 너울대는 것으로 보이는 파도들의 애니메이션을 생성한다. 이들 파도들은 제3 스테이지(415)에서 너울대는 파도들을 개념적으로 나타내는 수역 내의 긴 곡선들에 의해 도시된다.
도 5는 오디오 입력에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한다. 구체적으로, 도 5는 오디오 입력에 응답하여 수역을 애니메이션화하는 3개의 상이한 스테이지들(505 내지 515)에서의, 맵핑 애플리케이션이 동작 중인 디바이스(500) 상에 디스플레이되는 일부 실시예들의 맵핑 애플리케이션의 GUI(200)를 도시한다. 도시된 바와 같이, 디바이스(500)는 소리를 감지하기 위한 마이크로폰(520)을 포함한다.
제1 스테이지(505)는, 물에서의 잔물결들을 개념적으로 나타내는 수역 내의 짧은 곡선들에 의해 묘사된 수역의 애니메이션이 설명 및 간소성을 위해 도시되어 있지 않다는 점을 제외하면 도 1에 도시된 제4 스테이지(120)와 유사하다. 따라서, 도 5의 제1 스테이지(505)는 2개의 교차하는 도로들, 2개의 빌딩들, 및 도로들과 빌딩들 뒤의 수역을 포함하는 3D 위성 맵 뷰를 도시한다.
제2 스테이지(510)는 사용자가 마이크로폰(520)에 오디오 입력을 제공하는 것을 도시한다. 도시된 바와 같이, 이러한 예에서의 사용자는 마이크로폰(520)을 향해 말함으로써 마이크로폰(520)을 향하여 방출된 음파(sound wave)들에 의해 나타나는 오디오 입력을 마이크로폰(520)에 제공한다.
제3 스테이지(515)는 사용자가 디바이스(500)의 마이크로폰(520)에 오디오 입력을 제공한 후의 GUI(200)를 도시한다. 일부 실시예들에서, 맵핑 애플리케이션이 마이크로폰(520)을 통한 소리를 검출할 때, 맵핑 애플리케이션은 소리에 의해 야기되는 것으로 보이는 수역 내의 파도들의 애니메이션을 (예컨대, 파도들을 애니메이션화하기 위한 셰이더를 사용하여) 생성한다. 이러한 예에 대해, 맵핑 애플리케이션은 마이크로폰(520)으로부터 먼 방향으로 해안으로부터 멀어지게 수역에서 너울대는 것으로 보이는 파도들의 애니메이션을 생성한다. 이들 파도들은 제3 스테이지(515)에서 너울대는 파도들을 개념적으로 나타내는 수역 내의 긴 곡선들에 의해 도시된다.
전술된 도면은 일부 실시예들의 맵핑 애플리케이션이 동작하는 디바이스 상의 하나의 마이크로폰으로부터 검출된 소리에 기초하여 3D 위성 맵 뷰 내의 물을 애니메이션화하는 일례를 도시한다. 당업자는 일부 실시예들의 디바이스가 소리를 검출하기 위한 다수의 마이크로폰들을 포함할 수 있음을 이해할 것이다. 일부 실시예들에서, 그러한 디바이스 상에서 동작하는 맵핑 애플리케이션은 상이한 마이크로폰들에 의해 검출된 소리에 기초하여 파도 효과들의 동일하거나 상이한 애니메이션들을 생성한다.
B. 경엽의 애니메이션들
도 1 내지 도 5를 참조하여 위에 기술된 예들은 3D 위성 맵 뷰 내의 물을 애니메이션화하는 것을 예시한다. 도 6은 3D 위성 맵 뷰에 경엽의 애니메이션들을 생성하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한다.
구체적으로, 도 6은 3D 위성 맵 뷰 내의 경엽을 애니메이션화하는 2개의 상이한 스테이지들(605, 610)에서의, 맵핑 애플리케이션이 동작 중인 디바이스(500) 상에 디스플레이되는 일부 실시예들의 맵핑 애플리케이션의 GUI(600)를 도시한다.
제1 스테이지(605)는 맵의 뷰를 디스플레이하는 맵핑 애플리케이션의 GUI(600)를 도시한다. 이러한 예에서, 맵 뷰는 3D 위성 뷰잉 모드에 있다. 즉, 맵핑 애플리케이션은 위성 뷰잉 모드에 있고, 3D 뷰잉 모드에 있는 맵의 뷰는 이용가능하고(예컨대, 맵 뷰의 줌 레벨은 맵의 3D 뷰가 이용가능한 정의된 임계 줌 레벨보다 더 큼) 인에이블된다. 도시된 바와 같이, 3D 위성 맵 뷰는 굽은 도로 및 도로의 우측 측면 상의 여러 개의 나무들을 포함한다.
제2 스테이지(610)는 매핑 애플리케이션이 3D 위성 맵 뷰에 흔들리는 나무들의 애니메이션을 (예컨대, 경엽을 애니메이션화하기 위한 셰이더를 사용하여) 생성하게 하기 위한 입력을 사용자가 제공한 후의 GUI(600)를 도시한다. 맵핑 애플리케이션의 상이한 실시예들은 상이한 유형들의 입력에 기초하여 흔들리는 나무들의 애니메이션을 생성한다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 도 2 내지 도 5를 참조하여 위에 기술된 상이한 유형들의 입력 중 임의의 것에 기초하여 흔들리는 나무들의 애니메이션을 생성한다.
도 6이 상이한 유형들의 입력에 기초하여 3D 위성 맵 뷰 내의 경엽을 애니메이션화하는 하나의 예를 도시하지만, 당업자는 일부 실시예들의 맵핑 애플리케이션이 상이한 유형들의 입력에 기초하여 경엽의 상이한 애니메이션들을 생성한다는 것을 인식할 것이다. 입력에 기초하여 경엽의 애니메이션들을 생성하는 것에 대안적으로 또는 이와 결합하여, 일부 실시예들의 맵핑 애플리케이션은 도 1을 참조하여 위에 기술된 예와 유사한 어떠한 입력도 없이 경엽의 애니메이션들을 생성한다.
C. 다른 맵 요소들/구성물들의 애니메이션들
위에 언급된 바와 같이, 일부 실시예들의 맵핑 애플리케이션의 애니메이션화된 3D 위성 맵 뷰 피처는 3D 위성 맵 뷰 내의 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들의 애니메이션들을 생성한다. 도 7은, 3D 위성 맵 뷰 내의 빌딩들의 표면으로부터의 물의 반사 이미지들을 애니메이션화하고 3D 위성 맵 뷰 내의 해안선들을 애니메이션화하는 일부 실시예들의 맵핑 애플리케이션의 일례를 개념적으로 도시한다. 구체적으로, 도 7은 맵핑 애플리케이션이 동작 중인 디바이스(400) 상에 디스플레이되는 일부 실시예들의 맵핑 애플리케이션의 GUI(700)를 도시한다.
도시된 바와 같이, GUI(700)는 수역 및 빌딩들(705, 710)을 포함하는 맵의 뷰를 예시한다. 도 7은, 이러한 예에서의 맵핑 애플리케이션이 물에 잔물결들의 애니메이션을 (예컨대, 잔잔한 물을 애니메이션화하기 위한 셰이더를 사용하여) 생성함으로써 수역들로서 식별되는 맵 요소들을 애니메이션화한다는 점에서 도 1을 참조하여 위에 기술된 제4 스테이지(120)와 유사하다. 도 7에서의 물의 애니메이션은 물에서의 잔물결들을 개념적으로 나타내는 수역 내의 짧은 곡선들에 의해 유사하게 묘사된다. 도 7에 도시된 수역은 육지에 인접해 있는 수역의 가장자리를 따르는 해안선(715)을 포함한다. 이러한 예에 대해, 맵핑 애플리케이션은 해안선(715)을 따라 육지를 향해 너울대는 파도들의 애니메이션을 (예컨대, 해안선들을 따라 파도들을 애니메이션화하기 위한 셰이더를 사용하여) 생성한다. 해안선(715)의 애니메이션은 해안선(715)을 따라 여러 개의 점선들에 의해 나타난다.
이러한 예에서, 빌딩(705)의 표면들은 고반사성(highly reflective property)(예컨대, 유리 표면들, 거울 표면들 등)을 갖고, 빌딩(710)의 표면들은 저반사성(low reflective property)(예컨대, 벽돌 표면들, 콘크리트 표면들 등)을 갖는다. 이와 같이, 이러한 예에서의 맵핑 애플리케이션은 빌딩들(705, 710)의 표면들로부터의, 수역에서의 잔물결들 및 해안선(715)을 따르는 너울대는 파도들의 반사 이미지들의 애니메이션들을 (예컨대, 빌딩 표면들 상의 반사 이미지들을 애니메이션화하고 수역 및 해안선(715)을 광원으로 처리하기 위한 셰이더를 사용하여) 생성한다. 빌딩(705)의 표면들의 반사성이 빌딩(710)의 표면들의 반사성보다 더 높으므로, 빌딩(705)의 표면들로부터의 반사 이미지의 약동성(animation)은 빌딩(710)의 표면들로부터의 반사 이미지의 약동성보다 더 크다. 이러한 예에서, 빌딩(705)으로부터의 반사가 빌딩(710)으로부터의 반사보다 더 크다는 것을 나타내기 위하여 빌딩(705)으로부터의 반사 이미지들은 빌딩(710)로부터의 반사 이미지보다 더 짙다.
위에서 설명된 도면들은 3D 위성 맵 뷰 내의 상이한 유형들의 맵 요소들 및/또는 구성물들을 애니메이션화하는 몇몇 예들을 도시한다. 당업자는 상이한 실시예들의 맵핑 애플리케이션이 임의의 수의 추가적인 그리고/또는 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들을 애니메이션화한다는 것을 인식할 것이다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 상이한 정의된 유형들의 수역들(예컨대, 깊은 물, 얕은 물, 바다, 호수, 강, 저수지, 항만 등)에 대한 애니메이션들을 생성한다. 또한, 일부 실시예들의 맵핑 애플리케이션은 상이한 조건들에 기초하여(예컨대, 무입력(no input), 도 3 내지 도 5를 참조하여 위에 기술된 것들과 같은 상이한 유형들의 입력 등에 기초하여) 특정한 정의된 유형의 맵 요소들 및/또는 구성물들에 대한 상이한 애니메이션들을 생성한다.
상이한 실시예들의 맵핑 애플리케이션은 상이한 기술들을 이용하여 상이한 정의된 유형들의 맵 요소들 및/또는 구성물들에 대한 애니메이션들을 생성한다. 일부 실시예들에서, 맵핑 애플리케이션은 (1) 맵 요소들을 나타내는 폴리곤들의 정점(vertex)들을 이동시키고 그리고/또는 (2) 폴리곤들의 정점들을 셰이딩하는 기술들을 이용하여 맵 요소들을 애니메이션화한다.
일부 실시예들에서, 맵핑 애플리케이션이 폴리곤들의 정점들을 이동시킴으로써 애니메이션들을 생성하는 경우, 맵핑 애플리케이션은 셰이더(예컨대, 정점 셰이더)를 사용하여 폴리곤들의 정점들을 이동시키고, 이어서 폴리곤들에 맵핑되는 텍스처들을 애니메이션화한다. 그러한 셰이더는 일부 실시예들에서 파문들(예컨대, 도 2를 참조하여 위에 기술된 파문들), 흔들리는 나무들 및/또는 경엽(예컨대, 도 6을 참조하여 위에 기술된 흔들리는 나무들) 등을 생성하는 데 사용된다.
일부 실시예들의 맵핑 애플리케이션은 보간법(interpolation)에 기초하여 폴리곤들의 정점들을 이동시킨다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 흔들리는 나무들 및/또는 경엽을 생성하기 위해 나무들 및/또는 경엽을 나타내는 폴리곤들의 정점들을 수직으로 보간한다. 폴리곤들의 정점들을 이동시키는 데 보간법을 이용하는 경우, 일부 실시예들의 맵핑 애플리케이션은 정점들의 모션을 제한하는 정의된 범위의 모션을 이용하여 정점들을 보간하여, 아티팩트(artifact)들 및 그러한 동작을 수행하기 위한 컴퓨터 리소스들을 최소화한다.
정점 이동 기술을 이용하여 상이한 애니메이션들을 생성하기 위해, 일부 실시예들의 맵핑 애플리케이션은 폴리곤들의 정점들을 상이하게 이동시킨다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 수역을 나타내는 폴리곤들의 정점들을 수직 방향(예컨대, 상, 하)으로 이동시킴으로써 수역에서의 파문들을 생성한다. 맵핑 애플리케이션이 패닝 동작에 응답하여 수역에서의 파도들을 생성하는 경우, 맵핑 애플리케이션은 수역을 나타내는 폴리곤들의 정점들을 수직 방향 및 수평 방향(예컨대, 좌, 우, 상, 하)으로 이동시킨다.
맵 요소들 및/또는 구성물들이 내부 폴리곤들 및 외부 폴리곤들에 의해 형성되는 경우, 일부 실시예들의 맵핑 애플리케이션은 내부 폴리곤들의 정점들은 보간하고 외부 폴리곤들의 정점들은 보간하지 않는다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션이 수역을 나타내는 폴리곤들의 정점들을 이동시킴으로써 수역을 애니메이션화할 때, 맵핑 애플리케이션은 땅에 접해 있는 수역의 주변을 따르는 폴리곤들을 제외한 모든 폴리곤들의 정점들을 보간한다. 다른 예로서 나무를 사용하면, 일부 실시예들의 맵핑 애플리케이션은 땅에 접해 있는 나무들의 하부를 형성하는 폴리곤들을 제외한, 나무를 나타내는 모든 폴리곤들의 정점들을 보간한다.
정점 셰이딩 기술에 대해, 일부 실시예들의 맵핑 애플리케이션은 맵 요소들 및/또는 구성물들을 나타내는 폴리곤들의 정점들의 컬러 속성들을 (예컨대, 텍스처 셰이더를 사용하여) 수정함으로써 맵 요소들 및/또는 구성물들을 애니메이션화한다. 예를 들어, 일부 실시예들에서, 맵핑 애플리케이션은 수역을 나타내는 폴리곤들의 정점들의 컬러 속성들을 수정하여 파도들(예컨대, 도1, 도 3 내지 도 5, 및 도 7에 도시된 파도들)을 생성한다.
일부 실시예들에서, 맵핑 애플리케이션은 정점 이동 기술 및 정점 셰이딩 기술 둘 모두를 이용하여 애니메이션들을 생성한다. 예를 들어, 일부 실시예들의 맵핑 애플리케이션은 수역을 나타내는 폴리곤들의 정점들을 (예컨대, 좌, 우, 상, 하) 이동시킴으로써 그리고 폴리곤들의 정점들의 컬러 속성들을 수정함으로써 패닝 동작에 응답하여 수역에 파도들(예컨대, 도 3을 참조하여 위에 기술된 파도들)을 생성한다.
II. 이미지 프로세싱
일부 실시예들에서, 위에 기술된 본 발명의 예들 및 실시예들은 컴퓨터, 핸드헬드 디바이스, 또는 태블릿 컴퓨팅 디바이스와 같은 특정 기계 상에서 구동되거나 기계-판독가능 매체에 저장되는 소프트웨어로서 구현된다. 도 8은 일부 실시예들의 맵핑 애플리케이션(800)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 맵핑 애플리케이션(800)은, 맵을 브라우징, 맵에서 위치들을 검색, 맵에서 경로들을 식별, 맵에서 경로들을 내비게이트 등을 하기 위한 독립형 애플리케이션(예컨대, 애플 인크.(Apple Inc.)에 의해 제공되는 맵스(Maps)(등록상표))이다.
일부 실시예들의 맵핑 애플리케이션(800)은 다른 애플리케이션 내에 통합되지만, 다른 실시예들의 맵핑 애플리케이션(800)은 운영 체제(예컨대, 애플 인크.에 의해 제공되는 iOS(등록상표)) 내에서 구현될 수 있다. 또한, 일부 실시예들에서, 맵핑 애플리케이션(800)은 서버 기반 솔루션의 일부로서 제공된다. 일부 그러한 실시예들에서, 맵핑 애플리케이션(800)은 씬 클라이언트(thin client)를 통해 제공된다. 즉, 맵핑 애플리케이션(800)은 서버 상에서 구동되지만, 사용자는 서버로부터 멀리 떨어진 별도의 기계를 통해 맵핑 애플리케이션(800)과 상호작용한다. 다른 그러한 실시예들에서, 맵핑 애플리케이션(800)은 씩 클라이언트(thick client)로서 제공된다. 즉, 맵핑 애플리케이션(800)은 서버로부터 클라이어트 기계에 분산되고 클라이언트 기계 상에서 구동된다.
도시된 바와 같이, 맵핑 애플리케이션(800)은 지오 서비스 모듈(geo services module)(805), 이미지 프로세서(810), 및 입력 인식 모듈(815)을 포함한다. 맵핑 애플리케이션(800)은 또한 지오 서비스 데이터 스토리지(data storage)(825), 렌더링 데이터 스토리지(830), 및 렌더링된 맵 뷰 스토리지(835)를 포함한다.
일부 실시예들에서, 지오 서비스 데이터 스토리지(825)는 지리적 데이터(또한, 지오데이터 또는 지오 데이터로도 지칭됨)를 저장한다. 일부 실시예들의 지리적 데이터는 현실 세계에서의 객체들(예컨대, 도로, 빌딩, 랜드커버(landcover), 경엽 및/또는 초목(vegetation), 수로(waterway) 등)을 나타내는 데이터를 포함한다. 현실 세계에서의 객체들을 나타내는 데이터는 일부 실시예들에서 벡터 데이터(예컨대, 점, 선, 폴리곤 등), 래스터 데이터(raster data)(예컨대, CCI), 또는 벡터 데이터와 래스터 데이터의 조합을 포함한다. 렌더링 데이터 스토리지(830)는 맵 뷰들을 렌더링하기 위한 데이터를 저장한다. 일부 실시예들에서, 렌더링 데이터는 텍스처 데이터, 컬러 데이터, 셰도우 데이터, 셰이더 데이터, 및 맵 뷰 내의 상이한 맵 요소들 및/또는 구성물들을 렌더링하기 위해 사용하는 렌더링 파라미터들(예컨대, 텍스처, 컬러, 셰도우, 셰이더 등)을 지정하는 스타일시트 데이터를 포함한다. 렌더링된 맵 뷰 스토리지(835)는 맵들의 렌더링된 뷰들을 저장한다.
일부 실시예들에서, 스토리지들(825 내지 835)은 하나의 물리적 스토리지에 구현되지만, 다른 실시예들에서, 스토리지들(825 내지 835)은 개별의 물리적 스토리지들 상에 구현된다. 또한, 일부 실시예들에서, 스토리지들(825 내지 835) 중 일부 또는 전부는 여러 개의 물리적 스토리지들에 걸쳐서 구현된다.
지오 서비스 모듈(805)은 이미지 프로세서(810)가 맵 뷰들을 렌더링하도록 하기 위한 지오 데이터를 검색하는 것을 담당한다. 일부 실시예들에서, 지오 서비스 모듈(805)은 특정 세트의 지오 데이터(예컨대, 맵의 소정 영역에 대한 지오 데이터)에 대한 이미지 프로세서(810)로부터의 요청들을 수신하는 서비스들의 세트로서 구현된다. 지오 서비스 모듈(805)이 이미지 프로세서(810)로부터 그러한 요청들을 수신하는 경우, 일부 실시예들의 지오 서비스 모듈(805)은, 맵 정보 및 다른 맵 관련 데이터를 제공하기 위한 맵 서비스(820), 캐싱된 지오 데이터를 저장하기 위한 로컬 캐시, 지오 데이터를 저장하기 위한 로컬 스토리지, 또는 지오 데이터의 전술된 소스들의 임의의 조합으로부터 (예컨대, 인터넷과 같은 네트워크를 통해) 요청된 세트의 지오 데이터를 검색한다. 지오 데이터의 추가적인 그리고/또는 상이한 소스들이 일부 실시예들에서 사용될 수 있다. 일부 실시예들에서, 지오 서비스 모듈(805)은 요청된 세트의 지오 데이터를 이미지 프로세서(810)에 전달하지만, 다른 실시예들에서, 지오 서비스 모듈(805)은 이미지 프로세서(810)가 나중에 액세스하도록 하기 위해, 요청된 세트의 지오 데이터를 지오 서비스 데이터 스토리지(825)에 저장한다.
이미지 프로세서(810)는 맵핑 애플리케이션(800)이 동작하는 디바이스의 디스플레이 스크린 상에서의 디스플레이를 위해 맵 뷰들의 렌더링을 처리한다. 일부 실시예들에서, 이미지 프로세서(810)는 입력 인식 모듈(815)로부터 수신된 정보(예컨대, 터치 입력, 제스처 입력, 모션 입력, 오디오 입력 등과 같은 입력 정보)에 기초하여 맵 뷰를 렌더링한다. 입력 인식 모듈(815)로부터의 정보에 기초하여, 이미지 프로세서(810)는 맵 뷰를 렌더링하기 위해 지오 서비스 모듈(805)로부터의 지오 데이터를 요청한다. 일부 실시예들의 이미지 프로세서(810)는 (1) 요청된 지오 데이터에 기초하여 가상 맵을 생성하고, (2) 렌더링 엔진을 사용하여 가상 카메라에 의해 식별된 가상 맵의 뷰를 렌더링한다. 일단 맵 뷰가 렌더링되면, 일부 실시예들의 이미지 프로세서(810)는 맵핑 애플리케이션(800)이 액세스하고 디바이스의 디스플레이 스크린 상에 디스플레이하도록 하기 위해 렌더링된 맵 뷰 스토리지(835)에 맵 뷰를 저장한다.
입력 인식 모듈(815)은 디바이스 상에서 구동되는 운영 체제의 일부인, 터치스크린 디바이스 드라이버, 오디오 디바이스 드라이버, 모션 디바이스 드라이버 등과 같은 입력 디바이스 드라이버들(도 8에는 도시되지 않음)로부터 수신된 입력 데이터의 유형을 식별하고 그러한 입력 데이터를 해석한다. 일부 실시예들에서, 입력 디바이스 드라이버들은 입력 디바이스들 및/또는 입력 센서들로부터의 신호들을 입력 인식 모듈(815)에 제공되는 입력 데이터로 변환한다.
많은 특징들이 하나의 모듈(예컨대, 지오 서비스 모듈(805), 이미지 프로세서(810) 등)에 의해 수행되는 것으로 기술되어 있지만, 당업자는 기능들이 다수의 모듈들에 분할될 수 있음을 인식할 것이다. 마찬가지로, 다수의 상이한 모듈들에 의해 수행되는 것으로 기술된 기능들은 일부 실시예들에서 단일 모듈에 의해 수행될 수 있다(예컨대, 지오 서비스 모듈(810)은 이미지 프로세서(810)의 일부일 수 있다).
도 9는 3D 위성 맵 뷰들을 애니메이션화하기 위한 일부 실시예들의 프로세스(900)를 개념적으로 도시한다. 일부 실시예들에서, 맵핑 애플리케이션(예컨대, 도 8을 참조하여 위에 기술된 이미지 프로세서(810))은 맵핑 애플리케이션이 동작 중인 디바이스 상에서의 디스플레이를 위해 맵핑 애플리케이션이 맵 뷰를 렌더링할 때(예컨대, 맵핑 애플리케이션이 맵 브라우징 모드, 위치 검색 모드, 경로 식별 모드, 경로 내비게이션 모드 등에 있을 때) 프로세스(900)를 수행한다.
프로세스(900)는 (905에서) 맵의 뷰에 대한 요청을 수신함으로써 시작된다. 다음으로, 프로세스(900)는 (910에서) 요청된 것이 맵의 3D 위성 맵 뷰에 대한 것인지 여부를 판정한다. 일부 실시예들에서, 요청은, (1) 맵핑 애플리케이션이 위성 뷰잉 모드(예컨대, 위성 뷰잉 모드는 도 1에 도시된 위성 뷰잉 모드 제어부(170)를 선택함으로써 활성화됨)에 있고 (2) 매핑 애플리케이션이 3D 뷰잉 모드에 있는 때(예컨대, 요청된 맵 뷰의 줌 레벨이 정의된 임계 줌 레벨보다 더 크고 3D 뷰잉 모드가 도 1에 도시된 3D 제어부(150)를 선택함으로써 활성화된 때)의 3D 위성 맵 뷰에 대한 것이다.
요청이 맵의 3D 위성 맵 뷰에 대한 것이 아닌 것으로 프로세스(900)가 판정한 경우, 프로세스(900)는 (950에서) 요청된 뷰잉 모드에서 맵의 뷰를 렌더링한다. 이어서, 프로세스(900)가 종료된다.
요청이 맵의 3D 위성 맵 뷰에 대한 것이라고 프로세스(900)가 판정하는 경우, 프로세스(900)는 3D 위성 맵 뷰에 대한 맵 타일들의 세트를 (915에서) 식별한다. 일부 실시예들에서, 프로세스(900)는 맵 정보 및 다른 맵 관련 데이터를 제공하기 위한 맵 서비스, 캐싱된 지오 데이터를 저장하기 위한 로컬 캐시, 지오 데이터를 저장하기 위한 로컬 스토리지, 또는 맵 타일들의 전술된 소스들의 임의의 조합에 액세스함으로써 맵 타일들의 세트를 식별한다.
이어서, 프로세스(900)는 (920에서) 맵 타일들의 세트를 컴파일하여 메시(mesh)들의 세트를 생성하고, 셰이더들의 세트를 컴파일한다. 일부 실시예들에서, 프로세스(900)가 컴파일하는 셰이더들의 세트는 프로세스(900)가 맵 타일들의 세트를 컴파일함으로써 생성하는 메시들의 유형에 대해 지정되는 셰이더들을 포함한다. 예를 들어, 일부 실시예들의 프로세스(900)는, 생성된 메시들의 세트가 물 메시를 포함하는 경우에 물을 애니메이션화하기 위한 셰이더들(예컨대, 잔잔한 물을 애니메이션화하기 위한 셰이더, 파문들을 애니메이션화하기 위한 셰이더, 파도들을 애니메이션화하기 위한 셰이더 등)의 세트; 생성된 메시들의 세트가 빌딩 메시를 포함하는 경우에 빌딩 표면들을 애니메이션화하기 위한 셰이더들(예컨대, 빌딩 표면들 상의 반사 이미지들을 애니메이션화하기 위한 셰이더)의 세트; 생성된 메시들의 세트가 해안선 메시를 포함하는 경우에 해안선들을 애니메이션화하기 위한 셰이더들(예컨대, 해안선들을 따르는 파도들을 애니메이션화하기 위한 셰이더)의 세트; 생성된 메시들의 세트가 경엽 메시를 포함하는 경우에 경엽을 애니메이션화하기 위한 셰이더들(예컨대, 정지된 경엽을 애니메이션화하기 위한 셰이더; 흔들리는 경엽을 애니메이션화하기 위한 셰이더 등)의 세트 등을 컴파일한다. 일부 경우에서, 셰이더들의 세트 중의 하나 이상은 이미 컴파일되어 있어서, 컴파일될 필요가 없다.
맵 타일들 및 임의의 필요한 셰이더들을 컴파일한 후, 프로세스(900)는 (925에서) 생성된 메시들의 세트 내의 소정 메시를 식별한다. 다음으로, 프로세스(900)는 (930에서) 식별된 메시가 애니메이션화를 위해 정의된 유형의 메시인지 여부를 판정한다. 위에 언급된 바와 같이, 맵핑 애플리케이션의 애니메이션화된 3D 위성 맵 뷰 피처는 3D 위성 맵 뷰 내의 상이한 정의된 유형들의 맵 요소들 및 구성물들을 애니메이션화한다. 식별된 메시가 애니메이션화를 위해 정의된 유형의 메시가 아닌 것으로 프로세스(900)가 판정한 경우, 프로세스(900)는 (935에서) 어떠한 셰이더들도 없이 메시에 대해 지정된 (예컨대, 스타일시트에 지정된) 텍스처들로 그 식별된 메시를 렌더링한다. 이어서, 프로세스(900)는 955로 진행한다.
식별된 메시가 애니메이션화를 위해 정의된 유형의 메시인 것으로 프로세스(900)가 판정한 경우, 프로세스(900)는 맵의 요청된 뷰의 줌 레벨(또한, 세밀도(level of detail)로도 지칭됨)이 임계 줌 레벨(예컨대, 줌 레벨 15, 줌 레벨 18, 줌 레벨 20 등)보다 더 큰지 여부를 (940에서) 판정한다. 맵의 요청된 뷰의 줌 레벨이 임계 줌 레벨보다 크지 않은 것으로 프로세스(900)가 판정한 경우, 프로세스(900)는 (935에서) 어떠한 셰이더들도 없이 메시에 대해 지정된 (예컨대, 스타일시트에 지정된) 텍스처들로 그 식별된 메시를 렌더링한다. 이어서, 프로세스(900)는 955로 진행한다.
맵의 요청된 뷰의 줌 레벨이 임계 줌 레벨보다 더 큰 것으로 프로세스(900)가 판정한 경우, 프로세스(900)는 (945에서) 메시에 대해 지정된 (예컨대, 스타일시트에 지정된) 텍스처들 및 메시에 대해 지정된 셰이더로 그 식별된 메시를 렌더링한다. 이어서, 프로세스(900)는 955로 진행한다.
마지막으로, 프로세스(900)는 생성된 메시들의 세트 중에서 렌더링할 임의의 메시가 남아 있는지 여부를 (955에서) 판정한다. 렌더링할 메시가 남아 있는 것으로 프로세스(900)가 판정한 경우, 프로세스(900)는 925로 되돌아가서, 생성된 메시들의 세트 내의 임의의 잔여 메시들을 계속 렌더링한다. 그렇지 않은 경우, 프로세스(900)는 종료된다.
도 10은 일부 실시예들의 맵핑 애플리케이션의 상태 다이어그램(1000)을 개념적으로 도시한다. 도시된 바와 같이, 상태 다이어그램(1000)은 맵핑 애플리케이션(1000)이 상이한 유형들의 입력에 기초하여 3D 위성 맵 뷰들 내의 정의된 유형들의 맵 요소들 및/또는 구성물들을 렌더링할 때 맵핑 애플리케이션(1000)의 상태들(1005 내지 1035)을 포함한다.
상태(1005)에서, 맵핑 애플리케이션은 맵핑 애플리케이션(1000)이 동작 중인 디바이스 상에서의 디스플레이를 위해 비-위성 맵 뷰(non-satellite map view)들을 렌더링한다. 일부 실시예들에서, 비-위성 맵 뷰는 어떠한 CCI들도 사용함이 없이 렌더링되는 맵 뷰이다. 일부 실시예들의 맵핑 애플리케이션(1000)은 맵핑 애플리케이션이 경로 내비게이션 모드에 있거나 비-위성 뷰잉 모드가 (예컨대, 도 1에 도시된 표준 뷰잉 모드 제어부(160)를 선택함으로써) 활성화될 때 상태(1005)에 진입한다. 상태(1005)에 있는 동안, 맵핑 애플리케이션(1000)은 위성 뷰잉 모드가 (예컨대, 도 1에 도시된 위성 뷰잉 모드 제어부(170)를 선택함으로써) 활성화될 때 상태(1010)로 전환된다.
상태(1010)에서, 맵핑 애플리케이션(1000)은 맵핑 애플리케이션(1000)이 동작 중인 디바이스 상에서의 디스플레이를 위해 위성 맵 뷰들을 렌더링한다. 일부 실시예들에서, 위성 맵 뷰는 맵에 CCI들을 텍스처 맵핑함으로써 렌더링되는 맵 뷰이다. 상태(1010)에 있는 동안, 맵핑 애플리케이션(1000)은 3D 뷰잉 모드가 이용가능하고(예컨대, 맵 뷰의 줌 레벨이 맵의 3D 뷰가 이용가능한 정의된 임계 줌 레벨보다 더 큼) (예컨대, 도1에 도시된 3D 제어부(150)를 선택함으로써) 인에이블될 때 상태(1015)로 전환된다.
상태(1015)에서, 맵핑 애플리케이션(1000)은 맵핑 애플리케이션(1000)이 동작 중인 디바이스 상에서의 디스플레이를 위해 3D 위성 맵 뷰를 렌더링한다. 일부 실시예들에서, 맵핑 애플리케이션은 3D 위성 맵 뷰들 내의 정의된 유형들의 맵 요소들 및/또는 구성물들을 애니메이션화한다. 예를 들어, 일부 실시예들의 맵핑 애플리케이션(1000)은 도 1을 참조하여 위에 기술된 예와 유사한 방식으로 수역들에서의 잔물결들의 애니메이션들을 생성하고, 도 7을 참조하여 위에 기술된 것과 유사한 방식으로 해안선들을 따르는 파도들 및 빌딩들 상의 반사 이미지들의 애니메이션들을 생성한다. 상태(1015)에 있는 동안, 맵핑 애플리케이션(1000)은 맵핑 애플리케이션(1000)이 임의의 유형의 입력을 수신할 때 상태(1020)로 전환된다.
상태(1020)에서, 맵핑 애플리케이션(1000)은 상이한 유형들의 입력 사이를 구별하며, 이들 유형들의 입력을 상이한 3D 위성 맵 뷰 렌더링 동작들로 변환한다. 일부 실시예들에서, 맵핑 애플리케이션(1000)은 맵핑 애플리케이션(1000)이 동작 중인 디바이스의 운영 체제에 의해 변환된 바와 같은 입력을 수신하고, 운영 체제로부터 수신된 입력의 유형을 식별한다. 상태(1020)에 있는 동안, 맵핑 애플리케이션(1000)은 식별된 유형의 입력에 기초하여 상이한 상태로 전환된다. 이러한 예에서, 맵핑 애플리케이션(1000)은 맵핑 애플리케이션(1000)이 터치 입력을 수신하는 경우에는 상태(1025)로 전환되고, 맵핑 애플리케이션(1000)이 오디오 입력을 수신하는 경우에는 상태(1030)로 전환되며, 맵핑 애플리케이션(1000)이 모션 입력을 수신하는 경우에는 상태(1035)로 전환된다.
맵핑 애플리케이션(1000)이 상태(1025)로 전환된 경우, 맵핑 애플리케이션(1000)은 터치 입력에 기초하여 3D 위성 맵 뷰들 내의 정의된 유형들의 메시들을 셰이더들로 렌더링한다. 일부 실시예들에서, 맵핑 애플리케이션(1000)은 상이한 유형들의 터치 입력에 기초하여 정의된 유형들의 메시들을 상이하게 렌더링한다. 예를 들어, 맵핑 애플리케이션(1000)이 물에서의 위치를 선택하기 위한 탭 입력을 수신한 경우, 맵핑 애플리케이션(1000)은 도 2를 참조하여 위에 기술된 예와 유사한 파문들을 애니메이션화하기 위한 셰이더를 사용하여 물을 렌더링하고, 도 6을 참조하여 위에 기술된 예와 유사한 경엽을 애니메이션화하기 위한 셰이더를 사용하여 경엽을 렌더링한다. 다른 예로서, 맵핑 애플리케이션(1000)이 맵을 패닝하기 위한 터치 앤드 드래그 입력을 수신한 경우, 맵핑 애플리케이션(1000)은 도 3을 참조하여 위에 기술된 예와 유사한 파도들을 애니메이션화하기 위한 셰이더를 사용하여 물을 렌더링하고, 도 6을 참조하여 위에 기술된 예와 유사한 경엽을 애니메이션화하기 위한 셰이더를 사용하여 경엽을 렌더링한다.
맵핑 애플리케이션(1000)이 터치 입력을 계속해서 수신하는 동안, 맵핑 애플리케이션(1000)은 상태(1025)로 유지되고, 정의된 유형들의 메시들을 터치 입력에 대해 지정된 셰이더들로 계속해서 렌더링한다. 맵핑 애플리케이션(1000)이 더 이상 터치 입력을 수신하지 않는 경우, 맵핑 애플리케이션(1000)은 셰이더들을 사용한 정의된 유형들의 메시들의 렌더링을 완료하고 상태(1015)로 되돌아간다.
일부 실시예들에서, 맵핑 애플리케이션(1000)은, 맵핑 애플리케이션(1000)이 입력을 수신하고 있는 경우와 맵핑 애플리케이션(1000)이 더 이상 입력을 수신하지 않고 렌더링을 완료하고 있는 경우에, 정의된 유형들의 메시들을 셰이더들로 상이하게 렌더링한다. 예를 들어, 맵핑 애플리케이션(1000)이 맵을 패닝하기 위한 터치 앤드 드래그 입력의 수신을 중지하는 경우, 일부 실시예들의 맵핑 애플리케이션(1000)은 패닝 동작의 감속을 렌더링한다. 맵의 감속이 중지될 때, 일부 그러한 실시예들의 맵핑 애플리케이션(1000)은 맵의 패닝의 중지에 의해 야기되는 것으로 보이는 방식으로 물의 흐름변화(water shifting) 및 경엽의 흔들림을 애니메이션화한다.
맵핑 애플리케이션(1000)이 상태(1030)로 전환된 경우, 맵핑 애플리케이션(1000)은 오디오 입력에 기초하여 3D 위성 맵 뷰들 내의 정의된 유형들의 메시들을 셰이더들로 렌더링한다. 예를 들어, 맵핑 애플리케이션(1000)이 오디오 입력을 수신한 경우, 맵핑 애플리케이션(1000)은 도 5를 참조하여 위에 기술된 예와 유사한 파도들을 애니메이션화하기 위한 셰이더를 사용하여 물을 렌더링하고, 도 6을 참조하여 위에 기술된 예와 유사한 경엽을 애니메이션화하기 위한 셰이더를 사용하여 경엽을 렌더링한다.
맵핑 애플리케이션(1000)이 오디오 입력을 계속해서 수신하는 동안, 맵핑 애플리케이션(1000)은 상태(1030)로 유지되고, 정의된 유형들의 메시들을 오디오 입력에 대해 지정된 셰이더들로 계속해서 렌더링한다. 맵핑 애플리케이션(1000)이 더 이상 오디오 입력을 수신하지 않는 경우, 맵핑 애플리케이션(1000)은 셰이더들을 사용한 정의된 유형들의 메시들의 렌더링을 완료하고 상태(1015)로 되돌아간다.
맵핑 애플리케이션(1000)이 상태(1035)로 전환된 경우, 맵핑 애플리케이션(1000)은 3D 위성 맵 뷰들 내의 정의된 유형들의 메시들을 맵핑 애플리케이션(1000)이 동작 중인 디바이스의 이동에 대한 모션 입력에 기초하여 셰이더들로 렌더링한다. 예를 들어, 맵핑 애플리케이션(1000)이 모션 입력을 수신한 경우, 맵핑 애플리케이션(1000)은 도 4를 참조하여 위에 기술된 예와 유사한 파도들을 애니메이션화하기 위한 셰이더를 사용하여 물을 렌더링하고, 도 6을 참조하여 위에 기술된 예와 유사한 경엽을 애니메이션화하기 위한 셰이더를 사용하여 경엽을 렌더링한다.
맵핑 애플리케이션(1000)이 모션 입력을 계속해서 수신하는 동안, 맵핑 애플리케이션(1000)은 상태(1035)로 유지되고, 정의된 유형들의 메시들을 모션 입력에 대해 지정된 셰이더들로 계속해서 렌더링한다. 맵핑 애플리케이션(1000)이 더 이상 모션 입력을 수신하지 않는 경우, 맵핑 애플리케이션(1000)은 셰이더들을 사용한 정의된 유형들의 메시들의 렌더링을 완료하고 상태(1015)로 되돌아간다.
도 11은 클라이언트 디바이스에서의 (예컨대, 클라이언트 디바이스의 디스플레이 스크린 상에서의) 디스플레이를 위해 맵의 뷰를 렌더링하도록 일부 실시예들의 맵핑 애플리케이션에 의해 수행되는 프로세싱 파이프라인(1100)을 개념적으로 도시한다. 도시된 바와 같이, 프로세싱 파이프라인(1100)은 지오 서비스 모듈(1101) 및 이미지 프로세서(1102)를 포함한다. 일부 실시예들에서, 지오 서비스 모듈(1101) 및 이미지 프로세서(1102)는 도 8에 도시된 대응하는 지오 서비스 모듈(805) 및 이미지 프로세서(810)를 구현한다.
지오 서비스 모듈(1101)은 요청자(1105), 타일 디코더(1110), 타일 프로세서(1150), 일 세트의 메시 빌더(mesh builder)들(1115), 타일 제공자(1120), 가상 카메라(1188), 및 렌더링 엔진(1125)을 포함한다.
일부 실시예들의 타일 프로세서(1150)는 메시 빌더들(1115)로부터 맵 타일들에 대한 요청들을 수신하고, 그 요청들을 포워드하기 전에 다중화 동작을 수행한다. 메시 빌더들(1115)은, 아래에 기술되는 바와 같이, 그들 각자의 메시들을 구축하는 데 필요한 (맵 서비스(1103) 서버 상에 저장되거나 프로세싱 파이프라인(1100)을 수행하는 디바이스 상의 캐시에 저장된) 기존 맵 타일들을 식별한다. 일부 실시예들에서, 맵 타일들은 쿼드트리(quadtree)의 노드들로 지칭된다. 타일 프로세서는 다수의 메시 빌더들이 동일한 타일을 요청하는 경우에 다중화기로서 작용한다. 메시 빌더들이 타일들을 요청함에 따라, 일부 실시예들에서, 타일 프로세서(1150)는 이들 타일들을 그의 큐(queue)에 저장한다. 특정 기간 이후 또는 특정 개수의 타일들이 요청된 이후 중 어느 하나의 경우에, 타일 프로세서(1150)는 큐를 삭제(flush)하고 타일 리스트를 타일 디코더(1110)에 전송한다.
타일 디코더(1110)는 다중화된 타일 리스트(1135)를 타일 프로세서(1150)로부터 수신하고, 타일 프로세서(1150)로의 압축해제 타일들(1145)의 반환(return)을 처리한다. 일부 실시예들에서, 타일 디코더(1110)는 먼저 하나 이상의 로컬 캐시들을 검사하여 그것이 맵핑 애플리케이션이 동작하는 디바이스에 저장된 요청된 타일들을 갖고 있는지 여부를 판정한다. 일부 실시예들에서, 지오 서비스 모듈(1101)은 비휘발성 메모리(예컨대, 디스크, 플래시 메모리 등) 상에 저장되는 제1 타일 캐시뿐만 아니라 휘발성 메모리(예컨대, 랜덤 액세스 메모리)에 저장되는 제2 타일 캐시를 포함한다. 타일 디코더(1110)가 캐시들 중 하나에서 타일들을 발견하는 경우, 그것은 (요청하는 메시 빌더(들)(1115)로의 반환을 위해) 이들 타일들을 타일 프로세서(1150)에 역으로 전송한다.
타일 디코더(1110)가 그의 캐시 내에 타일들을 갖지 않는 경우, 그것은 잔여 타일들에 대한 요청을 요청자(1105)에 전송한다. 이들 맵 타일들(1140)을 압축 형태로 수신할 시, 타일 디코더는 수신된 타일들을 압축해제하여 압축해제 타일들(1145)을 생성한다. 일부 실시예들에서, 위에 기술된 바와 같은 맵 타일들을 생성한 후, 맵 서비스(1103)는 또한 인코딩 기술(예컨대, 렘펠(Lempel)-지프(Ziv)-마르코프(Markov) 체인 알고리즘(LZMA))을 이용하여 타일들을 압축한다. 상이한 실시예들은 상이한 인코딩 기술들을 이용한다.
타일 디코더(1110)는 이들 압축해제 타일들(1145)을 타일 프로세서(1150)에 반환하고, 일부 경우, 이들을 타일 캐시들 중 하나 또는 둘 모두에 또한 저장한다.
요청자(1105)는, 일부 실시예들에서, 맵 타일들에 대한 요청들을 (이어서, 요청들을 타일 프로세서(1150)로부터 수신하는) 타일 디코더(1110)로부터 수신한다. 이들 맵 타일들은, 일부 실시예들에서, 서버(예컨대, 사용자의 디바이스가 접속하는 맵 서비스(1103)의 서버) 상에 저장된다. 요청자는 맵 서비스(1103)로부터 요구되는 (그리고 타일 캐시들에서 이용가능하지 않은) 타일들을 식별하는 (타일 디코더(1110)로부터 수신된) 타일 리스트(1136)를 전송한다. 일부 실시예들에서, 요청자는 동작하는 디바이스의 네트워크 접속들(예컨대, Wi-Fi 접속, GSM 접속 등)을 활용하여 인터넷을 통해 맵 서비스(1103)에 접촉하여 요구되는 맵 타일들을 검색한다. 타일들을 (압축 형태로) 맵 서비스(1103)로부터 수신할 시, 요청자(1105)는 압축해제 타일들(1140)을 타일 디코더에 반환한다.
일부 실시예들에서, 요청자(1105)(또는 타일 프로세서(1150), 또는 파이프라인의 상이한 부분)는 처음에 요청된 타일들과 동일한 지리적 영역을 커버하는 추가적인 줌 레벨들에서 타일들을 식별하고, 이들 타일들을 요청 리스트(1136)에 추가하여 필요하다면 가까운 미래에 타일들이 이용가능하게 할 것이다. 또한, 일부 실시예들은 인근 지리적 영역들에 대해 동일한 (또는 상이한) 줌 레벨들에서 타일들을 자동으로 요청하여, 사용자가 맵을 패닝하는 경우에 타일들이 이용가능하게 한다. 일부 실시예들에서, 요청자(1105), 타일 디코더(1110), 및 타일 프로세서(1150)는 메시 빌더들(1115)을 이 섹션의 "클라이언트들"로서 갖는 프로세싱 파이프라인의 독립 부분으로서 기능을 한다.
일부 실시예들의 메시 빌더들(1115)(또한, 타일 소스들로도 지칭됨)은 타일 제공자(1120)에 의해 인스턴스화되어(instantiated) 가상 맵 타일들의 상이한 층들을 구축하게 한다. 맵핑 애플리케이션에 의해 디스플레이되는 맵의 유형에 따라, 타일 제공자(1120)는 상이한 개수 및 상이한 유형들의 메시 빌더들(1115)을 인스턴스화할 수 있다. 예를 들어, 위성 뷰 맵에 대해, 타일 제공자(1120)는 단 하나의 메시 빌더(1115)만을 인스턴화할 수 있는데, 이는 일부 실시예들의 위성 맵 타일들이 데이터의 다수의 층들을 포함하지 않기 때문이다. 일부 실시예들에서, 위성 맵 타일들은 CCI들(예컨대, 위성, 우주 왕복선, 항공기, 헬리콥터 등에 의해 촬영된 이미지들)이 텍스처들로서 사용되는 맵 서비스(1103)에서 생성된 이미-구축된 메시를 포함한다. 그러나, 일부 실시예들에서, 하이브리드 뷰잉 모드에서 맵 뷰들을 렌더링할 때, CCI들 상에 오버레이할 레이블(label)들을 생성하기 위해 추가적인 메시 빌더들이 인스턴스화될 수 있다. 2D 또는 3D 렌더링된 벡터 맵(즉, 비-CCI 맵)에 대해, 일부 실시예들은 별도의 메시 빌더들(1115)을 인스턴스화하여, 랜드커버 폴리곤 데이터(예컨대, 공원, 수역 등), 도로, 관심 표시의 장소, 지점 레이블(예컨대, 공원 등에 대한 레이블), 도로 레이블, (교통을 디스플레이하는 경우) 교통, 빌딩, (소정의 줌 레벨들에서의 소정 객체들에 대한) 래스터 데이터뿐만 아니라 맵 내에 포함시킬 데이터의 다른 층들에 대한 메시들을 구축한다.
일부 실시예들의 메시 빌더들(1115)은 "비어 있는(empty)" 가상 맵 타일들(1160)을 타일 제공자(1120)로부터 수신하고, "구축된 상태의(built)" 가상 맵 타일들(1165)을 타일 제공자(1120)로 반환한다. 즉, 타일 제공자(1120)는 하나 이상의 가상 맵 타일들(1160)을 메시 빌더들(1115) 각각에 전송한다. 가상 맵 타일들(1160) 각각은 메시를 드로잉할 세계의 영역을 나타낸다. 그러한 가상 맵 타일(1160)을 수신할 시, 메시 빌더(1115)는 맵 서비스(1103)로부터 요구되는 맵 타일들을 식별하고, 그것의 리스트를 프로세서(1150)에 전송한다.
타일들을 타일 프로세서(1150)로부터 역으로 수신할 시, 메시 빌더는 타일들에 저장된 벡터 데이터를 이용하여 가상 맵 타일에 의해 설명된 영역에 대한 폴리곤 메시를 구축한다. 일부 실시예들에서, 메시 빌더(1115)는 몇몇 상이한 기능들을 이용하여 메시를 구축한다. 이들 기능들은 메시 생성기(1116), 삼각측량기(1117), 셰도우 생성기(1118), 및 텍스처 디코더(1119)를 포함한다. 일부 실시예들에서, 이들 기능들(및 추가적인 메시 구축 기능들)은 각각의 메시 빌더에 이용가능하며, 상이한 메시 빌더들(1115)은 상이한 기능들을 이용한다. 예를 들어, 빌딩 층들을 담당하는 메시 빌더는 메시 생성기(1116) 및 삼각측량기(1117)를 사용할 수 있다. 또한, 몇몇 상이한 유형들의 셰도우 생성기들은 메시 빌더(1115)에 이용가능할 수 있으며, (맵이 회전함에 따라 변화하는) 동적 셰도우들을 생성하기 위한 제1 셰도우 생성기 및 래스터 이미지 드롭 셰도우(raster image drop shadow)를 생성하기 위한 제2 셰도우 생성기를 포함한다.
메시 생성기(1116)는, 일부 실시예들에서, 타일 벡터 데이터를 이용하여 정점들의 메시를 생성한다. 삼각측량기(1117)는 메시로부터 삼각형들을 생성하여, 궁극적 렌더링을 간소화시킨다. 셰도우 생성기(1118)는 (예를 들어, 셰도우를 드로잉하도록 렌더러(renderer)에 나타내거나 드로잉할 셰도우의 어두운 정도를 나타내는 값들로 정점들 및/또는 폴리곤들을 레이블링함으로써) 메시에 셰도우들을 추가한다. 텍스처 디코더(1119)는 (예컨대, 스타일시트로부터의) 텍스처 정보를 디코딩하고, 텍스처 정보를 메시에 적용한다. 상이한 실시예들에서, 텍스처 정보는 렌더링될 때 메시 내에 인코딩되는 폴리곤들에 추가할 컬러들, 패턴들 등을 나타낼 수 있다.
일부 실시예들에서, 텍스처 정보는 스타일시트 데이터(1155)에 기초하여 결정될 수 있다. 또한, 일부 실시예들은 또한 이러한 스타일시트 데이터(1155)를 이용하여 셰도우, 삼각측량법, 및 또는 메시 구성 데이터를 결정한다. 스타일시트 구동형 렌더링(stylesheet-driven rendering)을 사용하는 것은 맵 출력의 많은 양태들에 대해 간단한 수정을 가능하게 하는데, 그 이유는 텍스처, 컬러 등에 대한 변경들이 스타일시트의 최소 수정을 통해 이루어질 수 있기 때문이다. 그 결과, 텍스처들은 즉각적으로(on the fly) 동적으로 생성될 수 있다. 스타일시트 구동형 렌더링의 예시적인 이점은 상이한 줌 레벨들 또는 지리적 영역들에서의 소정 유형들의 객체들에 대해 상이한 텍스처들을 사용하는 용이성이다. 예를 들어, 낮은 줌 레벨(덜 세밀함)로 볼 때, 일부 실시예들은 단순한 밝은 녹색으로 공원을 채색할 수 있다. 반면, 사용자가 보다 높은 줌 레벨(더 세밀함)로 줌 인(zoom in)하면, 스타일시트들은 공원 영역에 패턴(예컨대, 경엽 패턴)을 적용하도록 나타낸다. 유사하게, 보다 높은 줌 레벨들에서의 패턴들은 빌딩들, 수역들, 아스팔트, 도시 랜드커버 등에 추가될 수 있다. 이러한 정보는 스타일시트 내에 코딩될 수 있고, 이어서, 메시 빌더는 간단히 타일의 줌 레벨에 기초하여 적절한 텍스처 정보를 타일 메시에 추가한다.
(예컨대, 도시, 교외, 또는 지방) 도로들을 태그함(tagging)으로써, 맵 서비스(1103)는 그 도로들 주변의 랜드커버 영역들에 대해 상이한 텍스처들을 사용하도록 클라이언트 애플리케이션을 유도할 수 있다. 또한, 랜드커버 영역 태그들은 랜드커버 영역에 의해 커버되는 영역의 종류를 나타내는 메트릭(metric)들에 기초하여 서버에 의해 업데이트될 수 있다. 예를 들어, 일부 실시예들은, (맵 서비스(1103) 측에서) 영역 내의 모바일 디바이스들의 밀도를 (예컨대, 맵 서비스(1103)에 액세스하는 디바이스들의 개수에 기초하여) 판정하고 랜드커버에 대한 태그들을 생성한다. 이어서, (일부 실시예들에서, 맵 서비스(1103)로부터 업데이트될 수 있는) 클라이언트 디바이스들에 의해 저장되는 스타일시트들은 이들 랜드커버 영역들을 드로잉하는 방법을 나타낸다. 유사하게는, 상이한 스타일들이 상이한 영역들(예컨대, 랜드커버에 대한 사막, 숲, 암반 등; 상이한 상태들의 레이블들에 대한 상이한 컬러들; 또는 다른 그러한 특이성(distinction)들)의 양태들을 렌더링하는 데 이용될 수 있다.
각각의 메시 빌더(1115)는 그의 가상 맵 타일들(1165)을 그의 메시 층이 채워진 타일 제공자(1120)에 반환한다. 타일 제공자(1120)는 디스플레이될 맵 뷰(즉, 가상 카메라(1180)로부터 가시적인 볼륨)를 나타내는 특정 뷰(즉, 볼륨, 또는 뷰잉 절두체(viewing frustum))를 렌더링 제어기(1175)로부터 수신한다. 타일 제공자는 일부 실시예들에서 임의의 컬링(culling)(예컨대, 너무 멀리 떨어진 표면 영역을 제거하는 것, 전체적으로 다른 객체들 뒤에 있을 객체들을 제거하는 것 등)을 수행하고, 이어서 가상 맵 타일들(1160)을 메시 빌더들(1115)에 전송한다.
일부 실시예들에서, 타일 제공자(1120)는 구축된 상태의 가상 맵 타일들(1165)을 상이한 메시 빌더들로부터 (예컨대, 다소 복잡한 메시들을 완성하기 위한 상이한 프로세싱 시간들, 필요한 맵 타일들을 타일 프로세서(1150)로부터 수신하기 전에 경과되는 상이한 시간 등으로 인한) 상이한 시간들에 수신한다. 일단 가상 맵 타일들의 모든 층들이 반환되었다면, 일부 실시예들의 타일 제공자(1120)는 층들을 함께 놓고, 렌더링을 위해 데이터를 렌더링 제어기(1175)로 방출한다.
일부 실시예들에서, 타일 제공자(1120)는 메시 빌더들이 그들의 데이터를 반환하기 전에 메시를 구축할 새로운 카메라 볼륨을 이미 수신했을 수 있다. 예를 들어, 사용자가 맵을 빠르게 패닝하거나 줌하는 경우, 메시 빌더들에 의해 반환된 데이터는 최신 데이터가 아닐 수 있다. 일부 실시예들에서, 타일 제공자는 구축된 상태의 가상 맵 타일 층들을 드롭시키거나 이들을 메모리에 저장한다. 구축된 상태의 가상 맵 타일들을 드롭시킬지 여부는, 상이한 실시예들에서, 구축된 상태의 타일들이 곧 요구될 가능성이 있는지 여부(예컨대, 사용자가 가상 카메라를 얼마나 많이 이동시켰는가, 애플리케이션이 오래된 데이터를 디스플레이할 가능성을 적게 하는 내비게이션이 구동 중인지 여부) 및 현재 사용 중인 메모리의 양에 의존한다.
가상 카메라(1180)는 파이프라인(1100)이 렌더링할 볼륨 또는 표면을 생성하고, 이러한 정보를 렌더링 제어기(1175)에 전송한다. 맵이 렌더링될 특정 위치 및 배향(즉, 사용자가 맵을 "보는" 3D 공간 내의 지점)에 기초하여, 가상 카메라는 타일 제공자(1120)에 실제로 전송할 시계(field of view)를 식별한다. 일부 실시예들에서, 맵핑 애플리케이션이 내비게이션에 대한 3D 투시도를 렌더링하고 있는 경우, 가상 카메라의 시계는 사용자 디바이스의 이동에 기초하여 규칙적인 간격들로 새로운 가상 카메라 위치 및 배향을 생성하는 알고리즘에 따라 판정된다.
렌더링 제어기(1175)는 일부 실시예들에서 타일 제공자(1120), 가상 카메라(1180), 및 렌더링 엔진(1125)을 관리하는 것을 담당한다. 일부 실시예들에서, 다수의 타일 제공자들은 실제로 인스턴화될 수 있고, 렌더링 제어기(1175)는 여러 개의 가상 맵 타일들(예컨대, 맵 타일들 및 빌딩 타일들)을 함께 놓아, 렌더링 엔진(1125)에 전달되는 장면을 생성한다.
렌더링 엔진(1125)은 디스플레이 디바이스로 출력할 드로잉을 가상 카메라로부터 전송된 메시 타일들(1165)에 기초하여 생성하는 것을 담당한다. 도시된 바와 같이, 일부 실시예들의 렌더링 엔진(1125)은 몇몇 서브프로세스들을 갖는다. 일부 실시예들에서, 각각의 상이한 요소가 상이한 서브프로세스에 의해 렌더링되며, 렌더링 엔진(1125)은 객체들의 상이한 층들의 폐색(occlusion)을 처리한다(예컨대, 상이한 빌딩들 위 또는 뒤에 레이블들을 배치, 랜드커버의 상측에 도로들을 생성, 등을 한다). 도 11은 물 렌더링 프로세스(1126), 빌딩 렌더링 프로세스(1127), 및 경엽 렌더링 프로세스(1128)를 예시한다. 추가적인 프로세스들의 예들은 도로 렌더링 프로세스, 레이블 렌더링 프로세스, 래스터 교통 렌더링 프로세스, 레스터 도로 렌더링 프로세스, 위성 렌더링 프로세스, 폴리곤 렌더링 프로세스, 백그라운드 래스터 렌더링 프로세스 등을 포함한다.
렌더링 프로세스들 각각은 렌더링 파라미터들의 세트를 포함하며; 물 파라미터들(1139), 빌딩 파라미터들(1137), 및 경엽 파라미터들(1138)이 예시된다. 일부 실시예들에서, 이러한 데이터는 수역들, 빌딩 표면들, 및 경엽을 렌더링하는 방식에 관한 정보(예컨대, 셰이더 정보, 사용할 텍스처들 등)를 포함한다.
일부 실시예들에서, 렌더링 파라미터들의 이들 세트들은 적어도 부분적으로 렌더링 엔진 준비 동작(1170)에 의해 생성된다. 렌더링 엔진 준비 동작(1170)은 다른 동작들 중에서도 셰이더 컴파일러(1171) 및 텍스처 로더(texture loader)(1172)를 포함한다. 셰이더 컴파일러(1171)는 렌더링 엔진이 사용할 셰이더들을 컴파일한다. 예를 들어, 셰이더 컴파일러(1171)는 렌더링 엔진이 3D 위성 맵 뷰를 렌더링할 경우에 3D 위성 맵 뷰 내의 정의된 유형들의 메시들을 애니메이션화하는 셰이더들을 컴파일한다. 텍스처 로더(1172)는 텍스처 정보를 (예컨대, 렌더링 파라미터들 내에) 로딩한다. 예를 들어, 텍스처 로더(1172)는 렌더링 엔진이 3D 위성 맵 뷰를 렌더링할 때 3D 위성 맵 뷰 내의 정의된 유형들의 메시들을 애니메이션화하는 셰이더들에 대한 텍스처들을 로딩한다. 이러한 텍스처 정보는 일부 실시예들에서 스타일시트 데이터(1155)로부터 올 수 있다.
일부 실시예들에서의 렌더링 파이프라인(1100)의 동작이 이제 기술될 것이다. 특정 줌 레벨에서 특정 맵 영역을 보기 위한 사용자 입력에 기초하여, 가상 카메라(1180)는 맵 영역을 보는 위치 및 배향을 지정하고, 이러한 뷰잉 절두체 또는 볼륨을 렌더링 제어기(1175)에 전송한다. 렌더링 제어기(1175)는 하나 이상의 타일 제공자들을 인스턴스화한다. 하나의 타일 제공자(1120)가 이 도면에 도시되어 있지만, 일부 실시예들은 한 번에 다수의 타일 제공자들의 인스턴스화를 허용한다. 예를 들어, 일부 실시예들은 빌딩 타일들에 대해 그리고 맵 타일들에 대해 개별 타일 제공자들을 인스턴스화한다.
타일 제공자(1120)는 메시가 구축될 필요가 있는 맵 영역의 영역들을 식별하는 비어 있는 가상 맵 타일을 생성하는 데 필요한 임의의 컬링을 수행하며, 드로잉된 맵의 상이한 층들(예컨대, 도로들, 랜드커버, POI 레이블들 등)에 대해 인스턴스화되는 메시 빌더들(1115)에 비어 있는 가상 맵 타일들(1160)을 전송한다. 메시 빌더들(1115)은 맵 서비스(1103) 서버 상에서 (즉, 쿼드트리의 노드들로서) 이용가능한 상이한 타일들을 식별하는, 맵 서비스(1103)로부터 수신된 매니페스트(manifest)를 이용한다. 메시 빌더들(1115)은, 임의의 중복 요청들을 제거하고, 타일 리스트(1135)를 타일 디코더(1110)에 전송하는 타일 프로세서(1150)로부터 특정 맵 타일들을 요청한다.
타일 디코더(1110)는 요청된 타일들이 타일 캐시들(비휘발성 저장 캐시 또는 휘발성 저장 캐시 중 어느 하나)에 저장되는지 여부를 판정하며, 요청하는 메시 빌더들(1115)로의 분배를 위해 임의의 그러한 타일들을 타일 프로세서(1150)에 반환한다. 이미 국부적으로 저장되지 않은 임의의 타일들에 대해, 타일 디코더(1110)는 요청을, 타일 리스트(1136)(타일 리스트(1135)의 축소 버전)를 원격 맵 서비스(1103) 서버로 전송하는 요청자(1105)에게 전송한다. 요청자(1105)는 요청된 맵 타일들을 압축 형태(1140)로 맵 서비스(1103)로부터 수신하고 타일 디코더(1110)에 포워드한다. 타일 디코더(1110)는 이들 타일들을 압축해제(예컨대, 디코딩)하고, 이들을 그의 캐시(들)에 저장하며, 메시 빌더들(1115)에의 반환을 위해 압축해제 타일들(1145)을 타일 프로세서(1150)로 전송한다.
일단 특정 메시 빌더(1115)가 그의 맵 타일들을 수신했다면, 그것은 맵 타일들에 저장된 벡터 데이터를 이용하여, 타일 제공자(1120)로부터 전송된 가상 맵 타일들에 대한 메시를 구축하기 시작한다. 그것의 맵 층에 대한 메시를 구축한 후, 메시 빌더(1115)는 구축된 상태의 가상 맵 타일(1165)을 역으로 타일 제공자(1120)에게 전송한다. 타일 제공자(1120)는 그것이 다양한 메시 빌더들(1115)로부터 모든 가상 맵 타일들을 수신하고, 이들을 함께 적층하고, 완성된 가상 맵 타일을 렌더링 제어기(1175)에 전송할 때까지 대기한다. 렌더링 제어기(1175)는 그의 모든 타일 제공자들로부터의 반환된 타일들(예컨대, 가상 맵 타일 및 가상 빌딩 타일)을 함께 스티치하고(stitch), 이러한 장면을 렌더링 엔진(1125)에 전송한다. 렌더링 엔진(1125)은 맵 타일들 내의 정보를 이용하여 디스플레이를 위해 장면을 드로잉한다.
도 12는 본 발명의 일부 실시예들에 따른, 3D 위성 맵 뷰들 내의 애니메이션화된 물 및 빌딩들의 렌더링을 관리하는 렌더링 제어기(1200)를 개념적으로 도시한다. 일부 실시예들에서, 렌더링 제어기(1200)는 도 11을 참조하여 위에 기술된 것과 유사하다. 이러한 예에서, 가상 카메라(1225)는 맵 영역의 3D 뷰를 식별하고, 그 3D 뷰를 렌더링 제어기(1200)에 제공한다.
렌더링 제어기(1200)가 가상 카메라(1225)로부터 3D 맵 뷰를 수신하여 렌더링할 때, 렌더링 제어기(1200)는 타일 제공자(1205)를 인스턴스화한다. 타일 제공자(1205)는 물 메시 빌더들(1210)의 세트 및 위성 뷰 메시 빌더들(1215)의 세트를 인스턴스화하여 3D 장면(1265)을 위한 가상 맵 타일들을 구축한다. 물 메시 빌더들(1210)의 세트는 3D 장면(1265) 내의 물 메시들(및 다른 정의된 유형들의 맵 요소들 및/또는 구성물들의 메시들)에 대한 폴리곤 데이터를 포함하는, 3D 장면(1265)을 위한 벡터 타일들을 요청한다. 위성 뷰 메시 빌더들(1215)의 세트는 3D 장면(1265)의 메시들 및 CCI들을 포함하는 위성 맵 타일들을 요청한다. 일부 실시예들에서, 렌더링 제어기(1200)는 3D 장면(12645)을 위한 가상 맵 타일들을 구축하는 데 필요한 각각의 상이한 유형의 타일들에 대한 타일 제공자를 인스턴스화한다. 이러한 예에서, 일부 그러한 실시예들의 렌더링 제어기(1200)는 위성 맵 타일들에 대한 타일 제공자 및 벡터 타일들에 대한 타일 제공자를 인스턴스화한다.
일단 렌더링 제어기(1200)가 이들 가상 타일들을 타일 제공자(1205)로부터 수신하면, 렌더링 제어기(1200)는 이들을 함께 결합하여 3D 장면(1265)을 형성하고, 가상 카메라(1225)에 의해 식별된 3D 뷰에 기초하여 3D 장면(1265)의 3D 위성 맵 뷰를 렌더링하기 위한 렌더링 엔진(1230)에 3D 장면(1265)을 제공한다.
3D 위성 맵 뷰 내에 물 및 빌딩들을 애니메이션화하기 위해, 렌더링 제어기(1200)는 렌더링 엔진(1230)이 3D 장면(1265)에서 물 메시들 및 빌딩 메시들을 렌더링하는 데 사용하는 셰이더들 및 텍스처들을 지정한다. 렌더링 제어기(1200)는 입력 인식 모듈(1220)로부터 수신된 상이한 입력 정보(예컨대, 터치 입력 정보, 오디오 입력 정보, 모션 입력 정보 등)에 기초하여 상이한 셰이더들 및/또는 텍스처들을 지정한다. 일부 실시예들에서, 입력 인식 모듈(1220)은 도 8을 참조하여 위에 기술된 것과 유사하다. 일부 실시예들에서, 렌더링 제어기(1200)는 정의된 유형의 맵 요소 또는 구성물을 애니메이션화하기 위한 동일한 셰이더를 입력 인식 모듈(1220)로부터 수신된 상이한 입력들의 세트에 기초하여 지정한다. 예를 들어, 일부 그러한 실시예들의 렌더링 제어기(1200)는 제스처 입력, 오디오 입력, 및 모션 입력에 기초하여 파도들을 애니메이션화하기 위한 셰이더를 지정하여 물의 애니메이션들을 생성한다.
렌더링 엔진(1230)은 3D 위성 맵 뷰 내의 상이한 맵 요소들 및/또는 구성물들을 렌더링하기 위한 상이한 서브프로세스들을 이용하여 3D 장면(1265)의 3D 위성 맵 뷰를 렌더링한다. 이러한 예에서, 물 렌더링 프로세스(1235)는 물 셰이더들 및 물 텍스처들을 사용하여 3D 위성 맵 뷰 내의 수역을 렌더링하고, 빌딩 렌더링 프로세스(1240)는 빌딩 셰이더들 및 빌딩 텍스처들을 사용하여 3D 위성 맵 뷰 내의 빌딩들을 렌더링한다. 렌더링 프로세스들(1235, 1240)이 렌더링 엔진(1230)과는 별도로 도시되어 있지만, 일부 실시예들의 렌더링 프로세스들(1235, 1240)은 실제로 렌더링 엔진(1230)의 일부이다.
도 13은 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들을 위해 빌딩들을 렌더링하는 렌더링 엔진(1300)을 개념적으로 도시한다. 일부 실시예들에서, 렌더링 엔진(1300)은 도 11 및 도 12를 참조하여 위에 기술된 렌더링 엔진들을 구현한다.
도시된 바와 같이, 렌더링 맵 뷰들을 처리하기 위한 장면 렌더링 관리자(1310)는 3D 위성 맵 뷰를 렌더링하기 위해 3D 장면(1305)을 수신한다. 3D 장면(1305)의 3D 위성 맵 뷰를 렌더링하기 위해, 장면 렌더링 관리자(1310)는 3D 장면 내의 메시들의 렌더링을 관리하며, 일단 메시들이 렌더링되었다면 렌더링된 3D 장면(1305)의 3D 위성 맵 뷰를 생성한다. 이어서, 장면 렌더링 관리자(1310)는 렌더링 엔진(1300)이 동작하는 디바이스의 디스플레이 스크린 상에서의 디스플레이를 위해, 렌더링된 맵 뷰 스토리지(1335)에 3D 위성 맵 뷰를 저장한다.
도 13에 도시된 바와 같이, 장면 렌더링 관리자(1310)는 3D 장면(1305) 내의 메시(1315)를 식별하고, 이를 메시들의 메시 유형을 식별하기 위한 메시 식별자(1320)에 전달한다. 이러한 예에서, 메시 식별자(1320)는 메시(1315)를 빌딩 메시(1325)로서 식별하고, 이를 빌딩 메시들을 렌더링하기 위한 빌딩 메시 렌더링 프로세스(1330)에 전달한다. 빌딩 메시 렌더링 프로세스(1330)는 빌딩 메시(1325)를 애니메이션화하기 위한 빌딩 셰이더(예컨대, 빌딩 메시의 표면들 상에서의 반사 이미지들을 애니메이션화하기 위한 셰이더) 및 빌딩 메시(1325)를 렌더링하기 위한 것으로 지정된 텍스처들(예컨대, CCI들, 사용자 또는 기계 생성 텍스처들, 및/또는 다른 유형들의 텍스처들)을 사용하여 빌딩 메시(1325)를 렌더링하고, 이어서, 렌더링된 빌딩 메시(1325)를 장면 렌더링 관리자(1310)에 반환한다.
일부 실시예들에서, 빌딩 셰이더는 빌딩 메시의 표면들의 법선들에 기초하여 빌딩 메시를 렌더링한다. 예를 들어, 일부 실시예들의 빌딩 셰이더는 빌딩 메시의 표면들의 법선들을 이용하여 빌딩의 표면들 상의 반사 이미지들 및/또는 굴절 이미지(refraction)들(예컨대, 도 7에 도시된 빌딩들(705, 710) 상의 반사 이미지들)을 렌더링한다. 일부 실시예들에서, 빌딩 셰이더는 빌딩의 표면들 상의 이들 인근 반사 이미지들 및 굴절 이미지들을 렌더링하는 데 전역 조명(global illumination) 기술을 이용한다. 빌딩의 특정 표면에 대해, 일부 그러한 실시예들의 빌딩 셰이더는 광원들(예컨대, 도 7에 도시된 수역 및 해안선(715))뿐만 아니라 빌딩의 특정 표면 상의 반사 이미지들 및/또는 굴절 이미지들을 렌더링할 때 장면 내의 다른 반사 표면들을 반사시키는 광선들을 고려한다.
도 14는 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들에 대해 물을 렌더링하는 렌더링 엔진(1300)을 개념적으로 도시한다. 이러한 예에서, 장면 렌더링 관리자(1310)는 3D 장면(1305)의 3D 위성 맵 뷰를 생성하기 위해 3D 장면(1305)을 렌더링하고 있다.
도 14에 도시된 바와 같이, 장면 렌더링 관리자(1310)는 3D 장면(1305) 내의 메시(1415)를 식별하고, 이를 메시 식별자(1320)에 전달한다. 이러한 예에서의 메시 식별자(1320)는 메시(1415)를 물 메시(1425)로서 식별하고 이를 물 메시들을 렌더링하기 위한 물 메시 렌더링 프로세스(1430)에 전달한다. 물 메시 렌더링 프로세스(1430)는 물 메시(1425)를 애니메이션화하기 위한 물 셰이더(예컨대, 잔잔한 물을 애니메이션화하기 위한 셰이더, 파도들을 애니메이션화하기 위한 셰이더, 잔물결들을 애니메이션화하기 위한 셰이더들 등) 및 물 메시(1425)를 렌더링하기 위한 것으로 지정된 텍스처들(예컨대, CCI들, 사용자 또는 기계 생성 텍스처들, 및/또는 다른 유형들의 텍스처들)을 사용하여 물 메시(1425)를 렌더링하고, 이어서, 렌더링된 물 메시(1425)를 장면 렌더링 관리자(1310)에 반환한다. 일부 실시예들에서, 물 셰이더는 물 셰이더가 물 메시(1425)를 렌더링하는 데 사용될 때 물 메시(1425)의 법선들을 무시한다. 잔잔한 물(도 1에 도시된 애니메이션화된 물)을 애니메이션화하는 데 사용되는 일부 실시예들의 물 셰이더는 물 텍스처를 사용하여 잔잔한 물을 애니메이션화하는 텍스처 셰이더이다.
도 15는 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들에 대해 해안선들을 렌더링하는 렌더링 엔진(1300)을 개념적으로 도시한다. 이러한 예에 대해, 장면 렌더링 관리자(1310)는 3D 장면(1305)의 3D 위성 맵 뷰를 생성하기 위해 3D 장면(1305)을 렌더링하고 있다.
도 15에 도시된 바와 같이, 장면 렌더링 관리자(1310)는 3D 장면(1305) 내의 메시(1515)를 식별하고, 이를 메시 식별자(1320)에 전달한다. 이러한 예에서의 메시 식별자(1320)는 메시(1515)를 해안선 메시(1525)로서 식별하고, 이를 해안선 메시들을 렌더링하기 위한 해안선 메시 렌더링 프로세스(1530)에 전달한다. 해안선 메시 렌더링 프로세스(1530)는 해안선 메시(1525)를 애니메이션화하기 위한 해안선 셰이더(예컨대, 해안선 메시를 따라 파도들을 애니메이션화하기 위한 셰이더) 및 해안선 메시(1525)를 렌더링하기 위한 것으로 지정된 텍스처들(예컨대, CCI들, 사용자 또는 기계 생성 텍스처들, 및/또는 다른 유형들의 텍스처들)을 사용하여 해안선 메시(1525)를 렌더링하고, 이어서, 렌더링된 해안선 메시(1525)를 장면 렌더링 관리자(1310)에 반환한다. 일부 실시예들에서, 해안선 셰이더는 해안선 셰이더가 해안선 메시(1525)를 렌더링하는 데 사용되는 경우 해안선 메시(1525)의 법선들을 무시한다.
도 16은 본 발명의 일부 실시예들에 따른, 애니메이션화된 3D 위성 맵 뷰들에 대해 경엽을 렌더링하는 렌더링 엔진(1300)을 개념적으로 도시한다. 이러한 예에서, 장면 렌더링 관리자(1310)는 3D 장면(1305)의 3D 위성 맵 뷰를 생성하기 위해 3D 장면(1305)을 렌더링하고 있다.
도 16에 도시된 바와 같이, 장면 렌더링 관리자(1310)는 3D 장면(1305) 내의 메시(1615)를 식별하고, 이를 메시 식별자(1320)에 전달한다. 이러한 예에서의 메시 식별자(1320)는 메시(1615)를 경엽 메시(1625)로서 식별하고, 이를 경엽 메시들을 렌더링하기 위한 경엽 메시 렌더링 프로세스(1630)에 전달한다. 경엽 메시 렌더링 프로세스(1630)는 경엽 메시(1625)를 애니메이션화하기 위한 경엽 셰이더(예컨대, 잔잔한 경엽을 애니메이션화하기 위한 셰이더, 흔들리는 경엽을 애니메이션화하기 위한 셰이더 등) 및 경엽 메시(1625)를 렌더링하기 위한 것으로 지정된 텍스처들(예컨대, CCI들, 사용자 또는 기계 생성 텍스처들, 및/또는 다른 유형들의 텍스처들)을 사용하여 경엽 메시(1625)를 렌더링하고, 이어서, 렌더링된 경엽 메시(1625)를 장면 렌더링 관리자(1310)에 반환한다. 일부 실시예들에서, 경엽 셰이더는 경엽 셰이더가 경엽 메시(1625)를 렌더링하는 데 사용될 때 경엽 메시(1625)의 법선들을 무시한다. 일부 실시예들의 경엽 셰이더는 경엽 텍스처를 사용하여 잔잔한 경엽을 애니메이션화하는 텍스처 셰이더이다. 일부 실시예들에서, 잔잔한 물을 애니메이션화하는 데 사용되는 셰이더는 또한 잔잔한 경엽을 애니메이션화하는 데 사용된다.
III. 전자 시스템
많은 전술된 특징들 및 애플리케이션들은 컴퓨터-판독가능 저장 매체(또한 컴퓨터-판독가능 매체로 지칭됨) 상에 기록된 명령어들의 세트로서 지정되는 소프트웨어 프로세스들로서 구현된다. 이들 명령어들이 하나 이상의 계산 또는 프로세싱 유닛(들)(예컨대, 하나 이상의 프로세서들, 프로세서들의 코어들, 또는 다른 프로세싱 유닛들)에 의해 실행될 때, 명령어들은 프로세싱 유닛(들)이 명령어들에서 지시된 동작들을 수행하게 한다. 컴퓨터-판독가능 매체들의 예들은, CD-ROM들, 플래시 드라이브들, 랜덤 액세스 메모리(RAM) 칩들, 하드 드라이브들, 소거가능한 프로그래밍가능 판독 전용 메모리(erasable programmable read-only memory: EPROM)들, 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리(electrically erasable programmable read-only memory: EEPROM)들 등을 포함하지만 이로 제한되지는 않는다. 컴퓨터-판독가능 매체들은 무선으로 또는 유선 접속들을 통해 전달하는 반송파(carrier wave)들 및 전자 신호들을 포함하지 않는다.
본 명세서에서, 용어 "소프트웨어"는 판독 전용 메모리(read-only memory)에 상주하는 펌웨어 또는 프로세서에 의한 프로세싱을 위해 메모리 내로 판독될 수 있는 자기 저장 장치에 저장된 애플리케이션들을 포함하도록 의도된다. 또한, 일부 실시예들에서, 다수의 소프트웨어 발명들은 별개의 소프트웨어 발명들에 남아 있으면서 보다 큰 프로그램의 하위 부분들로서 구현될 수 있다. 일부 실시예들에서, 다수의 소프트웨어 발명들은 또한 별개의 프로그램들로서 구현될 수 있다. 마지막으로, 본 명세서에 설명된 소프트웨어 발명을 함께 구현하는 별개의 프로그램들의 임의의 조합은 본 발명의 범주 내에 있다. 일부 실시예들에서, 소프트웨어 프로그램들은, 하나 이상의 전자 시스템들 상에서 동작하도록 설치된 때, 소프트웨어 프로그램들의 동작들을 실행 및 수행하는 하나 이상의 특정 기계 구현예들을 한정한다.
A. 모바일 디바이스
일부 실시예들의 맵핑 애플리케이션은 스마트폰들(예컨대, 아이폰(iPhone)(등록상표)) 및 태블릿들(예컨대, iPad(등록상표))과 같은 모바일 디바이스들 상에서 동작한다. 도 17은 그러한 모바일 컴퓨팅 디바이스의 아키텍처(1700)의 일례이다. 모바일 컴퓨팅 디바이스들의 예들은 스마트폰, 태블릿, 랩톱 등을 포함한다. 도시된 바와 같이, 모바일 컴퓨팅 디바이스(1700)는 하나 이상의 프로세싱 유닛들(1705), 메모리 인터페이스(1710), 및 주변기기 인터페이스(1715)를 포함한다.
주변기기 인터페이스(1715)는 다양한 센서들, 및 카메라 서브시스템(1720), 무선 통신 서브시스템(들)(1725), 오디오 서브시스템(1730), I/O 서브시스템(1735) 등을 포함하는 서브시스템들에 연결된다. 주변기기 인터페이스(1715)는 프로세싱 유닛들(1705)과 다양한 주변기기들 사이의 통신을 가능하게 한다. 예를 들어, 배향 센서(1745)(예컨대, 자이로스코프) 및 가속도 센서(1750)(예컨대, 가속도계)가 배향 및 가속도 기능들을 가능하게 하도록 주변기기 인터페이스(1715)에 연결된다.
카메라 서브시스템(1720)은 하나 이상의 광 센서들(1740)(예컨대, 전하 결합 디바이스(charged coupled device: CCD) 광 센서, 상보성 금속-산화물-반도체(CMOS) 광 센서 등)에 연결된다. 광 센서들(1740)과 연결된 카메라 서브시스템(1720)은 이미지 및/또는 비디오 데이터 캡처링과 같은 카메라 기능들을 가능하게 한다. 무선 통신 서브시스템(1725)은 통신 기능들을 가능하게 하는 역할을 한다. 일부 실시예들에서, 무선 통신 서브시스템(1725)은 무선 주파수 수신기들 및 송신기들, 및 광 수신기들 및 송신기들(도 17에는 도시되지 않음)을 포함한다. 일부 실시예들의 이들 수신기들 및 송신기들은 GSM 네트워크, Wi-Fi 네트워크, 블루투스 네트워크 등과 같은 하나 이상의 통신 네트워크들을 통해 동작하도록 구현된다. 오디오 서브시스템(1730)은 스피커에 연결되어 오디오를 출력한다(예컨대, 음성 내비게이션 명령어들을 출력한다). 추가적으로, 오디오 서브시스템(1730)은 마이크로폰에 연결되어 음성 인식(예컨대, 검색용), 디지털 녹음 등과 같은 음성-인에이블형 기능들을 가능하게 한다.
I/O 서브시스템(1735)은 디스플레이, 터치스크린 등과 같은 입력/출력 주변기기 디바이스들과 프로세싱 유닛들(1705)의 데이터 버스 사이에서의 주변기기 인터페이스(1715)를 통한 전달을 수반한다. I/O 서브시스템(1735)은 터치스크린 제어기(1755) 및 다른 입력 제어기들(1760)을 포함하여, 입력/출력 주변기기 디바이스들과 프로세싱 유닛들(1705)의 데이터 버스 사이에서의 전달을 가능하게 한다. 도시된 바와 같이, 터치스크린 제어기(1755)는 터치스크린(1765)에 연결된다. 터치스크린 제어기(1755)는 다수의 터치 감응 기술들 중 임의의 것을 이용하여 터치스크린(1765) 상에서의 접촉 및 이동을 검출한다. 다른 입력 제어기들(1760)은 하나 이상의 버튼들과 같은 다른 입력/제어 디바이스들에 연결된다. 일부 실시예들은 터치 상호작용들 대신 또는 이에 더해 근-터치 상호작용(near-touch interaction)들을 검출할 수 있는, 근-터치 감응 스크린 및 대응하는 제어기를 포함한다.
메모리 인터페이스(1710)는 메모리(1770)에 연결된다. 일부 실시예들에서, 메모리(1770)는 휘발성 메모리(예컨대, 고속 랜덤 액세스 메모리), 비휘발성 메모리(예컨대, 플래시 메모리), 휘발성 메모리와 비휘발성 메모리의 조합, 및/또는 임의의 다른 유형의 메모리를 포함한다. 도 17에 도시된 바와 같이, 메모리(1770)는 운영 체제(OS)(1772)를 저장한다. OS(1772)는, 기본 시스템 서비스들을 처리하고 하드웨어 의존형 태스크들을 수행하기 위한 명령어들을 포함한다.
메모리(1770)는 또한 하나 이상의 추가적인 디바이스들과의 통신을 가능하게 하는 통신 명령어들(1774); 그래픽 사용자 인터페이스 프로세싱을 가능하게 하는 그래픽 사용자 인터페이스 명령어들(1776); 이미지 관련 프로세싱 및 기능들을 가능하게 하는 이미지 프로세싱 명령어들(1778); 입력 관련(예컨대, 터치 입력) 프로세스들 및 기능들을 가능하게 하는 입력 프로세싱 명령어들(1780); 오디오 관련 프로세스들 및 기능들을 가능하게 하는 오디오 프로세싱 명령어들(1782); 및 카메라 관련 프로세스들 및 기능들을 가능하게 하는 카메라 명령어들(1784)을 포함한다. 위에 기술된 명령어들은 단지 예시적이며, 메모리(1770)는 일부 실시예들에서 추가적인 그리고/또는 다른 명령어들을 포함한다. 예를 들어, 스마트폰용 메모리는 전화 관련 프로세스들 및 기능들을 가능하게 하는 전화 명령어들을 포함할 수 있다. 추가적으로, 메모리는 맵핑 애플리케이션뿐만 아니라 다른 애플리케이션들에 대한 명령어들을 포함할 수 있다. 전술된 명령어들은 별도의 소프트웨어 프로그램들 또는 모듈들로서 구현될 필요는 없다. 모바일 컴퓨팅 디바이스의 다양한 기능들은, 하나 이상의 신호 프로세싱 및/또는 주문형 반도체들을 비롯하여 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
도 17에 도시된 컴포넌트들이 별개의 컴포넌트들로 도시되어 있지만, 당업자는 2개 이상의 컴포넌트들이 하나 이상의 집적 회로들 내에 통합될 수 있음을 인식할 것이다. 또한, 2개 이상의 컴포넌트들이 하나 이상의 통신 버스들 또는 신호 라인들에 의해 함께 연결될 수 있다. 또한, 많은 기능들이 하나의 컴포넌트에 의해 수행되는 것으로 기술되었지만, 당업자는 도 17과 관련하여 기술된 기능들이 2개 이상의 집적 회로들에 분할될 수 있다는 것을 인식할 것이다.
B. 컴퓨터 시스템
도 18은 본 발명의 일부 실시예들을 구현하는 전자 시스템(1800)의 다른 예를 개념적으로 도시한다. 전자 시스템(1800)은 컴퓨터(예컨대, 데스크톱 컴퓨터, 개인용 컴퓨터, 태블릿 컴퓨터 등), 전화, PDA, 또는 임의의 다른 종류의 전자 또는 컴퓨팅 디바이스일 수 있다. 그러한 전자 시스템은 다양한 유형들의 컴퓨터-판독가능 매체들 및 다양한 다른 유형들의 컴퓨터-판독가능 매체들을 위한 인터페이스들을 포함한다. 전자 시스템(1800)은 버스(1805), 프로세싱 유닛(들)(1810), 그래픽 프로세싱 유닛(GPU)(1815), 시스템 메모리(1820), 네트워크(1825), 판독 전용 메모리(1830), 영구 저장 디바이스(1835), 입력 디바이스들(1840), 및 출력 디바이스들(1845)을 포함한다.
버스(1805)는 전자 시스템(1800)의 다수의 내부 디바이스들을 통신적으로 연결하는 모든 시스템, 주변 장치, 및 칩셋 버스들을 총괄하여 표현한다. 예를 들어, 버스(1805)는 판독 전용 메모리(1830), GPU(1815), 시스템 메모리(1820), 및 영구 저장 디바이스(1835)와 프로세싱 유닛(들)(1810)을 통신적으로 연결한다.
이들 다양한 메모리 유닛들로부터, 프로세싱 유닛(들)(1810)은 본 발명의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다. 프로세싱 유닛(들)은 상이한 실시예들에서 단일 프로세서 또는 멀티-코어 프로세서일 수 있다. 몇몇 명령어들은 GPU(1815)에 전달되어 이에 의해 실행된다. GPU(1815)는 다양한 계산들을 없애거나 프로세싱 유닛(들)(1810)에 의해 제공된 이미지 프로세싱을 보완할 수 있다. 일부 실시예들에서, 그러한 기능은 코어이미지(CoreImage)의 커널 셰이딩 언어(kernel shading language)를 사용하여 제공될 수 있다.
판독 전용 메모리(ROM)(1830)는 프로세싱 유닛(들)(1810) 및 전자 시스템의 다른 모듈들에 의해 요구되는 정적 데이터 및 명령어들을 저장한다. 한편, 영구 저장 디바이스(1835)는 판독-기록 메모리 디바이스이다. 이러한 디바이스는 전자 시스템(1800)이 오프일 때도 명령어들 및 데이터를 저장하는 비-휘발성 메모리 유닛이다. 본 발명의 일부 실시예들은 영구 저장 디바이스(1835)로서 (자기 또는 광 디스크 및 그의 대응하는 디스크 드라이브, 통합형 플래시 메모리와 같은) 대용량 저장 디바이스를 사용한다.
다른 실시예들은 영구 저장 디바이스로서 (플로피 디스크, 플래시 메모리 디바이스 등 및 그의 대응하는 드라이브와 같은) 탈착형 저장 디바이스를 사용한다. 영구 저장 디바이스(1835)와 같이, 시스템 메모리(1820)는 판독-기록 메모리 디바이스이다. 그러나, 저장 디바이스(1835)와는 달리, 시스템 메모리(1820)는 랜덤 액세스 메모리와 같은 휘발성 판독-기록 메모리이다. 시스템 메모리(1820)는 프로세서가 런타임 시 요구하는 명령어들 및 데이터의 일부를 저장한다. 일부 실시예들에서, 본 발명의 프로세스들은 시스템 메모리(1820), 영구 저장 디바이스(1835), 및/또는 ROM(1830)에 저장된다. 이들 다양한 메모리 유닛들로부터, 프로세싱 유닛(들)(1810)은 일부 실시예들의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다.
버스(1805)는 또한 입력 및 출력 디바이스들(1840, 1845)에 연결한다. 입력 디바이스들(1840)은 사용자가 전자 시스템으로 정보를 전달하고 전자 시스템에 대한 명령어들을 선택하는 것을 가능하게 한다. 입력 디바이스들(1840)은 문자숫자 키보드들 및 포인팅 디바이스들(또한 "커서 제어 디바이스들"로 지칭됨), 카메라들(예컨대, 웹캠들), 마이크로폰 또는 음성 커맨드들을 수신하기 위한 유사한 디바이스들 등을 포함한다. 출력 디바이스들(1845)은 전자 시스템에 의해 생성된 이미지들을 디스플레이하거나 그렇지 않으면 데이터를 출력한다. 출력 디바이스들(1845)은 프린터들, 및 음극선관(CRT)들 또는 액정 디스플레이(LCD)들과 같은 디스플레이 디바이스들뿐만 아니라 스피커 또는 유사한 오디오 출력 디바이스들을 포함한다. 일부 실시예들은 입력 및 출력 디바이스들 둘 모두로서 기능하는 터치스크린과 같은 디바이스들을 포함한다.
마지막으로, 도 18에 도시된 바와 같이, 버스(1805)는 또한 네트워크 어댑터(도시되지 않음)를 통해 전자 시스템(1800)을 네트워크(1825)에 연결한다. 이러한 방식으로, 컴퓨터는 컴퓨터들의 네트워크(예를 들어, 근거리 네트워크("LAN"), 광역 네트워크("WAN"), 인트라넷, 또는 인터넷과 같은 네트워크들의 네트워크)의 일부일 수 있다. 전자 시스템(1800)의 임의의 또는 모든 컴포넌트들은 본 발명과 함께 사용될 수 있다.
일부 실시예들은 전자 컴포넌트들, 예를 들어 마이크로프로세서, 기계-판독가능 또는 컴퓨터-판독가능 매체(대안적으로, 컴퓨터-판독가능 저장 매체들, 기계-판독가능 매체들, 또는 기계-판독가능 저장 매체들로 지칭됨)에 컴퓨터 프로그램 명령어들을 저장하는 메모리 및 저장 장치를 포함한다. 그러한 컴퓨터-판독가능 매체들의 일부 예들은 RAM, ROM, CD-ROM(read-only compact disc), CD-R(recordable compact disc), CD-RW(rewritable compact disc), 판독 전용 DVD(digital versatile disc)(예컨대, DVD-ROM, 듀얼-레이어 DVD-ROM), 다양한 기록가능/재기록가능 DVD(예컨대, DVD-RAM, DVD-RW, DVD+RW 등), 플래시 메모리(예컨대, SD 카드, 미니-SD 카드, 마이크로-SD 카드 등), 자기 및/또는 솔리드 스테이트 하드 드라이브, 판독 전용 및 기록가능 블루-레이(BluRay)(등록상표) 디스크, 초고밀도 광 디스크, 임의의 다른 광 또는 자기 매체들, 및 플로피 디스크를 포함한다. 컴퓨터-판독가능 매체들은 적어도 하나의 프로세싱 유닛에 의해 실행 가능하며 다양한 동작들을 수행하기 위한 명령어들의 세트들을 포함하는 컴퓨터 프로그램을 저장할 수 있다. 컴퓨터 프로그램들 또는 컴퓨터 코드의 예들은, 컴파일러에 의해 생성되는 바와 같은 기계 코드, 및 인터프리터를 사용하여 컴퓨터, 전자 컴포넌트 또는 마이크로프로세서에 의해 실행되는 상위-레벨 코드를 포함한 파일들을 포함한다.
위 논의는 소프트웨어를 실행시키는 마이크로프로세서 또는 멀티-코어 프로세서들을 주로 언급하지만, 일부 실시예들은 ASIC(application specific integrated circuit) 또는 FPGA(field programmable gate array)와 같은 하나 이상의 집적 회로들에 의해 수행된다. 일부 실시예들에서, 그러한 집적 회로들은 회로 자체 상에 저장된 명령어들을 실행시킨다. 또한, 일부 실시예들은 프로그래밍가능 논리 디바이스(programmable logic device, PLD), ROM, 또는 RAM 디바이스들에 저장된 소프트웨어를 실행시킨다.
본 출원의 이러한 명세서 및 임의의 청구항들에 사용되는 바와 같이, 용어 "컴퓨터", "서버", "프로세서", 및 "메모리" 모두는 전자 디바이스 또는 다른 기술적 디바이스를 언급한다. 이들 용어들은 사람 또는 사람들의 그룹들을 배제한다. 명세서의 목적들을 위해, 용어 "디스플레이" 또는 "디스플레이하는"은 전자 디바이스 상에서 디스플레이하는 것을 의미한다. 본 출원의 이러한 명세서 및 임의의 청구항들에 사용되는 바와 같이, 용어들 "컴퓨터-판독가능 매체", "컴퓨터-판독가능 매체들", 및 "기계-판독가능 매체들"은 전체적으로 컴퓨터에 의해 판독가능한 형태로 정보를 저장하는 유형적인 물리적 오브젝트들로 제한된다. 이들 용어들은 임의의 무선 신호들, 유선 다운로드 신호들, 및 임의의 다른 임시 신호들을 제외한다.
IV. 맵 서비스 환경
다양한 실시예들이 맵 서비스 동작 환경 내에서 동작할 수 있다. 도 19는 일부 실시예들에 따른 맵 서비스, 동작 환경을 도시한다. 맵 서비스(1930)(또한 맵핑 서비스로도 지칭됨)는 다양한 통신 방법들 및 프로토콜들을 통해 맵 서비스(1930)와 통신하는 하나 이상의 클라이언트 디바이스들(1902a 내지 1902c)에 맵 서비스들을 제공할 수 있다. 일부 실시예들에서의 맵 서비스(1930)는 2차원 맵 이미지 데이터(예컨대, CCI들을 사용한 도로들의 항공 사진 뷰), 3차원 맵 이미지 데이터(예컨대, 빌딩들과 같은 3차원 피처들을 갖는 횡단가능 맵), 경로 및 방향 계산들(예컨대, 보행자를 위한 2개 지점들 사이의 연락 경로 계산들이나 방향들), 실시간 내비게이션 데이터(예컨대, 2차원 또는 3차원의 턴-바이-턴(turn-by-turn) 시각적 내비게이션 데이터), 위치 데이터(예컨대, 클라이언트 디바이스가 현재 위치되는 곳), 및 다른 지리적 데이터(예컨대, 무선 네트워크 커버리지, 기상, 교통 정보, 또는 인근 관심 지점들)와 같은 맵 정보 및 다른 맵 관련 데이터를 제공한다. 다양한 실시예들에서, 맵 서비스 데이터는 상이한 국가들 또는 지역들에 대한 국부화된 레이블들을 포함할 수 있다. 국부화된 레이블들은 클라이언트 디바이스들 상에 상이한 언어들로 맵 레이블들(예컨대, 거리명들, 도시명들, 관심 지점들)을 나타내는 데 사용될 수 있다. 클라이언트 디바이스들(1902a 내지 1902c)은 맵 서비스 데이터를 획득함으로써 이들 맵 서비스들을 이용할 수 있다. 클라이언트 디바이스들(1902a 내지 1902c)은 맵 서비스 데이터를 처리하기 위한 다양한 기술들을 구현할 수 있다. 이어서, 클라이언트 디바이스들(1902a 내지 1902c)은 사용자들, 내부 소프트웨어들 또는 하드웨어 모듈들, 및/또는 클라이언트 디바이스들(1902a 내지 1902c) 외부의 다른 시스템들 또는 디바이스들을 포함하지만 이들로 제한되지는 않는 다양한 개체들에 맵 서비스들을 제공할 수 있다.
일부 실시예들에서, 맵 서비스는 분산형 컴퓨팅 시스템에서 하나 이상의 노드들에 의해 구현된다. 각각의 노드는 맵 서비스의 하나 이상의 서비스들 또는 컴포넌트들에 할당될 수 있다. 일부 노드들은 동일한 맵 서비스 또는 맵 서비스의 컴포넌트에 할당될 수 있다. 일부 실시예들에서의 부하 밸런싱 노드(load balancing node)는 맵 서비스 내의 다른 노드들에 액세스 또는 요청들을 분산시킨다. 일부 실시예들에서, 맵 서비스는 단일 서버와 같은 단일 시스템으로서 구현된다. 서버 내의 상이한 모듈들 또는 하드웨어 디바이스들은 맵 서비스에 의해 제공되는 다양한 서비스들 중 하나 이상을 구현할 수 있다.
일부 실시예들에서의 맵 서비스는 맵 서비스 데이터를 다양한 형태들로 생성함으로써 맵 서비스들을 제공한다. 일부 실시예들에서, 한 가지 형식의 맵 서비스 데이터는 맵 이미지 데이터이다. 맵 이미지 데이터는 이미지 데이터를 클라이언트 디바이스에 제공하여, 클라이언트 디바이스가 이미지 데이터를 프로세싱할 수 있도록(예컨대, 이미지 데이터를 2차원 또는 3차원 맵으로서 렌더링 및/또는 디스플레이할 수 있도록) 한다. 맵 이미지 데이터는, 2차원이든 3차원이든, 하나 이상의 맵 타일들을 지정할 수 있다. 맵 타일은 보다 큰 맵 이미지의 일부일 수 있다. 맵의 맵 타일들을 함께 어셈블하는 것은 오리지널 맵을 생성한다. 타일들은 맵 이미지 데이터, 경로 식별 또는 내비게이션 데이터, 또는 임의의 다른 맵 서비스 데이터로부터 생성될 수 있다. 일부 실시예들에서, 맵 타일들은 래스터 기반 맵 타일들이며, 타일 크기들은 통상적으로 사용되는 256 픽셀 x 256 픽셀 타일보다 더 크고 더 작은 임의의 크기를 범위로 한다. 래스터 기반 맵 타일들은 비트맵(.bmp), 그래픽 인터체인지 포맷(.gif), 동화상 전문가 그룹(.jpg,.jpeg 등), 포터블 네트워크 그래픽(.png), 또는 태그된 이미지 파일 포맷(.tiff)을 포함하지만 이들로 제한되지는 않는 임의의 수의 표준 디지털 이미지 표현들로 인코딩될 수 있다. 일부 실시예들에서, 맵 타일들은 벡터 기반 맵 타일들이며, 가변 벡터 그래픽(.svg) 또는 드로잉 파일(.drw)을 포함하지만 이들로 제한되지는 않는 벡터 그래픽들을 사용하여 인코딩된다. 일부 실시예들은 또한 벡터와 래스터 데이터의 조합을 갖는 타일들을 포함한다. 맵 타일에 관한 메타데이터 또는 다른 정보는 또한 맵 타일 내에 또는 이와 함께 포함될 수 있어서, 추가 맵 서비스 데이터를 클라이언트 디바이스 제공한다. 다양한 실시예들에서, 맵 타일은, 일부가 아래의 예들에 기술되는 다양한 표준들 및/또는 프로토콜들을 이용하는 전달수단을 위해 인코딩된다.
다양한 실시예들에서, 맵 타일들은 줌 레벨에 따라 상이한 해상도들의 이미지 데이터로부터 구성될 수 있다. 예를 들어, 낮은 줌 레벨(예컨대, 월드 뷰(world view) 또는 글로브 뷰(globe view))에 대해, 맵 또는 이미지 데이터의 해상도는 높은 줌 레벨(예컨대, 도시 또는 거리 레벨)에서의 해상도에 비해 그리 높을 필요가 없다. 예를 들어, 글로브 뷰에 있을 때, 거리 레벨 아티팩트들을 렌더링할 필요가 없을 수 있는데, 이는 그러한 객체들이 많은 경우들에 있어서 무시할 수 있을 정도로 작을 것이기 때문이다.
일부 실시예들에서의 맵 서비스는 운송수단을 위한 타일을 인코딩하기 전에 맵 타일을 분석하기 위한 다양한 기술들을 수행한다. 이러한 분석은 클라이언트 디바이스들 및 맵 서비스 둘 모두에 대한 맵 서비스 성능을 최적화할 수 있다. 일부 실시예들에서, 맵 타일들은 벡터 기반 그래픽 기술들에 따라 복잡도에 대해 분석되며, 복잡한 그리고 복잡하지 않은 층들을 이용하여 구성된다. 맵 타일들은 또한 이미지 텍스처들로서 렌더링될 수 있고 이미지 마스크들에 따라 구성될 수 있는 공통의 이미지 데이터 또는 패턴들에 대해 분석될 수 있다. 일부 실시예들에서, 맵 타일 내의 래스터 기반 이미지 데이터는 하나 이상의 텍스처들과 관련되는 소정 마스크 값들을 포함한다. 일부 실시예들은 또한 스타일 식별자들을 포함하는 소정 맵 스타일들과 관련될 수 있는 피처들에 대해 지정된 맵 타일들을 분석한다.
다른 맵 서비스들은 일부 실시예들에서 맵 타일과는 별도로 다양한 데이터 형식들에 따라 맵 서비스 데이터를 생성한다. 예를 들어, 위치 데이터를 제공하는 맵 서비스들은, 예를 들어 무선 리소스 위치 서비스 프로토콜(Radio Resource Location services Protocol: RRLP), 코드 분할 다중 액세스(Code Division Multiple Access: CDMA)에 대한 TIA 801, 무선 리소스 제어(Radio Resource Control: RRC) 위치 프로토콜, 또는 LTE 포지셔닝 프로토콜(LPP)을 포함하지만 이들로 제한되지는 않는 위치 서비스 프로토콜들에 부합하는 데이터 형식들을 이용할 수 있다. 실시예들은 또한 디바이스 능력들 또는 속성들(예컨대, 하드웨어 사양들 또는 운영 체제 버전) 또는 통신 능력들(예컨대, 무선 신호 세기에 의해 결정되는 바와 같은 디바이스 통신 대역폭, 또는 유선 또는 무선 네트워크 유형)을 식별하는 데이터를 클라이언트 디바이스들로부터 수신하거나 요청할 수 있다.
맵 서비스는 내부 또는 외부 소스들로부터 맵 서비스 데이터를 획득할 수 있다. 예를 들어, 맵 이미지 데이터에 사용되는 CCI들은 외부 서비스들, 또는 내부 시스템들, 저장 디바이스들, 또는 노드들로부터 획득될 수 있다. 다른 예들은, GPS 지원 서버들, 무선 네트워크 커버리지 데이터베이스들, 업체 또는 개인 디렉토리들, 기상 데이터, 행정 정보(예컨대, 구성물 업데이트들 또는 도로명 변경들), 또는 교통 리포트들을 포함할 수 있지만 이들로 제한되지는 않는다. 맵 서비스의 일부 실시예들은 클라이언트 디바이스들로부터의 미래의 요청들을 분석하기 위해 맵 서비스 데이터(예컨대, 무선 네트워크 커버리지)를 업데이트할 수 있다.
맵 서비스의 다양한 실시예들은 맵 서비스들에 대한 클라이언트 디바이스 요청들에 응답한다. 이들 요청들은 특정 맵 또는 맵의 일부에 대한 요청일 수 있다. 일부 실시예들은 소정 맵 타일들에 대한 요청들로서 맵에 대한 요청들을 형식화한다. 일부 실시예들에서, 요청들은 또한 경로 계산을 위해 맵 서비스에 시작 위치들(또는 현재 위치들) 및 목적지 위치들을 제공한다. 클라이언트 디바이스는 또한 맵 텍스처들 또는 스타일 시트들과 같은 맵 서비스 렌더링 정보를 요청할 수 있다. 적어도 일부 실시예들에서, 요청들은 또한 턴-바이-턴 내비게이션을 구현하는 일련의 요청들 중 하나이다. 다른 지리적 데이터에 대한 요청들은 현재 위치, 무선 네트워크 커버리지, 기상, 교통 정보, 또는 인근 관심 지점들을 포함할 수 있지만, 이들로 제한되지는 않는다.
맵 서비스는, 일부 실시예들에서, 디바이스 또는 맵 서비스 동작을 최적화하기 위해 클라이언트 디바이스 요청들을 분석한다. 예를 들어, 맵 서비스는 클라이언트 디바이스의 위치가 불량한 통신(예컨대, 약한 무선 신호)의 영역 내에 있음을 인식할 수 있으며, 통신 중의 손실 이벤트 시에 클라이언트 디바이스를 제공할 더 많은 맵 서비스 데이터를 전송하거나 상이한 클라이언트 하드웨어(예컨대, 배향 센서들) 또는 소프트웨어를 이용하라는(예컨대, GPS 기반 서비스들 대신 무선 위치 서비스들 또는 Wi-Fi 포지셔닝을 이용하라는) 명령어들을 전송할 수 있다. 다른 예에서, 맵 서비스는 벡터 기반 맵 이미지 데이터에 대한 클라이언트 디바이스 요청을 분석할 수 있으며, 래스터 기반 맵 데이터가 이미지의 복잡도에 따라 맵 이미지 데이터를 더 우수하게 최적화하는 것으로 판정한다. 다른 맵 서비스들의 실시예들은 클라이언트 디바이스 요청들에 대해 유사한 분석을 수행할 수 있고, 이와 같이, 위의 예들은 제한되는 것으로 의도되지 않는다.
클라이언트 디바이스들(예컨대, 클라이언트 디바이스들(1902a 내지 1902c))의 다양한 실시예들은 상이한 휴대용-다기능 디바이스 유형들에 대해 구현된다. 클라이언트 디바이스들(1902a 내지 1902c)은 다양한 통신 방법들 및 프로토콜들을 통해 맵 서비스(1930)를 이용한다. 일부 실시예들에서, 클라이언트 디바이스들(1902a 내지 1902c)은 맵 서비스(1930)로부터 맵 서비스 데이터를 획득한다. 클라이언트 디바이스들(1902a 내지 1902c)은 맵 서비스 데이터를 요청하거나 수신한다. 이어서, 클라이언트 디바이스들(1902a 내지 1902c)은 맵 서비스 데이터를 프로세싱(예컨대, 데이터를 렌더링 및/또는 디스플레이)하고, 데이터를 디바이스 상의 다른 소프트웨어 또는 하드웨어 모듈에 또는 외부 디바이스 또는 시스템에 전송할 수 있다.
클라이언트 디바이스는, 일부 실시예들에 따르면, 맵들을 렌더링하고 그리고/또는 디스플레이하기 위한 기술들을 구현한다. 이들 맵들은 위에 기술된 맵 타일들과 같은 다양한 형식들로 요청되거나 수신될 수 있다. 클라이언트 디바이스는 2차원 또는 3차원 뷰들 내의 맵을 렌더링할 수 있다. 클라이언트 디바이스의 일부 실시예들은 렌더링된 맵을 디스플레이하고, 사용자, 시스템, 또는 입력을 제공하는 디바이스가 맵에서 가상 카메라를 조작하여, 가상 카메라의 위치, 배향 및 시계에 따라 맵 디스플레이를 변경하도록 허용한다. 다양한 형식들 및 입력 디바이스들은 가상 카메라를 조작하도록 구현된다. 일부 실시예들에서, 소정의 단일 또는 조합 제스처들(예컨대, 터치-앤드-홀드 또는 스와이프)을 통해 터치 입력은 가상 카메라를 조작한다. 다른 실시예들은 디바이스의 물리적 위치의 조작이 가상 카메라를 조작하도록 허용한다. 예를 들어, 클라이언트 디바이스는 그의 현재 위치로부터 기울어져서 가상 카메라가 위로 회전하도록 조작하게 할 수 있다. 다른 예에서, 클라이언트 디바이스는 그의 현재 위치로부터 전방으로 기울여져서 가상 카메라를 전방으로 이동시킬 수 있다. 클라이언트 디바이스에 대한 다른 입력 디바이스들이 구현될 수 있으며, 청각적 입력(예컨대, 구두로 말한 단어들), 물리적 키보드, 마우스, 및/또는 조이스틱을 포함하지만 이들로 제한되지는 않는다.
일부 실시예들은 2차원 맵 뷰들로부터 3차원 맵 뷰들로 전환될 때 가능한 가상 카메라 조작들의 애니메이션을 디스플레이하는 것과 같은, 가상 카메라 조작들에 대한 다양한 시각적 피드백을 제공한다. 일부 실시예들은 또한 입력이 맵 피처 또는 객체(예컨대, 빌딩)를 선택하고 객체를 강조하여, 3차원 공간에 대한 가상 카메라의 인식(perception)을 유지하는 블러 효과(blur effect)를 생성하도록 허용한다.
일부 실시예들에서, 클라이언트 디바이스는 내비게이션 시스템(예컨대, 턴-바이-턴 내비게이션)을 구현한다. 내비게이션 시스템은 사용자에게 디스플레이될 수 있는 방향들 또는 경로 정보를 제공한다. 클라이언트 디바이스의 일부 실시예들은 맵 서비스로부터 방향들 또는 경로 계산을 요청한다. 클라이언트 디바이스는 맵 이미지 데이터 및 경로 데이터를 맵 서비스로부터 수신할 수 있다. 일부 실시예들에서, 클라이언트 디바이스는 글로벌 포지셔닝 위성(GPS) 시스템과 같은 맵 서비스 및/또는 다른 위치 시스템으로부터 수신된 위치 정보 및 경로 정보에 기초하여 실시간 경로 및 방향 정보를 제공하는 턴-바이-턴 내비게이션 시스템을 구현한다. 클라이언트 디바이스는 클라이언트 디바이스의 현재 위치를 반영하는 맵 이미지 데이터를 디스플레이할 수 있으며, 맵 이미지 데이터를 실시간으로 업데이트할 수 있다. 내비게이션 시스템은 소정 경로를 따르는 청각적 또는 시각적 방향들을 제공할 수 있다.
가상 카메라는 일부 실시예들에 따라 내비게이션 맵 데이터를 조작하도록 구현된다. 클라이언트 디바이스들의 일부 실시예들은 디바이스가 가상 카메라 디스플레이 배향을 조절하여 경로 목적지를 향해 바이어싱하도록 허용한다. 일부 실시예들은 또한 가상 카메라가 가상 카메라의 관성 모션을 시뮬레이션하는 내비게이션 턴(navigation turn)하도록 허용한다.
클라이언트 디바이스들은 맵 서비스로부터의 맵 서비스 데이터를 이용하기 위한 다양한 기술들을 구현한다. 일부 실시예들은 2차원 및 3차원 맵 이미지 데이터의 렌더링을 최적화하기 위한 일부 기술들을 구현한다. 일부 실시예들에서, 클라이언트 디바이스는 렌더링 정보를 국부적으로 저장한다. 예를 들어, 클라이언트는 스타일 식별자들을 포함하는 이미지 데이터에 대한 렌더링 방향들을 제공하는 스타일시트를 저장한다. 다른 예에서, 공통 이미지 텍스처들은 맵 서비스로부터 전송되는 맵 이미지 데이터의 양을 감소시키도록 저장될 수 있다. 상이한 실시예들에서의 클라이언트 디바이스들은 2차원 및 3차원 맵 이미지 데이터를 렌더링하기 위한 다양한 모델링 기술들을 구현하며, 이들의 예들은 2차원 빌딩 풋프린트 데이터(footprint data)로부터 3차원 빌딩들을 생성하는 것; 클라이언트 디바이스 통신 환경을 판정하기 위해 2차원 및 3차원 맵 객체들을 모델링하는 것; 맵 레이블들이 소정의 가상 카메라 포지션으로부터 보이는지 여부를 판정하기 위한 모델들을 생성하는 것; 및 맵 이미지 데이터 간의 전환들을 부드럽게 하기 위한 모델들을 생성하는 것을 포함하지만 이들로 제한되지는 않는다. 일부 실시예들에서, 클라이언트 디바이스들은 또한 소정 기술들로 맵 서비스 데이터를 정리하거나 우선순위화한다. 예를 들어, 클라이언트 디바이스는, 소정 임계 값들을 초과하는 경우, 보다 낮은 세밀도의 이미지 데이터가 로딩되고 소정 영역들에 대해 렌더링되는 가상 카메라의 모션 또는 속도를 검출한다. 다른 예들은, 일련의 점들로서 벡터 기반 곡선들을 렌더링하는 것, 맵 서비스와의 불량한 통신의 영역에 대한 맵 이미지 데이터를 사전로딩하는 것, 디스플레이 줌 레벨에 기초하여 텍스처들을 적응시키는 것, 또는 복잡도에 따라 맵 이미지 데이터를 렌더링하는 것을 포함한다.
일부 실시예들에서, 클라이언트 디바이스들은 맵 타일과는 별개로 다양한 데이터 형식들을 이용하여 통신한다. 예를 들어, 일부 클라이언트 디바이스들은 A-GPS(Assisted Global Positioning Satellite)를 구현하며, 무선 리소스 위치 서비스 프로토콜(RRLP), 코드 분할 다중 액세스(CDMA)에 대한 TIA 801, 무선 리소스 제어(RRC) 위치 프로토콜, 또는 LTE 포지셔닝 프로토콜(LPP)을 포함하지만 이들로 제한되지는 않는 위치 서비스 프로토콜들에 부합하는 데이터 형식들을 이용하는 위치 서비스들과 통신한다. 클라이언트 디바이스들은 또한 GPS 신호들을 직접적으로 수신할 수 있다. 실시예들은 또한 맵 서비스로부터의 요청으로 또는 그러한 요청 없이, 클라이언트 디바이스의 기능들 또는 속성들(예컨대, 하드웨어 사양들 또는 운영 체제 버전) 또는 통신 능력들(예컨대, 무선 신호 세기에 의해 판정되는 바와 같은 디바이스 통신 대역폭, 또는 유선 또는 무선 네트워크 유형)을 식별하는 데이터를 전송할 수 있다.
도 19는 맵 서비스(1930) 및 클라이언트 디바이스들(1902a 내지 1902c)에 대한 동작 환경(1900)의 가능한 일 실시예를 도시한다. 일부 실시예들에서, 디바이스들(1902a, 1902b, 1902c)은 하나 이상의 유선 또는 무선 네트워크들(1910)을 통해 통신한다. 예를 들어, 셀룰러 네트워크와 같은 무선 네트워크(1910)는 게이트웨이(1914)의 사용에 의해 인터넷과 같은 광역 네트워크(WAN)(1920)와 통신할 수 있다. 일부 실시예들에서의 게이트웨이(1914)는 GPRS(General Packet Radio Service), 또는 무선 네트워크들이 광역 네트워크(1920)와 같은 다른 네트워크들에 데이터를 전송하도록 허용하는 다른 모바일 데이터 서비스와 같은 패킷 지향성 모바일 데이터 서비스를 제공한다. 마찬가지로, 액세스 디바이스(1912)(예컨대, IEEE 802.11g 무선 액세스 디바이스)는 WAN(1920)으로의 통신 액세스를 제공한다. 디바이스들(1902a, 1902b)은 맵 서비스와 통신할 수 있는 임의의 휴대용 전자 또는 컴퓨팅 디바이스일 수 있다. 디바이스(1902c)는 맵 서비스와 통신할 수 있는 임의의 비휴대용 전자 또는 컴퓨팅 디바이스일 수 있다.
일부 실시예들에서, 음성 및 데이터 둘 모두의 통신들이 무선 네트워크(1910)(및 액세스 디바이스(1912)를 통해 설정된다. 예를 들어, 디바이스(1902a)는 (예컨대, VoIP(voice over Internet Protocol) 프로토콜들을 이용하여) 전화 호출들을 발하고 수신할 수 있으며, (예컨대, SMTP(Simple Mail Transfer Protocol) 또는 POP3(Post Office Protocol 3)을 이용하여) 이메일 메시지들을 전송 및 수신할 수 있고, (예컨대, TCP/IP(Transmission Control Protocol/Internet Protocol) 또는 UDP(User Datagram Protocol)를 이용하여) 무선 네트워크(1910), 게이트웨이(1914), 및 WAN(1920)을 통해 웹 페이지들, 사진들, 및 비디오들과 같은 전자 문서들 및/또는 스트림들을 검색할 수 있다. 마찬가지로, 일부 구현예들에서, 디바이스들(1902b, 1902c)은 전화 호출들을 발하고 수신할 수 있으며, 이메일 메시지들을 전송 및 수신할 수 있고, 액세스 디바이스(1912) 및 WAN(1920)을 통해 전자 문서들을 검색할 수 있다. 다양한 실시예들에서, 예시된 클라이언트 디바이스들 중 임의의 것이 SSL(Secure Sockets Layer) 프로토콜 또는 TLS(Transport Layer Security) 프로토콜과 같은 하나 이상의 보안 프로토콜들에 따라 설정되는 지속적 접속을 이용하여 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)와 통신할 수 있다.
디바이스들(1902a, 1902b)은 또한 다른 수단들에 의해 통신들을 설정할 수 있다. 예를 들어, 무선 디바이스(1902a)는 무선 네트워크(1910)를 통해 다른 무선 디바이스들(예컨대, 다른 디바이스들(1902b), 셀룰러 전화들 등)과 통신할 수 있다. 마찬가지로, 디바이스들(1902a, 1902b)은 미국 워싱턴주 커크랜드 소재의 블루투스 스페셜 인터레스트 그룹, 인크.(Bluetooth Special Interest Group, Inc.)로부터의 블루투스(등록상표) 통신과 같은 하나 이상의 통신 서브시스템들의 사용에 의해 피어-투-피어(peer-to-peer) 통신들(1940)(예컨대, 개인 전용 통신망)을 설정할 수 있다. 디바이스(1902c)는 또한 디바이스들(1902a 또는 1902b)과의 피어-투-피어 통신(도시되지 않음)을 설정할 수 있다. 다른 통신 프로토콜들 및 토폴로지(topology)들이 또한 구현될 수 있다. 디바이스들(1902a, 1902b)은 또한 GPS 위성들(1960)로부터 GPS 신호들을 수신할 수 있다.
디바이스들(1902a, 1902b, 1902c)은 하나 이상의 유선 및/또는 무선 네트워크들(1910 또는 1912)을 통해 맵 서비스(1930)와 통신할 수 있다. 예를 들어, 맵 서비스(1930)는 렌더링 디바이스들(1902a, 1902b, 1902c)에 맵 서비스 데이터를 제공할 수 있다. 맵 서비스(1930)는 또한 다른 서비스들(1950)과 통신하여 맵 서비스들을 구현하기 위한 데이터를 획득할 수 있다. 맵 서비스(1930) 및 다른 서비스들(1950)은 또한 GPS 위성들(1960)로부터 GPS 신호들을 수신할 수 있다.
다양한 실시예들에서, 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)는 클라이언트 디바이스들 중 임의의 것으로부터의 검색 요청들을 프로세싱하도록 구성된다. 검색 요청들은 업체들, 어드레스들, 거주지 위치들, 관심 지점들, 또는 이들의 소정 조합에 대한 쿼리들을 포함할 수 있지만 이들로 제한되지는 않는다. 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)는 어드레스 바 또는 다른 텍스트 입력 필드(약어들 및/또는 다른 약기법을 포함함) 내에 입력되는 위치, 현재 맵 뷰(예컨대, 사용자는 다기능 디바이스 상의 하나의 위치를 보는 동안 다른 위치에 있을 수 있음), 사용자의 현재 위치(예컨대, 현재 맵 뷰가 검색 결과들을 포함하지 않은 경우들), 및 (존재한다면) 현재 경로를 포함하지만 이들로 제한되지는 않는 다양한 파라미터들에 관련된 결과들을 반환하도록 구성될 수 있다. 다양한 실시예들에서, 이들 파라미터들은 상이한 우선순위 가중치들에 기초하여 검색 결과들(및/또는 검색 결과들의 정렬)의 구성에 영향을 미칠 수 있다. 다양한 실시예들에서, 반환되는 검색 결과들은 검색 결과(예컨대, 특정 관심 지점)가 요청된 횟수, 검색 결과와 관련된 품질의 측정(예컨대, 최고의 사용자 또는 편집 검토 등급), 및/또는 검색 결과들에 대한 검토의 양(예컨대, 검색 결과가 검토 또는 평가된 횟수)을 포함하지만 이들로 제한되지는 않는 특정 기준들에 기초하여 선택된 결과들의 서브세트일 수 있다.
다양한 실시예들에서, 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)는 맵핑 애플리케이션 내에서와 같이 클라이언트 디바이스 상에 디스플레이되는 자동 완성 검색 결과들을 제공하도록 구성된다. 예를 들어, 자동 완성 검색 결과들은 사용자가 다기능 디바이스 상에 하나 이상의 검색 키워드들을 입력할 때 스크린의 일부를 차지할 수 있다. 일부 경우들에 있어서, 이러한 특징은 사용자 시간을 절약할 수 있는데, 이는 사용자가 전체 검색 쿼리를 입력하기 전에 원하는 검색 결과가 디스플레이될 수 있기 때문이다. 다양한 실시예들에서, 자동 완성 검색 결과들은 클라이언트 디바이스 상에서 클라이언트에 의해 발견된 검색 결과들(예컨대, 북마크들 또는 연락처들), 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)에 의해 (예컨대, 인터넷으로부터) 어느 곳에서든 발견되는 검색 결과들, 및/또는 이들의 소정 조합일 수 있다. 커맨드들을 갖는 경우와 같이, 검색 쿼리들 중 임의의 것은 음성을 통해 또는 타이핑을 통해 사용자에 의해 입력될 수 있다. 다기능 디바이스는 본 명세서에 기술된 맵 디스플레이 중 임의의 것 내에 그래픽으로 검색 결과들을 디스플레이하도록 구성될 수 있다. 예를 들어, 핀 또는 다른 그래픽 표시자는 관심 지점들로서 검색 결과들의 위치들을 규정할 수 있다. 다양한 실시예들에서, 이들 관심 지점들 중 하나의 사용자 선택(예컨대, 탭과 같은 사용자 선택)에 응답하여, 다기능 디바이스는 평가 등급들, 검토 또는 검토 정보(review snippet), 동작 시간, 저장 상태(예컨대, 업무용 개방, 영구 폐쇄 등), 및/또는 관심 지점에 대한 상점 앞의 이미지들을 포함하지만 이들로 제한되지는 않는 선택된 관심 지점에 관한 추가 정보를 디스플레이하도록 구성된다. 다양한 실시예들에서, 이러한 정보 중 임의의 것은 관심 지점의 사용자 선택에 응답하여 디스플레이되는 그래픽 정보 카드 상에 디스플레이될 수 있다.
다양한 실시예들에서, 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)는 하나 이상의 피드백 메커니즘들을 제공하여 클라이언트 디바이스들(1902a 내지 1902c)로부터 피드백을 수신한다. 예를 들어, 클라이언트 디바이스들은 검색 결과들에 대한 피드백(예컨대, 평가 등급들, 검토, 일시적 또는 영구적 업무 폐쇄, 오류들 등)을 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)에 제공할 수 있으며; 이러한 피드백은 미래에 보다 정확하거나 보다 최신인 검색 결과들을 제공하기 위해 관심 지점들에 관한 정보를 업데이트하는 데 이용될 수 있다. 일부 실시예들에서, 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)는 클라이언트 디바이스에 테스팅 정보(예컨대, A/B 테스트)를 제공하여 어떤 검색 결과들이 가장 좋은지 판정할 수 있다. 예를 들어, 랜덤한 간격들로, 클라이언트 디바이스는 2개의 검색 결과들을 수신하고 사용자에게 제공할 수 있으며, 사용자가 최상의 결과를 나타내도록 허용할 수 있다. 클라이언트 디바이스는 결과들을 개선하기 위해 맵 서비스(1930) 및/또는 다른 서비스(들)(1950)에 테스트 결과들을 보고하여, 기본 제어 샘플이 다양한 단일 가변 테스트 샘플에 비교되는 A/B 테스트 기술과 같은 선택된 테스팅 기술에 기초하여 미래의 검색 결과들을 개선하도록 할 수 있다.
본 발명은 다수의 특정 상세 사항들을 참조하여 설명되었지만, 당업자는 본 발명이 본 발명의 사상으로부터 벗어남이 없이 다른 특정 형태들로 구체화될 수 있다는 것을 인식할 것이다. 또한, 도 9는 프로세스를 개념적으로 도시한다. 이러한 프로세스의 특정 동작들은 도시되고 기술된 정확한 순서로 수행되지 않을 수 있다. 특정 동작들은 하나의 연속적인 시리즈의 동작들로 수행되지 않을 수 있으며, 상이한 특정 동작들이 상이한 실시예들에서 수행될 수 있다. 더욱이, 프로세스는 여러 서브프로세스들을 이용하여 또는 보다 큰 매크로 프로세스의 일부로서 구현될 수 있다. 따라서, 당업자는 본 발명이 상기 예시적인 상세사항들에 의해 제한되는 것이 아니라, 보다 정확히 말해, 첨부된 특허청구범위에 의해 정의된다는 것을 이해할 것이다.

Claims (33)

  1. 디바이스의 적어도 하나의 프로세싱 유닛에 의해 실행가능한 맵핑 애플리케이션에 대해, 3차원(3D) 맵의 뷰들을 생성하는 방법으로서,
    3D 맵의 일부분에서 복수의 지리적 객체(geographic objects)를 정의하는 단계 - 상기 복수의 지리적 객체는 상기 3D 맵의 상기 일부분에 대응하는 세계 중 일부분의 카메라 캡처 이미지(camera captured image: CCI)들의 세트에 의해 텍스처화되는 지리적 객체들의 세트를 포함함 -; 및
    입력을 수신하면, 상기 정의된 복수의 지리적 객체에 기초하여 상기 3D 맵의 상기 일부분의 뷰를 렌더링(rendering)하는 단계 - 상기 렌더링하는 것은 적어도 제2 지리적 객체에 대하여 이동하는 것처럼 보이도록 적어도 제1 지리적 객체를 애니메이션화하는 것을 포함하고, 상기 제1 지리적 객체는 입력의 상이한 타입들에 기초하여 상이하게 이동하는 것처럼 보임 -
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 복수의 지리적 객체에 대한 3D 맵 데이터는 상기 3D 맵의 상기 일부분 내의 상기 복수의 지리적 객체에 대한 폴리곤 데이터(polygon data)를 포함하는 벡터 타일(vector tile)들의 세트를 포함하는, 방법.
  3. 삭제
  4. 제1항에 있어서, 상기 3D 맵의 상기 일부분 내의 상기 제1 지리적 객체는, 상기 제2 지리적 객체에 대하여 이동한 것으로 보이도록 상기 제1 지리적 객체에 셰이더(shader)를 적용함으로써 애니메이션화되는, 방법.
  5. 제4항에 있어서,
    상기 지리적 객체들의 세트는 제1 세트의 지리적 객체들이고, 상기 셰이더는 제2 세트의 지리적 객체들에서 상기 제1 지리적 객체의 색상 속성들을 수정하기 위한 텍스처 셰이더인, 방법.
  6. 제5항에 있어서,
    상기 제2 세트의 지리적 객체들은 비-CCI 텍스처화 지리적 객체들을 포함하는, 방법.
  7. 제5항에 있어서, 상기 제2 세트의 지리적 객체들에서 상기 제1 지리적 객체는 수역(body of water)을 나타내는, 방법.
  8. 삭제
  9. 제1항에 있어서, 상기 입력은 상기 디바이스의 모션 센서, 터치 센서 및 오디오 센서 중 하나를 통해 수신되는, 방법.
  10. 제1항에 있어서, 상기 입력의 상이한 타입들은, 터치 입력, 모션 입력, 및 오디오 입력을 포함하는, 방법.
  11. 3차원(3D) 맵의 뷰들을 생성하는 맵 프로그램을 저장하는 기계-판독가능 매체로서, 상기 프로그램은 디바이스의 적어도 하나의 프로세싱 유닛에 의해 실행가능하며, 상기 맵 프로그램은,
    3D 맵의 일부분에서 복수의 지리적 객체를 정의하고 - 상기 복수의 지리적 객체는 상기 3D 맵의 상기 일부분에 대응하는 세계 중 일부분의 카메라 캡처 이미지(camera captured image: CCI)들의 세트에 의해 텍스처화되는 지리적 객체들의 세트를 포함함 -, 및
    입력을 수신하면, 상기 정의된 복수의 지리적 객체에 기초하여 상기 3D 맵의 상기 일부분의 뷰를 렌더링 - 상기 렌더링하는 것은 적어도 제2 지리적 객체에 대하여 이동한 것처럼 보이도록 적어도 제1 지리적 객체를 애니메이션화하는 것을 포함하고, 상기 제1 지리적 객체는 입력의 상이한 타입들에 기초하여 상이하게 이동하는 것처럼 보임 -
    하기 위한 명령어들의 세트를 포함하는, 기계-판독가능 매체.
  12. 제11항에 있어서,
    상기 제1 지리적 객체는, 수신되는 입력의 타입에 기초하여 상기 제1 지리적 객체에 상이한 셰이터를 적용함으로써 애니메이션화되는, 기계-판독가능 매체.
  13. 제11항에 있어서,
    상기 제1 지리적 객체는 상기 복수의 지리적 객체에서 비-CCI 텍스쳐화 지리적 객체인, 기계-판독가능 매체.
  14. 제13항에 있어서,
    상기 제2 지리적 객체는 상기 지리적 객체들의 세트에서 CCI-텍스처화 지리적 객체인, 기계-판독가능 매체.
  15. 삭제
  16. 제11항에 있어서,
    상기 지리적 객체들의 세트는 제1 세트의 지리적 객체들이고, 상기 제1 지리적 객체는 제2 세트의 지리적 객체들에 속하며, 상기 제2 세트의 지리적 객체들은, 상기 제2 세트의 지리적 객체들에 셰이더를 적용함으로써 애니메이션화되는, 기계-판독가능 매체.
  17. 제16항에 있어서,
    상기 셰이더는 상기 제2 세트의 지리적 객체들을 나타내는 메시들의 세트에서 폴리곤들이 표면 법선들을 무시함으로써 상기 제2 세트의 지리적 객체들을 애니메이션화하는, 기계-판독가능 매체.
  18. 제17항에 있어서, 상기 제1 세트의 지리적 객체들은 빌딩들의 세트를 포함하고, 상기 제2 세트의 지리적 객체들은 수역들의 세트를 포함하는, 기계-판독가능 매체.
  19. 삭제
  20. 전자 디바이스로서,
    프로세싱 유닛들의 세트;
    터치 감지 스크린;
    터치 입력 인터페이스; 및
    3D 맵의 뷰들을 생성하는 네비게이션 애플리케이션 및 맵을 저장하는 기계-판독가능 매체
    를 포함하고, 상기 애플리케이션은 상기 프로세싱 유닛들 중 적어도 하나에 의해 실행가능하며, 상기 맵 및 상기 네비게이션 애플리케이션은,
    3D 맵의 일부분에서 복수의 지리적 객체를 정의하고 - 상기 복수의 지리적 객체는 상기 3D 맵의 상기 일부분에 대응하는 세계 중 일부분의 카메라 캡처 이미지(camera captured image: CCI)들의 세트에 의해 텍스처화되는 지리적 객체들의 세트를 포함함 -, 및
    입력을 수신하면, 상기 정의된 복수의 지리적 객체에 기초하여 상기 3D 맵의 상기 일부분의 뷰를 렌더링 - 상기 렌더링하는 것은 적어도 제2 지리적 객체에 대하여 이동하도록 적어도 제1 지리적 객체를 애니메이션화하는 것을 포함하고, 상기 제1 지리적 객체는 입력의 상이한 타입들에 기초하여 상이하게 이동함 -
    하기 위한 명령어들의 세트를 포함하는, 전자 디바이스.
  21. 제20항에 있어서,
    상기 제1 및 제2 지리적 객체들은 상기 지리적 객체들의 세트에서 CCI 텍스처화 지리적 객체들인, 전자 디바이스.
  22. 제20항에 있어서,
    상기 제1 지리적 객체는 상기 지리적 객체들의 세트에서 CCI 텍스처화 지리적 객체이고, 상기 제2 지리적 객체는 상기 복수의 지리적 객체들에서 비-CCI 텍스처화 지리적 객체인, 전자 디바이스.
  23. 제20항에 있어서,
    상기 제1 지리적 객체는 나무를 나타내는, 전자 디바이스.
  24. 제20항에 있어서,
    상기 제1 지리적 객체는 렌더링을 위한 객체들을 정의하기 위해 사용되는 메시에서의 복수의 정점(vertex)들에 대한 참조에 의해 정의되는, 전자 디바이스.
  25. 제24항에 있어서,
    상기 제1 지리적 객체를 애니메이션화하는 것은, 상기 제1 지리적 객체를 정의하기 위해 사용되는 상기 정점들 중 하나의 세트를 이동시키면서 상기 제1 지리적 객체를 정의하기 위해 사용되는 정점들 중 또 다른 세트는 이동시키지 않는 것에 의해 상기 제1 지리적 객체를 애니메이션화하는 것을 포함하는, 전자 디바이스.
  26. 디바이스의 적어도 하나의 프로세싱 유닛에 의해 실행가능한 맵핑 애플리케이션에 대하여, 3D 맵의 뷰들을 생성하는 방법으로서,
    3D 맵의 일부분에서 복수의 지리적 객체를 정의하는 단계 - 상기 복수의 지리적 객체는 상기 3D 맵의 상기 일부분에 대응하는 세계 중 일부분의 카메라 캡처 이미지(camera captured image: CCI)들의 세트에 의해 텍스처화되는 지리적 객체들의 세트를 포함함 -; 및
    입력을 수신하면, 상기 정의된 복수의 지리적 객체에 기초하여 상기 3D 맵의 상기 일부분의 뷰를 렌더링하는 단계 - 상기 렌더링하는 것은 적어도 제2 지리적 객체에 대하여 이동하도록 적어도 제1 지리적 객체를 애니메이션화하는 것을 포함하고, 상기 제1 지리적 객체는 입력의 상이한 타입들에 기초하여 상이하게 이동함 -
    를 포함하는 방법.
  27. 제26항에 있어서,
    상기 제1 지리적 객체는, 렌더링을 위해 객체들을 정의하기 위해 사용되는 메시에서 복수의 정점들에 대한 참조에 의해 정의되는, 방법.
  28. 제27항에 있어서,
    상기 제1 지리적 객체를 애니메이션화하는 것은, 상기 제1 지리적 객체를 정의하기 위해 사용되는 상기 정점들 중 하나의 세트를 이동시키면서 상기 제1 지리적 객체를 정의하기 위해 사용되는 정점들 중 또 다른 세트는 이동시키지 않는 것에 의해 상기 제1 지리적 객체를 애니메이션화하는 것을 포함하는, 방법.
  29. 제26항에 있어서,
    상기 입력은 상기 디바이스의 모션 센서, 터치 센서 및 오디오 센서 중 적어도 하나를 통해 수신되는, 방법.
  30. 제26항에 있어서,
    상기 입력의 상이한 타입들은, 터치 입력, 모션 입력, 및 오디오 입력을 포함하는, 방법.
  31. 삭제
  32. 삭제
  33. 삭제
KR1020147033055A 2012-06-06 2013-05-31 비정적 3d 맵 뷰들 KR101707095B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261656032P 2012-06-06 2012-06-06
US201261656043P 2012-06-06 2012-06-06
US61/656,043 2012-06-06
US61/656,032 2012-06-06
US13/783,201 2013-03-01
US13/783,201 US9147286B2 (en) 2012-06-06 2013-03-01 Non-static 3D map views
PCT/US2013/043803 WO2013184534A2 (en) 2012-06-06 2013-05-31 Non-static 3d map views

Publications (2)

Publication Number Publication Date
KR20150007324A KR20150007324A (ko) 2015-01-20
KR101707095B1 true KR101707095B1 (ko) 2017-02-15

Family

ID=48833044

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147033055A KR101707095B1 (ko) 2012-06-06 2013-05-31 비정적 3d 맵 뷰들

Country Status (5)

Country Link
US (2) US9147286B2 (ko)
EP (1) EP2859533A2 (ko)
KR (1) KR101707095B1 (ko)
CN (1) CN104335248B (ko)
WO (1) WO2013184534A2 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9202311B2 (en) * 2012-02-10 2015-12-01 Google Inc. Accessing map tiles
US9123178B2 (en) * 2012-02-10 2015-09-01 Google Inc. Updating map tiles
US9886794B2 (en) 2012-06-05 2018-02-06 Apple Inc. Problem reporting in maps
US9418672B2 (en) 2012-06-05 2016-08-16 Apple Inc. Navigation application with adaptive instruction text
US9482296B2 (en) 2012-06-05 2016-11-01 Apple Inc. Rendering road signs during navigation
US20130321400A1 (en) 2012-06-05 2013-12-05 Apple Inc. 3D Map Views for 3D Maps
US10156455B2 (en) 2012-06-05 2018-12-18 Apple Inc. Context-aware voice guidance
US8965696B2 (en) 2012-06-05 2015-02-24 Apple Inc. Providing navigation instructions while operating navigation application in background
US9147286B2 (en) 2012-06-06 2015-09-29 Apple Inc. Non-static 3D map views
US10082949B2 (en) * 2013-01-17 2018-09-25 Samsung Electronics Co., Ltd. Apparatus and method for application peel
CN103116444B (zh) * 2013-02-07 2016-05-11 腾讯科技(深圳)有限公司 电子地图控制方法及电子地图装置
US9341478B1 (en) * 2013-02-26 2016-05-17 Rockwell Collins, Inc. Surface information display inhibiting system, device, and method
US20150198738A1 (en) * 2013-08-20 2015-07-16 Raghav Gupta Virtual meterologist based on weather forecasting system and method
US20150285952A1 (en) * 2013-08-20 2015-10-08 GeoTerrestrial, Inc. dba WeatherSphere Weather forecasting system and method
US10027753B2 (en) * 2013-10-15 2018-07-17 Microsoft Technology Licensing, Llc Cloud service hosting on client device
RU2014117561A (ru) * 2014-04-30 2015-11-10 Общество С Ограниченной Ответственностью "Яндекс" Система (варианты ) и способ ( варианты ) отображения анимации карты
CN105635707A (zh) * 2014-11-06 2016-06-01 福州瑞芯微电子股份有限公司 一种图像生成方法和装置
US10373343B1 (en) * 2015-05-28 2019-08-06 Certainteed Corporation System for visualization of a building material
GB2546811B (en) * 2016-02-01 2020-04-15 Imagination Tech Ltd Frustum rendering
CN106649453A (zh) * 2016-09-22 2017-05-10 上海市数字证书认证中心有限公司 一种企业信用查询与展示的方法及系统
CN109937414B (zh) * 2016-11-04 2022-12-13 鹰图公司 通过web地图图块服务来确保特征的更新显示的方法和介质
US10643373B2 (en) * 2017-06-19 2020-05-05 Apple Inc. Augmented reality interface for interacting with displayed maps
KR102053659B1 (ko) 2017-09-13 2019-12-09 (주)다비오 기계학습과 이미지 프로세싱을 이용한 지도 제작 장치
US10777007B2 (en) 2017-09-29 2020-09-15 Apple Inc. Cooperative augmented reality map interface
EP3547165B1 (en) * 2018-03-26 2023-06-07 Rosemount Aerospace Limited Image tile request service
US10489954B1 (en) * 2018-05-23 2019-11-26 Mapbox, Inc. Efficient duplicate label handling
US11195324B1 (en) 2018-08-14 2021-12-07 Certainteed Llc Systems and methods for visualization of building structures
CN110909089A (zh) * 2018-09-17 2020-03-24 上海擎感智能科技有限公司 一种地图显示方法、装置、电子终端及介质
US11120619B2 (en) * 2018-11-12 2021-09-14 Nintendo Co., Ltd. Information processing apparatus, non-transitory computer-readable storage medium storing information processing program, information processing system, and information processing method
CN111524446B (zh) * 2019-02-01 2021-11-12 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及可读存储介质
US11048376B2 (en) * 2019-05-15 2021-06-29 Microsoft Technology Licensing, Llc Text editing system for 3D environment
US11287947B2 (en) 2019-05-15 2022-03-29 Microsoft Technology Licensing, Llc Contextual input in a three-dimensional environment
US11164395B2 (en) 2019-05-15 2021-11-02 Microsoft Technology Licensing, Llc Structure switching in a three-dimensional environment
US11042961B2 (en) * 2019-06-17 2021-06-22 Risk Management Solutions, Inc. Spatial processing for map geometry simplification
CN111724488B (zh) * 2019-06-25 2022-09-09 腾讯科技(深圳)有限公司 地图场景绘制方法、装置、可读存储介质和计算机设备
CN113134235A (zh) * 2020-01-17 2021-07-20 腾讯科技(深圳)有限公司 地图元素添加方法、装置、终端及存储介质
TWI764635B (zh) * 2021-03-22 2022-05-11 江俊昇 具被遮蔽區域地面模型建立之方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080198158A1 (en) * 2007-02-16 2008-08-21 Hitachi, Ltd. 3D map display system, 3D map display method and display program

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69130549T2 (de) 1990-06-11 1999-05-27 Hitachi Ltd Vorrichtung zur Erzeugung eines Objektbewegungsweges
JP3745802B2 (ja) * 1995-10-13 2006-02-15 株式会社日立製作所 画像生成/表示装置
JPH09292830A (ja) 1996-04-25 1997-11-11 Hitachi Ltd 電子地図表示方法及び電子地図表示装置
KR100338573B1 (ko) 1997-05-09 2002-05-30 하기와라 가즈토시 높이 데이터를 효율적으로 갖고 사용하는 지도 데이터베이스 장치, 지도표시장치 및 기록매체
DE69836383T2 (de) * 1997-08-29 2007-10-11 Kabushiki Kaisha Sega Doing Business As Sega Corp. Bildverarbeitungssystem und -verfahren
US6496189B1 (en) 1997-09-29 2002-12-17 Skyline Software Systems Ltd. Remote landscape display and pilot training
US6163269A (en) 1998-05-05 2000-12-19 Magellan Dis, Inc. Navigation system with anti-alias map display
US20030158786A1 (en) 1999-02-26 2003-08-21 Skyline Software Systems, Inc. Sending three-dimensional images over a network
AU2002343688A1 (en) * 2001-11-15 2003-06-10 Nintendo Software Technology Corporation System and method of simulating and imaging realistic water surface
US7663628B2 (en) 2002-01-22 2010-02-16 Gizmoz Israel 2002 Ltd. Apparatus and method for efficient animation of believable speaking 3D characters in real time
JP2004271901A (ja) 2003-03-07 2004-09-30 Matsushita Electric Ind Co Ltd 地図表示装置
JP4138574B2 (ja) 2003-05-21 2008-08-27 株式会社日立製作所 カーナビゲーション装置
CN1714275B (zh) 2003-07-16 2012-02-22 哈曼贝克自动系统股份有限公司 导航系统及在导航系统中确定路线的方法
US7373244B2 (en) 2004-04-20 2008-05-13 Keith Kreft Information mapping approaches
US20080016145A1 (en) 2004-09-07 2008-01-17 Yutaka Takase 3D Map Distribution Server Device, Client Terminal Device, and 3D Map Distribution System
JP4319156B2 (ja) * 2005-03-02 2009-08-26 任天堂株式会社 情報処理プログラムおよび情報処理装置
US7765055B2 (en) 2005-04-18 2010-07-27 Traffic.Com, Inc. Data-driven traffic views with the view based on a user-selected object of interest
US7746343B1 (en) 2005-06-27 2010-06-29 Google Inc. Streaming and interactive visualization of filled polygon data in a geographic information system
JP4647514B2 (ja) 2006-02-17 2011-03-09 株式会社日立ソリューションズ 航空画像処理装置および航空画像処理方法
KR100821503B1 (ko) 2006-11-08 2008-04-14 팅크웨어(주) 차량 항법 시스템에서의 동적 디스플레이 모드 변경 방법및 그 장치
DE102007030226A1 (de) 2007-06-29 2009-01-08 Robert Bosch Gmbh Kameragestütztes Navigationssystem und Verfahren zu seinem Betrieb
CN101109648A (zh) * 2007-08-22 2008-01-23 广东瑞图万方科技有限公司 导航电子地图生成方法
US8411087B2 (en) * 2008-02-28 2013-04-02 Microsoft Corporation Non-linear beam tracing for computer graphics
US8237791B2 (en) * 2008-03-19 2012-08-07 Microsoft Corporation Visualizing camera feeds on a map
KR101085390B1 (ko) 2008-04-30 2011-11-21 주식회사 코아로직 3d 네비게이션을 위한 영상표현 방법, 장치 및 그 장치를포함한 모바일 장치
US8311287B2 (en) 2008-09-25 2012-11-13 Microsoft Corporation Validation and correction of map data using oblique images
US8493408B2 (en) 2008-11-19 2013-07-23 Apple Inc. Techniques for manipulating panoramas
US8335675B1 (en) * 2009-02-27 2012-12-18 Adobe Systems Incorporated Realistic real-time simulation of natural media paints
US8933960B2 (en) * 2009-08-14 2015-01-13 Apple Inc. Image alteration techniques
US8566020B2 (en) 2009-12-01 2013-10-22 Nokia Corporation Method and apparatus for transforming three-dimensional map objects to present navigation information
US9466127B2 (en) * 2010-09-30 2016-10-11 Apple Inc. Image alteration techniques
US8970592B1 (en) * 2011-04-19 2015-03-03 Lucasfilm Entertainment Company LLC Simulating an arbitrary number of particles
US8675049B2 (en) 2011-06-09 2014-03-18 Microsoft Corporation Navigation model to render centered objects using images
JP5724110B2 (ja) * 2011-07-07 2015-05-27 株式会社日立製作所 経路作成システム、経路作成方法及びプログラム
US8890863B1 (en) * 2011-08-12 2014-11-18 Google Inc. Automatic method for photo texturing geolocated 3-D models from geolocated imagery
US8774470B1 (en) * 2012-04-03 2014-07-08 Google Inc. Processing a satellite image of a region to determine a terrain boundary included therein
US9147286B2 (en) * 2012-06-06 2015-09-29 Apple Inc. Non-static 3D map views
KR102109054B1 (ko) * 2013-04-26 2020-05-28 삼성전자주식회사 애니메이션 효과를 제공하는 사용자 단말 장치 및 그 디스플레이 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080198158A1 (en) * 2007-02-16 2008-08-21 Hitachi, Ltd. 3D map display system, 3D map display method and display program

Also Published As

Publication number Publication date
CN104335248A (zh) 2015-02-04
WO2013184534A3 (en) 2014-01-30
AU2013271880A1 (en) 2014-12-18
WO2013184534A4 (en) 2014-03-13
WO2013184534A2 (en) 2013-12-12
EP2859533A2 (en) 2015-04-15
CN104335248B (zh) 2018-01-12
US9147286B2 (en) 2015-09-29
US20160055669A1 (en) 2016-02-25
KR20150007324A (ko) 2015-01-20
US20130328871A1 (en) 2013-12-12

Similar Documents

Publication Publication Date Title
KR101707095B1 (ko) 비정적 3d 맵 뷰들
US11410382B2 (en) Representing traffic along a route
AU2018264015B2 (en) Virtual camera for 3D maps
US9418466B2 (en) Geospatial representation of data-less map areas
US10318104B2 (en) Navigation application with adaptive instruction text
US10019850B2 (en) Adjusting location indicator in 3D maps
US9111380B2 (en) Rendering maps
AU2013272077B2 (en) Navigation application
US9235906B2 (en) Scalable processing for associating geometries with map tiles
US20240161401A1 (en) Representing Traffic Along a Route
AU2013271880B2 (en) Non-static 3D map views

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