KR20210082242A - 증강-현실 또는 가상-현실 씬에서 오브젝트들의 표현들의 생성 및 수정 - Google Patents

증강-현실 또는 가상-현실 씬에서 오브젝트들의 표현들의 생성 및 수정 Download PDF

Info

Publication number
KR20210082242A
KR20210082242A KR1020217016374A KR20217016374A KR20210082242A KR 20210082242 A KR20210082242 A KR 20210082242A KR 1020217016374 A KR1020217016374 A KR 1020217016374A KR 20217016374 A KR20217016374 A KR 20217016374A KR 20210082242 A KR20210082242 A KR 20210082242A
Authority
KR
South Korea
Prior art keywords
viewpoint
rendered frame
rendered
scene
user
Prior art date
Application number
KR1020217016374A
Other languages
English (en)
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 KR20210082242A publication Critical patent/KR20210082242A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • 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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • 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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • G06K9/00201
    • G06K9/00214
    • G06K9/00671
    • G06K9/00711
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • G06V20/653Three-dimensional objects by matching three-dimensional models, e.g. conformal mapping of Riemann surfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

일 실시예에서, 서브프레임들을 생성하기 위한 방법은 사용자의 제 1 뷰포인트로부터의 가상 씬을 묘사한 렌더링된 프레임을 액세스하는 것을 포함할 수 있다. 렌더링된 프레임은 가상 씬에서 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성될 수 있다. 컴퓨팅 시스템은 렌더링된 프레임에 기초하여 복수의 표면들을 생성할 수 있다. 각각의 표면은 3D 공간 내에 배치될 수 있으며 시각 정보를 포함한다. 시스템은 3D 공간에서 사용자의 제 2 뷰포인트를 결정하며 제 2 뷰포인트로부터 복수의 표면들의 가시성을 결정할 수 있다. 시스템은 그 후 시각 정보 및 복수의 표면들의 결정된 가시성에 기초하여 제 2 뷰포인트로부터의 가상 씬을 묘사한 서브프레임을 렌더링할 수 있다.

Description

증강-현실 또는 가상-현실 씬에서 오브젝트들의 표현들의 생성 및 수정
본 개시는 일반적으로 증강-현실, 가상-현실, 혼합-현실, 또는 하이브리드-현실 환경들에 관한 것이다.
인공 현실은 사용자로의 프리젠테이션 이전에 몇몇 방식으로 조정되어 온 현실의 형태이며, 이것은 예컨대 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그것의 몇몇 조합 및/또는 파생물들을 포함할 수 있다. 인공 현실 콘텐트는 완전히 생성된 콘텐트 또는 캡처된 콘텐트(예컨대, 실-세계 사진들)와 조합된 생성된 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그것의 몇몇 조합을 포함할 수 있으며, 그 중 임의의 것은 단일 채널로 또는 다수의 채널들로(뷰어에게 3-차원 효과를 생성하는 스테레오 비디오와 같은) 제공될 수 있다. 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되고 및/또는 인공 현실에서 사용되는(예컨대, 그것에서 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그것의 몇몇 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은 호스트 컴퓨터 시스템에 연결된 헤드-장착 디스플레이(HMD), 독립형 HMD, 이동 디바이스 또는 컴퓨팅 시스템, 또는 하나 이상의 뷰어들에게 인공 현실 콘텐트를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함한, 다양한 플랫폼들 상에서 구현될 수 있다.
그것의 존재 이래, 인공 현실(예컨대, AR, VR, MR) 기술은 AR/VR/MR 씬에 대한 사용자의 관점에서의 갑작스러운 변화들에 응답하여 AR/VR/MR 오브젝트들을 렌더링할 때 대기시간의 문제를 겪어왔다. 몰입형 환경을 생성하기 위해, 사용자들은 씬을 볼 때 그들의 머리 주위를 움직일 수 있을 필요가 있으며 환경은 사용자에게 제공되는 뷰를 조정하는 것으로 즉시 응답할 필요가 있을 수 있다. 각각의 머리 움직임은 씬의 사용자 관점을 약간 변경할 수 있다. 이들 머리 움직임들은 작지만 산발적이며 (불가능하지 않지만) 예측하기 어려울 수 있다. 해결될 문제는 머리 움직임들이 빠르게 발생할 수 있어서, 씬의 뷰가 머리 움직임들로 발생하는 관점에서의 변화들을 감안하도록 빠르게 수정되도록 요구한다는 것이다. 이것이 충분히 빠르게 행해지지 않는다면, 결과적인 대기시간은 사용자로 하여금 가상 현실 메스꺼움 또는 불편함, 또는 적어도 경험의 몰입형 특징에 대한 중단을 야기할 수 있는 감각 부조화를 경험하게 할 수 있다. 관점에서의 이들 변화들을 감안하기 위해 전체적으로 뷰를 재-렌더링하는 것은 리소스 집약적일 수 있으며, 단지 비교적 낮은 프레임 레이트(예컨대, 60Hz, 또는 1/60초마다 한 번)로 그렇게 하는 것만이 가능할 수 있다. 그 결과, 사용자가 대기시간을 지각하는 것을 방지하며 그에 의해 감각 부조화를 피하거나 또는 충분히 감소시키기 위해 충분히 빠른(예컨대, 200Hz, 1/200초마다 한 번) 페이스로 관점에서의 변화들을 감안하기 위해 전체 씬을 재-렌더링함으로써 씬을 수정하는 것은 실현 가능하지 않을 수 있다.
하나의 해법은 씬 내에서 오브젝트들을 나타내는 "표면들"을 생성하고 그것을 갖고 작동하는 것을 수반하며, 여기에서 표면은 관점에서의 변화의 결과로서, 하나의 유닛으로서, 함께 외형에서 이동하고/이전하고, 스큐잉하고, 스케일링하고, 왜곡하거나, 또는 그 외 변화하는 것으로 예상되는 하나 이상의 오브젝트들에 대응한다. 전체 뷰를 재-렌더링하는 대신에, 컴퓨팅 시스템은 대응하는 오브젝트가 변경된 관점에서 어떻게 보일지를 근사하기 위해 변경된 관점으로부터 이들 표면들을 간단히 재샘플링할 수 있다. 이러한 방법은 근본적으로 효율적인 지름길일 수 있으며, 요구되는 프로세싱을 상당히 감소시키고 그에 따라 뷰가 대기시간을 충분히 감소시키기에 충분히 빠르게 업데이트됨을 보장할 수 있다. 전체 뷰들을 재-렌더링하는 것과 달리, 표면들을 재샘플링하는 것은 HMD(예컨대, 별개의 랩탑 또는 착용 가능한 디바이스)의 컴퓨팅 시스템의 비교적 제한된 프로세싱 전력을 갖고 할당된 시간 내에서 - 예컨대, 1/200초로 - 뷰들을 수정하기 위해 사용될 수 있도록 충분히 효율적일 수 있다. HMD가 HMD의 현재 위치 및 배향에 대한 정보를 송신하고, 새로운 뷰를 렌더링하도록 별개의 시스템을 기다리며, 그 후 별개의 시스템으로부터 새로운 뷰를 수신해야 하기 때문에, 이러한 수정에 수반된 시간 스케일들은, 작아서 수정을 수행하기 위해 HMD로부터 물리적으로 분리되는 더 강력한 시스템을 갖는 것은 실현 가능하지 않을 수 있다. 표면들을 간단히 재샘플링함으로써, 수정은 HMD 상에서 전체적으로 수행되며, 그에 의해 프로세스의 속도를 높일 수 있다. 본 개시는 특정한 시간 기간들(1/60초, 1/200초) 및 대응하는 특정한 프레임 레이트들(60Hz, 200Hz)을 사용하지만, 이들 시간 기간들 및 프레임 레이트들은 본 발명을 예시하기 위해 단지 예들로서 사용되며 본 개시는 임의의 다른 적절한 시간 기간들 및 프레임 레이트들을 고려한다.
특정한 실시예들에서, 그래픽 애플리케이션들(예컨대, 게임들, 맵들, 콘텐트-제공 앱들 등)은 씬 그래프를 구축할 수 있으며, 이것은 GPU 상에서 렌더링하기 위한 프리미티브들을 생성하기 위해 주어진 뷰 위치 및 시점과 함께 사용된다. 씬 그래프는 씬에서의 오브젝트들 간의 논리적 및/또는 공간적 관계를 정의할 수 있다. 특정한 실시예들에서, 디스플레이 엔진은 또한 전체 애플리케이션 씬 그래프의 단순화된 형태인 씬 그래프를 생성하고 저장할 수 있다. 단순화된 씬 그래프는 표면들 간의 논리적 및/또는 공간적 관계들(예컨대, 애플리케이션에 의해 렌더링된 메인프레임에 기초하여 생성된 대응하는 텍스처들을 가진, 3D 공간에서 정의된, 4변형 또는 윤곽들과 같은, 디스플레이 엔진에 의해 렌더링된 프리미티브들)을 특정하기 위해 사용될 수 있다. 씬 그래프를 저장하는 것은 디스플레이 엔진이 다수의 디스플레이 프레임들로 씬을 렌더링하도록 허용하여, 현재 뷰포인트(예컨대, 머리 위치), 현재 오브젝트 위치들(예컨대, 그것들은 서로에 대해 움직이고 있을 수 있다) 및 디스플레이 프레임마다 변화하는 다른 인자들에 대한 씬 그래프에서의 각각의 요소를 조정한다. 또한, 씬 그래프에 기초하여, 디스플레이 엔진은 또한 디스플레이 서브시스템에 의해 도입된 기하학적 및 컬러 왜곡에 대해 조정하며 그 후 프레임을 생성하기 위해 오브젝트들을 함께 합성할 수 있다. 씬 그래프를 저장하는 것은 디스플레이 엔진으로 하여금, 사실상 상당히 더 낮은 레이트로 GPU를 작동시키면서, 원하는 높은 프레임 레이트로 전체 렌더를 한 결과를 근사하도록 허용한다.
본 발명의 실시예들은 인공 현실 시스템을 포함하거나 또는 그것과 함께 구현될 수 있다. 특정한 실시예들에서, 씬을 렌더링하고 그것의 표면들을 생성하며 수정하는데 수반된 프로세싱 태스크들은 둘 이상의 컴퓨팅 시스템들 간에 분리될 수 있다. 제한으로서가 아닌 예로서, 씬의 뷰는 처음에 제 1 컴퓨팅 시스템(예컨대, 랩탑, 휴대전화, 데스크탑, 착용 가능한 디바이스)에 의해 렌더링될 수 있다. 렌더링된 결과들은 뷰의 하나 이상의 표면들을 생성하기 위해 사용될 수 있다. 컬러 및 투명도 정보 외에, 표면들은 씬에서의 그것들의 위치에 대한 정보를 포함할 수 있다. 이들 표면들은 제 2 컴퓨팅 시스템(예컨대, 헤드-장착 디스플레이(HMD) 상에서의 탑재된 컴퓨팅 시스템)으로 전달될 수 있다. HMD는 표면들과 연관된 정보에 기초하여 및 HMD를 착용한 사용자의 현재 관점에 기초하여(예컨대, HMD의 위치 및 배향에 의해 결정된 바와 같이) 뷰 내에서 표면들에 대응하는 오브젝트들을 렌더링할 수 있다. 관점에서의 임의의 변화들(예컨대, 약 100분의 1초로 발생하는 사용자의 약간의 머리 모션들)은 HMD 상에서의 센서들에 의해 추적되며 조정된 관점으로부터 뷰에서의 표면들을 재샘플링함으로써 HMD에 의해 감안될 수 있다. 관점의 조정으로 인해, 표면들은 그것들의 재샘플링될 때 외형이 이전되고/이동되고, 스큐잉되고, 스케일링되고, 왜곡되거나, 또는 그 외 변경될 수 있다. 씬은 스크래치로부터(예컨대, 다각형들로부터) 재-렌더링되지 않으므로 대신에 단지 표면들을 조정함으로써, 씬은 비교적 빠르게(예컨대, 200Hz로) 수정될 수 있다. 특정한 실시예들에서, 제 1 컴퓨팅 시스템은 제 2 컴퓨팅 시스템(예컨대, HMD)이 사용자의 편안함을 위해 훨씬 많은 무게, 크기, 및/또는 열을 야기하지 않고 눈에 띄게 증가되지 않을 수 있는 제한된 시스템 리소스들을 가질 수 있기 때문에, 제 2 컴퓨팅 시스템과 비교할 때 비교적 강력할 수 있다.
상기 설명된 문제들은 다음의 청구항들 중 적어도 하나에 따라 본 발명에 의해 해결된다.
본 발명의 몇몇 구현들에 따르면, 방법이 제공되며 이러한 방법은, 하나 이상의 컴퓨팅 시스템들에 의해, 사용자의 제 1 뷰포인트로부터 가상 씬을 묘사한 렌더링된 프레임을 액세스하는 것으로서, 상기 렌더링된 프레임은 상기 가상 씬에서의 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성되는, 상기 렌더링된 프레임을 액세스하는 것; 상기 렌더링된 프레임에 기초하여 복수의 표면들을 생성하는 것으로서, 각각의 상기 표면은 3D 공간 내에 배치되며 시각 정보를 포함하는, 상기 렌더링된 프레임을 액세스하는 것; 상기 3D 공간에서 사용자의 제 2 뷰포인트를 결정하는 것; 상기 제 2 뷰포인트로부터 상기 복수의 표면들의 가시성을 결정하는 것; 및 상기 시각 정보 및 상기 복수의 표면들의 결정된 가시성에 기초하여 상기 제 2 뷰포인트로부터 상기 가상 씬을 묘사한 서브프레임을 렌더링하는 것을 포함한다.
본 발명의 하나의 가능한 구현에 따르면, 상기 복수의 표면들의 각각의 상기 시각 정보는 텍스처이고; 상기 복수의 표면들의 상기 결정된 가시성은 상기 제 2 뷰포인트로부터 가시적인 상기 복수의 표면들 상에서의 포인트들을 식별하며; 상기 서브프레임의 상기 렌더링은 상기 복수의 표면들 상에서의 상기 포인트들에 따라 상기 복수의 표면들의 각각의 상기 텍스처를 샘플링하는 것을 포함한다.
본 발명의 하나의 가능한 구현에 따르면, 상기 오브젝트의 상기 3D 모델은 다각형들을 포함하며; 상기 렌더링된 프레임은 상기 다각형들 및 상기 제 1 뷰포인트로부터 투사된 광선들 중 하나 이상 사이에서의 계산된 교차 포인트들에 기초하여 생성된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임은 적어도 상기 오브젝트의 상기 3D 모델에 기초하여 생성된 복수의 프레임들 중 하나이고; 상기 렌더링된 서브프레임은 상기 복수의 표면들에 기초하여 생성된 복수의 서브프레임들 중 하나이며; 상기 복수의 서브프레임들은 상기 렌더링된 프레임 후 및 상기 복수의 프레임들 중 다음 것 전에 생성된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 복수의 프레임들은 제 1 프레임 레이트로 생성되며; 상기 복수의 서브프레임들은 상기 제 1 프레임 레이트보다 높은 제 2 프레임 레이트로 생성된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 복수의 표면들의 상기 가시성은 광선 투사를 사용하여 결정된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임은 광선 추적을 사용하여 생성된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 제 1 뷰포인트 및 상기 제 2 뷰포인트는 상이한 시간들에서 결정된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임은 상기 오브젝트의 상기 3D 모델 및 상기 가상 씬에서 제 2 오브젝트의 제 2 3D 모델에 기초하여 생성되며; 상기 복수의 표면들 중 적어도 하나는 상기 오브젝트 및 상기 제 2 오브젝트 모두를 묘사한 시각 정보를 포함한다.
본 발명의 하나의 가능한 구현에 따르면, 상기 복수의 표면들의 각각은 편평하다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임 및 상기 서브프레임은 상이하다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임과 상기 렌더링된 서브프레임은 상이한 컴퓨팅 시스템들에 의해 렌더링된다.
본 발명의 몇몇 구현들에 따르면, 소프트웨어를 구체화한 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어가 제공되며, 상기 소프트웨어는 실행될 때: 사용자의 제 1 뷰포인트로부터 가상 씬을 묘사한 렌더링된 프레임을 액세스하는 것으로서, 상기 렌더링된 프레임은 상기 가상 씬에서의 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성되는, 상기 렌더링된 프레임을 액세스하고; 상기 렌더링된 프레임에 기초하여 복수의 표면들을 생성하는 것으로서, 각각의 상기 표면은 3D 공간 내에 배치되며 시각 정보를 포함하는, 상기 복수의 표면들을 생성하고; 상기 3D 공간에서 사용자의 제 2 뷰포인트를 결정하고; 상기 제 2 뷰포인트로부터 상기 복수의 표면들의 가시성을 결정하며; 상기 시각 정보 및 상기 복수의 표면들의 결정된 가시성에 기초하여 상기 제 2 뷰포인트로부터 상기 가상 씬을 묘사한 서브프레임을 렌더링하도록 동작 가능하다.
본 발명의 하나의 가능한 구현에 따르면, 상기 복수의 표면들의 각각의 상기 시각 정보는 텍스처이고; 상기 복수의 표면들의 상기 결정된 가시성은 상기 제 2 뷰포인트로부터 가시적인 상기 복수의 표면들 상에서의 포인트들을 식별하며; 상기 서브프레임의 상기 렌더링은 상기 복수의 표면들 상에서의 상기 포인트들에 따라 상기 복수의 표면들의 각각의 상기 텍스처를 샘플링하는 것을 포함한다.
본 발명의 하나의 가능한 구현에 따르면, 상기 오브젝트의 상기 3D 모델은 다각형들을 포함하며; 상기 렌더링된 프레임은 상기 다각형들 및 상기 제 1 뷰포인트로부터 투사된 광선들 중 하나 이상 간의 계산된 교차 포인트들에 기초하여 생성된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임은 적어도 상기 오브젝트의 상기 3D 모델에 기초하여 생성된 복수의 프레임들 중 하나이고; 상기 렌더링된 서브프레임은 상기 복수의 표면들에 기초하여 생성된 복수의 서브프레임들 중 하나이며; 상기 복수의 서브프레임들은 상기 렌더링된 프레임 후 및 상기 복수의 프레임들의 다음의 것 전에 생성된다.
본 발명의 몇몇 구현들에 따르면, 시스템이 제공되며, 상기 시스템은 하나 이상의 프로세서들; 상기 프로세서들 중 하나 이상에 결합되며 명령들을 포함하는 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어로서, 상기 명령들은 상기 프로세서들 중 하나 이상에 의해 실행될 때, 상기 시스템으로 하여금: 사용자의 제 1 뷰포인트로부터 가상 씬을 묘사한 렌더링된 프레임을 액세스하게 하는 것으로서, 상기 렌더링된 프레임은 상기 가상 씬에서의 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성되는, 상기 렌더링된 프레임을 액세스하게 하고; 상기 렌더링된 프레임에 기초하여 복수의 표면들을 생성하게 하는 것으로서, 각각의 상기 표면은 3D 공간 내에 배치되며 시각 정보를 포함하는, 상기 복수의 표면들을 생성하게 하고; 상기 3D 공간에서 상기 사용자의 제 2 뷰포인트를 결정하게 하고; 상기 제 2 뷰포인트로부터 상기 복수의 표면들의 가시성을 결정하게 하며; 상기 시각 정보 및 상기 복수의 표면들의 결정된 가시성에 기초하여 상기 제 2 뷰포인트로부터 상기 가상 씬을 묘사한 서브프레임을 렌더링하게 하도록 동작 가능한, 상기 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어를 포함한다.
본 발명의 하나의 가능한 구현에 따르면, 상기 복수의 표면들의 각각의 상기 시각 정보는 텍스처이고; 상기 복수의 표면들의 결정된 가시성은 상기 제 2 뷰포인트로부터 가시적인 상기 복수의 표면들 상에서의 포인트들을 식별하며; 상기 서브프레임의 상기 렌더링은 상기 복수의 표면들 상에서의 상기 포인트들에 따라 상기 복수의 표면들의 각각의 상기 텍스처를 샘플링하는 것을 포함한다.
본 발명의 하나의 가능한 구현에 따르면, 상기 오브젝트의 상기 3D 모델은 다각형들을 포함하며; 상기 렌더링된 프레임은 상기 다각형들 및 상기 제 1 뷰포인트로부터 투사된 광선들 중 하나 이상 간의 계산된 교차 포인트들에 기초하여 생성된다.
본 발명의 하나의 가능한 구현에 따르면, 상기 렌더링된 프레임은 적어도 상기 오브젝트의 상기 3D 모델에 기초하여 생성된 복수의 프레임들 중 하나이고; 상기 렌더링된 서브프레임은 상기 복수의 표면들에 기초하여 생성된 복수의 서브프레임들 중 하나이며; 상기 복수의 서브프레임들은 상기 렌더링된 프레임 후 및 상기 복수의 프레임들의 다음의 것 전에 생성된다.
여기에서 개시된 실시예들은 단지 예들이며, 본 개시의 범위는 그것들에 제한되지 않는다. 특정한 실시예들은 여기에서 개시된 실시예들의 구성요소들, 요소들, 특징들, 기능들, 동작들, 또는 단계들의 모두, 일부를 포함하거나, 또는 포함하지 않을 수 있다. 본 발명에 따른 실시예들은 특히 방법, 저장 매체, 시스템 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에서 개시되며, 하나의 청구항 카테고리, 예컨대 방법에서 언급된 임의의 특징은 또 다른 청구항 카테고리, 예컨대 시스템에서 또한 주장될 수 있다. 첨부된 청구항들에서 종속성들 또는 역 참조들은 단지 형식적인 이유들로 택하여진다. 그러나, 임의의 이전 청구항들(특히 다중 종속성들)에 대한 의도적인 역 참조에서 기인한 임의의 주제가 또한 주장될 수 있으며, 따라서 청구항들 및 그것의 특징들의 임의의 조합이 개시되며 첨부된 청구항들에서 택하여진 종속성들에 관계없이 주장될 수 있다. 주장될 수 있는 주제는 첨부된 청구항들에서 제시된 바와 같은 특징들의 조합들뿐만 아니라 또한 청구항들에서의 특징들의 임의의 다른 조합을 포함하며, 청구항들에서 언급된 각각의 특징은 청구항들에서의 임의의 다른 특징 또는 다른 특징들의 조합과 조합될 수 있다. 더욱이, 여기에서 설명되거나 또는 묘사된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서 및/또는 여기에서 설명되거나 또는 묘사된 임의의 실시예 또는 특징과 또는 첨부된 청구항들의 특징들 중 임의의 것과 임의로 조합하여 주장될 수 있다.
도 1a 내지 도 1i는 표면들로 표현될 수 있는 오브젝트들을 포함하는 씬들의 예들을 예시한다.
도 2는 씬의 뷰 내에서 디스플레이되는 오브젝트들의 시각 정보 및 위치 정보를 결정하기 위해 제 1 "광선-투사(ray-casting)" 프로세스를 예시한다.
도 3은 오브젝트의 2D 표면을 표면으로 변환하는 개념을 예시한다.
도 4는 대응하는 표면과 연관된 정보에 기초하여 씬의 뷰포인트로부터 디스플레이를 위한 오브젝트를 렌더링하기 위한 제 2 광선-투사 프로세스의 예시적인 개념화를 예시한다.
도 5는 교차 포인트들에 대응하는 시각 정보를 식별하는 개념화를 예시한다.
도 6a 및 도 6b는 표면들에 기초하여 서브프레임들을 생성하기 위한 예시적인 방법들을 예시한다.
도 7은 디스플레이 엔진을 위한 예시적인 고-레벨 아키텍처를 예시한다.
도 8은 예시적인 컴퓨터 시스템을 예시한다.
그것의 존재 이래, 인공 현실(예컨대, AR, VR, MR) 기술은 AR/VR/MR 씬에 대한 사용자의 관점에서의 갑작스러운 변화들에 응답하여 AR/VR/MR 오브젝트들을 렌더링할 때 대기시간의 문제를 겪어왔다. 몰입형 환경을 생성하기 위해, 사용자들은 씬을 볼 때 그들의 머리 주위를 움직일 수 있을 필요가 있으며 환경은 사용자에게 제공되는 뷰를 조정하는 것으로 즉시 응답할 필요가 있을 수 있다. 각각의 머리 움직임은 씬의 사용자 관점을 약간 변경할 수 있다. 이들 머리 움직임들은 작지만 산발적이며 (불가능하지 않지만) 예측하기 어려울 수 있다. 해결될 문제는 머리 움직임들이 빠르게 발생할 수 있어서, 씬의 뷰가 머리 움직임들로 발생하는 관점에서의 변화들을 감안하도록 빠르게 수정되도록 요구한다는 것이다. 이것이 충분히 빠르게 행해지지 않는다면, 결과적인 대기시간은 사용자로 하여금 가상 현실 메스꺼움 또는 불편함, 또는 적어도 경험의 몰입형 특징에 대한 중단을 야기할 수 있는 감각 부조화를 경험하게 할 수 있다. 관점에서의 이들 변화들을 감안하기 위해 전체적으로 뷰를 재-렌더링하는 것은 리소스 집약적일 수 있으며, 단지 비교적 낮은 프레임 레이트(예컨대, 60Hz, 또는 1/60초마다 한 번)로 그렇게 하는 것만이 가능할 수 있다. 그 결과, 사용자가 대기시간을 인지하는 것을 방지하며 그에 의해 감각 부조화를 피하거나 또는 충분히 감소시키기 위해 충분히 빠른(예컨대, 200Hz, 1/200초마다 한 번) 페이스로 관점에서의 변화들을 감안하기 위해 전체 씬을 재-렌더링함으로써 씬을 수정하는 것은 실현 가능하지 않을 수 있다. 하나의 해법은 씬 내에서 오브젝트들을 나타내는 "표면들"을 생성하고 그것을 갖고 작동하는 것을 수반하며, 여기에서 표면은 관점에서의 변화의 결과로서, 하나의 유닛으로서, 함께 외형에서 이동하고/이전하고, 스큐잉하고, 스케일링하고, 왜곡하거나, 또는 그 외 변화하는 것으로 예상되는 하나 이상의 오브젝트들에 대응한다. 전체 뷰를 재-렌더링하는 대신에, 컴퓨팅 시스템은 대응하는 오브젝트가 변경된 관점에서 어떻게 보일지를 근사하기 위해 변경된 관점으로부터 이들 표면들을 간단히 재샘플링할 수 있다. 이러한 방법은 근본적으로 효율적인 지름길일 수 있으며, 요구되는 프로세싱을 상당히 감소시키고 그에 따라 뷰가 대기시간을 충분히 감소시키기에 충분히 빠르게 업데이트됨을 보장할 수 있다. 전체 뷰들을 재-렌더링하는 것과 달리, 표면들을 재샘플링하는 것은 HMD의 컴퓨팅 시스템의 비교적 제한된 프로세싱 전력을 갖고 할당된 시간 내에서 - 예컨대, 1/200초로 - 뷰들을 수정하기 위해 사용될 수 있도록 충분히 효율적일 수 있다. HMD가 HMD의 현재 위치 및 배향에 대한 정보를 송신하고, 새로운 뷰를 렌더링하도록 별개의 시스템을 기다리며, 그 후 별개의 시스템으로부터 새로운 뷰를 수신해야 하기 때문에, 이러한 수정에 수반된 시간 스케일들은, 작아서 수정을 수행하기 위해 HMD(예컨대, 별개의 랩탑 또는 착용 가능한 디바이스)로부터 물리적으로 분리되는 더 강력한 시스템을 갖는 것은 실현 가능하지 않을 수 있다. 표면들을 간단히 재샘플링함으로써, 수정은 HMD 상에서 전체적으로 수행되며, 그에 의해 프로세스의 속도를 높일 수 있다.
본 발명의 실시예들은 인공 현실 시스템을 포함하거나 또는 그것과 함께 구현될 수 있다. 특정한 실시예들에서, 씬을 렌더링하고 그것의 표면들을 생성하며 수정하는데 수반된 프로세싱 태스크들은 둘 이상의 컴퓨팅 시스템들 간에 분리될 수 있다. 제한으로서가 아닌 예로서, 씬의 뷰는 처음에 제 1 컴퓨팅 시스템(예컨대, 랩탑, 휴대전화, 데스크탑, 착용 가능한 디바이스)에 의해 렌더링될 수 있다. 렌더링된 결과들은 뷰에 대한 하나 이상의 표면들을 생성하기 위해 사용될 수 있다. 컬러 및 투명도 정보 외에, 표면들은 씬에서의 그것들의 위치에 대한 정보를 포함할 수 있다. 이들 표면들은 제 2 컴퓨팅 시스템(예컨대, 헤드-장착 디스플레이(HMD) 상에서의 탑재된 컴퓨팅 시스템)으로 전달될 수 있다. HMD는 표면들과 연관된 정보에 기초하여 및 HMD를 착용한 사용자의 현재 관점에 기초하여(예컨대, HMD의 위치 및 배향에 의해 결정된 바와 같이) 뷰 내에서 표면들을 휘게 할 수 있다. 관점에서의 임의의 변화들(예컨대, 약 100분의 1초로 발생하는 사용자의 약간의 머리 모션들)은 HMD 상에서의 센서들에 의해 추적되며 조정된 관점으로부터 뷰에서의 표면들을 재샘플링함으로써 HMD에 의해 감안될 수 있다. 관점의 조정으로 인해, 표면들은 그것들의 재샘플링될 때 외형이 이전되고/이동되고, 스큐잉되고, 스케일링되고, 왜곡되거나, 또는 그 외 변경될 수 있다. 씬은 스크래치로부터(예컨대, 다각형들로부터) 재-렌더링되지 않으므로 대신에 단지 표면들을 조정함으로써, 씬은 비교적 빠르게(예컨대, 200Hz로) 수정될 수 있다. 특정한 실시예들에서, 제 1 컴퓨팅 시스템은 제 2 컴퓨팅 시스템(예컨대, HMD)이 사용자의 편안함을 위해 훨씬 많은 무게, 크기, 및/또는 열을 야기하지 않고 눈에 띄게 증가되지 않을 수 있는 제한된 시스템 리소스들을 가질 수 있기 때문에, 제 2 컴퓨팅 시스템과 비교할 때 비교적 강력할 수 있다.
특정한 실시예들에서, 컴퓨팅 시스템은 사용자로의 디스플레이를 위해 씬의 초기 뷰를 렌더링할 수 있다. 제한으로서가 아닌 예로서, 이러한 초기 뷰는 AR 오브젝트들의 세트를 포함한 AR 씬(또는, 여기에서의 다른 곳에서 논의된 바와 같이, VR 오브젝트를 가진 VR 씬)의 뷰일 수 있다. 특정한 실시예들에서, 디스플레이는 HMD 상에 있을 수 있다. HMD는 제한된 시스템 리소스들 및 제한된 전력 공급을 가질 수 있으며, 이들 제한들은 사용자의 편안함을 위해 너무 많은 무게, 크기, 및/또는 열을 야기하지 않고 눈에 띄게 감소되지 않을 수 있다. 그 결과, HMD가 뷰를 렌더링할 때 수반된 프로세싱 태스크들 모두를 일방적으로 핸들링하는 것은 실현 가능하지 않을 수 있다. 특정한 실시예들에서, 비교적 강력한 컴퓨팅 시스템(예컨대, 랩탑, 휴대전화, 데스크탑, 착용 가능한 디바이스)은 초기 뷰를 렌더링하기 위해 사용될 수 있다. 특정한 실시예들에서, 이러한 컴퓨팅 시스템은 HMD 상에서 컴퓨팅 시스템과 통신하는 디바이스일 수 있지만 그 외 HMD로부터 물리적으로 분리될 수 있다. 제한으로서가 아닌 예로서, 컴퓨팅 시스템은 HMD에 유선 연결되거나 또는 HMD와 무선으로 통신하는 랩탑 디바이스일 수 있다. 제한으로서 아닌 또 다른 예로서, 컴퓨팅 시스템은 HMD에 유선으로 연결되거나 또는 HMD와 무선으로 통신하는, 착용 가능(예컨대, 손목에 스트래핑된 디바이스), 핸드헬드 디바이스(예컨대, 전화), 또는 몇몇 다른 적절한 디바이스(예컨대, 랩탑, 태블릿, 데스크탑)일 수 있다. 컴퓨팅 시스템은 디스플레이를 위해 HMD로 이러한 초기 씬을 전송할 수 있다. 본 개시는 HMD 상에서 사용자에게 씬을 디스플레이하는데 초점을 맞추지만, 그것은 임의의 다른 적절한 디바이스 상에서 사용자에게 씬을 디스플레이하는 것을 고려한다.
뷰를 렌더링하는 것은 오브젝트의 각각의 다각형에 대해 다수의 "가시성 테스트들"을 수행하는 것을 수반할 수 있는 리소스-집약적 태스크이다. 씬의 뷰를 렌더링하는 종래의 모델에서, 씬에서의 각각의 오브젝트는 수백/수천 개의 다각형들에 의해 표현될 수 있다. 뷰를 렌더링하는 컴퓨팅 시스템은 각각의 가시적인 다각형과 연관된 시각 정보(예컨대, 컬러 및 투명도 정보)를 결정하기 위해 각각의 픽셀로부터 각각의 다각형에 대한 가시성 테스트들을 수행할 필요가 있을 것이다. 가시성 테스트는 특정한 뷰포인트로부터 씬에서 각각의 픽셀을 통해 하나 이상의 가상적인 광선들을 투사하는 것 및 광선들이 오브젝트의 다각형과 교차하는지를 결정하는 것으로서 개념화될 수 있다. 교차 포인트가 있다면, 픽셀은 광선에 의해 교차되는 다각형과 연관된 시각 정보에 기초하여 음영(예컨대, 컬러, 투명도)을 디스플레이하도록 만들어질 수 있다. 이것은 "광선-투사" 또는 "광선-추적" 프로세스로서 설명될 수 있는 것에서 각각의 픽셀에 대해 반복되며, 그것은 궁극적으로 스크린상에서의 전체 뷰의 렌더링을 야기할 수 있다. 이러한 종류의 렌더링은 시간이 걸린다. 제한으로서가 아닌 예로서, 랩탑/디스크탑을 갖고도, 프레임들은 단지 이러한 방식으로 60Hz에서 렌더링될 수 있으며, 이것은 1/60초 내에서 발생하는(예컨대, 빠른 머리 움직임으로부터) 관점에서의 임의의 변화들이 렌더링되고/디스플레이되는 것에 의해 캡처되지 않을 것임을 의미한다.
이러한 문제를 처리하기 위해, 특정한 실시예들에서, 컴퓨팅 시스템은 이하에서 추가로 설명될 바와 같이, 뷰들을 빠르게 렌더링하는 것을 효율적으로 다루기 위해 씬을 위한 하나 이상의 "표면들"을 생성할 수 있다. 각각의 표면은 씬의 사용자의 관점에서의 변화의 결과로서(예컨대, 상이한 위치 및/또는 배향으로 이동하는 사용자의 머리 상에서의 HMD에서 기인한), 하나의 유닛으로, 보기에는 함께 이동하고/이전하고, 스큐잉하고, 스케일링하고, 왜곡하거나, 또는 그 외 변하는 것으로 예상되는 씬 내에서 하나 이상의 오브젝트들의 표현일 수 있다. 제한으로서가 아닌 예로서, 사람의 아바타 및 아바타에 의해 착용된 모자는 사람 및 모자가 하나의 유닛으로서, 보기에는 함께 이동하고/이전하고, 스큐잉하고, 스케일링하고, 왜곡하거나, 또는 그 외 변화할 것이라고 결정된다면 하나의 표면에 대응할 수 있다. 특정한 실시예들에서, 표면은 씬의 사용자의 관점이 변화할 때 단일 유닛으로서 보기에는 이동하고/이전하고, 큐잉하고, 스케일링하고, 왜곡하거나, 또는 그 외 변하는 것으로 예상되는 포인트들(예컨대, 오브젝트를 구성하는 포인트들)의 세트들에 대응할 수 있다. 특정한 실시예들에서, 표면은 직사각형 "텍스처"일 수 있으며, 이것은 씬에서의 하나 이상의 오브젝트들을 정의하는 시각 정보(예컨대, 컬러들, 투명도)를 포함하는 가상 개념일 수 있다. 표면은 또한 씬에서 그것의 위치를 특정하기 위한 변환 행렬을 포함할 수 있다. 표면의 텍스처 데이터는 여기에서 "텍셀(texel)들"로서 불리우는, 하나 이상의 서브파트들로 이루어질 수 있다. 이들 텍셀들은 표면을 구성하는 텍셀을 생성하기 위해 합친 블록들(예컨대, 직사각형 블록들)일 수 있다. 제한으로서가 아닌 예로서, 그것들은 표면을 구성하는 연속 블록들일 수 있다. 예시적인 목적들을 위해, 표면의 텍셀은 이미지의 픽셀과 유사한 것으로 개념화될 수 있다. 표면은 임의의 적절한 디바이스에 의해 생성될 수 있다. 제한으로서가 아닌 예로서, 초기 씬을 생성한 착용 가능한 또는 핸드헬드 디바이스의 CPU 또는 GPU는 또한 씬에 대한 하나 이상의 표면들을 생성할 수 있다. 제한으로서가 아닌 또 다른 예로서, HMD의 탑재된 컴퓨팅 시스템은 그것이 별개의 컴퓨팅 시스템으로부터(예컨대, 착용 가능, 핸드헬드, 또는 랩탑 디바이스의 CPU 또는 GPU로부터) 초기 씬을 수신한 후 하나 이상의 표면들을 생성할 수 있다. 특정한 실시예들에서, 효율 목적들을 위해 뷰에 대해 생성될 수 있는 미리 정의된 최대 수의 표면들(예컨대, 16개 표면들)이 있을 수 있다.
도 1a 내지 도 1i는 표면들로 표현될 수 있는 오브젝트들을 포함하는 씬들의 예들을 예시한다. 특정한 실시예들에서, 3개의 유형들의 표면들: 이미지 표면들, 라벨 표면들, 및 마스크 표면들이 있을 수 있다. 이미지 표면들은 음영 이미지들, 예컨대 GPU에 의해 렌더링된 비디오 프레임들, 정적 이미지들, 또는 씬들을 렌더링하기 위해 사용될 수 있다. 제한으로서가 아닌 예로서, 도 1a를 참조하면, 정적 이미지(110)(예컨대, 사용자가 그것을 보는 것에 기초하여 변하는 가상의, 맞춤화된 게시판)는 이미지 표면에 의해 표현될 수 있다. 제한으로서가 아닌 또 다른 예로서, 도 1b를 참조하면, 동적 비디오(120)(예컨대, 물리 오브젝트에 "부착되며" 적절하게 휜 AR 텔레비전)의 각각의 프레임은 이미지 표면에 의해 표현될 수 있다. 제한으로서가 아닌 또 다른 예로서, 도 1c는 아바타(130)(예컨대, 씬에 배치된 현실적 아바타)와 같은 여러 아바타들이 이미지 표면에 의해 표현될 수 있다. 제한으로서가 아닌 또 다른 예로서, 도 1d를 참조하면, 협업을 가능하게 하기 위해 다수의 뷰어들에게 동시에 보여지는 동적 오브젝트(140)(예컨대, 빌딩의 동적 3D 모델)는 이미지 표면에 의해 표현될 수 있다. 특정한 실시예들에서, 이미지 표면은 그것의 텍셀들 중 하나 이상에 대한 RGB(적색-녹색-청색) 구성요소들을 저장할 수 있다. 특정한 실시예들에서, 이미지 표면은 그것의 텍셀들 중 하나 이상에 대한 RGBA(적색-녹색-청색-알파) 구성요소들을 저장할 수 있다. 알파 구성요소는 텍셀에 부합되는 투명의 레벨을 특정하는 값일 수 있다. 제한으로서가 아닌 예로서, 0의 알파 값은 텍셀이 완전히 투명하다는 것을 나타낼 수 있고, 1의 알파 값은 텍셀이 불투명하다는 것을 나타낼 수 있으며, 그 사이에서의 알파 값들은 그 사이에 있는 투명 레벨(정확한 투명 레벨은 값에 의해 결정된다)을 나타낼 수 있다. 이미지 표면은 임의의 적절한 이미지 포맷을 지원할 수 있다. 제한으로서가 아닌 예로서, 이미지 표면들은 4-비트 내지 10-비트 RGB 구성요소 크기들을 갖고, 16-비트 및 32-비트 픽셀 포맷들 모두를 지원할 수 있다. 특정한 실시예들에서, 각각의 이미지 포맷은 알파 값을 저장하기 위해(예컨대, 투명한 영역들을 허용하기 위해) 적어도 1비트를 가질 수 있다.
특정한 실시예들에서, 라벨 표면들은 부호화된 거리들 및 컬러 인덱스들을 저장할 수 있으며 솔리드 컬러 영역들, 예를 들어, 텍스트, 글리프들, 및 아이콘들을 포함하는 오브젝트들을 렌더링하기 위해 사용될 수 있다. 제한으로서가 아닌 예로서, 도 1e를 참조하면, AR 북(150)은 하나 이상의 라벨 표면들에 의해 표현될 수 있는 텍스트를 포함할 수 있다. 특정한 실시예들에서, 표면들은 씬에서 오브젝트(예컨대, 정적 또는 이동 오브젝트)에 고정될 수 있고, 공간에 고정될 수 있거나, 또는 사용자의 손에 대해 고정될 수 있다(예컨대, 그것이 씬에서 임의의 특정한 오브젝트에 고정되지 않으며, 오히려 사용자의 손과 함께 이동하도록). 도 1e에 의해 예시된 예에서, 텍스트 라벨 표면은 AR 북(150) 또는 임의의 다른 적절한 오브젝트에 대해 고정될 수 있다. 제한으로서가 아닌 또 다른 예로서, 도 1f를 참조하면, 텍스트 및 다중-컬러들의 조합으로 요소들을 소개하는 주기율표가 하나 이상의 라벨 표면들에 의해 표현될 수 있다. 이 예에서, 주기율표는 사용자의 머리에 대해 디스플레이될 수 있다(예컨대, 그것이 씬에서 임의의 특정한 오브젝트에 고정되지 않고, 오히려 사용자의 머리와 함께 이동하도록). 제한으로서가 아닌 또 다른 예로서, 도 1g를 참조하면, 내비게이션 목적들을 위해 상이한 버스 루트들에 관련된 상이한 컬러들 및 연관된 텍스트의 라인들이 하나 이상의 라벨 표면들에 의해 표현될 수 있으며, 이것은 공간에 또는 오브젝트들에 대하여 고정될 수 있다. 제한으로서가 아닌 또 다른 예로서, 도 1h를 참조하면, 버스에 대한 증대된 정보(예컨대, 수용력, 도착 시간, 다음 버스 정거장에 대한 정보)를 포함한 텍스트가 하나 이상의 라벨 표면들에 의해 표현될 수 있으며, 이것은 오브젝트에 대하여(예컨대, 도 1h에서의 버스) 고정될 수 있다. 라벨 표면은 임의의 적절한 포맷일 수 있다. 제한으로서가 아닌 예로서, 라벨 표면들은 예를 들어, 6-비트 거리 필드 값 및 2-비트 인덱스를 포함하여 텍셀 당 8비트들을 저장할 수 있다. 제한으로서가 아닌 또 다른 예로서, 이중 라벨 표면들은 2개의 부호화된 거리 함수들을 특정하도록 허용하기 위해 라벨 텍셀 당 16비트들(예컨대, 제 1 6-비트 거리 필드 및 제 1 2-비트 인덱스, 및 제 2 6-비트 거리 필드 및 제 2 2-비트 인덱스)을 저장할 수 있다. 특정한 실시예들에서, 이들 예들에서의 인덱스들은 보간된 거리의 고차 비트에 의존하여, 사용할 RGBA 컬러를 찾아보기 위해 사용될 수 있다.
특정한 실시예들에서, 마스크 표면들은 그 뒤에 있는 표면들을 가리기 위해 사용될 수 있는 알파 값(예컨대, 1의 값)을 저장할 수 있다. 제한으로서가 아닌 예로서, 도 1i를 참조하면, 마스크 표면은 사용자의 (실-세계) 손(170)이 AR 오브젝트(160) 앞에서 지나갈 때 AR 오브젝트(160)를 나타내는 표면의 일 부분을 가릴 수 있다.
도 2는 씬의 뷰 내에서 디스플레이될 오브젝트들의 시각 정보 및 위치 정보를 결정하기 위한 제 1 "광선-투사" 프로세스를 예시한다. 광선 투사가 이 예에서 사용되지만, 광선 추적과 같은, 다른 렌더링 기술들이 또한 사용될 수 있다. 특정한 실시예들에서, 제 1 컴퓨팅 시스템(예컨대, 랩탑, 휴대전화, 데스크탑, 착용 가능한 디바이스)은 씬의 뷰를 렌더링하기 위해 이러한 제 1 광선-투사 프로세스를 수행할 수 있다. 씬의 "뷰"는 씬의 사용자 관점을 나타낼 수 있으며, 이것은 예를 들어 HMD의 현재 위치 및 배향에 기초하여 결정될 수 있다. 오브젝트가 뷰 내에서 어떻게 디스플레이되는지를 이해하기 위해, 뷰포인트(예컨대, HMD 상에서의 씬을 보는 사용자의 뷰포인트를 나타낼 수 있는 "가상 카메라")에서 나온 다수의 가상 광선들을 스크린상에서의 픽셀들(단일 눈에 대해 HMD 상에서의 디스플레이에 대응하는)로 상상하는 것이 도움이 된다. 제한으로서가 아닌 예로서, 도 2를 참조하면, 가상 광선(230)은 뷰포인트(220)에서 나오며 스크린(210)의 픽셀(215)(예컨대, HMD의 두 개의 아이피스들 중 하나의 디스플레이에 대응할 수 있는)과 교차할 수 있다. 제한으로서가 아닌 또 다른 예로서, 가상 광선(260)은 픽셀(270)과 교차할 수 있다. 가상 광선은, 각각의 픽셀이 디스플레이해야 하는 것(예컨대, 픽셀의 컬러 및 투명도)을 결정하기 위해 스크린의 픽셀들의 모두(또는 적어도 서브세트)에 대해, 여기에서 "광선-투사 프로세스"로 불리울 수 있는 것을 사용하여, 반복적으로 투사할 수 있다. 특정한 실시예들에서, 도 2에 예시된 이러한 제 1 광선-투사 프로세스는 궁극적으로 사용자에게 뷰를 디스플레이할 HMD로부터 분리되는 컴퓨팅 시스템(예컨대, 착용 가능한 디바이스, 핸드헬드 디바이스, 랩탑)에 의해 수행될 수 있다. 컴퓨팅 시스템은 광선-투사 프로세스를 수생하며 가상 광선들의 각각이 오브젝트(예컨대, 다각형들을 구성하는 3D 모델에 의해 정의된)와 교차하는지를 결정할 수 있으며, 또한 오브젝트 상에서 가상 광선이 교차하는(그것이 교차한다면) 곳을 추가로 결정할 수 있다. 제한으로서가 아닌 예로서, 가상 광선(230)은 교차(255)의 포인트에서 오브젝트(250)(예컨대, AR 클록)와 교차할 수 있다. 이 예에서, 컴퓨팅 시스템은, 광선(230)이 또한 픽셀(215)에서 스크린(210)에 교차하기 때문에, 픽셀(215)이 교차(255)의 포인트와 연관된다고 결정할 수 있다. 제한으로서가 아닌 또 다른 예로서, 가상 광선(260)(왜곡/수차를 감안하기 위해 궤도 수정을 따르는)은 오브젝트(250)와 교차하지 않을 수 있다. 이 예에서, 컴퓨팅 시스템은 픽셀(215)이 오브젝트(250)와 연관되지 않아야 한다고 결정할 수 있다. 광선-투사 프로세스의 이러한 사용은, 그것이 주어진 뷰 내에서 가시적인 오브젝트(또는 그것의 부분들)를 결정하기 위해 사용될 수 있기 때문에, 여기에서 "가시성 테스트"로 불리울 수 있다. 광선-투사 프로세스는 궁극적으로 씬의 뷰에 대해 가시적인 임의의 오브젝트들 상에서의 교차 포인트들과 스크린의 픽셀들을 연관시키기 위해 사용될 수 있다.
도 3은 오브젝트(예컨대, 오브젝트(250))의 2D 표현을 표면으로 변환하는 개념을 예시한다. 특정한 실시예들에서, 제 1 광선-투사 프로세스는 씬의 뷰 내에서 디스플레이될 오브젝트의 2D 표현을 생성하기 위해 사용될 수 있다. 뷰는, 예를 들어, 사용자의 머리 상에 장착된 HMD의 현재 위치 및 배향에 기초하여, 결정될 수 있다. 오브젝트의 2D 표현은 그것이 뷰 내에 보여야 하는 것처럼 오브젝트를 나타낼 수 있으며, 이와 같이 뷰로부터 오브젝트의 사용자의 관점을 감안할 수 있다. 제한으로서가 아닌 예로서, 도 2 및 도 3을 참조하면, 2D 표현(310)은 오브젝트(250)의 좌측으로 서 있는 사용자의 관점으로부터 오브젝트(250)의 뷰를 반영할 수 있다(예컨대, 뷰포인트(220)를 오브젝트(250)의 좌측 상에 있게 하는). 이 예에서, 이러한 관점에서 오브젝트(250)가 무엇처럼 보이는지를 결정하기 위해, 제 1 광선-투사 프로세스가 뷰포인트(220)로부터 수행될 수 있다. 이러한 제 1 광선-투사 프로세스의 결과는 광선-투사 프로세스로부터의 가상 광선들이 제 1 광선-투사 프로세스에서 어떻게 오브젝트(250)에 교차하는지에 대한 결과로서 스큐잉된 이미지(예컨대, 2D 표현(310)으로 도시된 바와 같이)를 생성할 수 있어서, 뷰포인트(220)로부터 오브젝트(250)가 어떻게 보일지를 반영한다. 특정한 실시예들에서, 여기에서의 다른 곳에서 논의되는 바와 같이, 컴퓨팅 시스템(예컨대, HMD로부터 분리된 컴퓨팅 시스템, HMD의 탑재된 컴퓨팅 시스템, 또는 임의의 다른 적절한 컴퓨팅 시스템)은 2D 표현을 표면으로 변환할 수 있다. 제한으로서가 아닌 예로서, 도 3을 참조하면, 2D 표현(310)은 표면(320)으로 변환될 수 있으며, 이것은 씬의 3D 공간 내에서 표면의 위치(예컨대, 뷰어의 뷰 좌표들에 특정된)를 설정하는 위치 정보 및 시각 정보(RGBA)(예컨대, 텍스처로서)에 대해 인코딩하는 이미지 표면일 수 있다.
도 4는 씬의 뷰포인트로부터 디스플레이를 위해 표면을 사후-휘게 하거나 또는 재-샘플링하기 위한 제 2 광선-투사 프로세스의 예시적인 개념화를 예시한다. 특정한 실시예들에서, HMD의 탑재된 컴퓨팅 시스템(또는 몇몇 다른 적절한 제 2 컴퓨팅 시스템)은 표면과 연관된 정보에 기초하여 표면이 어떻게 디스플레이되어야 하는지를 결정할 수 있다. 특정한 실시예들에서, 하나 이상의 표면들은 씬과 연관된 3D 공간 내에서의 특정된 위치들에 그것을 위치시키는 위치 정보를 포함할 수 있다. 제한으로서가 아닌 예로서, 도 4를 참조하면, 표면(450)은 연관된 위치 정보에 기초하여 그것의 예시된 위치에 위치될 수 있다. 이 예에서, 표면은 뷰어에 대하여 가변 깊이들을 갖고 3D 클록을 묘사하는 것처럼 보일 수 있지만(예컨대, 3시 영역보다는 9시 영역이 뷰어로부터 더 멀리 떨어져 보일 수 있다), 표면은, 특정한 실시예들에서, 뷰어를 향하는 편평한 표면일 수 있다(예컨대, 적어도 처음에 뷰포인트가 변하기 전에, 뷰어를 향하는 그것의 수직 벡터 포인트들). 오브젝트(들)의 임의의 시각적 표현들이 표면의 텍스처 데이터의 부분으로서 저장될 수 있다.
특정한 실시예들에서, 표면의 각각의 텍셀은 그것이 위치될 곳을 특정하는 연관된 위치 정보를 가질 수 있다. 특정한 실시예들에서, 제 1 광선-투사 프로세스와 유사하게, 제 2 광선-투사 프로세스는 어떤 표면들이 뷰 내에서 가시적인지, 및 표면들이 뷰에서 위치되는 곳을 결정하도록 가시성 테스트들을 수행하기 위해 사용될 수 있다. 제한으로서가 아닌 예로서, 도 4를 참조하면, 가상 광선(430)은 뷰포인트(420)에서 나오며 스크린(410)의 픽셀(415)(예컨대, HMD의 두 개의 아이피스들 중 하나의 디스플레이)과 교차할 수 있다. 제한으로서가 아닌 또 다른 예로서, 가상 광선(460)은 픽셀(470)과 교차할 수 있다. 특정한 실시예들에서, HMD의 컴퓨팅 시스템은 HMD의 광학 구조들(예컨대, HMD의 렌즈들)에 의해 도입된 왜곡 및/또는 다른 수차들(예컨대, 색 수차들)을 감안할 수 있다. 왜곡들/수차들은 수학적으로 정정될 수 있다. 이러한 정정은 도 4에 도시된 바와 같이, 그에 의해 가상 광선들이 왜곡들/수차들을 감안하기 위해 가상 광선들(예컨대, 가상 광선(430), 가상 광선(460))을 수학적으로 궤도-수정하는 왜곡 메시(440)를 통해 이동하는 프로세스로서 개념적으로 표현될 수 있다. 표면(450)의 위치 정보에 기초하여, 컴퓨팅 시스템은 가상 광선들의 각각이 표면(450)(또는 임의의 다른 표면)과 교차하는지 여부를 결정할 수 있으며, 표면(450) 상에서 가상 광선이 교차하는(교차한다면) 곳을 결정할 수 있다. 제한으로서가 아닌 예로서, 가상 광선(430)(왜곡/수차를 감안하기 위해 궤도 수정을 따르는)은 교차(455) 포인트에서의 표면(450)과 교차할 수 있다. 제한으로서가 아닌 또 다른 예로서, 가상 광선(460)(왜곡/수차를 감안하기 위해 궤도 수정을 따르는)은 표면(450) 또는 임의의 다른 표면과 교차하지 않을 수 있다.
예시적인 목적들을 위해, 예시적인 사용 케이스가 이제 도 2 내지 도 5에 예시된 시계 예를 사용하여 설명될 것이다. 도 2에서의 제 1 광선 투사/추적 프로세스는 특정한 시간을 갖고(예컨대, 시간 12:42:22) 제 1 관점에 대해 시계의 이미지를 렌더링할 수 있다. 이것은 프레임이 랩탑, 또는 HMD로부터 분리되는 몸체 상에서의 착용 가능한 디바이스와 같은, 또 다른 적절한 제 1 컴퓨팅 시스템에 의해 생성될 때의 시간일 수 있다. 상기 시간으로부터 다음 프레임까지 랩탑에 의해 생성되며(예시적인 목적들을 위해, 초당 1프레임으로 생성될 수 있다), 사용자의 관점은 제 2 관점으로 변할 수 있다. 변화를 감안하기 위해, 씬은 조정될 필요가 있을 것이다. 그러나, 제 1 몸체 시스템은 충분히 빠르게(예컨대, 1/200초로) 또 다른 씬을 렌더링할 수 없을 것이다. 따라서, 스크래치로부터 전체 씬을 렌더링하기보다는, HMD는 HMD의 최근 위치 및 배향(예컨대, HMD의 관성 측정 유닛에 기초하여 결정될 수 있는 바와 같이)에 의해 결정된 바와 같이 최근 관점 정보, 및 선택적으로 사용자의 응시(예컨대, 눈 추적에 의해 결정된 바와 같이)에 기초하여 랩탑에 의해 생성된 시계 이미지(여전히 12:42:22를 보여주는)에 대응하는 표면(예컨대, 도 3에서의 표면(320))을 휘게 하는 것을 맡을 수 있다. 이것은 도 4 내지 도 5에 도시된 광선-투사 및 샘플링 프로세스에 의해 예시된다. HMD는 다음 프레임이 랩탑에 의해 생성될 때까지(예컨대, 초당 1프레임으로 렌더링한다면, 시간 12:42:23을 보여주는 시계를 갖고) 이러한 방식으로 여러 서브프레임들을 생성할 수 있다.
특정한 실시예들에서, 제 1 및/또는 제 2 광선-투사 프로세스는 뷰포인트에서의 약간의 변화들을 감안하기 위해 사용자의 각각의 눈에 대해 별도로 수행될 수 있다(예컨대, 눈들의 상대적인 위치들에 기초하여). 제한으로서가 아닌 예로서, 제 1 및 제 2 광선-투사 프로세스들은 좌측 눈과 연관된 스크린에 대해서 및 우측 눈과 연관된 스크린에 대해서 수행될 수 있다. 이들 프로세스들은 서로 독립적으로 작동할 수 있으며 심지어 서로 동시에 이뤄지지 않고 기능할 수 있다.
도 5는 교차 포인트들에 대응하는 시각 정보를 식별하는 개념화를 예시한다. 특정한 실시예들에서, HMD의 컴퓨팅 시스템은 스크린(예컨대, 단일 눈에 대한 스크린) 상에서, 표면과 연관된 시각 정보에 기초하여 오브젝트(예컨대, 시계)를 묘사한 휘어진 표면을 디스플레이할 수 있다. 특정한 실시예들에서, HMD의 컴퓨팅 시스템은 대응하는 텍셀 어레이 상에서 표차 포인트들의 위치를 결정함으로써 교차 포인트들과 연관된 시각 정보(예컨대, RGBA 정보)를 결정할 수 있다. 제한으로서가 아닌 예로서, 도 5를 참조하면, 표면(예컨대, 도 4에서의 표면(450)일 수 있는)은 텍셀 어레이(520)에 대응할 수 있으며, 이것은 표면(510)에 대한 텍셀 정보(예컨대, RGBA 정보)를 포함한다. 이 예에서, 텍셀 어레이는, 표면(510)의 3D 위치 정보 중 임의의 것 없이, 전체적으로 2D 공간에 있을 수 있으며, 이것은 그것이 픽셀과 연관된 가상 광선의 교차 포인트의 시각 정보를 결정하기 위해 요구된 수학을 크게 단순화할 수 있다는 점에서 특히 유리할 수 있다. 결과적으로, 결정에 수반된 계산 태스크들은 더 적은 리소스들을 요구할 수 있으며 더 빠르고 효율적으로 행해질 수 있다. 제한으로서가 아닌 예로서, 표면(510)이 위치되는 3D 뷰 공간에서 3-차원(x, y, z)-좌표로 표현될 수 있는, 교차 포인트(515)는 텍셀 어레이(520)에서 2-차원(u, v)-좌표로 변환될 수 있다. 이 예에서, 표면(510)에서의 교차 포인트(515)는 텍셀 어레이(520)에서의 픽셀 샘플링 포인트(529)에 대응한다고 결정될 수 있다. 컴퓨팅 시스템(예컨대, HMD의 탑재된 컴퓨팅 시스템)은 대응하는 텍셀 어레이와 연관된 정보에 기초하여 교차 포인트들에 대한 시각 정보를 결정할 수 있다. 제한으로서가 아닌 예로서, 교차 포인트(515)에 대한 RGBA 정보는 텍셀 어레이(520)에서 대응하는 샘플링 포인트(529)와 연관된 RGBA 정보에 기초하여 결정될 수 있다.
특정한 실시예들에서, 표면은 각각의 텍셀 내에서(예컨대, 텍셀(525)에 대한 단일 텍셀 중심(527)) 별개의 수의 포인트들에 대한 정보만을 가질 수 있다. 이러한 경우들에서, HMD의 컴퓨팅 시스템은 특정한 샘플링 포인트와 연관된 시각 정보(예컨대, RGBA 정보)를 결정하기 위해 하나 이상의 보간들(예컨대, 이중 선형 또는 삼중 선형 보간) 또는 임의의 다른 적절한 산출들을 수행할 수 있다. 제한으로서가 아닌 예로서, 컴퓨팅 시스템은 샘플링 포인트(529)에 대한 RGBA 정보를 결정하기 위해 텍셀 중심(527) 및 다른 이웃하는 텍셀 중심들(예컨대, 샘플링 포인트(529)를 둘러싼 다른 3개의 텍셀 중심들)과 연관된 RGBA 정보를 사용하여 샘플링 포인트(529)에 대한 이중 선형 보간을 수행할 수 있다. HMD는 대응하는 픽셀 내에서, 결정된 RGBA 정보에 매칭될 수 있는 컬러 및 투명 레벨을 디스플레이할 수 있다. 제한으로서가 아닌 예로서, 도 4 및 도 5를 참조하면, 샘플링 포인트(529)는 픽셀(415)에 대응할 수 있으며, 그 경우에, 샘플링 포인트(529)에 대해 결정된 RGBA 정보는 픽셀(415) 내에서 디스플레이될 컬러 및 투명 레벨을 결정하기 위해 사용될 수 있다. 제한으로서가 아닌 이 예에서 형성하면, 광선들은 스크린(410)의 픽셀들 모두에 대해 투사되며 광선들이 표면에 교차하는 임의의 다른 포인트들(예컨대, 표면(450)에 교차하는 교차 포인트(480), 상이한 표면과 연관될 수 있는 가상 광선(460)의 교차 포인트)에 대한 시각 정보를 디스플레이할 수 있다.
특정한 실시예들에서, HMD의 컴퓨팅 시스템은 임의의 주어진 시간에 HMD를 착용한 사용자의 관점을 결정하기 위해 HMD의 위치 및 배향을 연속적으로 또는 반-연속적으로 추적할 수 있다(예컨대, HMD 상에서 또는 HMD를 추적하는 원격 디바이스 상에서 관성, 광학, 깊이, 및/또는 다른 센서들을 사용하여). 특정한 실시예들에서, 컴퓨팅 시스템은 또한 사용자의 눈 위치를 연속적으로 또는 반-연속적으로 추적할 수 있다(예컨대, 사용자의 응시에 의존적일 수 있는 HMD의 렌즈들에서 기인한 왜곡들을 조정하기 위해). 불운하게도, 그래픽들을 렌더링하는 것은 계산적으로 값비싸며 시간이 걸리므로, 새로운 프레임들은 즉각적으로 생성될 수 없다. 관점에서의 변화를 반영하기 위해 디스플레이를 업데이트할 때 상당한 대기시간이 있다면, 사용자는 대기시간을 지각할 수 있어서, 감각적 부조화를 생성할 수 있다. 여기에서의 다른 곳에서 추가로 설명되는 바와 같이, 이러한 감각적 부조화는 가상 현실 메스꺼움과 같은, 사용자에 대한 불쾌한 효과들에 기여할 수 있거나 또는 그 외 사용자 경험을 중단시킬 수 있다. 이러한 부조화를 방지하기 위해, 사용자에게 디스플레이되는 것은 매우 빠른 레이트로 관점에서의 변화들을 감안할 필요가 있을 것이다. 제한으로서가 아닌 예로서, 씬의 뷰는 1/200초마다 수정될 필요가 있을 것이다(예컨대, 상기를 넘는 임의의 대기시간은 수용 가능하지 않은 정도로 사용자에게 지각될 수 있기 때문에). 많은 경우들에서, 컴퓨팅 시스템이 이러한 빠른 페이스로 관점에서의 변화들을 감안하기 위해 전체 뷰들(예컨대, 다각형들로부터의)을 재-렌더링하는 것은 현실적이지 않거나 또는 실현 가능하지 않을 수 있다. 이와 같이, 본 발명의 손쉬운 방법들은 뷰에 대한 변화들을 빠르게 근사하도록 요구될 수 있다.
특정한 실시예들에서, 뷰로의 변화들을 근사하기 위한 하나의 이러한 손쉬운 방법은 뷰 내에서 표면들을 "재샘플링하는 것"을 수반할 수 있다(전체 뷰를 재-렌더링하기보다는). 특정한 실시예들에서, 재샘플링은 표면들이 조정된 관점으로부터 어떻게 보일 수 있는지에 대한 근사를 결정하기 위해 추가 광선-투사 프로세스를 수행하는 것을 수반할 수 있다. 뷰 내에서 제한된 수의 표면들(예컨대, 16개 표면들)을 재샘플링하는 것에 초점을 맞춤으로써, 뷰는 빠르게 - 대기시간의 사용자 지각을 방지하거나 또는 감소시키기에 충분히 빠르게 수정될 수 있다. 제한으로서가 아닌 예로서, 추가 제 2 광선-투사 프로세스들은, 관점에서의 가능한 변화들(예컨대, HMD의 위치 또는 배향에서의 변화로부터)을 감안하기 위해 1/200초마다 수행될 수 있다. 특정한 실시예들에서, HMD의 탑재된 컴퓨팅 시스템은 도 4에 대하여 상기 개괄된 바와 같이 광선-투사 프로세스를 수행함으로써 표면들 중 하나 이상을 재샘필링할 수 있지만, 이때 뷰포인트(420)는 사용자의 최근 관점을 반영하기 위해 조정된다(예컨대, 상이한 위치 및/또는 배향으로 이동된다). 관점이 이전 광선-투사 프로세스 이래 변하였다면, 가상 광선들은 그에 따라 표면의 상이한 포인트들과 교차할 수 있다. 제한으로서가 아닌 예로서, 도 4를 참조하면, 뷰 포인트(420)가 우측으로 약간 시프트되었다면(약간의 머리 움직임의 결과로서), 광선(430)의 교차(455) 포인트는 그에 부응하여 좌측으로 시프트할 수 있다. 이러한 방식으로 재샘플링하는 것에 기초하여 뷰를 수정하는 것은 단지 뷰가 관점에서의 변화에 의해 어떻게 변경될 것인지에 대한 근사일 수 있으며, 이러한 근사는 관점에서의 비교적 작은 변화들에 대해서만 작동할 수 있다. 그러나, 목적이, 완전히 렌더링된 프레임들이 사용자의 랩탑 또는 이동 전화에 의해 생성될 때 그 사이에서의 비교적 짧은 시간 기간들에서(예컨대, 약 100분의 1초) 일어나는 변화들을 감안하는 것이기 때문에, 이것은 요구되는 모든 것일 수 있다. 본질적으로, 그것은 뷰가 재-렌더링될 수 있을 때까지(예컨대, 착용 가능한 디바이스와 같은 더 강력한 컴퓨팅 시스템에 의해) 임시 해결책일 수 있다. 제한으로서 아닌 예로서, HMD로부터 분리될 수 있는 더 강력한 컴퓨팅 시스템(예컨대, 사용자의 벨트 또는 허리둘레에 고정된 착용 가능한 디바이스)은 1/60초마다 스크래치로부터 뷰를 재-렌더링할 수 있으며 그것들이 렌더링될 때 이들 재-렌더링된 뷰들을 HMD 디바이스로 전송할 수 있다. 이 예에서, HMD 디바이스는, 1/60초마다 재-렌더링된 뷰들을 수신하는 것 사이에서의 시간에, 사용자 관점에서의 빠른 변화들을 감안하기 위해 스스로 표면들을 수정할 수 있다(예컨대, 1/200초마다).
특정한 실시예들에서, 조명 상태들에서의 변화들은 수정의 효율 및 속도를 증가시키기 위해 재샘플링 프로세스에서 무시될 수 있다. 조명 변화들은 재샘플링 프로세스에 의해 고려된 짧은 시간 기간들에서 많아 봐야 무시해도 될 정도이며, 그것들은 탈 없이 무시될 수 있다. 이것은 이미 실-세계 조명이 있으며 조명이 고려되는 관점에서의 비교적 작은 변화들(예컨대, 약 100분의 1초의 짧은 시간 기간 동안 발생하는 변화)로부터 많이 변하지 않을 수 있는, AR의 콘텍스트에서 특히 사실일 수 있다.
본 개시는 AR 환경에서 AR 오브젝트들에 초점을 맞추지만, VR 환경에서 VR 오브젝트들을 또한 고려한다. 제한으로서가 아닌 예로서, VR의 경우에, 제 1 컴퓨팅 시스템(예컨대, 착용 가능한 디바이스, 핸드헬드 디바이스, 랩탑)은 사용자로의 디스플레이를 위해 전체 VR 초기 씬을 렌더링할 수 있다. 표면들은 씬 내에서 VR 오브젝트들에 대해 제 1 컴퓨팅 시스템에 의해 생성될 수 있다. 초기 씬 및 표면들은, 관점에서의 검출된 변화들(예컨대, 여기에서의 다른 곳에서 추가로 설명되는 바와 같이 HMD의 위치 및 배향에 기초하여 검출된)에 응답하여 표면들을 수정할 수 있는 별개의 컴퓨팅 시스템을 포함할 수 있는, VR HMD로 전송될 수 있다. 대안적인 실시예에서, VR HMD는 간단히 초기 씬을 수신할 수 있으며 그것이 그 후 수정하는 씬에 대한 표면들을 스스로 생성할 수 있다.
도 6a는 표면들에 기초하여 프레임들을 생성하기 위한 예시적인 방법(600)을 예시한다. 방법은 단계 610에서 시작할 수 있으며, 여기에서 뷰의 제 1 관점은 제 1 시간에 렌더링된다. 단계 620에서, 표면은 뷰에서 하나 이상의 오브젝트들에 대해 생성된다. 단계 630에서, 가시성 테스트는 제 2 시간에 제 2 관점으로부터 표면의 가시성을 결정하기 위해 수행된다. 단계 640에서, 프레임은 가시성 테스트에 기초하여 디스플레이를 위해 생성된다. 특정한 실시예들은 적절한 경우, 도 6의 방법의 하나 이상의 단계들을 반복할 수 있다. 본 개시는 특정한 순서로 발생한 것으로 도 6의 방법의 특정한 단계들을 설명하고 예시하지만, 본 개시는 도 6의 임의의 적절한 단계들이 임의의 적절한 순서로 발생한다고 고려한다. 게다가, 본 개시는 도 6의 방법의 특정한 단계들을 포함하여, 표면들에 기초하여 프레임들을 생성하기 위한 예시적인 방법을 설명하고 예시하지만, 본 개시는 적절한 경우, 도 6의 방법의 단계들 중 모두, 일부를 포함하거나 또는 포함하지 않을 수 있는, 임의의 적절한 단계들을 포함하여, 표면들에 기초하여 프레임들을 생성하기 위한 임의의 적절한 방법을 고려한다. 더욱이, 본 개시는 도 6의 방법의 특정한 단계들을 실행하는 특정한 구성요소들, 디바이스들, 또는 시스템들을 설명하고 예시하지만, 본 개시는 도 6의 방법의 임의의 적절한 단계들을 실행하는 임의의 적절한 구성요소들, 디바이스들, 또는 시스템들의 임의의 적절한 조합을 고려한다.
도 6b는 표면들에 기초하여 서브프레임들을 생성하기 위한 예시적인 방법(650)을 예시한다. 방법은 단계 660에서 시작할 수 있으며, 여기에서 하나 이상의 컴퓨팅 시스템들은 사용자의 제 1 뷰포인트로부터 가상 씬을 묘사한 렌더링된 프레임을 액세스할 수 있다. 렌더링된 프레임은 가상 씬에서 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성될 수 있다. 단계 670에서, 하나 이상의 컴퓨팅 시스템들은 렌더링된 프레임에 기초하여 하나 이상의 표면들을 생성할 수 있다. 각각의 표면은 3D 공간 내에 배치될 수 있으며 시각 정보를 포함한다. 단계 680에서, 하나 이상의 컴퓨팅 시스템들은 3D 공간에서 사용자의 제 2의, 현재 뷰포인트를 결정할 수 있다. 단계 685에서, 하나 이상의 컴퓨팅 시스템들은 제 2 뷰포인트로부터 하나 이상의 표면들의 가시성을 결정할 수 있다. 단계 690에서, 하나 이상의 컴퓨팅 시스템들은 시각 정보 및 하나 이상의 표면들의 결정된 가시성에 기초하여 제 2 뷰포인트로부터 가상 씬을 묘사한 서브프레임을 렌더링할 수 있다. 단계 690에 의해 예시된 바와 같이, 하나 이상의 표면들에 기초한 서브프레임 생성 프로세스는 새로운 프레임이 이용 가능할 때까지(단계 660으로 돌아가는 화살표로 표현됨) 반복할 수 있다(단계 680로 돌아가는 화살표로 표현됨).
도 7은 디스플레이 엔진(700)에 대한 시스템 다이어그램을 예시한다. 디스플레이 엔진(700)은 4개의 유형들의 최상위 레벨 블록들을 포함할 수 있다. 도 7에 도시된 바와 같이, 이들 블록들은 제어 블록(710), 변환 블록들(720a 및 720b), 픽셀 블록들(730a 및 730b), 및 디스플레이 블록들(740a 및 740b)을 포함할 수 있다. 디스플레이 엔진(700)의 구성요소들 중 하나 이상은 하나 이상의 고속 버스, 공유 메모리, 또는 임의의 다른 적절한 방법을 통해 통신하도록 구성될 수 있다. 도 7에 도시된 바와 같이, 디스플레이 엔진(700)의 제어 블록(710)은 변환 블록들(720a 및 720b) 및 픽셀 블록들(730a 및 730b)과 통신하도록 구성될 수 있다. 디스플레이 블록들(740a 및 740b)은 제어 블록(710)과 통신하도록 구성될 수 있다. 여기에서 추가로 상세하게 설명되는 바와 같이, 이러한 통신은 데이터뿐만 아니라 제어 신호들, 인터럽트들 및 다른 명령들을 포함할 수 있다.
특정한 실시예들에서, 제어 블록(710)은 1차 렌더링 구성요소로부터 입력 데이터 스트림(760)을 수신하며 디스플레이에 대한 렌더링을 마무리하기 위해 디스플레이 엔진(700)에서 파이프라인을 초기화할 수 있다. 특정한 실시예들에서, 입력 데이터 스트림(760)은 1차 렌더링 구성요소로부터의 데이터 및 제어 패킷들을 포함할 수 있다. 데이터 및 제어 패킷들은 텍스처 데이터 및 위치 데이터를 포함한 하나 이상의 표면들 및 부가적인 렌더링 명령들과 같은 정보를 포함할 수 있다. 제어 블록(710)은 요구된 대로 데이터를 디스플레이 엔진(700)의 하나 이상의 다른 블록들로 분배할 수 있다. 제어 블록(710)은 디스플레이될 하나 이상의 프레임들에 대한 파이프라인 프로세싱을 개시할 수 있다. 특정한 실시예들에서, HMD는 다수의 디스플레이 엔진들(700)을 포함할 수 있으며 각각은 그 자신의 제어 블록(710)을 포함할 수 있다.
특정한 실시예들에서, 변환 블록들(720a 및 720b)은 인공 현실 씬에서 디스플레이될 표면들에 대한 초기 가시성 정보를 결정할 수 있다. 일반적으로, 변환 블록들(예컨대, 변환 블록들(720a 및 720b))은 스크린상에서의 픽셀 위치들로부터 광선들을 투사하며 픽셀 블록들(730a 및 730b)로 전송할 필터 명령들(예컨대, 이중 선형 또는 다른 유형들의 보간 기술들에 기초한 필터링)을 생성할 수 있다. 변환 블록들(720a 및 720b)은 사용자의 현재 뷰포인트로부터(예컨대, 관성 측정 유닛들, 눈 추적기들 및/또는 동시적 국소화 및 매핑(SLAM)과 같은, 임의의 적절한 추적/국소화 알고리즘들을 사용하여 결정된) 표면들이 배치되는 인공 현실로 광선 투사를 수행할 수 있으며 각각의 픽셀 블록들(730a 및 730b)로 전송할 결과들을 생성할 수 있다.
일반적으로, 변환 블록들(720a 및 720b)은 각각 특정한 실시예들에 따라, 4-스테이지 파이프라인을 포함할 수 있다. 변환 블록의 스테이지들은 다음과 같이 진행될 수 있다. 광선 투사기는 타일들(예컨대, 각각의 타일은 16×16 정렬 픽셀들을 포함할 수 있다)로 불리우는, 하나 이상의 정렬된 픽셀들의 어레이들에 대응하는 광선 번들들을 발행할 수 있다. 광선 번들들은, 하나 이상의 왜곡 메시들에 따라, 인공 현실 씬에 들어가기 전에, 휘어질 수 있다. 왜곡 메시들은 적어도, HMD의 디스플레이들(750a 및 750b)에서 기이한 기하학적 왜곡 효과들을 정정하도록 구성될 수 있다. 변환 블록들(720a 및 720b)은 각각의 표면에 대한 경계 박스들에 각각의 타일의 경계 박스를 비교함으로써 각각의 광선 번들이 씬에서의 표면들과 교차하는지를 결정할 수 있다. 광선 번들이 오브젝트와 교차하지 않는다면, 그것은 폐기될 수 있다. 타일-표면 교차 포인트들이 검출되며, 대응하는 타일-표면 쌍(725a 및 725b)이 픽셀 블록들(730a 및 730b)로 전달된다.
일반적으로, 픽셀 블록들(730a 및 730b)은 특정한 실시예들에 따라, 픽셀 컬러 값들을 생성하기 위해 타일-표면 쌍들(725a 및 725b)로부터 컬러 값들을 결정한다. 각각의 픽셀에 대한 컬러 값들은 제어 블록(710)에 의해 수신되고 저장된 표면들의 텍스처 데이터(예컨대, 입력 데이터 스트림(760)의 부분으로서)로부터 샘플링된다. 픽셀 블록들(730a 및 730b)은 각각, 변환 블록들(720a 및 720b)로부터 타일-표면 쌍들(725a 및 725b)을 수신하며, 이중 선형 필터링을 스케줄링한다. 각각의 타일-표면 쌍(725a 및 725b)에 대해, 픽셀 블록들(730a 및 730b)은 투사된 타일이 표면과 교차하는 곳에 대응하는 컬러 값들을 사용하여 타일 내에서 픽셀들에 대한 컬러 정보를 샘플링할 수 있다. 특정한 실시예들에서, 픽셀 블록들(730a 및 730b)은 각각의 픽셀에 대해 적색, 녹색, 및 청색 컬러 구성요소들을 개별적으로 프로세싱할 수 있다. 픽셀 블록들(730a 및 730b)은 그 후 각각 픽셀 컬러 값들(735a 및 735b)을 디스플레이 블록들(740a 및 740b)로 출력할 수 있다.
일반적으로, 디스플레이 블록들(740a 및 740b)은 픽셀 블록들(730a 및 730b)로부터 픽셀 컬러 값들(735a 및 735b)을 수신하고, 디스플레이의 스캔라인 출력에 더 적합하도록 데이터의 포맷을 변환하고, 하나 이상의 밝기 보정들을 픽셀 컬러 값들(735a 및 735b)에 적용하며, 디스플레이들(750a 및 750b)로의 출력을 위해 픽셀 컬러 값들(735a 및 735b)을 준비할 수 있다. 디스플레이 블록들(740a 및 740b)은 픽셀 블록들(730a 및 730b)에 의해 생성된 타일-순서 픽셀 컬러 값들(735a 및 735b)을 디스플레이들(750a 및 750b)에 의해 요구될 수 있는, 스캔라인- 또는 로우-순서 데이터로 변환할 수 있다. 밝기 보정들은 임의의 요구된 밝기 보정, 감마 매핑, 및 디더링을 포함할 수 있다. 디스플레이 블록들(740a 및 740b)은 정정된 픽셀 컬러 값들과 같은, 픽셀 출력(745a 및 745b)을 직접 디스플레이들(750a 및 750b)로 제공할 수 있거나 또는 픽셀 출력(745a 및 745b)을 다양한 포맷들로 디스플레이 엔진(700)의 외부에 있는 블록으로 제공할 수 있다. 예를 들어, HMD는 백엔드 컬러 프로세싱을 추가로 맞춤화하기 위해, 디스플레이로 더 넓은 인터페이스를 지원하기 위해, 또는 디스플레이 속도 또는 충실도를 최적화하기 위해 부가적인 하드웨어 또는 소프트웨어를 포함할 수 있다.
도 8은 예시적인 컴퓨터 시스템(800)을 예시한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템(800)은 여기에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(800)은 여기에서 설명되거나 또는 예시된 기능을 제공한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템(800) 상에서 구동하는 소프트웨어는 여기에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행하거나 또는 여기에서 설명되거나 또는 예시된 기능을 제공한다. 특정한 실시예들은 하나 이상의 컴퓨터 시스템(800)의 하나 이상의 부분들을 포함한다. 여기에서, 컴퓨터 시스템에 대한 참조는 컴퓨팅 디바이스를 포함하며, 적절한 경우 그 반대 또한 마찬가지일 수 있다. 게다가, 컴퓨터 시스템에 대한 참조는 적절한 경우, 하나 이상의 컴퓨터 시스템들을 포함할 수 있다.
본 개시는 임의의 적절한 수의 컴퓨터 시스템들(800)을 고려한다. 본 개시는 임의의 적절한 물리적 형태를 취하는 컴퓨터 시스템(800)을 고려한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(800)은 내장형 컴퓨터 시스템, 시스템-온-칩(SOC), 단일-보드 컴퓨터 시스템(SBC)(예를 들어, 컴퓨터-온-모듈(COM) 또는 시스템-온-모듈(SOM)과 같은), 데스크탑 컴퓨터 시스템, 랩탑 또는 노트북 컴퓨터 시스템, 대화형 키오스크, 메인프레임, 컴퓨터 시스템들의 메시, 이동 전화, 개인용 디지털 보조기(PDA), 서버, 태블릿 컴퓨터 시스템, 증강/가상 현실 디바이스, 또는 이들 중 둘 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(800)은 하나 이상의 컴퓨터 시스템들(800)을 포함할 수 있고; 통합형 또는 분산형일 수 있고; 다수의 위치들을 포괄하고; 다수의 기계들을 포괄하고; 다수의 데이터 센터들을 포괄하거나; 또는 하나 이상의 네트워크들에서 하나 이상의 클라우드 구성요소들을 포함할 수 있는, 클라우드에 존재할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템들(800)은 실질적인 공간적 또는 시간적 제한 없이, 여기에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행할 수 있다. 제한으로서가 아닌 예로서, 하나 이상의 컴퓨터 시스템들(800)은 여기에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 실시간으로 또는 배치 모드로 수행할 수 있다. 하나 이상의 컴퓨터 시스템들(800)은 적절한 경우, 여기에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 상이한 시간들에서 또는 상이한 위치들에서 수행할 수 있다.
특정한 실시예들에서, 컴퓨터 시스템(800)은 프로세서(802), 메모리(804), 저장장치(806), 입력/출력(I/O) 인터페이스(808), 통신 인터페이스(810), 및 버스(812)를 포함한다. 본 개시는 특정한 배열에서 특정한 수의 특정한 구성요소들을 가진 특정한 컴퓨터 시스템을 설명하고 예시하지만, 본 개시는 임의의 적절한 배열에서 임의의 적절한 수의 임의의 적절한 구성요소들을 가진 임의의 적절한 컴퓨터 시스템을 고려한다.
특정한 실시예들에서, 프로세서(802)는 컴퓨터 프로그램을 구성하는 것들과 같은, 명령들을 실행하기 위한 하드웨어를 포함한다. 제한으로서가 아닌 예로서, 명령들을 실행하기 위해, 프로세서(802)는 내부 레지스터, 내부 캐시, 메모리(804), 또는 저장장치(806)로부터 명령들을 검색(또는 인출)하고; 그것들을 디코딩하고 실행하며; 그 후 하나 이상의 결과들을 내부 레지스터, 내부 캐시, 메모리(804), 또는 저장장치(806)로 기록할 수 있다. 특정한 실시예들에서, 프로세서(802)는 데이터, 명령들, 또는 어드레스들을 위한 하나 이상의 내부 캐시들을 포함할 수 있다. 본 개시는 적절한 경우, 임의의 적절한 수의 임의의 적절한 내부 캐시들을 포함한 프로세서(802)를 고려한다. 제한으로서가 아닌 예로서, 프로세서(802)는 하나 이상의 명령캐시들, 하나 이상의 데이터 캐시들, 및 하나 이상의 변환 색인 버퍼들(TLB들)을 포함할 수 있다. 명령캐시들에서의 명령들은 메모리(804) 또는 저장장치(806)에서의 명령들에 대해 복사될 수 있으며, 명령캐시들은 프로세서(802)에 의한 이들 명령들의 검색의 속도를 높일 수 있다. 데이터 캐시들에서의 데이터는 그것에 대해 동작할 프로세서(802)에서 실행하는 명령들; 프로세서(802)에서 실행하는 뒤이은 명령들에 의한 액세스를 위해 또는 메모리(804) 또는 저장장치(806)로 기록하기 위해 프로세서(802)에서 실행된 이전 명령들의 결과들; 또는 다른 적절한 데이터에 대한 메모리(804) 또는 저장장치(806)에서의 데이터에 대해 복사될 수 있다. 데이터 캐시들은 프로세서(802)에 의한 판독 또는 기록 동작들의 속도를 높일 수 있다. TLB들은 프로세서(802)에 대한 가상-어드레스 변환의 속도를 높일 수 있다. 특정한 실시예들에서, 프로세서(802)는 데이터, 명령들, 또는 어드레스들에 대한 하나 이상의 내부 레지스터들을 포함할 수 있다. 본 개시는 적절한 경우, 임의의 적절한 수의 임의의 적절한 내부 레지스터들을 포함한 프로세서(802)를 고려한다. 적절한 경우, 프로세서(802)는 하나 이상의 산술 논리 유닛들(ALU들)을 포함하고; 다중-코어 프로세서일 수 있거나; 또는 하나 이상의 프로세서들(802)을 포함할 수 있다. 본 개시는 특정한 프로세서를 설명하고 예시하지만, 본 개시는 임의의 적절한 프로세서를 고려한다.
특정한 실시예들에서, 메모리(804)는 프로세서(802)가 실행할 명령들 또는 프로세서(802)가 동작할 데이터를 저장하기 위한 메인 메모리를 포함한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(800)은 저장장치(806) 또는 또 다른 소스(예를 들어, 또 다른 컴퓨터 시스템(800)과 같은)로부터 메모리(804)로 명령들을 로딩할 수 있다. 프로세서(802)는 그 후 메모리(804)로부터 내부 레지스터 또는 내부 캐시로 명령들을 로딩할 수 있다. 명령들을 실행하기 위해, 프로세서(802)는 내부 레지스터 또는 내부 캐시로부터 명령들을 검색하고 그것들을 디코디할 수 있다. 명령들의 실행 동안 또는 그 후, 프로세서(802)는 하나 이상의 결과들(중간 또는 최종 결과들일 수 있는)을 내부 레지스터 또는 내부 캐시로 기록할 수 있다. 프로세서(802)는 그 후 이들 결과들 중 하나 이상을 메모리(804)로 기록할 수 있다. 특정한 실시예들에서, 프로세서(802)는 하나 이상의 내부 레지스터들 또는 내부 캐시들에서 또는 메모리(804)에서 명령들만을 실행하며(저장장치(806) 또는 다른 곳과 반대로) 하나 이상의 내부 레지스터들 또는 내부 캐시들에서 또는 메모리(804)에서 단지 데이터에 대해서만 동작한다(저장장치(806) 또는 다른 곳과 반대로). 하나 이상의 메모리 버스들(각각은 어드레스 버스 및 데이터 버스를 포함할 수 있다)은 프로세서(802)를 메모리(804)에 결합할 수 있다. 버스(812)는 이하에서 설명되는 바와 같이, 하나 이상의 메모리 버스들을 포함할 수 있다. 특정한 실시예들에서, 하나 이상의 메모리 관리 유닛들(MMU들)은 프로세서(802)와 메모리(804) 사이에 존재하며 프로세서(802)에 의해 요청된 메모리(804)로의 액세스들을 가능하게 한다. 특정한 실시예들에서, 메모리(804)는 랜덤 액세스 메모리(RAM)를 포함한다. 이러한 RAM은 적절한 경우, 휘발성 메모리일 수 있다. 적절한 경우, 이러한 RAM은 동적 RAM(DRAM) 또는 정적 RAM(SRAM)일 수 있다. 게다가, 적절한 경우, 이러한 RAM은 단일-포트 또는 다중-포트 RAM일 수 있다. 본 개시는 임의의 적절한 RAM을 고려한다. 메모리(804)는 적절한 경우, 하나 이상의 메모리들(804)을 포함할 수 있다. 본 개시는 특정한 메모리를 설명하고 예시하지만, 본 개시는 임의의 적절한 메모리를 고려한다.
특정한 실시예들에서, 저장장치(806)는 데이터 또는 명령들을 위한 대용량 저장장치를 포함한다. 제한으로서가 아닌 예로서, 저장장치(806)는 하드 디스크 드라이브(HDD), 플로피 디스크 드라이브, 플래시 메모리, 광학 디스크, 자기-광학 디스크, 자기 테이프, 또는 범용 직렬 버스(USB) 드라이브 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 저장장치(806)는 적절한 경우, 착탈 가능한 또는 착탈 가능하지 않은(또는 고정된) 미디어를 포함할 수 있다. 저장장치(806)는 적절한 경우, 시스템(800)의 내부에 있거나 또는 외부에 있을 수 있다. 특정한 실시예들에서, 저장장치(806)는 비-휘발성, 고체-상태 메모리이다. 특정한 실시예들에서, 저장장치(806)는 판독-전용 메모리(ROM)를 포함한다. 적절한 경우, 이러한 ROM은 마스크-프로그램된 ROM, 프로그램 가능한 ROM(PROM), 삭제 가능한 PROM(EPROM), 전기적으로 삭제 가능한 PROM(EEPROM), 전기적으로 변경 가능한 ROM(EAROM), 또는 플래시 메모리 또는 이들 중 둘 이상의 조합일 수 있다. 본 개시는 임의의 적절한 물리적 형태를 취한 대용량 저장장치(806)를 고려한다. 저장장치(806)는 적절한 경우, 프로세서(802)와 저장장치(806) 간의 통신을 가능하게 하는 하나 이상의 저장 제어 유닛들을 포함할 수 있다. 적절한 경우, 저장장치(806)는 하나 이상의 저장장치(806)를 포함할 수 있다. 본 개시는 특정한 저장장치를 설명하고 예시하지만, 본 개시는 임의의 적절한 저장장치를 고려한다.
특정한 실시예들에서, I/O 인터페이스(808)는, 컴퓨터 시스템(800)과 하나 이상의 I/O 디바이스들 사이에서 통신을 위한 하나 이상의 인터페이스들을 제공하는, 하드웨어, 소프트웨어, 또는 양쪽 모두를 포함한다. 컴퓨터 시스템(800)은 적절한 경우, 이들 I/O 디바이스들 중 하나 이상을 포함할 수 있다. 이들 I/O 디바이스들 중 하나 이상은 사람과 컴퓨터 시스템(800) 사이에서 통신을 가능하게 할 수 있다. 제한으로서가 아닌 예로서, I/O 디바이스는 키보드, 키패드, 마이크로폰, 모니터, 마우스, 프린터, 스캐너, 스피커, 스틸 카메라, 스타일러스, 태블릿, 터치 스크린, 트랙볼, 비디오 카메라, 또 다른 적절한 I/O 디바이스 또는 이들 중 둘 이상의 조합을 포함할 수 있다. I/O 디바이스는 하나 이상의 센서들을 포함할 수 있다. 본 개시는 그것들을 위한 임의의 적절한 I/O 디바이스들 및 임의의 적절한 I/O 인터페이스들(808)을 고려한다. 적절한 경우, I/O 인터페이스(808)는 프로세서(802)로 하여금 이들 I/O 디바이스들 중 하나 이상을 구동할 수 있게 하는 하나 이상의 디바이스 또는 소프트웨어 드라이버들을 포함할 수 있다. I/O 인터페이스(808)는 적절한 경우, 하나 이상의 I/O 인터페이스들(808)을 포함할 수 있다. 본 개시는 특정한 I/O 인터페이스를 설명하고 예시하지만, 본 개시는 임의의 적절한 I/O 인터페이스를 고려한다.
특정한 실시예들에서, 통신 인터페이스(810)는 컴퓨터 시스템(800) 및 하나 이상의 다른 컴퓨터 시스템들(800) 또는 하나 이상의 네트워크들 사이에서의 통신(예컨대, 패킷-기반 통신과 같은)을 위한 하나 이상의 인터페이스들을 제공하는 하드웨어, 소프트웨어, 또는 양쪽 모두를 포함한다. 제한으로서가 아닌 예로서, 통신 인터페이스(810)는 이더넷 또는 다른 유선-기반 네트워크와 통신하기 위한 네트워크 인터페이스 제어기(NIC) 또는 네트워크 어댑터 또는 WI-FI 네트워크와 같은, 무선 네트워크와 통신하기 위한 무선 NIC(WNIC) 또는 무선 어댑터를 포함할 수 있다. 본 개시는 그것을 위한 임의의 적절한 네트워크 및 임의의 적절한 통신 인터페이스(810)를 고려한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(800)은 애드 혹(ad hoc) 네트워크, 개인 영역 네트워크(PAN), 근거리 네트워크(LAN), 광역 네트워크(WAN), 대도시 영역 네트워크(MAN), 또는 인터넷의 하나 이상의 부분들 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 이들 네트워크들 중 하나 이상의 하나 이상의 부분들은 유선 또는 무선일 수 있다. 예로서, 컴퓨터 시스템(800)은 무선 PAN(WPAN)(예를 들어, BLUETOOTH WPAN과 같은), WI-FI 네트워크, WI-MAX 네트워크, 휴재 전화 네트워크(예를 들어, 이동 통신들을 위한 전역적 시스템(GSM) 네트워크와 같은), 또는 다른 적절한 무선 네트워크, 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 컴퓨터 시스템(800)은 적절한 경우, 이들 네트워크들 중 임의의 것을 위한 임의의 적절한 통신 인터페이스(810)를 포함할 수 있다. 통신 인터페이스(810)는 적절한 경우, 하나 이상의 통신 인터페이스들(810)을 포함할 수 있다. 본 개시는 특정한 통신 인터페이스를 설명하고 예시하지만, 본 개시는 임의의 적절한 통신 인터페이스를 고려한다.
특정한 실시예들에서, 버스(812)는 컴퓨터 시스템(800)의 구성요소들을 서로 결합하는 하드웨어, 소프트웨어, 또는 양쪽 모두를 포함한다. 제한으로서가 아닌 예로서, 버스(812)는 가속화 그래픽 포트(AGP) 또는 다른 그래픽 버스, 강화된 산업 표준 아키텍처(EISA) 버스, 프론트-사이드 버스(FSB), HYPERTRANSPORT(HT) 상호연결, 산업 표준 아키텍처(ISA) 버스, INFINIBAND 상호연결, 저-핀-카운트(LPC) 버스, 메모리 버스, 마이크로 채널 아키텍처(MCA) 버스, 주변 구성요소 상호연결(PCI) 버스, PCI-고속(PCI-e) 버스, 직렬 고급 기술 접속(SATA) 서브, 비디오 전자장치 표준 협회 로컬(VLB) 버스, 또는 또 다른 적절한 버스 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 버스(812)는 적절한 경우, 하나 이상의 버스들(812)을 포함할 수 있다. 본 개시는 특정한 버스를 설명하고 예시하지만, 본 개시는 임의의 적절한 버스 또는 상호연결을 고려한다.
여기에서, 컴퓨터-판독 가능한 비-일시적 저장 매체 또는 미디어는 적절한 경우, 하나 이상의 반도체-기반 또는 다른 집적-회로들(IC들)(예를 들어, 필드-프로그램 가능한 게이트 어레이들(FPGA들) 또는 애플리케이션-특정 IC들(ASIC들)과 같은), 하드 디스크 드라이브들(HDD들), 하이브리드 하드 드라이브들(HHD들), 광학 디스크들, 광학 디스크 드라이브들(ODD들), 자기-광학 디스크들, 자기-광학 드라이브들, 플로피 디스켓들, 플로피 디스크 드라이브들(FDD들), 자기 테이프들, 고체-상태 드라이브들(SSD들), RAM-드라이브들, SECURE DIGITAL 카드들 또는 드라이브들, 임의의 다른 적절한 컴퓨터-판독 가능한 비-일시적 저장 미디어, 또는 이들 중 둘 이상의 임의의 적절한 조합을 포함할 수 있다.
여기에서, "또는"은 달리 명확하게 표시되거나 또는 맥락으로 달리 표시되지 않는다면, 포괄적이며 배타적이지 않다. 그러므로, 여기에서 "A 또는 B"는 달리 명확하게 표시되거나 또는 맥락으로 달리 표시되지 않는다면, "A, B, 또는 양쪽 모두"를 의미한다. 게다가, "및"은 달리 명확하게 표시되거나 또는 맥락으로 달리 표시되지 않는다면, 양쪽 모두 연대적이다. 그러므로, 여기에서 "A 및 B"는 달리 명확하게 표시되거나 또는 맥락으로 달리 표시되지 않는다면, "A 및 B, 공동으로 또는 각자"를 의미한다.
본 개시의 범위는 이 기술분야의 숙련자가 이해할 여기에서 설명되거나 또는 에시된 예시적인 실시예들에 대한 모든 변화들, 대체들, 변형들, 변경들, 및 수정들을 포함한다. 본 개시의 범위는 여기에서 설명되거나 또는 예시된 예시적인 실시예들에 제한되지 않는다. 게다가, 본 개시는 여기에서 각각의 실시예들을 특정한 구성요소들, 요소들, 특징, 기능들, 동작들, 또는 단계들을 포함하는 것으로 설명하고 예시하지만, 이들 실시예들 중 임의의 것은 이 기술분야의 숙련자가 이해할 여기에서의 다른 곳에 설명되거나 또는 예시된 구성요소들, 요소들, 특징들, 기능들, 동작들, 또는 단계들 중 임의의 것의 임의의 조합 또는 순열을 포함할 수 있다. 더욱이, 특정한 기능을 수행하도록 적응되고, 배열되고, 할 수 있고, 구성되고, 가능화되고, 동작 가능하거나, 또는 동작적인 장치 또는 시스템 또는 장치 또는 시스템의 구성요소에 대한 첨부된 청구항들에서의 참조는 상기 장치, 시스템, 또는 구성요소가 그렇게 적응되고, 배열되고, 가능하고, 구성되고, 가능화되고, 동작 가능하거나, 또는 동작적인 한, 그것 또는 상기 특정한 기능이 활성화되고, 턴 온되거나, 또는 잠금 해제되는지 여부에 관계없이, 상기 장치, 시스템, 구성요소를 포함한다. 부가적으로, 본 개시는 특정한 이점들을 제공하는 것으로 특정한 실시예들을 설명하거나 또는 예시하지만, 특정한 실시예들은 이들 이점들 중 일부 또는 모두를 제공하거나, 또는 제공하지 않을 수 있다.

Claims (15)

  1. 방법에 있어서,
    하나 이상의 컴퓨팅 시스템들에 의해:
    사용자의 제 1 뷰포인트로부터 가상 씬(virtual scene)을 묘사한 렌더링된 프레임을 액세스하는 단계로서, 상기 렌더링된 프레임은 상기 가상 씬에서 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성되는, 상기 렌더링된 프레임을 액세스하는 단계;
    상기 렌더링된 프레임에 기초하여 복수의 표면들을 생성하는 단계로서, 각각의 상기 표면은 3D 공간 내에 배치되며 시각 정보를 포함하는, 상기 복수의 표면들을 생성하는 단계;
    상기 3D 공간에서 상기 사용자의 제 2 뷰포인트를 결정하는 단계;
    상기 제 2 뷰포인트로부터 상기 복수의 표면들의 가시성을 결정하는 단계; 및
    상기 시각 정보 및 상기 복수의 표면들의 결정된 가시성에 기초하여 상기 제 2 뷰포인트로부터 상기 가상 씬을 묘사한 서브프레임을 렌더링하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 복수의 표면들의 각각의 상기 시각 정보는 텍스처이고;
    상기 복수의 표면들의 상기 결정된 가시성은 상기 제 2 뷰 포인트로부터 가시적인 상기 복수의 표면들 상에서의 포인트들을 식별하며;
    상기 서브프레임의 상기 렌더링은 상기 복수의 표면들 상에서의 상기 포인트들에 따라 상기 복수의 표면들의 각각의 상기 텍스처를 샘플링하는 것을 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 오브젝트의 상기 3D 모델은 다각형들을 포함하며;
    상기 렌더링된 프레임은 상기 다각형들 중 하나 이상의 다각형들과 상기 제 1 뷰포인트로부터 투사된 광선들 사이의 계산된 교차 포인트들에 기초하여 생성되는, 방법.
  4. 제 1 항에 있어서,
    상기 렌더링된 프레임은 적어도 상기 오브젝트의 상기 3D 모델에 기초하여 생성된 복수의 프레임들 중 하나이고;
    상기 렌더링된 서브프레임은 상기 복수의 표면들에 기초하여 생성된 복수의 서브프레임들 중 하나이고;
    상기 복수의 서브프레임들은 상기 렌더링된 프레임 후 및 상기 복수의 프레임들 중 그 다음의 프레임 전에 제 1 프레임 레이트로 생성되며;
    상기 복수의 서브프레임들은 상기 제 1 프레임 레이트보다 높은 제 2 프레임 레이트로 생성되는, 방법.
  5. 제 1 항에 있어서,
    상기 복수의 표면들의 상기 가시성은 광선 투사를 사용하여 결정되며;
    상기 렌더링된 프레임은 광선 추적을 사용하여 생성되는, 방법.
  6. 제 1 항에 있어서,
    상기 렌더링된 프레임은 상기 오브젝트의 상기 3D 모델 및 상기 가상 씬에서의 제 2 오브젝트의 제 2 3D 모델에 기초하여 생성되며;
    상기 복수의 표면들 중 적어도 하나는 상기 오브젝트 및 상기 제 2 오브젝트 모두를 묘사하는 시각 정보를 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 렌더링된 프레임과 상기 서브프레임은 상이하며;
    상기 제 1 뷰포인트 및 상기 제 2 뷰포인트는 상이한 시간들에서 결정되는, 방법.
  8. 소프트웨어를 구현하는 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어에 있어서,
    상기 소프트웨어는 실행될 때:
    사용자의 제 1 뷰포인트로부터 가상 씬을 묘사한 렌더링된 프레임을 액세스하고, 상기 렌더링된 프레임은 상기 가상 씬에서 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성되며;
    상기 렌더링된 프레임에 기초하여 복수의 표면들을 생성하고, 각각의 상기 표면은 3D 공간 내에 배치되며 시각 정보를 포함하며;
    상기 3D 공간에서 상기 사용자의 제 2 뷰포인트를 결정하고;
    상기 제 2 뷰포인트로부터 상기 복수의 표면들의 가시성을 결정하며;
    상기 시각 정보 및 상기 복수의 표면들의 결정된 가시성에 기초하여 상기 제 2 뷰포인트로부터 상기 가상 씬을 묘사한 서브프레임을 렌더링하도록 동작 가능한, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  9. 제 8 항에 있어서,
    상기 복수의 표면들의 각각의 상기 시각 정보는 텍스처이고;
    상기 복수의 표면들의 상기 결정된 가시성은 상기 제 2 뷰 포인트로부터 가시적인 상기 복수의 표면들 상에서의 포인트들을 식별하며;
    상기 서브프레임의 상기 렌더링은 상기 복수의 표면들 상에서의 상기 포인트들에 따라 상기 복수의 표면들의 각각의 상기 텍스처를 샘플링하는 것을 포함하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  10. 제 8 항에 있어서,
    상기 오브젝트의 상기 3D 모델은 다각형들을 포함하며;
    상기 렌더링된 프레임은 상기 다각형들 중 하나 이상의 다각형들과 상기 제 1 뷰포인트로부터 투사된 광선들 사이의 계산된 교차 포인트들에 기초하여 생성되는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  11. 제 8 항에 있어서,
    상기 렌더링된 프레임은 적어도 상기 오브젝트의 상기 3D 모델에 기초하여 생성된 복수의 프레임들 중 하나이고;
    상기 렌더링된 서브프레임은 상기 복수의 표면들에 기초하여 생성된 복수의 서브프레임들 중 하나이며;
    상기 복수의 서브프레임들은 상기 렌더링된 프레임 후 및 상기 복수의 프레임들 중 그 다음의 프레임 전에 생성되는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  12. 시스템에 있어서,
    하나 이상의 프로세서들; 및
    상기 프로세서들 중 하나 이상의 프로세서들에 결합되며 명령들을 포함한 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어로서, 상기 명령들은 상기 프로세서들 중 하나 이상의 프로세서들에 의해 실행될 때, 상기 시스템으로 하여금:
    사용자의 제 1 뷰포인트로부터 가상 씬을 묘사한 렌더링된 프레임을 액세스하게 하며, 상기 렌더링된 프레임은 상기 가상 씬에서 오브젝트의 적어도 하나의 3D 모델에 기초하여 생성되며;
    상기 렌더링된 프레임에 기초하여 복수의 표면들을 생성하게 하며, 각각의 상기 표면은 3D 공간 내에 배치되고 시각 정보를 포함하며;
    상기 3D 공간에서 상기 사용자의 제 2 뷰포인트를 결정하고;
    상기 제 2 뷰포인트로부터 상기 복수의 표면들의 가시성을 결정하며;
    상기 시각 정보 및 상기 복수의 표면들의 결정된 가시성에 기초하여 상기 제 2 뷰포인트로부터 상기 가상 씬을 묘사한 서브프레임을 렌더링하게 하도록 동작 가능한, 상기 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어를 포함하는, 시스템.
  13. 제 12 항에 있어서,
    상기 복수의 표면들의 각각의 상기 시각 정보는 텍스처이고;
    상기 복수의 표면들의 상기 결정된 가시성은 상기 제 2 뷰 포인트로부터 가시적인 상기 복수의 표면들 상에서의 포인트들을 식별하며;
    상기 서브프레임의 상기 렌더링은 상기 복수의 표면들 상에서의 상기 포인트들에 따라 상기 복수의 표면들의 각각의 상기 텍스처를 샘플링하는 것을 포함하는, 시스템.
  14. 제 12 항에 있어서,
    상기 오브젝트의 상기 3D 모델은 다각형들을 포함하며;
    상기 렌더링된 프레임은 상기 다각형들 중 하나 이상의 다각형들과 상기 제 1 뷰포인트로부터 투사된 광선들 사이의 계산된 교차 포인트들에 기초하여 생성되는, 시스템.
  15. 제 12 항에 있어서,
    상기 렌더링된 프레임은 적어도 상기 오브젝트의 상기 3D 모델에 기초하여 생성된 복수의 프레임들 중 하나이고;
    상기 렌더링된 서브프레임은 상기 복수의 표면들에 기초하여 생성된 복수의 서브프레임들 중 하나이며;
    상기 복수의 서브프레임들은 상기 렌더링된 프레임 후 및 상기 복수의 프레임들 중 그 다음의 프레임 전에 생성되는, 시스템.
KR1020217016374A 2018-10-30 2019-10-28 증강-현실 또는 가상-현실 씬에서 오브젝트들의 표현들의 생성 및 수정 KR20210082242A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862753035P 2018-10-30 2018-10-30
US62/753,035 2018-10-30
US16/586,590 2019-09-27
US16/586,590 US11170577B2 (en) 2018-10-30 2019-09-27 Generating and modifying representations of objects in an augmented-reality or virtual-reality scene
PCT/US2019/058267 WO2020092195A1 (en) 2018-10-30 2019-10-28 Generating and modifying representations of objects in an augmented-reality or virtual-reality scene

Publications (1)

Publication Number Publication Date
KR20210082242A true KR20210082242A (ko) 2021-07-02

Family

ID=70327383

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217016374A KR20210082242A (ko) 2018-10-30 2019-10-28 증강-현실 또는 가상-현실 씬에서 오브젝트들의 표현들의 생성 및 수정

Country Status (7)

Country Link
US (1) US11170577B2 (ko)
EP (1) EP3874468A1 (ko)
JP (1) JP2022511273A (ko)
KR (1) KR20210082242A (ko)
CN (1) CN112912823A (ko)
TW (1) TW202019167A (ko)
WO (1) WO2020092195A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11049315B2 (en) * 2019-07-31 2021-06-29 Verizon Patent And Licensing Inc. Methods and devices for bifurcating graphics rendering between a media player device and a multi-access edge compute server
US11468627B1 (en) * 2019-11-08 2022-10-11 Apple Inc. View dependent content updated rates
GB2590422B (en) * 2019-12-17 2024-03-06 Sony Interactive Entertainment Inc Content generation system and method
US11335077B1 (en) * 2021-03-19 2022-05-17 Facebook Technologies, Llc. Generating and modifying representations of dynamic objects in an artificial reality environment
TWI778756B (zh) * 2021-08-20 2022-09-21 財團法人資訊工業策進會 三維邊界框重建方法、三維邊界框重建系統及非暫態電腦可讀取媒體
US11961184B2 (en) 2021-09-17 2024-04-16 Samsung Electronics Co., Ltd. System and method for scene reconstruction with plane and surface reconstruction
WO2023063937A1 (en) * 2021-10-13 2023-04-20 Innopeak Technology, Inc. Methods and systems for detecting planar regions using predicted depth
US11816231B2 (en) 2021-11-22 2023-11-14 Bank Of America Corporation Using machine-learning models to determine graduated levels of access to secured data for remote devices
US11935203B2 (en) * 2022-06-30 2024-03-19 Snap Inc. Rotational navigation system in augmented reality environment

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4734640B2 (ja) * 2006-02-10 2011-07-27 国立大学法人岐阜大学 仮想現実画像表示装置
US8570320B2 (en) * 2011-01-31 2013-10-29 Microsoft Corporation Using a three-dimensional environment model in gameplay
US9424685B2 (en) * 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US10089790B2 (en) * 2015-06-30 2018-10-02 Ariadne's Thread (Usa), Inc. Predictive virtual reality display system with post rendering correction
US10962780B2 (en) * 2015-10-26 2021-03-30 Microsoft Technology Licensing, Llc Remote rendering for virtual images
US9832451B2 (en) * 2015-11-17 2017-11-28 Survios, Inc. Methods for reduced-bandwidth wireless 3D video transmission
US10026212B2 (en) * 2015-11-20 2018-07-17 Google Llc Electronic display stabilization using pixel velocities
US11010956B2 (en) * 2015-12-09 2021-05-18 Imagination Technologies Limited Foveated rendering
US10274737B2 (en) * 2016-02-29 2019-04-30 Microsoft Technology Licensing, Llc Selecting portions of vehicle-captured video to use for display
US10129523B2 (en) * 2016-06-22 2018-11-13 Microsoft Technology Licensing, Llc Depth-aware reprojection
US10379611B2 (en) * 2016-09-16 2019-08-13 Intel Corporation Virtual reality/augmented reality apparatus and method
US11127110B2 (en) * 2017-03-01 2021-09-21 Arm Limited Data processing systems
US10713752B2 (en) * 2017-06-09 2020-07-14 Sony Interactive Entertainment Inc. Temporal supersampling for foveated rendering systems

Also Published As

Publication number Publication date
CN112912823A (zh) 2021-06-04
US20200134923A1 (en) 2020-04-30
EP3874468A1 (en) 2021-09-08
TW202019167A (zh) 2020-05-16
WO2020092195A1 (en) 2020-05-07
US11170577B2 (en) 2021-11-09
JP2022511273A (ja) 2022-01-31

Similar Documents

Publication Publication Date Title
US11170577B2 (en) Generating and modifying representations of objects in an augmented-reality or virtual-reality scene
US11402634B2 (en) Hand-locked rendering of virtual objects in artificial reality
CN106856010B (zh) 渲染图像方法、视网膜凹式渲染***和集成电路制造***
US11403810B2 (en) Display engine for post-rendering processing
US11100899B2 (en) Systems and methods for foveated rendering
US11176901B1 (en) Pan-warping and modifying sub-frames with an up-sampled frame rate
US11557095B2 (en) Occlusion of virtual objects in augmented reality by physical objects
US11270468B1 (en) Joint color image and texture data compression
CN113302658A (zh) 并行纹理采样
US11557049B1 (en) Interpolation optimizations for a display engine for post-rendering processing
US20210090322A1 (en) Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene
US11011123B1 (en) Pan-warping and modifying sub-frames with an up-sampled frame rate
US11647193B2 (en) Adaptive range packing compression
CN115661408A (zh) 在人工现实环境中生成和修改手的表示
JP2024502273A (ja) 時間的中心窩レンダリング
WO2013148668A1 (en) Flexible defocus blur for stochastic rasterization
CN115512087A (zh) 使用在预定距离处的遮挡表面生成和修改人工现实环境