KR101626037B1 - 가상 표면들을 사용하는 패닝 - Google Patents

가상 표면들을 사용하는 패닝 Download PDF

Info

Publication number
KR101626037B1
KR101626037B1 KR1020107025343A KR20107025343A KR101626037B1 KR 101626037 B1 KR101626037 B1 KR 101626037B1 KR 1020107025343 A KR1020107025343 A KR 1020107025343A KR 20107025343 A KR20107025343 A KR 20107025343A KR 101626037 B1 KR101626037 B1 KR 101626037B1
Authority
KR
South Korea
Prior art keywords
point
dimensional model
panning
virtual camera
virtual
Prior art date
Application number
KR1020107025343A
Other languages
English (en)
Other versions
KR20110002093A (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 KR20110002093A publication Critical patent/KR20110002093A/ko
Application granted granted Critical
Publication of KR101626037B1 publication Critical patent/KR101626037B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 3차원 환경에서 가상 카메라를 패닝하는 것에 관한 것이다. 본 발명의 일 실시예에서, 컴퓨터-구현 방법은 3차원 환경에서 가상 카메라를 패닝한다. 방법 실시예에서, 3차원 환경에서의 3차원 모델 상의 제1 지점이 결정된다. 3차원 환경에서의 제1 지점, 3차원 모델, 및 가상 카메라의 위치에 따라, 가상 표면(virtual surface)이 결정된다. 가상 표면 상의 제2 지점이 결정된다. 최종적으로, 3차원 모델의 위치가 제1 지점과 제2 지점에 따라 변경된다.

Description

가상 표면들을 사용하는 패닝{PANNING USING VIRTUAL SURFACES}
본 발명은 3차원 환경에서 가상 카메라를 움직이는 것에 관한 것이다.
3차원 데이터를 디스플레이하기 위해 3차원 환경을 탐색하는 시스템들이 존재한다. 3차원 환경은 가상 카메라를 포함한다. 가상 카메라는 사용자에게 어떤 3차원 데이터를 디스플레이해야 하는지를 정의하는 퍼스펙티브(perspective)를 갖는다. 사용자는 가상 카메라를 패닝하는 데이터를 입력할 수 있다. 가상 카메라를 패닝하여, 사용자는 3차원 환경을 탐색한다.
3차원 환경에서 탐색하기 위하여 가상 카메라를 패닝하는 한 유형의 시스템이 지리 정보 시스템(geographic information system)이다. 지리 정보 시스템은 지구의 3차원 모델을 저장, 검색, 조작, 및 디스플레이하는 시스템이다. 3차원 모델은 산, 계곡 및 협곡과 같은 지형에 매핑되는 위성 이미지 텍스처(texture)를 포함할 수 있다. 게다가, 3차원 모델은 건물들 및 기타 3차원 특징들을 포함할 수 있다.
가상 카메라의 퍼스펙티브가 지구에 접하게(tangential) 됨에 따라, 패닝이 점점 더 불안정해진다. 사용자 입력에 대한 작은 변화가 가상 카메라를 상당한 거리만큼 패닝시킨다. 이것은 사용자의 방향 감각을 잃게 할 수 있다.
3차원 환경에서 보다 안정적으로 패닝하기 위한 시스템들과 방법들이 필요하다.
본 발명은 3차원 환경에서 패닝하는 것에 관한 것이다. 본 발명의 일 실시예에서, 컴퓨터-구현 방법은 3차원 환경에서 가상 카메라를 패닝한다. 방법 실시예에서, 3차원 환경에서의 3차원 모델 상의 제1 지점이 결정된다. 3차원 환경에서의 제1 지점, 3차원 모델, 및 가상 카메라의 위치에 따라, 가상 표면(virtual surface)이 결정된다. 가상 표면 상의 제2 지점이 결정된다. 최종적으로, 3차원 모델의 위치가 제1 지점과 제2 지점에 따라 변경된다.
제2 실시예에서, 시스템은 3차원 환경에서 가상 카메라를 패닝한다. 시스템은 3차원 환경에서의 3차원 모델 상의 제1 지점을 결정하는 패닝 모듈을 포함하고 있다. 패닝 모듈은 또한 가상 표면 상의 제2 지점을 결정한다. 가상 표면 계산기 모듈은 3차원 환경에서의 제1 지점, 3차원 모델, 및 가상 카메라의 위치에 따라 가상 표면을 결정한다. 회전자(rotator) 모듈은 제1 지점 및 제2 지점에 따라 3차원 모델의 위치를 변경한다.
제3 실시예에서, 컴퓨터-구현 방법은 지구의 3차원 모델을 포함하는 3차원 환경에서 가상 카메라를 패닝한다. 이 방법은, 가상 카메라의 퍼스펙티브로부터 3차원 모델을 디스플레이 영역에 디스플레이하는 단계, 사용자가 커서를 이용하여 디스플레이 영역 상의 제1 지점을 선택할 수 있게 하는 단계, 및 제1 지점에 따라 제1 스크린 광선(screen ray)을 결정하는 단계를 포함한다. 이 방법은, 사용자가 디스플레이 영역 내의 제2 지점으로 커서를 이동시킬 수 있게 하는 단계, 제2 지점에 따라 제2 스크린 광선을 결정하는 단계, 및 패닝 속도에 의해 정의된 레이트로 커서를 따라 가도록 3차원 모델의 회전 지점(예를 들어, 중심)을 통과하는 축을 중심으로 3차원 모델을 회전시키는 단계를 더 포함한다. 패닝 속도는 제1 스크린 광선과 제2 스크린 광선 사이의 각도에 대한 3차원 모델의 회전 각도의 비이다. 패닝 속도는 임계 값을 초과하지 않는다.
3차원 환경에서 패닝을 위해 가상 표면을 활용하면, 가상 카메라의 퍼스펙티브가 3차원 모델에 거의 접해 있을 때, 3차원 모델의 이동이 줄어든다. 3차원 모델의 이동을 줄임으로써, 본 발명의 실시예들은 패닝을 보다 안정적으로 만들어 준다.
본 발명의 추가적인 실시예들, 특징들, 그리고 장점들은 물론, 본 발명의 다양한 실시예들의 구조 및 동작이 첨부 도면들을 참조하여 이하에서 상세하게 기술된다.
본 명세서에 포함되어 그의 일부를 형성하는 첨부 도면들은 본 발명을 예시하며, 또한 상세한 설명과 함께 본 발명의 원리들을 설명하고 당업자들이 본 발명을 실시하고 사용할 수 있게 하는 역할을 한다.
도 1a는 가상 표면을 사용하지 않고 패닝하는 것을 나타낸 도면이다.
도 1b는 본 발명의 일 실시예에 따른, 가상 표면을 사용하여 패닝하는 것을 나타낸 도면이다.
도 2a는 지리 정보 시스템의 사용자 인터페이스의 스크린샷이다.
도 2b는 가상 표면을 사용하여 패닝하는 데 사용되는 디스플레이 영역의 다양한 지역들을 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른, 가상 표면들을 사용하여 패닝하는 지리 정보 시스템 클라이언트의 아키텍처를 나타낸 도면이다.
도 4는 도 3의 시스템의 동작에서 사용될 수 있는, 가상 표면을 사용하여 패닝하는 방법의 흐름도이다.
도 5a는 도 4의 방법에서의 단계에 따라 대용 광선(surrogate ray)을 결정하는 것을 나타낸 도면이다.
도 5b는 도 4의 방법에서의 단계에 따라 히트 포인트(hit point)를 결정하는 것을 나타낸 도면이다.
도 6는 도 4의 방법에서의 단계에 따라 가상 표면을 구성하기 위한 계산들을 나타낸 도면이다.
도 7a 및 도 7b는 도 4의 방법에 따라, 가상 표면과의 교점을 결정하고 3차원 모델을 회전시키는 것을 나타낸 도면이다.
구성요소가 처음으로 나오는 도면은 일반적으로 대응하는 참조 번호에서 가장 왼쪽의 숫자 또는 숫자들로 표시되어 있다. 도면들에서, 동일 참조 번호는 동일하거나 또는 기능적으로 유사한 구성요소들을 나타낼 수 있다.
본 발명의 실시예들은 가상 표면을 사용하는 안정적인 패닝에 관한 것이다. 이하의 본 발명의 상세한 설명에서, "하나의 실시예", "일 실시예", "예시적인 실시예" 등이라고 말하는 것은, 기술된 실시예가 특정의 기능, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 특정의 기능, 구조, 또는 특성을 반드시 포함하는 것은 아닐 수 있다는 것을 나타낸다. 더욱이, 이러한 어구들이 반드시 동일한 실시예를 말하는 것은 아니다. 게다가, 특정의 기능, 구조, 또는 특성이 일 실시예와 관련되어 기술될 때, 명시적으로 기술되어 있는지 여부와 상관없이, 당업자라면 다른 실시예들과 관련하여 이러한 기능, 구조, 또는 특성을 실시할 수 있다는 것을 잘 알 것이다.
본 명세서에서 사용되는 바와 같이, 가상 카메라를 "패닝(panning)"한다라는 용어는 3차원 모델을 그의 중심과 같은 회전 점을 통과하는 축을 중심으로 회전시키는 것을 말한다. 유의할 중요한 점은, 카메라에 대해 3차원 모델을 이동시키는 것과 3차원 모델에 대해 카메라를 이동시키는 것이 동등하다는 것이다.
도 1a는 가상 표면을 사용하지 않고 트랙볼 패닝(trackball panning)하는 것을 나타낸 도면(100)이다. 도면(100)은 가상 카메라(106)가 3차원 기하 형태(three dimensional geometry)(102)를 바라보는 것을 나타낸 것이다. 3차원 기하 형태(102)는 지형(116)을 포함한다. 이하에서 상세히 기술되는 바와 같이, 3차원 기하 형태(102)는, 예를 들어, 지점(112)에 중심 원점을 가지는 지구의 3차원 모델일 수 있으며, 가상 카메라(106)는 디스플레이 영역 상에 3차원 모델의 어느 부분을 사용자에게 디스플레이할지를 정의할 수 있다.
사용자는 디스플레이 영역 상의 제1 지점을 선택할 수 있다. 그 결과로, 그 지점에 따라 광선(114)이 연장된다. 예로서, 광선(114)이 가상 카메라의 초점으로부터 디스플레이 영역 상의 선택된 지점에 대응하는 가상 카메라의 뷰포트(viewport) 상의 지점을 통해 연장될 수 있다. 광선(114)이 어떻게 결정될 수 있는지에 대해서는 도 5b와 관련하여 보다 상세하게 기술된다. 광선(114)이 결정되면, 광선(114)과 3차원 모델(102) 간의 교점(108)이 결정된다.
지점(108) 및 3차원 모델(102)에 따라 패닝 구(panning sphere)(104)가 결정된다. 패닝 구(104)는 패닝을 제어하기 위해 사용되는 3차원 표면이다. 예로서, 패닝 구(104)는 지점(112)에 중심 원점을 갖고 반지름이 교점(108)과 지점(112) 간의 거리와 같은 구일 수 있다.
패닝 구(104)가 결정되면, 사용자는 디스플레이 영역 상의 제2 지점을 선택하고, 3차원 모델(102)이 그에 따라 회전된다. 사용자는, 예를 들어, 새로운 위치로 마우스를 이동함으로써 디스플레이 영역 상의 제2 지점을 선택할 수 있다. 사용자 선택의 결과로, 제2 지점에 대응하는 광선(120)이 결정된다. 광선(120)이 결정되면, 광선(120)과 패닝 구(104) 간의 교점(110)이 결정된다. 선분(line segment)(118)은 지점(112)과 교점(108)을 연결하고, 선분(122)은 지점(112)과 교점(110)을 연결한다. 3차원 모델(102)은 선분(118)과 선분(122) 사이의 각도(114)만큼 회전된다. 이러한 방식으로, 예를 들어, 마우스로 디스플레이 영역 상의 한 지점을 선택하고 마우스를 이동함으로써, 사용자는 마우스의 이동을 따라가도록 모델을 회전시킨다.
표준 트랙볼 패닝이 장점들을 갖지만, 이는 불안정할 수 있다. 광선(120)이 3차원 모델(102) 및 패닝 구(104)에 점점 접하게 됨에 따라, 사용자의 선택에 대한 작은 변화가 모델(102)의 커다란 회전들을 야기한다. 본 발명의 실시예들은, 도 1b와 관련하여 기술되는 바와 같이, 가상 표면을 도입함으로써 패닝을 보다 안정적으로 만든다.
도 1b는 본 발명의 일 실시예에 따른, 가상 표면을 사용하여 패닝하는 것을 나타낸 도면(150)이다. 도면(100)에서와 같이, 도면(150)에서, 사용자는 디스플레이 영역 상의 제1 지점 및 제2 지점을 선택하며, 그 결과, 모델이 회전된다. 그러나, 가상 표면이 모델의 회전을 줄이며, 그에 따라 안정성이 증가한다.
사용자가 디스플레이 영역 상의 제1 지점을 선택할 때, 도면(100)에서 기술된 바와 같이, 광선(114), 교점(108), 및 패닝 구(104)가 결정된다. 패닝 구(104)가 결정되면, 가상 표면(152)이 결정된다. 가상 표면(152)과 패닝 구(104)는 함께 연속적이고 평탄한 표면을 형성한다. 가상 표면(152)은, 예를 들어, 패닝 구(104)의 일부분과 마주하는 오목한 표면일 수 있다. 일 실시예에서, 가상 표면(152)은 패닝 구(104)의 일부에 대한 미러 이미지(mirror image)일 수 있다.
사용자가 디스플레이 영역 상의 제2 지점을 선택하면, 광선(120)이 사용자 선택에 따라 연장되며, 3차원 모델(102)이 회전된다. 광선(120)과 가상 표면(152) 사이의 교점(154)이 결정된다. 선분(158)은 지점(112)과 교점(154)을 연결한다. 모델(102)은 선분(158)과 선분(118) 사이의 각도(156)만큼 회전된다. 따라서, 패닝 구(104) 대신에 가상 표면(152)을 사용하여 교점이 결정된다. 이러한 방식에 따르면, 모델(102)의 회전이, 광선(120)이 구(104)에 접하게 될 때만큼 급격히 일어나지 않게 된다.
본 발명의 실시예들이 나머지 도면들을 참조하여 이하에서 보다 상세히 기술된다. 상세하게는, 도 2와 도 3은 가상 표면들을 사용하여 패닝하는 지리 정보 시스템을 기술한다. 도 4는 지리 정보 시스템의 동작에서 사용될 수 있는 방법을 기술한다. 마지막으로, 도 5, 도 6, 도 7a 및 도 7b는 방법에 대해 상세히 기술하는 도면들을 포함한다.
도 2a는 가상 표면을 사용하여 패닝할 수 있는, 지리 정보 시스템의 사용자 인터페이스(200)의 스크린샷이다. 사용자 인터페이스(200)는 지리 데이터(geographic data)를 디스플레이하는 디스플레이 영역(202)을 포함한다. 이상에서 언급한 바와 같이, 디스플레이 영역(202)에 디스플레이되는 데이터는 가상 카메라의 퍼스펙티브에서 나온 것이다. 일 실시예에서, 퍼스펙티브는, 예를 들어, 꼭대기가 잘려나간 3차원 피라미드와 같은 절두체(frustum)에 의해 정의된다. 절두체 내에서의 지리 데이터는 가상 카메라로부터의 거리에 따라 다양한 LOD(level of detail)로 디스플레이될 수 있다.
디스플레이 영역(202)에서 디스플레이되는 지리 데이터의 예는 지구의 이미지들을 포함한다. 이러한 이미지들은 지구의 지형을 나타내는 기하 형태 상에 렌더링되어, 지구의 3차원 모델을 생성할 수 있다. 디스플레이될 수 있는 다른 데이터는 건물들의 3차원 모델들을 포함한다.
사용자 인터페이스(200)는 가상 카메라의 배향을 변경하는 컨트롤들(204)을 포함한다. 컨트롤들(204)을 사용하여, 사용자는, 예를 들어, 가상 카메라의 고도, 위도, 경도, 피치, 요(yaw), 및 롤(roll)을 변경할 수 있다. 일 실시예에서, 컨트롤들(104)은 마우스와 같은 컴퓨터 포인팅 장치를 사용하여 조작된다. 가상 컴퓨터의 배향이 변함에 따라, 가상 카메라의 절두체 및 디스플레이되는 지리 데이터도 역시 변한다. 컨트롤들(204)에 부가하여, 사용자는 또한, 예를 들어, 컴퓨터 키보드 또는 조이스틱과 같은 기타 컴퓨터 입력 장치들을 사용하여 가상 카메라의 배향을 제어할 수 있다.
또한, 사용자 인터페이스(200)를 사용하여 사용자가 가상 카메라를 패닝할 수 있다. 사용자는, 예를 들어, 컴퓨터 포인팅 장치로, 디스플레이 영역(202) 상의 제1 지점을 선택함으로써 가상 카메라를 패닝할 수 있다. 이어서, 사용자는 디스플레이 영역(202) 상의 제2 지점을 선택하기 위해 컴퓨터 포인팅 장치를 이동시킬 수 있다. 이하에서 기술되는 바와 같이, 지리 정보 시스템은 사용자에 의해 선택된 제1 지점과 제2 지점에 따라 지구 모델을 회전시킨다.
지리 정보 시스템은 클라이언트-서버 컴퓨터 아키텍처를 사용하여 동작할 수 있다. 이러한 구성에서, 사용자 인터페이스(200)는 클라이언트 머신에 존재한다. 클라이언트 머신은 프로세서, 로컬 메모리 및 디스플레이와, 키보드, 마우스 및/또는 조이스틱과 같은 하나 이상의 컴퓨터 입력 장치들을 가지는 범용 컴퓨터일 수 있다. 대안으로서, 클라이언트 머신은, 예를 들어, 이동 핸드셋과 같은, 특수 컴퓨팅 장치일 수 있다. 클라이언트 머신은 인터넷과 같은 하나 이상의 네트워크를 통하여 하나 이상의 서버와 통신한다. 클라이언트 머신과 유사하게, 서버는 클라이언트에게 데이터를 제공할 수 있는 임의의 범용 컴퓨터를 사용하여 구현될 수 있다. 지리 정보 시스템 클라이언트의 아키텍처는 도 3과 관련하여 보다 상세히 기술된다.
도 2b는 가상 표면을 사용하여 패닝하는 데 사용되는 디스플레이 영역(260)의 다양한 지역들을 나타낸 도면(250)이다. 도 2a의 디스플레이 영역(202)과 관련하여 이상에서 기술한 바와 같이, 디스플레이 영역(260)은 가상 카메라의 퍼스펙티브로부터 지구의 3차원 모델을 디스플레이할 수 있다. 사용자는, 예를 들어, 마우스와 같은 컴퓨터 포인팅 장치에 의해 제어되는 커서로, 디스플레이 영역(260) 상의 제1 지점을 선택함으로써 가상 카메라를 패닝할 수 있다. 사용자에 의해 선택된 지점에 따라 스크린 광선을 연장함으로써, 3차원 모델에서의 히트 포인트(hit point)가 결정될 수 있다. 이어서, 사용자는 디스플레이 영역(260) 상의 제2 지점을 선택하기 위해 커서를 이동시킬 수 있다. 제2 지점을 따라가기 위해 지구의 3차원 모델이 회전될 수 있다. 디스플레이 영역(260)은 지역들(256, 254, 및 252)을 포함한다. 제2 지점을 따라가기 위해 모델이 어떻게 회전하는지는 어느 지역이 제2 지점을 포함하는지에 따라 다르다.
사용자가 지역(256)에 있는 제2 지점을 선택하기 위해 커서를 이동시키면, 히트 포인트가 커서 아래에 계속 있도록 모델이 회전한다. 이러한 방식으로, 커서를 따라가기 위해 모델이 회전한다. 다시 도 1b를 참조하면, 지역(256)에서, 커서 위치에 따라 연장된 스크린 광선이 패닝 구(104)와 교차할 것이다. 커서가 지역(254)에 더 가까워짐에 따라, 회전 속도가 증가한다. 커서가 지역(254)에 들어갈 때, 커서 위치에 따라 연장된 스크린 광선이 가상 표면(152)과 교차할 것이다.
일 실시예에서, 가상 표면은 지역(254)에서의 커서의 위치에 상관없이 회전 속도가 일정하게 유지되도록 구성될 수 있다. 다시 말해서, X 픽셀들만큼 커서의 임의의 이동에 대하여, 모델은 일정한 Y도 만큼 회전한다. 게다가, 그 속도가 지역(256)과 지역(254)이 연결되는 지점(258)(예를 들어, 패닝 표면이 가상 표면과 만나는 곳)에서의 회전 속도로 설정될 수 있다. 가상 표면 상에서의 회전 속도를, 패닝 구 상의 패닝 표면과 가상 표면 간의 교점에서의 속도와 같게 설정함으로써, 두 표면들 간에 매끄러운 전환이 있다. 매끄러운 전환은 사용자가 패닝에서 갑작스런 움직임(jerk)을 경험할 가능성을 줄인다. 궁극적으로, 갑작스런 움직임의 감소로 인해 보다 매끄러운 패닝 경험이 얻어진다.
일 실시예에서, 패닝이 원래대로 되돌아갈 수 있도록 가상 표면이 구성될 수 있다. 모델이 제1 위치에서 시작한다. 사용자는 디스플레이 영역(260) 상의 제1 위치를 선택한다. 이어서, 사용자는 커서를 디스플레이 영역(260) 상의 제2 지점으로 이동시킨다. 따라서, 모델이 제2 위치로 회전한다. 사용자가 커서를 다시 디스플레이 영역(260) 상의 제1 위치로 이동시키면, 모델이 다시 제1 위치로 회전한다. 이러한 방식으로, 패닝이 원래대로 되돌아갈 수 있도록 가상 표면이 구성될 수 있다.
최종적으로, 디스플레이 영역(260)은, 선택적으로, 회전이 거의 또는 전혀 일어나지 않은 지역(252)을 가질 수 있다. 지리 정보 시스템에서, 지역(252)은 하늘 또는 외부 공간에 대응할 수 있다. 사용자가 커서를 지역(252)으로 이동시키면, 패닝이 멈출 수 있다. 게다가, 지역(252)에서 커서 위치에 따라 연장된 스크린 광선이 패닝 구 또는 가상 표면과 교차하지 않을 수도 있다.
도 3은 본 발명의 실시예에 따른, GIS의 예시적인 클라이언트(300)의 아키텍처도이다. 일 실시예에서, 클라이언트(300)는 사용자 상호작용 모듈(310), 로컬 메모리(330), 캐시 노드 관리자(340), 렌더러 모듈(350), 네트워크 로더(network loader)(365) 및 디스플레이 인터페이스(380)를 포함한다. 도 3에 도시한 바와 같이, 사용자 상호작용 모듈(310)은 그래픽 사용자 인터페이스(GUI)(312)와 움직임 모델(motion model)(318)을 포함한다. 로컬 메모리(330)는 뷰 규격(view specification)(332)과 쿼드 노드 트리(quad node tree)(334)를 포함한다. 캐시 노드 관리자(340)는 검색 목록(retrieval list)(345)을 포함한다.
일 실시예에서, 클라이언트(300)의 구성요소들은, 예를 들어, 클라이언트 머신에서 실행 중인 소프트웨어로서 구현될 수 있다. 클라이언트(300)는, 사용자가 보기 위한 지구의 이미지들과 기타 지리 공간 데이터를 클라이언트(300)로 가져오기 위하여, GIS 서버(도시 생략)와 상호 작용한다. 지구의 이미지들과 기타 지리 공간 데이터는 함께, 3차원 환경에서 3차원 모델을 형성한다. 일 실시예에서, 소프트웨어 객체들은 서로 비동기적으로(예를 들어, 시간 독립적으로) 실행될 수 있는 함수들에 따라 그룹화된다.
일반적으로, 클라이언트(300)는 다음과 같이 동작한다. 사용자 상호작용 모듈(310)은 사용자가 보고자 하는 위치에 관한 사용자 입력을 수신하고, 움직임 모델(motion model)(318)을 통하여 뷰 규격(332)을 구성한다. 렌더러 모듈(350)은 뷰 규격(332)을 사용하여 어떤 데이터가 드로잉되어야 하는지를 판정하고 그 데이터를 드로잉한다. 캐시 노드 관리자(340)는 비동기 제어 스레드에서 실행되며, 네트워크를 통하여 원격 서버로부터 검색된 쿼드 노드들로 쿼드 노드 드리를 채움으로써, 쿼드 노드 트리(334)를 작성한다.
사용자 인터페이스 모듈(310)의 일 실시예에서, 사용자는 GUI(312)를 사용하여 위치 정보를 입력한다. 이 결과, 예를 들어, 뷰 규격(332)이 생성된다. 뷰 규격(332)은 로컬 메모리(330)에 위치하며, 렌더러 모듈(350)에 의해 사용된다.
움직임 모델(318)은 가상 카메라의 위치 또는 배향을 조정하기 위하여 GUI(312)를 통해 수신된 위치 정보를 이용한다. 카메라는, 예를 들어, 디스플레이된 지구의 3차원 모델을 보기 위해 사용된다. 사용자는 가상 카메라의 시점에서 자신의 컴퓨터 모니터 상에 디스플레이된 3차원 모델을 본다. 일 실시예에서, 움직임 모델(318)은 또한, 가상 카메라의 위치, 가상 카메라의 배향 및 가상 카메라의 수평 시야(field of view)와 수직 시야에 기초하여 뷰 규격(332)을 결정한다.
뷰 규격(332)은 절두체라고 하는 3차원 공간 내의 가상 카메라가 볼 수 있는 체적(viewable volume) 및, 예를 들어, 3차원 지도와 관련하여 이 절두체의 위치와 배향을 정의한다. 일 실시예에서, 절두체는 꼭대기가 잘려나간 피라미드의 형상으로 되어 있다. 절두체는 관찰 환경에 따라 변할 수 있는 최소 및 최대 관찰 거리(view distance)를 갖는다. 3차원 지도의 사용자 뷰가 GUI(312)를 사용하여 조작됨에 따라, 절두체의 배향과 위치가 3차원 지도와 관련하여 변한다. 따라서, 사용자 입력이 수신됨에 따라, 뷰 규격(332)이 변한다. 뷰 규격(332)은 로컬 메모리(330)에 위치하며, 렌더러 모듈(350)에 의해 사용된다. 뷰 규격(332)과 GIS 클라이언트(300)의 다른 구성요소들이 이하에서 보다 상세하게 기술될 것이다.
움직임 모델(318)은 가상 표면을 사용하여 패닝을 제어하기 위하여, 몇개의 서브 모듈들(sub-modules)을 사용한다. 서브 모듈들은 패닝 모듈(390), 가상 표면 계산기 모듈(392) 및 회전자 모듈(394)을 포함한다. 움직임 모델(318)은 GUI(312)로부터 사용자 입력을 받는다. 사용자 입력이 마우스 클릭인 경우, 움직임 모델(318)은, 예를 들어, 함수 호출에 의해 패닝 모듈(390)을 활성화할 수 있다.
패닝 모듈(390)은 사용자 입력에 따라 광선을 연장하며, 3차원 모델과 광선 사이의 교점을 결정한다. 패닝 모듈(390)은 또한 패닝 구를 구성할 수 있다. 패닝 구가 구성되면, 가상 표면 계산기 모듈(392)은 가상 표면을 패닝 구에 맞출 수 있다.
움직임 모델(318)은 GUI(312)로부터 제2 사용자 입력을 받는다. 패닝 모듈(390)은 제2 사용자 입력에 따라 또 하나의 광선을 연장한다. 패닝 모듈(390)은 또한 가상 표면과 광선 사이의 교점을 계산한다. 최종적으로, 회전자 모듈(394)은 교점에 따라 3차원 모델을 회전시킨다. 패닝 모듈(390), 가상 표면 계산기 모듈(392) 및 회전자 모듈(394)의 동작은 도4 내지 도6 및 도 7a와 도 7b와 관련하여 이하에서 더 상세히 기술된다.
도 4는 도 3의 움직임 모듈(318)의 동작에서 사용될 수 있는, 가상 표면을 사용하여 패닝하는 방법(400)의 흐름도이다. 비록 방법(400)이 움직임 모델(318)과 관련하여 기술되어 있지만, 이는 움직임 모델(318)로 제한되는 것을 의미하지 않는다.
방법(400)은 단계(402)에서 사용자 이벤트를 수신하는 것으로 시작한다. 사용자 이벤트가 클릭 이벤트이면, 단계(418)에서 대용 광선이 계산될 수 있다. 이어서, 단계(404)에서 스크린 광선 또는 대용 광선과 3차원 모델을 교차시킴으로써 히트 포인트가 계산된다. 단계(406)에서, 패닝 구가 히트 포인트에 맞춰지고, 단계(408)에서 가상 표면이 패닝 구에 맞춰진다. 패닝 구는, 도 1b와 관련하여 기술된 바와 같이, 히트 포인트에 따라 생성될 수 있다. 가상 표면은 가상 카메라의 위치에 따라 생성될 수 있다. 마우스 이동 이벤트가 수신되고, 방법(400)은 단계(410)로 진행한다. 단계(410)에서, 스크린 광선이 패닝 표면과 가상 표면 둘다와 교차된다. 교점들 중 하나가 단계(412)에서 선택된다. 선택된 교점이 가상 표면 상에 있는 경우, 단계(414)에서 그 교점이 패닝 구 상에 투영된다. 최종적으로, 단계(416)에서, 단계(404)에서 결정된 히트 포인트와 단계(416)에서 선택된 교점을 연결하는 선분의 대향각 만큼 3차원 모델이 회전된다. 단계들 각각이 도3의 움직임 모델(318)과, 도 5a 및 5b, 도6, 도 7a 및 도 7b에서의 도면들과 관련하여 이하에서 보다 상세히 기술된다
단계(402)에서, GUI(312)는 2개의 사용자 이벤트 - 클릭 이벤트 또는 이동 이벤트 - 중 하나를 수신할 수 있다. GUI(312)는 사용자가 도 2의 디스플레이 영역(202) 내의 한 위치에서 마우스 또는 기타 입력 장치를 클릭하는 것에 응답하여 클릭 이벤트를 수신할 수 있다. GUI(312)는 사용자가 입력 장치(예컨대, 마우스)를 누른 채로 디스플레이 영역(202) 상의 새로운 위치로 입력 장치를 이동시킬 때 이동 이벤트(move event)를 수신할 수 있다. 이러한 이벤트들로 인해, GUI(312)가 패닝 모듈(390)에 대한 콜백 함수 호출을 할 수 있다. 함수 호출 동안에, GUI(312)는 패닝 모듈(390)에게 이벤트에 관한 위치 정보를 보낼 수 있다.
사용자 이벤트가 클릭 이벤트이면, 패닝 모듈(390)은, 도 5a에 나타낸 바와 같이, 단계(418)에서 대용 스크린 광선(surrogate screen ray)을 결정할 수 있다. 도 5a는 초점(506)을 가진 가상 카메라를 나타낸 것이다. 클릭 이벤트에 기초하여, 스크린 광선(510)이 결정된다. 스크린 광선을 결정하는 것에 대해서는 도 5b와 관련하여 보다 상세하게 기술한다. 선분(514)은 중심 원점(112)과 초점(506)을 연결한다. 선분(514)과 스크린 광선(510) 사이의 각도(516)는 임계값을 초과한다. 각도(516)가 임계값을 초과하기 때문에, 각도(516)는 각도(518)에서의 임계값으로 고정된다. 최종적으로, 대용 광선(508)이 초점(506)으로부터 선분(514)에 대해 각도(518)로 연장된다.
단계(404)에서, 패닝 모듈(390)은 스크린 광선 또는 대용 광선을 3차원 모델과 교차하여 히트 포인트를 계산한다. 단계(404)는 도 5b의 도면(550)과 관련하여 상세하게 기술된다. 도면(550)은 지구의 모델(552)을 나타내고 있다. 도면(550)은 또한 가상 카메라의 초점(506)도 나타내고 있다. 가상 카메라는, 도 2와 관련하여 기술된 바와 같이, 정보를 포착(capture) 하고 디스플레이하기 위해 사용된다. 가상 카메라는 초점 길이(558)와 뷰포트(560)를 갖는다. 뷰포트(560)는 도 2의 디스플레이 영역(202)에 대응한다. 사용자가 디스플레이 영역(202) 상의 한 위치를 선택하고, 그 위치는 뷰포트(560) 상의 지점(562)에 대응한다.
패닝 모듈은 모델과의 교점을 결정하기 위하여 가상 카메라로부터 스크린 광선을 연장함으로써 히트 포인트를 결정한다. 도면(550)에서, 광선(564)은 초점(506)으로부터 지점(562)을 통해 연장된다. 다른 실시예에서, 광선(564)은 도 5a와 관련하여 기술된 바와 같이 계산된 대용 광선일 수 있다. 광선(564)은 위치(554)에서 모델(552)과 교차한다. 따라서, 히트 포인트가 위치(554)에 있다. 광선(564)은 건물들이나 지형에서 3차원 모델(552)과 교차할 수 있다.
도 3 및 도 4를 참조하여, 광선이 건물들 또는 지형과 교차하면, 단계(406)에서 패닝 모듈(390)은 패닝 구를 생성할 수 있다. 패닝 구의 중심 원점이 3차원 모델의 중심에 위치할 수 있으며, 패닝 구의 반경이 모델의 중심과 단계(404)에서 결정된 히트 포인트 간의 거리일 수 있다.
단계(406)에서 패닝 표면이 결정되면, 단계(408)에서 가상 표면 계산기 모듈(392)이 가상 표면을 계산한다. 가상 표면과 패닝 표면이 함께 연속적인 표면을 형성하도록, 가상 표면이 패닝 표면에 맞춰진다. 가상 카메라의 퍼스펙티브로부터 가상 표면은 오목한 표면일 수 있다. 예로서, 가상 표면은 패닝 표면의 일부분의 미러 이미지이다.
도 6은 본 발명의 일 실시예에 따른, 가상 표면을 어떻게 계산하는지를 나타낸 도면(600)이다. 도면(600)이 가상 표면을 계산하는 한 방법을 예시하고 있지만, 가상 표면을 계산하는 다른 방법들도 있다. 이상에서 기술한 바와 같이, 가상 표면은 또한 오목한 표면 또는 지구의 미러 이미지로서 계산될 수 있다. 도면(600)은 가상 카메라(602)가 중심 원점(614)을 가지는 3차원 모델(606)을 바라보는 것을 나타낸 것이다. 도면(600)은 또한 패닝 구(604)도 나타내고 있다.
패닝 속도는 커서의 이동이 3차원 모델(606)을 회전시키는 레이트이다. 일 실시예에서, 패닝 속도가 패닝 표면과의 교점에서 최대값에 도달하고 가상 표면에 걸쳐 일정하게 유지되도록 가상 표면이 구성될 수 있다. 이러한 방식으로, 패닝 표면으로부터 가상 표면으로의 매끄러운 전환이 있다.
가상 표면을 결정하기 위하여, 가상 표면 계산기 모듈(392)은 먼저 패닝 표면이 가상 표면과 연결되는 지점을 결정한다. 도면(600)에서, 패닝 표면은 지점(616)에서 가상 표면과 연결된다. 지점(616)은 가상 표면이 사용되기 전에 카메라가 얼마나 접해야 하는지를 정의하는 매개변수에 대응할 수 있다. 대안의 실시예에서, 지점(616)은 패닝 속도가 최대 허용 임계값에 도달하는 지점일 수 있다. 지점(616)을 사용하여, 몇개의 각도들이 결정된다.
dθ로 표시되는 제1 각도는, 사용자의 마우스 클릭으로부터의 스크린 광선(624)과, 카메라(602)와 지점(616)을 연결하는 선분(618) 사이의 각도이다. 선분(622)은 중심 원점(614)과, 사용자의 마우스 클릭으로부터의 스크린 광선과 패닝 모델의 교점(626)을 연결한다. 선분(620)은 중심 원점(614)과 지점(616)을 연결한다. dΦ로 표시되는 제2 각도는 선분(622)과 선분(620) 사이의 각도이다. 각도 dθ 와 각도 dΦ는 작은 오프셋일 수 있다. 제1 각도 dθ에 대한 제2 각도 dΦ의 비(즉, dΦ / dθ)가 패닝 속도일 수 있다.
제1 각도 dθ와 제2 각도 dΦ 간의 비는 나중에 가상 표면을 결정하는 데 사용된다. 가상 표면은 패닝 속도 dΦ / dθ가 전체 표면에 걸쳐 일정하게 유지되도록 구성될 수 있다. 이를 위하여, 가상 카메라(602)와 중심 원점(614)을 연결하는 선분(628)이 결정된다. 각도 θ는 선분(628)과, 가상 카메라(602)와 가상 표면 상의 가변 지점(632)을 연결하는 선분(630) 사이의 각도이다. 각도 Φ는 선분 (628)과, 중심 원점(614)과 가상 표면 상의 가변 지점(632)을 연결하는 선분(634) 사이의 각도이다. 가상 표면 상의 각각의 가변 지점에 대하여, 각도 θ와 각도 Φ는 다음 수식을 만족시킨다:
Figure 112010073707919-pct00001
여기서, θ0 는 사용자의 마우스 클릭으로 생성된 스크린 광선(624)과 선분(628) 사이의 각도이며, Φ0 는 선분(622)과 선분(628) 사이의 각도이다.
환언하면, 광선이 가상 카메라로부터 각도 θ로 연장되는 경우, 그 광선이 원점(614)과 각도 Φ를 갖는 구좌표에서 가상 표면과 교차하도록 가상 표면이 정의된다. 수식을 재정렬하면, 구좌표 값 Φ는, 가상 카메라로부터의 각각의 각도 θ에 대해 다음과 같이 결정될 수 있다:
Figure 112010073707919-pct00002
이 수식을 사용하여, 도 3의 가상 표면 계산기 모듈(392)은 가상 표면을 구성할 수 있다.
실시예들에서, 가상 표면은 수학식 1 및 수학식 2와 실질적으로 차이가 없는 다른 수식들을 사용하여 계산될 수 있다. 예를 들어, 계수들과 오프셋들이 수식들에 포함될 수 있다.
도 3과 도 4를 참조하면, GUI(312)는 사용자 이벤트를 수신할 수 있다. 사용자 이벤트가 이동 이벤트이면, 패닝 모듈(390)은 단계(410)에서 스크린 광선을 패닝 구 및 가상 표면 둘다와 교차시킨다. 단계(410)는 도 7a와 도 7b에 예시되어 있다.
도 7a는 스크린 광선을 가상 표면과 교차하도록 연장하는 것을 나타낸 도면(700)이다. 도면(700)은 또한 단계(406) 및 단계(408)와 관련하여 기술한 바와 같이 구성된 패닝 구(704)와 가상 표면(702)을 나타내고 있다. 도면(700)은 또한 초점(506), 초점 길이(558) 및 뷰포트(560)를 갖는 가상 카메라를 나타내고 있다. 사용자는, 예를 들어, 마우스를 이동시켜 새로운 지점을 선택할 수 있다. 사용자에 의해 선택된 지점은 뷰포트(560)에서의 지점(706)에 대응한다. 패닝 모듈(390)은 초점(506)으로부터 지점(706)을 통해 광선(708)을 연장한다. 광선(706)은 지점(710)에서 가상 표면(702)과 교차한다.
광선(708)은 또한, 도 7b에서 도시된 바와 같이, 패닝 구(704)와 교차할 수 있다. 도 7b는 도면(750)을 포함한다. 도면(750)은 광선(708)이 지점(764)에서 패닝 구(704)와 교차하는 것을 나타내고 있다.
다시 도 3과 도 4를 참조하면, 교점들(764 및 710)이 결정되면, 패닝 모듈(390)은 단계(412)에서 지점들 중 하나를 선택할 수 있다. 패닝 모듈(390)은 지점들 중 가상 카메라에 가장 가까운 지점을 선택할 수 있다. 도면(750)에서, 지점(710)이 지점(764)보다 가상 카메라(506)에 더 가깝다. 가상 표면(702) 상의 지점(710)이 선택될 때, 패닝 모듈(390)은 단계(414)에서 지점(710)을 패닝 구(704)에 투영할 수 있다. 패닝 모듈(390)은 지점(710)과 3차원 모델의 중심 원점(758) 간의 선분(766)을 결정함으로써, 지점(710)을 패닝 구(704)에 투영할 수 있다. 이어서, 패닝 모듈(390)은 지점(762)에서 선분(766)과 패닝 구(704) 사이의 교점을 결정한다.
일 실시예에서, 스크린 광선(708) 및 가상 표면(702)이 교차하는 지점(710)은 삼각형의 사인 법칙(sine rule)을 사용하여 결정될 수 있다. 사인 법칙을 적용하기 위해서는, 몇 가지 매개변수들이 결정되어야 한다. 첫째, 가상 카메라(506)와 중심 원점(758)을 연결하는 선분(768)이 결정된다. 둘째, 선분(768)과 스크린 광선(708) 사이의 각도 θ가 결정된다. 교점(710)은 다음 수식을 만족시킨다:
Figure 112010073707919-pct00003
여기서, B는 선분(768)의 길이이고, A는 가상 카메라(506)와 교점(710) 사이의 거리이며, Φ는 선분(768)과, 가상 카메라(506)와 교점(710)을 연결하는 선분 사이의 각도이다. 거리 A가 가상 카메라(506)와 교점(764) 사이의 거리보다 작기 때문에, 회전은 가상 표면(702) 상의 지점(710)에 기초하여 일어난다. 그렇지 않으면, 모델이 패닝 구와의 교점(764)에 기초하여 회전한다.
단계(416)에서 교점이 결정되면, 회전자 모듈(394)은 단계들(404 및 412)에서 결정된 지점들에 따라 3차원 모델의 위치를 변경한다. 일 실시예에서, 회전자 모듈(394)은, 지점들에 따라 모델을 회전시킴으로써, 모델의 위치를 변경한다. 도 7b에서, 도면(750)은 단계(404)에서 마우스 클릭 이벤트에 응답하여 결정된 광선(752)과 히트 포인트(754)를 나타내고 있다. 도면(750)은 또한 이상에서 언급한 바와 같이, 이동 이벤트에 응답하여 결정된 지점(710)도 나타내고 있다. 선분(756)은 히트 포인트(754)를 중심 원점(758)과 연결하고, 선분(766)은 중심 원점(758)과 지점(710)을 연결한다. 회전자 모듈(394)은 선분(756)과 선분(766) 사이의 각도(760)만큼 3차원 모델을 회전시킨다.
다시 도 3을 참조하면, 지리 정보 시스템 클라이언트(300)의 다양한 구성요소들이 보다 상세하게 기술되어 있다.
앞서 기술한 바와 같이, 뷰 규격(332)은 절두체라고 하는 3차원 공간 내의 가상 카메라가 볼 수 있는 체적(viewable volume) 및, 예를 들어, 3차원 지도와 관련하여 이 절두체의 위치와 배향을 정의한다. 본 발명의 일 실시예에 따르면, 뷰 규격(332)은 가상 카메라의 3개의 주요 매개변수 집합들, 즉 카메라 삼각대, 카메라 렌즈 및 카메라 초점 능력을 지정한다. 카메라 삼각대 매개변수 집합은 다음과 같은 것들을 지정한다: 가상 카메라 위치: X, Y, Z (3개의 좌표); 진행 각도(heading angle)와 같은 기본 배향(예를 들어, 북쪽? 남쪽? 그 사이?)에 대해 가상 카메라가 어느 쪽으로 배향되어 있는가; 피치(예를 들어, 레벨?, 아래?, 위?, 그 사이?); 및 요/롤(예를 들어, 레벨?, 시계방향?, 반시계방향?, 그 사이?). 렌즈 매개변수 집합은 다음과 같은 것들을 지정한다: 수평 시야(예를 들어, 망원렌즈?, 보통 사람의 눈 - 약 55도? 또는 광각?); 및 수직 시야(예를 들어, 망원렌즈?, 보통 사람의 눈 - 약 55도? 또는 광각?). 초점 매개변수 집합은 다음과 같은 것들을 지정한다: 근거리-클립 평면(near-clip plane)(예를 들어, "렌즈"에 얼마나 가까워야 가상 카메라가 볼 수 있는지, 더 가까이 있는 객체들은 드로잉되지 않음)까지의 거리; 및 원거리-클립 평면(far-clip plane)(예를 들어, 렌즈에서 얼마나 멀어야 가상 카메라가 볼 수 있는지, 더 멀리 있는 객체들은 드로잉되지 않음)까지의 거리.
한 예시적인 동작에서, 상기한 카메라 매개변수들을 염두에 두면서, 사용자가 왼쪽-화살(또는 오른쪽-화살) 키를 누른다고 가정한다. 이것은 뷰가 왼쪽(또는 오른쪽)으로 이동되어야 한다는 것을 움직임 모델(318)에게 알린다. 움직임 모델(318)은 작은 값(예를 들어, 화살 키 누름당 1도)을 진행 각도에 가산(또는 감산)으로써, 이러한 지반 레벨(ground level)의 "카메라 패닝" 유형의 제어를 구현한다. 유사한 방식으로, 가상 카메라를 앞으로 이동시키기 위하여, 움직임 모델(318)은 먼저 뷰의 방향(HPR)을 따라 단위-길이 벡터를 계산하고, 원하는 움직임 속도에 의해 각각의 하위 성분들을 스케일링한 후, 카메라의 위치에 이 벡터의 X, Y, Z 하위 성분들을 가산함으로써, 가상 카메라의 위치의 X, Y, Z 좌표를 변경하게 된다. 이러한 방식 및 유사한 방식으로, 움직임 모델(318)은 "이동 직후"의 새로운 뷰 위치를 정의하기 위해 XYZ 와 HPR을 점진적으로 갱신함으로써, 뷰 규격(332)을 조정한다. 이러한 방식으로, 움직임 모델(318)은 3차원 환경에 걸쳐 가상 카메라를 이동시키는 일을 맡고 있다.
렌더러 모듈(350)은 디스플레이 장치의 비디오 화면 재생율(refresh rate)(예를 들어, 초당 60 사이클)에 대응하는 사이클을 가진다. 특정의 일 실시예에서, 렌더러 모듈(350)은 (i) 절전 모드 해제(waking up), (ii) 렌더러에 의해 액세스되는 데이터 구조에 움직임 모델(318)이 넣어둔 뷰 규격(332)을 읽는 것, (iii) 로컬 메모리(330) 내의 쿼드 노드 트리(334)를 트래버스(traverse)하는 것, 및 (iv) 쿼드 노드 트리(334)에 존재하는 쿼드 노드들에 들어 있는 드로잉가능(drawable) 데이터를 드로잉하는 것의 사이클을 수행한다. 드로잉가능 데이터는 경계 상자(bounding box)(예를 들어, 데이터 또는 기타 이러한 식별자를 포함하는 체적)와 연관될 수 있다. 만일 있다면, 드로잉가능 데이터가 뷰 규격(332) 내에서 볼 수 있는지를 알아보기 위해, 경계 상자가 조사된다. 잠재적으로 볼 수 있는 데이터는 드로잉되고, 반면에 볼 수 없는 것으로 알려진 데이터는 무시된다. 따라서, 이제부터 더 충분히 설명되는 바와 같이, 렌더러는 쿼드 노드 트리(334)에 존재하는 쿼드 노드의 드로잉가능 페이로드(payload)가 드로잉되어야 하는지의 여부를 판정하기 위하여 뷰 규격(332)을 사용한다.
먼저, 본 발명의 일 실시예에 따르면, 쿼드 노드 트리(334) 내에 드로잉할 데이터가 없으며, 렌더러 모듈(350)은 기본값으로 스타 필드(star field)(또는 다른 적합한 기본 디스플레이 영상)를 드로잉한다. 쿼드 노드 트리(334)는, 이 스타 필드를 제외한, 렌더러(350)가 드로잉(drawing)하는 데이터 소스이다. 렌더러 모듈(350)은 쿼드 노드 트리(334)에 존재하는 각각의 쿼드 노드에 액세스하려고 시도함으로써 쿼드 노드 트리(334)를 트래버스한다. 각각의 쿼드 노드는 최대 4개의 참조들과 선택적인 데이터 페이로드를 갖는 데이터 구조이다. 쿼드 노드의 페이로드가 드로잉가능 데이터이면, 렌더러 모듈(350)은 페이로드(있는 경우)의 경계 박스를 뷰 규격(332)과 비교하고, 드로잉가능 데이터가 완전히 절두체 바깥에 있지는 않고 다른 요인들에 기초하여 드로잉하기에 부적절하다고 간주되지 않는 한, 페이로드를 드로잉한다. 이러한 다른 요인들은, 예를 들어, 카메라로부터의 거리, 경사, 또는 기타 이러한 고려사항들을 포함할 수 있다. 페이로드가 완전히 절두체의 바깥에 있지 않고, 드로잉하기에 부적절하다고 간주되지 않는 경우, 렌더러 모듈(350)은 또한 쿼드 노드 내의 최대 4개의 참조들 각각에 액세스하려고 시도한다. 참조가 로컬 메모리[예를 들어, 메모리(330) 또는 다른 로컬 메모리] 내의 다른 쿼드 노드에 대한 것이면, 렌더러 모듈(350)은 그 다른 쿼드 노드 내의 임의의 드로잉가능 데이터에 액세스하려고 시도할 것이며, 또한 잠재적으로 그 다른 쿼드 노드에 있는 최대 4개의 참조들 중 임의의 것에 액세스하려고 시도할 것이다. 쿼드 노드의 최대 4개의 참조들 각각에 대한 렌더러 모듈의 액세스 시도는 쿼드 노드 자체에 의해 검출된다.
이상에서 설명한 바와 같이, 쿼드 노드는 데이터 페이로드 및 다른 파일들에 대한 최대 4개의 참조들을 가질 수 있는 데이터 구조이며, 이들 각각은 또한 쿼드 노드일 수 있다. 쿼드 노드에 의해 참조되는 파일들을 본 명세서에서 그 쿼드 노드의 자식이라고 하며, 참조하는 쿼드 노드를 본 명세서에서 부모라고 한다. 몇몇의 경우에, 파일은 참조되는 자식 뿐만 아니라, 그 자식의 후손들도 포함하고 있다. 이 집합체들은 캐시 노드라고 하며, 몇개의 쿼드 노드들을 포함할 수 있다. 이러한 집합은 데이터베이스 구성 동안에 일어난다. 몇몇의 경우에, 데이터 페이로드가 비어 있다. 다른 파일들에 대한 참조들 각각은, 예를 들어, 파일명과 그 파일에 대한 로컬 메모리 내의 대응하는 주소(있는 경우)를 포함한다. 먼저, 참조되는 파일들은 모두 하나 이상의 원격 서버들 상에[예를 들어 GIS의 서버(들) 상에] 저장되며, 사용자의 컴퓨터에는 드로잉가능 데이터가 존재하지 않는다.
쿼드 노드들과 캐시 노드들은 기본 제공 접근자 함수들(built-in accessor functions)을 갖는다. 앞서 설명한 바와 같이, 쿼드 노드의 최대 4개의 참조들 각각에 대한 렌더러 모듈의 액세스 시도는 쿼드 노드 자체에 의해 검출된다. 파일명은 있지만 대응하는 주소가 없는 자식 쿼드 노드에 대한 렌더러 모듈의 액세스 시도 시에, 부모 쿼드 노드는 (예를 들어, 그의 접근자 함수의 동작에 의해) 그 파일명을 캐시 노드 검색 목록(345) 상에 둔다. 캐시 노드 검색 목록은 GIS 서버로부터 다운로드될 캐시 노드들을 식별하는 정보 목록을 포함한다. 쿼드 노드의 자식이 널(null) 값이 아닌 로컬 주소를 갖는다면, 렌더러 모듈(350)은 자식 쿼드 노드에 액세스하기 위하여 로컬 메모리(330) 내의 그 주소를 사용한다.
드로잉가능 페이로드들을 갖는 쿼드노드들이 그들의 페이로드 내에 경계 상자나 다른 위치 식별자를 포함할 수 있도록 쿼드 노드들이 구성된다. 렌더러 모듈(350)은 뷰 절두체 컬(view frustum cull)을 수행하는 데, 이는 쿼드 노드 페이로드(있는 경우)의 경계 박스/위치 식별자를 뷰 규격(332)과 비교한다. 경계 박스가 뷰 규격(332)으로부터 완전히 분리되어 있는 경우(예를 들어, 절두체 내에 드로잉가능 데이터가 없는 경우), 드로잉가능 데이터의 페이로드는, 이미 그것이 GIS 서버로부터 검색되어 사용자의 컴퓨터에 저장되어 있다 하더라도, 드로잉되지 않을 것이다. 그렇지 않으면, 드로잉가능가 드로잉된다.
뷰 절두체 컬은, 렌더러 모듈(350)이 그 쿼드 노드의 자식들을 트래버스하기 전에, 쿼드 노드 페이로드의 경계 박스(있는 경우)가 뷰 규격(332)으로부터 완전히 분리되어 있는지 여부를 판정한다. 쿼드 노드의 경계 박스가 뷰 규격(332)로부터 완전히 분리되어 있다면, 렌더러 모듈(350)은 그 쿼드 노드의 자식들에 액세스하려고 시도하지 않는다. 자식 쿼드 노드는 그의 부모 쿼드 노드의 경계 박스를 넘어 확장되지 않는다. 따라서, 뷰 절두체 컬이 부모 쿼드 노드가 뷰 규격으로부터 완전히 분리되어 있다고 판정하면, 그 쿼드 노드의 모든 자손들 역시 뷰 규격(332)으로부터 완전히 분리되어 있는 것으로 가정될 수 있다.
쿼드 노드와 캐시 노드 페이로드들은 다양한 유형의 데이터를 포함할 수 있다. 예를 들어, 캐시 노드 페이로드들은 위성 이미지들, 텍스트 라벨들, 행정 구역 경계들, 도로들을 렌더링하기 위한 점, 선 또는 다각형 연결을 갖는 3차원 꼭지점들 및 다른 유형의 데이터들을 포함할 수 있다. 임의의 쿼드 노드 페이로드 내의 데이터의 양이 최대값으로 제한된다. 그러나, 몇몇의 경우에, 특정의 해상도로 영역을 묘사하는 데 필요한 데이터의 양은 이 최대값을 초과한다. 예를 들어, 벡터 데이터를 처리하는 것과 같은 그러한 경우들에서는, 데이터의 일부가 부모 페이로드에 들어 있고, 동일 해상도에서 나머지 데이터는 자식들의 페이로드들에(어쩌면 심지어 자식들의 후손들 내에) 들어 있다. 또한, 자식들이 부모와 동일한 해상도 또는 더 높은 해상도의 데이터를 포함하는 경우도 있을 수 있다. 예를 들어, 부모 노드는, 부모와 동일한 해상도의 2개의 자식들과, 부모와 다른(예를 들어, 보다 높은) 해상도의 2개의 부가의 자식들을 가질 수 있다.
캐시 노드 관리자(340) 스레드와, 하나 이상의 네트워크 로더(365) 스레드들 각각은, 렌더러 모듈(350) 및 사용자 상호작용 모듈(310)과 비동기적으로 동작한다. 렌더러 모듈(350)과 사용자 상호작용 모듈(310)은 또한 서로 비동기적으로 동작할 수 있다. 몇몇 실시예들에서, 무려 8개의 네트워크 로더(365) 스레드들이 독립적으로 실행되며, 각각이 렌더러 모듈(350) 및 사용자 상호작용 모듈(310)과 비동기적으로 동작한다. 캐시 노드 관리자(340) 스레드는, GIS 서버(들)로부터 검색된 쿼드 노드들로 쿼드 노드 트리를 채움으로써, 로컬 메모리(330) 내에 쿼드 노드 트리(334)를 작성한다. 클라이언트 시스템이 기동되거나 다른 방식으로 시작될 때, 쿼드 노드 트리(334)가 루트 노드부터 시작한다. 루트 노드는 파일명을 포함하고(그러나 대응하는 주소를 포함하지 않음), 데이터 페이로드를 포함하지 않는다. 이상에서 기술한 바와 같이, 이 루트 노드는, 렌더러 모듈(350)에 의해 처음으로 트래버스된 이후에, 캐시 노드 검색 목록(345)에 자기-보고하기 위해 기본 제공 접근자 함수(built-in accessor function)를 사용한다.
각각의 네트워크 로더(network loader)(365) 스레드에서, 네트워크 로더는 캐시 노드 검색 목록(345)[도 3에서 도시된 실시예에서, 캐시 노드 관리자(340)에 포함되어 있으나, 로컬 메모리(330)나 다른 저장 시설과 같이 다른 장소들에 위치할 수도 있음]을 트래버스하고, 캐시 노드의 파일명을 이용하여 GIS 서버(들)에 다음 캐시 노드를 요청한다. 네트워크 로더는 캐시 노드 검색 목록에 나오는 파일들만 요청한다. 캐시 노드 관리자(340)는 반환된 파일들을 위하여 로컬 메모리(330)(또는 다른 적합한 저장 시설)에 공간을 할당하는데, 이 파일은 부모 쿼드 노드의 후손들인 하나 이상의 새로운 쿼드들로 구성된다. 캐시 노드 관리자(340)는 또한, 필요한 경우(예를 들어, 서버 측에서의 임의의 암호화 또는 압축을 보완하기 위하여), GIS 서버(들)로부터 반환된 데이터 파일을 복호화하거나 압축 해제할 수 있다. 캐시 노드 관리자(340)는, 각각의 새로 구성된 자식 쿼드 노드에 대한 로컬 메모리(330) 주소에 대응하는 주소를 사용하여, 쿼드 노드 트리(334)의 부모 쿼드 노드를 갱신한다.
렌더러 모듈(350)에서 별도로 그리고 비동기적으로, 쿼드 노드 트리(334)의 다음번 트래버스 및 업데이트된 부모 쿼드 노드의 트래버스 시에, 렌더러 모듈(350)은 자식 쿼드 노드에 대응하는 로컬 메모리 내의 주소를 찾아내고 자식 쿼드 노드에 액세스할 수 있다. 렌더러의 자식 쿼드 노드 트래버스는 부모 쿼드 노드에 대해 뒤따라오는 동일한 단계들에 따라 진행된다. 이는, 뷰 규격(332)으로부터 완전히 분리되어 있거나, 이상에서 설명한 바와 같은 다른 요인들에 기초하여 드로잉하기에 부적절하다고 간주되는 노드에 도달될 때까지, 쿼드 노드 트리(334)에 걸쳐 계속된다.
이 특정의 실시예에서, 렌더러 모듈이 캐시 노드 관리자 스레드에 의해 기입되었거나 다른 방식으로 제공된 쿼드 노드들을 읽는 것 외에는, 캐시 노드 관리자 스레드와 렌더러 모듈(350) 간에 통신이 없다는 것에 유의해야 한다. 또한 유의할 점은, 이 특정 실시예에서, 이상에서 설명된 바와 같이, 반환되는 자식들이 뷰 규격(332)으로부터 완전히 분리되어 있거나 또는 다른 방식으로 드로잉에 부적합한 페이로드들만을 가질 때까지, 캐시 노드들, 따라서 쿼드 노드들이 계속 다운로드된다는 것이다. 디스플레이 인터페이스(380)(예를 들어, 디스플레이 인터페이스 카드)는, 사용자가 데이터를 볼 수 있도록, 데이터가 매핑 모듈로부터 사용자의 컴퓨터와 연관된 디스플레이로 보내질 수 있도록 구성되어 있다. 디스플레이 인터페이스(380)는 종래의 기술로 구현될 수 있다.
요약 및 요약서 부분들이 발명자(들)에 의해 생각되는 본 발명의 전부는 아닌 하나 이상의 예시적인 실시예들을 기술하고 있을 수 있으며, 따라서, 결코 본 발명 및 첨부된 특허청구범위를 제한하기 위한 것이 아니다.
지정된 기능들 및 이들의 관계들의 구현을 나타낸 기능 구성 블록들의 도움으로 본 발명에 대해 이상에서 기술하였다. 이러한 기능 구성 블록들의 경계는, 설명의 편의상, 본 명세서에서 임의적으로 정의되었다. 지정된 기능들 및 이들의 관계가 적절하게 수행되는 한, 대안의 경계들이 정의될 수 있다.
특정의 실시예들에 대한 이상의 설명이, 과도한 실험 없이, 본 발명의 일반적인 개념에서 벗어나지 않고, 당업자라면 이러한 특정 실시예들을 다양한 응용에 맞게 쉽게 수정 및/또는 변형할 수 있는 본 발명의 개괄적인 성질들을 충분히 보여줄 것이다. 따라서, 그러한 변형들 및 수정들은, 본 명세서에 제시된 내용 및 안내에 기초하여, 개시된 실시예들의 등가물의 의미 및 범위 내에 있는 것으로 보아야 한다. 본 명세서에서의 어법 또는 용어가 제한하기 위한 것이 아니라 설명을 위한 것이므로, 개시 내용과 안내를 고려하여 본 명세서의 용어 또는 어법이 당업자들에게 해석되어야 한다는 것을 잘 알 것이다.
본 발명의 폭과 범위는 이상에서 기술된 예시적 실시예들 중 어떤 것에 의해서도 제한되어서는 안 되며, 오직 이하의 특허청구범위 및 그의 등가물에 따라서만 한정되어야 한다.

Claims (21)

  1. 3차원 환경에서 가상 카메라를 패닝(panning)하는 컴퓨터에 의해 수행되는 방법으로서,
    상기 3차원 환경에서의 3차원 모델 상의 제1 지점을 결정하는 단계;
    상기 3차원 환경에서의 상기 제1 지점, 상기 3차원 모델, 및 상기 가상 카메라의 위치에 따라 가상 표면을 결정하는 단계 - 상기 가상 표면을 결정하는 단계는 패닝 구(panning sphere)를 결정하는 단계를 포함하고, 상기 패닝 구의 중심은 상기 3차원 모델의 중심에 위치하고, 상기 패닝 구는 상기 3차원 모델의 중심과 상기 제1 지점과의 사이의 거리와 동일한 반경을 갖고, 상기 가상 표면을 상기 패닝 구의 패닝 표면에 적합하게(fitting) 하여, 상기 가상 표면이 상기 가상 카메라의 시점(perspective)으로부터 오목면이 되도록 하는 것을 포함하고, 상기 가상 카메라의 시점은 상기 3차원 환경내의 상기 가상 카메라의 위치에 의해 결정됨 -;
    상기 패닝 구상에 위치하는 제2 지점을 결정하는 단계;
    상기 가상 표면상에 위치하는 제3 지점을 결정하는 단계 - 상기 패닝 구상의 제2 지점은 상기 가상 표면상의 제3 지점과 연관되고, 상기 가상 카메라와 상기 제3 지점간의 거리는 상기 가상 카메라와 상기 제2 지점간의 거리보다 짧음 -; 및
    상기 제3 지점을 상기 3차원 모델의 중심과 연결하는 제1 선분(line segment)과 상기 3차원 모델의 중심을 상기 3차원 환경내의 상기 가상 카메라의 위치와 연결하는 제2 선분과의 사이의 제1 각도만큼 상기 3차원 모델을 회전시킴으로써 상기 3차원 모델의 위치를 변경하는 단계 - 상기 제1 각도만큼의 상기 3차원 모델의 회전은, 상기 3차원 모델의 중심을 상기 제2 지점과 연결하는 제3 선분과 상기 제2 선분과의 사이의 제2 각도만큼의 상기 3차원 모델의 회전보다 작음 -
    를 포함하는 컴퓨터에 의해 수행되는 방법.
  2. 제1항에 있어서, 상기 가상 표면을 결정하는 단계는,
    상기 가상 표면을 상기 패닝 표면에 적합하게 함으로써, 상기 패닝 구상에서 연속적이고 평탄한 표면을 형성하도록 하는 단계를 더 포함하는 컴퓨터에 의해 수행되는 방법.
  3. 제2항에 있어서, 상기 3차원 모델은 지구의 모델을 포함하는 컴퓨터에 의해 수행되는 방법.
  4. 제1항에 있어서, 상기 가상 표면은 상기 패닝 구의 일부분의 미러 이미지인 컴퓨터에 의해 수행되는 방법.
  5. 제1항에 있어서, 상기 제1 지점을 결정하는 단계는,
    상기 가상 카메라의 초점으로부터 상기 가상 카메라의 뷰포트 상의 제4 지점을 통해 제1 광선을 연장하는 단계 - 상기 제4 지점은 제1 사용자 선택에 대응함 -; 및
    상기 제1 광선과 상기 3차원 모델 사이의 교점에서 상기 제1 지점을 결정하는 단계
    를 포함하는 컴퓨터에 의해 수행되는 방법.
  6. 제5항에 있어서, 상기 가상 표면을 결정하는 단계는,
    연결 지점에서 상기 패닝 구에 연결되는 가상 표면을 결정하는 단계
    를 포함하며,
    상기 가상 표면은 다음 수식을 만족시키고,
    Figure 112015102419771-pct00004

    θ0는 상기 제1 광선과, 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 선분 사이의 각도이고,
    Φ0는 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 제1 선분과, 상기 3차원 모델의 중심과 상기 제1 지점을 연결하는 제2 선분 사이의 각도이며,
    dΦ는 상기 3차원 모델의 중심과 상기 제1 지점을 연결하는 상기 제2 선분과, 상기 3차원 모델의 중심과 상기 연결 지점을 연결하는 제3 선분 사이의 각도이고,
    dθ는 상기 제1 광선과, 상기 가상 카메라와 상기 연결 지점을 연결하는 제3 선분 사이의 각도이며,
    θ는 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 상기 제2 선분과, 상기 가상 카메라와 상기 가상 표면 상의 가변 지점을 연결하는 제4 선분 사이의 각도이고,
    Φ는 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 상기 제2 선분과, 상기 3차원 모델의 중심과 상기 가상 표면 상의 상기 가변 지점을 연결하는 제5 선분 사이의 각도인 컴퓨터에 의해 수행되는 방법.
  7. 3차원 환경에서 가상 카메라를 패닝하는 시스템으로서,
    상기 3차원 환경내의 3차원 모델상의 제1 지점을 결정하고, 또한 패닝 구를 결정하도록 구성된 패닝 모듈 - 상기 패닝 구의 중심은, 상기 3차원 모델의 중심에 위치하고, 상기 패닝 구는 상기 3차원 모델의 중심과 상기 제1 지점간의 거리와 동일한 반경을 갖고, 상기 패닝 모듈은 또한 상기 패닝 구상에 위치하는 제2 지점 및 가상 표면상의 제3 지점을 결정하도록 구성되고, 상기 제2 지점은 상기 제3 지점과 연관됨 -;
    상기 제1 지점, 상기 3차원 모델 및 상기 3차원 환경내의 상기 가상 카메라의 위치에 따라, 상기 가상 표면을 결정하도록 구성된 가상 표면 계산기 모듈;
    상기 제3 지점을 상기 3차원 모델의 중심과 연결하는 제1 선분과, 상기 3차원 모델의 중심을 상기 3차원 환경내의 상기 가상 카메라의 위치와 연결하는 제2 선분과의 사이의 제1 각도만큼 상기 3차원 모델을 회전시킴으로써 상기 3차원 모델의 위치를 변경하도록 구성된 회전자 모듈;
    을 포함하고,
    상기 가상 카메라와 상기 제3 지점간의 거리는 상기 가상 카메라와 상기 제2 점간의 거리보다 짧고,
    상기 제1 각도만큼의 상기 3차원 모델의 회전은, 상기 3차원 모델의 중심을 상기 제2 지점과 연결하는 제3 선분과 상기 제2 선분과의 사이의 제2 각도만큼의 상기 3차원 모델의 회전보다 작고,
    상기 가상 표면을 결정하는 것은, 상기 가상 표면을 상기 패닝 구의 패닝 표면에 적합하게 함으로써, 상기 가상 표면이 상기 가상 카메라의 시점으로부터 오목면이 되도록 하는 것을 포함하고, 상기 가상 카메라의 시점은, 상기 3차원 환경내의 상기 가상 카메라의 위치에 의해 결정되는 가상 카메라 패닝 시스템.
  8. 제7항에 있어서, 상기 패닝 모듈은, 상기 가상 표면을 상기 패닝 표면에 적합하게 함으로써, 상기 패닝 구상에 연속적이고 평탄한 표면을 형성하도록 구성되는 가상 카메라 패닝 시스템.
  9. 제8항에 있어서, 상기 3차원 모델은 지구의 모델을 포함하는 가상 카메라 패닝 시스템.
  10. 제8항에 있어서, 상기 가상 표면은 상기 패닝 구의 일부분의 미러 이미지인 가상 카메라 패닝 시스템.
  11. 제8항에 있어서, 상기 패닝 모듈은 상기 가상 카메라의 초점으로부터 상기 가상 카메라의 뷰포트 상의 제4 지점을 통해 제1 광선을 연장하도록 구성되고 - 상기 제4 지점은 제1 사용자 선택에 대응함 -;
    상기 패닝 모듈은 상기 제1 광선과 상기 3차원 모델 사이의 교점에서 상기 제1 지점을 결정하도록 구성되는 가상 카메라 패닝 시스템.
  12. 제11항에 있어서, 상기 패닝 모듈은 상기 패닝 구를 결정하도록 구성되고, 상기 패닝 구의 중심은 상기 3차원 모델의 중심에 위치하고, 상기 패닝 구는 상기 3차원 모델의 중심과 상기 제1 지점 사이의 거리와 같은 반경을 가지며,
    상기 가상 표면 계산기 모듈은 연결 지점에서 상기 패닝 구에 연결되는 가상 표면을 결정하도록 구성되고,
    상기 가상 표면은 다음 수식을 만족시키고,
    Figure 112015102419771-pct00005

    θ0는 상기 제1 광선과, 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 선분 사이의 각도이고,
    Φ0는 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 제1 선분과, 상기 3차원 모델의 중심과 상기 제1 지점을 연결하는 제2 선분 사이의 각도이며,
    dΦ는 상기 3차원 모델의 중심과 상기 제1 지점을 연결하는 상기 제2 선분과, 상기 3차원 모델의 중심과 상기 연결 지점을 연결하는 제3 선분 사이의 각도이고,
    dθ는 상기 제1 광선과, 상기 가상 카메라와 상기 연결 지점을 연결하는 제3 선분 사이의 각도이며,
    θ는 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 상기 제2 선분과, 상기 가상 카메라와 상기 가상 표면 상의 가변 지점을 연결하는 제4 선분 사이의 각도이고,
    Φ는 상기 가상 카메라와 상기 3차원 모델의 중심을 연결하는 상기 제2 선분과, 상기 3차원 모델의 중심과 상기 가상 표면 상의 가변 지점을 연결하는 제5 선분 사이의 각도인 가상 카메라 패닝 시스템.
  13. 지구의 3차원 모델을 포함하는 3차원 환경에서 가상 카메라를 패닝하는 컴퓨터에 의해 수행되는 방법으로서,
    상기 가상 카메라의 시점으로부터 상기 3차원 모델을 디스플레이 영역에 디스플레이하는 단계;
    사용자가 커서에 의해 상기 디스플레이 영역 내의 상기 3차원 모델내의 패닝 구상의 제1 지점을 선택할 수 있게 하는 단계;
    상기 가상 카메라와 상기 제1 지점간에 스크린 광선(screen ray)을 결정하는 단계;
    상기 스크린 광선과 가상 표면간의 교차점을 결정하는 단계;
    상기 3차원 모델의 회전 지점을 통과하는 축을 중심으로, 상기 가상 카메라가 상기 3차원 모델의 회전 지점 및 상기 가상 표면상의 교차점과 정렬할 때까지, 상기 3차원 모델을 회전시키는 단계
    를 포함하고,
    상기 교차점에 따른 상기 3차원 모델의 회전은, 상기 3차원 모델의 중심을 상기 제1 지점과 연결하는 제1 선분과 상기 스크린 광선과의 사이의 제1 각도만큼의 상기 3차원 모델의 회전보다 작고,
    상기 가상 표면은, 상기 가상 표면을 패닝 표면에 적합하게 함으로써, 상기 가상 표면이 상기 가상 카메라의 시점으로부터 오목한 표면이 되도록 결정되는 컴퓨터에 의해 수행되는 방법.
  14. 3차원 환경에서 가상 카메라를 패닝하는 시스템으로서,
    상기 3차원 환경에서의 3차원 모델 상의 제1 지점을 결정하는 수단;
    상기 3차원 환경에서의 상기 제1 지점, 상기 3차원 모델, 및 상기 가상 카메라의 위치에 따라 가상 표면을 결정하는 수단 - 상기 가상 표면을 결정하는 것은, 패닝 구를 결정하는 것을 포함하고, 상기 패닝 구의 중심은 상기 3차원 모델의 중심에 위치하고, 상기 패닝 구는 상기 3차원 모델의 중심과 상기 제1 지점과의 사이의 거리와 동일한 반경을 갖고, 상기 가상 표면을 상기 패닝 구의 패닝 표면에 적합하게 함으로써, 상기 가상 표면이 상기 가상 카메라의 시점으로부터 오목면이 되도록 하는 것을 포함하고, 상기 가상 카메라의 시점은 상기 3차원 환경내의 상기 가상 카메라의 위치에 의해 결정됨 -;
    상기 패닝 구상에 위치하는 제2 지점을 결정하는 수단;
    상기 가상 표면상에 위치하는 제3 지점을 결정하는 수단 - 상기 패닝 구상의 제2 지점은 상기 가상 표면상의 제3 지점과 연관되고, 상기 가상 카메라와 상기 제3 지점간의 거리는 상기 가상 카메라와 상기 제2 지점간의 거리보다 짧음 -;
    상기 제3 지점을 상기 3차원 모델의 중심과 연결하는 제1 선분과, 상기 3차원 모델의 중심을 상기 3차원 환경내의 상기 가상 카메라의 위치와 연결하는 제2 선분과의 사이의 제1 각도만큼 상기 3차원 모델을 회전시킴으로써 상기 3차원 모델의 위치를 변경하는 수단 - 상기 제1 각도만큼의 상기 3차원 모델의 회전은 상기 3차원 모델의 중심을 상기 제2 지점과 연결하는 제3 선분과 상기 제2 선분과의 사이의 제2 각도만큼의 상기 3차원 모델의 회전보다 작음 -
    을 포함하는 가상 카메라 패닝 시스템.
  15. 컴퓨팅 장치에 의해 실행되는 경우 상기 컴퓨팅 장치로 하여금 3차원 환경에서 가상 카메라를 패닝하는 방법을 수행하게 하는 컴퓨터-실행가능 명령들을 저장하고 있는 유형의 컴퓨터-판독가능 매체(tangible computer-readable medium)로서,
    상기 방법은,
    3차원 환경에서의 3차원 모델 상의 제1 지점을 결정하는 단계;
    상기 3차원 환경에서의 상기 제1 지점, 상기 3차원 모델, 및 가상 카메라의 위치에 따라 가상 표면을 결정하는 단계 - 상기 가상 표면을 결정하는 단계는 패닝 구를 결정하는 단계를 포함하고, 상기 패닝 구의 중심은 상기 3차원 모델의 중심에 위치하고, 상기 패닝 구는 상기 3차원 모델의 중심과 상기 제1 지점간의 거리와 동일한 반경을 갖고, 상기 가상 표면을 상기 패닝 구면의 패닝 표면에 적합하게 함으로써, 상기 가상 표면이 상기 가상 카메라의 시점으로부터 오목면이 되도록 하는 것을 포함하고, 상기 가상 카메라의 시점은 상기 3차원 환경내의 상기 가상 카메라의 위치에 의해 결정됨 -;
    상기 패닝 구상에 위치하는 제2 지점을 결정하는 단계;
    상기 가상 표면상에 위치하는 제3 지점을 결정하는 단계 - 상기 패닝 구상의 제2 지점은 상기 가상 표면상의 제3 지점과 연관되고, 상기 가상 카메라와 상기 제3 지점간의 거리는 상기 가상 카메라와 상기 제2 지점간의 거리보다 짧음 -;
    상기 제3 지점을 상기 3차원 모델의 중심과 연결하는 제1 선분과, 상기 3차원 모델의 중심을 상기 3차원 환경내의 상기 가상 카메라의 위치와 연결하는 제2 선분과의 사이의 제1 각도만큼 상기 3차원 모델을 회전시킴으로써 상기 3차원 모델의 위치를 변경하는 단계 - 상기 제1 각도만큼의 상기 3차원 모델의 회전은, 상기 3차원 모델의 중심을 상기 제2 지점과 연결하는 제3 선분과 상기 제2 선분과의 사이의 제2 각도만큼의 상기 3차원 모델의 회전보다도 작음 -
    를 포함하는 유형의 컴퓨터-판독가능 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020107025343A 2008-04-14 2009-04-14 가상 표면들을 사용하는 패닝 KR101626037B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US4475408P 2008-04-14 2008-04-14
US61/044,754 2008-04-14

Publications (2)

Publication Number Publication Date
KR20110002093A KR20110002093A (ko) 2011-01-06
KR101626037B1 true KR101626037B1 (ko) 2016-06-13

Family

ID=40897356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107025343A KR101626037B1 (ko) 2008-04-14 2009-04-14 가상 표면들을 사용하는 패닝

Country Status (8)

Country Link
US (1) US8624926B2 (ko)
EP (1) EP2297704B1 (ko)
JP (1) JP5389901B2 (ko)
KR (1) KR101626037B1 (ko)
CN (1) CN102067180B (ko)
AU (1) AU2009238631B2 (ko)
CA (1) CA2721375C (ko)
WO (1) WO2009131634A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522493A (zh) 2008-08-22 2020-08-11 谷歌有限责任公司 移动设备上的三维环境中的导航
US8780174B1 (en) 2010-10-12 2014-07-15 The Boeing Company Three-dimensional vision system for displaying images taken from a moving vehicle
US8675013B1 (en) * 2011-06-16 2014-03-18 Google Inc. Rendering spherical space primitives in a cartesian coordinate system
CN102289845B (zh) * 2011-08-30 2013-04-10 广东省电力设计研究院 一种三维模型绘制方法以及装置
US8767011B1 (en) * 2011-10-17 2014-07-01 Google Inc. Culling nodes over a horizon using conical volumes
US20130257742A1 (en) * 2012-03-28 2013-10-03 Google Inc. Method and System for Controlling Imagery Panning Based on Displayed Content
US9092900B2 (en) * 2012-06-05 2015-07-28 Google Inc. Terrain-based virtual camera tilting, and applications thereof
US10140765B2 (en) 2013-02-25 2018-11-27 Google Llc Staged camera traversal for three dimensional environment
US9459705B2 (en) 2013-03-18 2016-10-04 Facebook, Inc. Tilting to scroll
US9423941B2 (en) * 2013-09-05 2016-08-23 Facebook, Inc. Tilting to scroll
US9679413B2 (en) 2015-08-13 2017-06-13 Google Inc. Systems and methods to transition between viewpoints in a three-dimensional environment
DE112019000070T5 (de) 2018-01-07 2020-03-12 Nvidia Corporation Führen von fahrzeugen durch fahrzeugmanöver unter verwendung von modellen für maschinelles lernen
CN110352153A (zh) 2018-02-02 2019-10-18 辉达公司 自主车辆中用于障碍物躲避的安全程序分析
DE112019000049T5 (de) 2018-02-18 2020-01-23 Nvidia Corporation Für autonomes fahren geeignete objekterfassung und erfassungssicherheit
WO2019168869A1 (en) 2018-02-27 2019-09-06 Nvidia Corporation Real-time detection of lanes and boundaries by autonomous vehicles
CN110494863B (zh) 2018-03-15 2024-02-09 辉达公司 确定自主车辆的可驾驶自由空间
US11080590B2 (en) 2018-03-21 2021-08-03 Nvidia Corporation Stereo depth estimation using deep neural networks
US11436484B2 (en) 2018-03-27 2022-09-06 Nvidia Corporation Training, testing, and verifying autonomous machines using simulated environments
US11373356B2 (en) * 2018-03-28 2022-06-28 Robert Bosch Gmbh Method and system for efficient rendering of 3D particle systems for weather effects
US11966838B2 (en) 2018-06-19 2024-04-23 Nvidia Corporation Behavior-guided path planning in autonomous machine applications
AU2019294617A1 (en) * 2018-06-27 2021-02-18 SentiAR, Inc. Gaze based interface for augmented reality environment
DE112019005750T5 (de) 2018-11-16 2021-08-05 Nvidia Corporation Erlernen des Erzeugens synthetischer Datensätze zum Trainieren neuronalerNetze
DE112019006484T5 (de) 2018-12-28 2021-10-21 Nvidia Corporation Detektion von abständen zu hindernissen in autonomen maschinenanwendungen
WO2020140049A1 (en) 2018-12-28 2020-07-02 Nvidia Corporation Distance to obstacle detection in autonomous machine applications
US11170299B2 (en) 2018-12-28 2021-11-09 Nvidia Corporation Distance estimation to objects and free-space boundaries in autonomous machine applications
WO2020163390A1 (en) 2019-02-05 2020-08-13 Nvidia Corporation Driving lane perception diversity and redundancy in autonomous driving applications
CN113811886B (zh) 2019-03-11 2024-03-19 辉达公司 自主机器应用中的路口检测和分类
US11713978B2 (en) 2019-08-31 2023-08-01 Nvidia Corporation Map creation and localization for autonomous driving applications
TWI757762B (zh) * 2020-06-04 2022-03-11 宏正自動科技股份有限公司 多視窗顯示的切換方法以及切換系統
US11978266B2 (en) 2020-10-21 2024-05-07 Nvidia Corporation Occupant attentiveness and cognitive load monitoring for autonomous and semi-autonomous driving applications
US11748939B1 (en) * 2022-09-13 2023-09-05 Katmai Tech Inc. Selecting a point to navigate video avatars in a three-dimensional environment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006187343A (ja) 2004-12-28 2006-07-20 Konami Co Ltd ゲーム装置、ゲーム装置の制御方法及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557714A (en) * 1993-01-29 1996-09-17 Microsoft Corporation Method and system for rotating a three-dimensional model about two orthogonal axes
JPH07200874A (ja) * 1993-12-27 1995-08-04 Mutoh Ind Ltd 3次元cadシステムにおける2次元図面の作成方法
JPH07200875A (ja) * 1993-12-27 1995-08-04 Mutoh Ind Ltd 3次元モデルの表示位置変更方法
JPH07302358A (ja) * 1994-05-02 1995-11-14 Nissan Motor Co Ltd Cadシステム用3次元図形視点変更装置
JPH08249500A (ja) * 1995-03-13 1996-09-27 Hitachi Ltd 3次元図形の表示方法
JPH08329277A (ja) * 1995-06-05 1996-12-13 Hitachi Ltd 地球環境観測データの可視化表示方法
JPH11232483A (ja) * 1998-02-10 1999-08-27 Square Co Ltd 情報処理装置および情報記録媒体
JP2004005272A (ja) 2002-05-31 2004-01-08 Cad Center:Kk 仮想空間移動制御装置及び制御方法並びに制御プログラム
JP4297804B2 (ja) 2004-02-19 2009-07-15 任天堂株式会社 ゲーム装置及びゲームプログラム
JP4143590B2 (ja) * 2004-10-28 2008-09-03 任天堂株式会社 3次元画像処理装置、ゲーム装置、3次元画像処理プログラムおよびゲームプログラム
US20070206030A1 (en) * 2006-03-06 2007-09-06 The Protomold Company, Inc. Graphical user interface for three-dimensional manipulation of a part
US8277316B2 (en) * 2006-09-14 2012-10-02 Nintendo Co., Ltd. Method and apparatus for using a common pointing input to control 3D viewpoint and object targeting
US8375336B2 (en) 2008-05-23 2013-02-12 Microsoft Corporation Panning content utilizing a drag operation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006187343A (ja) 2004-12-28 2006-07-20 Konami Co Ltd ゲーム装置、ゲーム装置の制御方法及びプログラム

Also Published As

Publication number Publication date
CA2721375A1 (en) 2009-10-29
KR20110002093A (ko) 2011-01-06
CN102067180A (zh) 2011-05-18
AU2009238631A1 (en) 2009-10-29
CN102067180B (zh) 2014-07-09
US8624926B2 (en) 2014-01-07
US20090256840A1 (en) 2009-10-15
JP5389901B2 (ja) 2014-01-15
CA2721375C (en) 2016-11-29
EP2297704B1 (en) 2014-04-09
WO2009131634A1 (en) 2009-10-29
AU2009238631B2 (en) 2014-10-30
JP2011517001A (ja) 2011-05-26
EP2297704A1 (en) 2011-03-23

Similar Documents

Publication Publication Date Title
KR101626037B1 (ko) 가상 표면들을 사용하는 패닝
AU2009236690B2 (en) Swoop navigation
US9024947B2 (en) Rendering and navigating photographic panoramas with depth information in a geographic information system
US9626790B1 (en) View-dependent textures for interactive geographic information system
EP2643822B1 (en) Guided navigation through geo-located panoramas
US8487957B1 (en) Displaying and navigating within photo placemarks in a geographic information system, and applications thereof
US9153011B2 (en) Movement based level of detail adjustments
US9092900B2 (en) Terrain-based virtual camera tilting, and applications thereof
US9704282B1 (en) Texture blending between view-dependent texture and base texture in a geographic information system

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
FPAY Annual fee payment

Payment date: 20190517

Year of fee payment: 4