KR20220137880A - 증강 현실에서 물리적 객체에 의한 가상 객체의 오클루전 - Google Patents

증강 현실에서 물리적 객체에 의한 가상 객체의 오클루전 Download PDF

Info

Publication number
KR20220137880A
KR20220137880A KR1020227022323A KR20227022323A KR20220137880A KR 20220137880 A KR20220137880 A KR 20220137880A KR 1020227022323 A KR1020227022323 A KR 1020227022323A KR 20227022323 A KR20227022323 A KR 20227022323A KR 20220137880 A KR20220137880 A KR 20220137880A
Authority
KR
South Korea
Prior art keywords
user
hand
virtual object
image
virtual
Prior art date
Application number
KR1020227022323A
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 KR20220137880A publication Critical patent/KR20220137880A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/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/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

일 실시예에서, 방법은 하나 이상의 컴퓨팅 디바이스에 의해, 헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하는 단계를 포함한다. 방법은 적어도 이미지로부터 손의 가상 객체 표현을 생성하는 단계를 포함한다. 가상 객체 표현은 가상 환경에서 정의된다. 방법은, 가상 환경 내에서의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 사용자의 관점에서 가상 환경의 이미지를 렌더링하는 단계를 포함한다. 이미지는 사용자의 관점에서 볼 수 있는 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함한다. 방법은 헤드 마운트 디스플레이의 발광체 세트에, 이미지를 디스플레이하라는 명령을 제공하는 단계를 포함한다. 이미지 내의 픽셀 세트는 하나 이상의 위치의 발광체가 조명되지 않도록 한다.

Description

증강 현실에서 물리적 객체에 의한 가상 객체의 오클루전
본 개시 내용은 일반적으로 인공 현실 환경을 위한 그래픽을 생성하는 것에 관한 것이다.
인공 현실은 사용자에게 표시되기 전에 어떤 방식으로든 조정된 현실의 한 형태로서, 예컨대, 가상 현실(virtual reality)(VR), 증강 현실(augmented reality)(AR), 혼합 현실(mixed reality)(MR), 하이브리드 현실(hybrid reality), 또는 이들의 일부 조합 및/또는 파생물을 포함할 수 있다. 인공 현실 콘텐츠는 완전 생성 콘텐츠(completely generated content), 또는 캡처된 콘텐츠(예컨대, 현실 세계 사진)와 결합된 생성 콘텐츠(generated content)를 포함할 수 있다. 인공 현실 콘텐츠는 비디오, 오디오, 햅틱 피드백, 또는 이들의 일부 조합을 포함할 수 있으며, 이들 중 임의의 것이 단일 채널 또는 다수의 채널(예를 들어, 시청자에게 3차원 효과를 생성하는 스테레오 비디오)로 제시될 수 있다. 인공 현실은, 예컨대, 인공 현실에서 콘텐츠를 생성하는 데 사용되고/되거나 인공 현실에서 사용되는(예컨대, 인공 현실에서 활동을 수행하는) 애플리케이션, 제품, 액세서리, 서비스, 또는 이들의 일부 조합과 연관될 수 있다. 인공 현실 콘텐츠를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 헤드 마운트 디스플레이(Head Mounted Display)(HMD), 독립형 HMD, 모바일 디바이스 또는 컴퓨팅 시스템, 또는 한 명 이상의 시청자에게 인공 현실 콘텐츠를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함하는 다양한 플랫폼 상에 구현될 수 있다.
본 발명은 첨부된 청구항에 따른 방법, 컴퓨터 판독 가능 비일시적 저장 매체, 및 시스템에 관한 것이다.
특정 실시예에서, 방법은 인공 현실 시스템의 하나 이상의 컴퓨팅 시스템에 의해 수행된다. 이러한 컴퓨팅 시스템은 헤드 마운트 디스플레이 또는 휴대성이 낮은 컴퓨팅 시스템 내에 구현될 수 있다. 방법은 헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하는 단계를 포함한다. 이미지는 사용자의 환경을 더 포함할 수 있다. 이미지는 헤드 마운트 디스플레이의 하나 이상의 카메라에 의해 생성될 수 있다. 방법은 적어도 이미지로부터 사용자의 손의 가상 객체 표현을 생성하는 단계를 포함할 수 있으며, 손의 가상 객체 표현은 가상 환경에서 정의된다. 사용자의 손의 가상 객체 표현은 가상 환경에서 사용자의 손을 나타내는 3차원 메시에 기반하여 생성될 수 있고, 이러한 3차원 메시는 가상 환경에서 검출된 사용자의 손의 포즈에 기반하여 준비되었다. 방법은, 가상 환경 내에서의 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 가상 환경 내로의 사용자의 관점에서 가상 환경의 이미지를 렌더링하는 단계를 포함할 수 있다. 가상 환경 내로의 관점은 실제 환경 내로의 사용자의 관점과 가상 환경 내로의 사용자의 관점 간의 대응 관계에 기반하여 결정될 수 있다. 렌더링된 이미지는 사용자의 관점에서 볼 수 있는 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함할 수 있다. 픽셀 세트는, 사용자의 관점에서 사용자의 손의 가상 객체 표현이 적어도 부분적으로 가상 환경 내의 다른 가상 객체 전방에 위치한다고 결정함으로써, 결정될 수 있다. 방법은 헤드 마운트 디스플레이의 발광체의 세트에 가상 환경의 이미지를 디스플레이하라는 명령을 제공하는 단계를 포함할 수 있고, 여기서 손의 가상 객체 표현의 부분에 대응하는 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 한다. 헤드 마운트 디스플레이 내의 조명되지 않는 발광체는 사용자의 환경으로부터의 광이 사용자에게 인식되도록 지속되게 할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 조명되지 않는 특정 위치의 발광체는 사용자의 환경으로부터의 광이 해당 특정 위치의 사용자에게는 지속되게 할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 사용자의 손을 포함하는 이미지는 사용자의 관점에서의 사용자의 환경을 더 포함할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 적어도 이미지로부터, 사용자의 손의 가상 객체 표현을 생성하는 단계는, 사용자의 손을 포함하는 이미지로부터 결정된 사용자의 손의 포즈에 기반하여, 가상 환경 내에서 사용자의 손의 가상 객체 표현의 위치를 결정하는 단계를 포함할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 사용자의 손의 가상 객체 표현의 텍스처는 발광체가 조명되지 않도록 하는 명령에 부합할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 사용자의 손의 가상 객체 표현은 또한 가상 환경의 배경과 연관된 색상과 연관될 수 있다.
본 발명에 따른 방법의 일 실시예에서, 사용자의 관점에서 가상 환경의 이미지를 렌더링하는 단계는 가상 환경 내에서 사용자의 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체를 사용자의 관점에서 볼 수 있는지 여부를 결정하는 단계를 포함할 수 있다. 이에 부가적으로, 방법은, 사용자의 관점에 기반하여 원점 및 방향을 갖는 광선을 가상 환경 내로 투사하는 것에 의해, 그리고 가상 환경 내에서 사용자의 손의 가상 객체 표현과 광선의 교차 포인트를 결정하는 것에 의해, 가상 환경 내에서 손의 가상 객체 표현이 적어도 부분적으로 적어도 하나의 다른 가상 객체 전방에 위치하는 하나 이상의 위치를 결정하는 단계를 더 포함할 수 있고, 여기서 광선은 가상 환경 내에서 다른 객체와 교차하기 전에 가상 객체 표현과 교차한다.
본 발명에 따른 방법의 일 실시예에서, 적어도 이미지로부터 사용자의 손의 가상 객체 표현을 생성하는 단계는: 적어도 이미지로부터 손의 포즈를 결정하는 단계; 적어도 이미지 및 포즈로부터 손의 가상 객체 표현을 위한 삼각형 메시를 생성하는 단계; 적어도 이미지로부터, 사용자의 관점에서의 손의 거리를 결정하는 단계; 및 손에 대한 삼각형 메시에 기반하여, 결정된 손의 거리로부터 손의 하나 이상의 위치의 변화를 나타내는 높이 맵을 생성하는 단계를 포함할 수 있다. 이에 부가적으로, 방법은, 손의 가상 객체 표현과 연관된 높이 맵 및 손의 거리를 가상 환경 내의 특정 위치에서의 다른 가상 객체와 연관된 높이 맵 및 거리와 비교하는 것에 의해, 그리고 이러한 비교에 기반하여 손의 가상 객체 표현이 관점에 대해 가장 가까운 객체임을 결정하는 것에 의해, 높이 맵에 기반하여, 손의 가상 객체 표현이 상기 다른 가상 객체 전방에 위치하는 하나 이상의 위치를 결정하는 단계를 더 포함할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 가상 환경의 이미지를 디스플레이하라는 명령은 또한 적어도 하나의 다른 가상 객체의 부분이 사용자의 관점에서 사용자의 손의 가상 객체 표현 전방에 위치하는 하나 이상의 위치에서 발광체가 조명하도록 할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 하나 이상의 컴퓨팅 디바이스는 헤드 마운트 디스플레이 내에 구현될 수 있고 하나 이상의 컴퓨팅 디바이스는 별도의 컴퓨팅 디바이스이다. 이에 부가적으로, 방법은, 이용 가능한 컴퓨팅 리소스의 하나 이상의 메트릭에 기반하여 헤드 마운트 디스플레이의 컴퓨팅 디바이스와 별도의 컴퓨팅 디바이스 사이에 방법의 단계를 할당하는 단계를 더 포함할 수 있다.
본 발명에 따른 방법의 일 실시예에서, 이미지는 헤드 마운트 디스플레이의 제1 카메라에 의해 생성될 수 있고, 사용자의 손의 가상 객체 표현을 생성하는 단계는 헤드 마운트 디스플레이의 제2 카메라에 의해 생성된 제2 이미지에 액세스하는 단계, 및 이미지 및 제2 이미지에 기반하여 사용자의 손을 사용자의 관점과 관련하여 로컬화하는 단계를 포함한다. 이에 부가적으로, 사용자의 손의 가상 객체 표현을 생성하는 단계는 사용자의 손의 위치에 대응하는 위치를 갖는 어레이를 생성하는 단계, 손의 하나 이상의 위치와 사용자의 관점 사이의 거리의 값을 어레이 내에 저장하는 단계, 및 어레이를 사용자의 손의 가상 객체 표현과 연관시키는 단계를 더 포함할 수 있다. 대안적으로 또는 이에 부가적으로, 헤드 마운트 디스플레이의 제2 카메라는 심도 감지 카메라일 수 있다.
일 양태에서, 본 발명은 소프트웨어를 구현하는 하나 이상의 컴퓨터 판독 가능한 비일시적 저장 매체에 관한 것으로, 상기 소프트웨어는 실행 시 위에 기술된 바와 같은 방법을 수행하거나, 또는: 헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하는 단계; 적어도 이미지로부터, 사용자의 손의 가상 객체 표현을 생성하는 단계 ― 손의 가상 객체 표현은 가상 환경에서 정의됨 ―; 가상 환경 내에서의 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 사용자의 관점에서 가상 환경의 이미지를 렌더링하는 단계 ― 이미지는 사용자의 관점에서 볼 수 있는 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함함 ―; 및 헤드 마운트 디스플레이의 발광체 세트에, 가상 환경의 이미지를 디스플레이하라는 명령을 제공하는 단계를 수행하도록 동작 가능하며, 손의 가상 객체 표현의 부분에 대응하는 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 한다.
컴퓨터 판독 가능한 비일시적 저장 매체의 일 실시예에서, 조명되지 않는 특정 위치의 발광체는 사용자의 환경으로부터의 광이 해당 특정 위치의 사용자에게는 지속되게 할 수 있다.
본 발명의 실시예는 인공 현실 시스템을 포함하거나 이와 함께 구현될 수 있다. 인공 현실은 사용자에게 표시되기 전에 어떤 방식으로든 조정된 현실의 한 형태로서, 예컨대, 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 이들의 일부 조합 및/또는 파생물을 포함할 수 있다. 인공 현실 콘텐츠는 완전 생성 콘텐츠, 또는 캡처된 콘텐츠(예컨대, 현실 세계 사진)와 결합된 생성 콘텐츠를 포함할 수 있다. 인공 현실 콘텐츠는 비디오, 오디오, 햅틱 피드백, 또는 이들의 일부 조합을 포함할 수 있으며, 이들 중 임의의 것이 단일 채널 또는 다수의 채널(예를 들어, 시청자에게 3차원 효과를 생성하는 스테레오 비디오)로 제시될 수 있다. 추가적으로, 특정 실시예에서, 인공 현실은, 예컨대, 인공 현실에서 콘텐츠를 생성하는 데 사용되고/되거나 인공 현실에서 사용되는(예컨대, 인공 현실에서 활동을 수행하는) 애플리케이션, 제품, 액세서리, 서비스, 또는 이들의 일부 조합과 연관될 수 있다. 인공 현실 콘텐츠를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 헤드 마운트 디스플레이(HMD), 독립형 HMD, 모바일 디바이스 또는 컴퓨팅 시스템, 또는 한 명 이상의 시청자에게 인공 현실 콘텐츠를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함하는 다양한 플랫폼 상에 구현될 수 있다.
본 발명에 따른 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 연결되고 인스트럭션을 포함하는 하나 이상의 컴퓨터 판독 가능한 비일시적 저장 매체를 포함할 수 있고, 상기 인스트럭션은 하나 이상의 프로세서에 의해 실행될 때 시스템으로 하여금 위에 기술된 바와 같은 방법을 수행하거나, 또는: 헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하는 단계; 적어도 이미지로부터, 사용자의 손의 가상 객체 표현을 생성하는 단계 ― 손의 가상 객체 표현은 가상 환경에서 정의됨 ―; 가상 환경 내에서의 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 사용자의 관점에서 가상 환경의 이미지를 렌더링하는 단계 ― 이미지는 사용자의 관점에서 볼 수 있는 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함함 ―; 및 헤드 마운트 디스플레이의 발광체 세트에, 가상 환경의 이미지를 디스플레이하라는 명령을 제공하는 단계를 수행하도록 동작 가능하고, 손의 가상 객체 표현의 부분에 대응하는 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 한다.
본 발명에 따른 시스템의 일 실시예에서, 조명되지 않는 특정 위치의 발광체는 사용자의 환경으로부터의 광이 해당 특정 위치의 사용자에게는 지속되게 할 수 있다.
본원에 개시된 실시예는 예시일 뿐이고, 본 개시 내용의 범위는 이에 제한되지는 않는다. 특정 실시예는 본원에 개시된 실시예의 컴포넌트, 요소, 특징, 기능, 동작, 또는 단계의 전부 또는 일부를 포함하거나 전혀 포함하지 않을 수도 있다. 본 발명에 따른 실시예는 특히 방법, 저장 매체, 시스템, 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항에 개시되며, 여기서 하나의 청구항의 범주, 예컨대, 방법에서 언급된 임의의 특징은 다른 청구항 범주, 예컨대, 시스템에서도 또한 청구될 수 있다. 첨부된 청구항의 종속성 또는 참조는 형식적인 이유로만 선택된다. 그러나 선행 청구항(특히 다중 종속성)에 대한 의도적인 참조로 인해 발생하는 모든 발명도 또한 청구될 수 있고, 그에 따라 청구항 및 그 특징의 임의의 조합이 개시되고, 첨부된 청구항에서 선택되는 종속성에 관계없이 청구될 수 있다. 청구될 수 있는 발명은 첨부된 청구항에 열거된 특징의 조합뿐만 아니라 청구항 내의 임의의 다른 특징의 조합을 포함하며, 청구항에 언급된 각 특징은 청구항 내의 임의의 다른 특징 또는 다른 특징의 조합과 결합될 수 있다. 또한, 본원에 기술되거나 예시된 임의의 실시예 및 특징은 별도의 청구항에서 청구될 수 있고/있거나 본원에 기술되거나 예시된 임의의 실시예 또는 특징 또는 첨부된 청구항의 임의의 특징과의 임의의 조합으로 청구될 수 있다.
도 1a는 예시적인 인공 현실 시스템(artificial reality system)을 도시한 것이다.
도 1b는 헤드셋 시스템의 예시적인 눈 디스플레이 시스템(eye display system)을 도시한 것이다.
도 2는 디스플레이 엔진에 대한 시스템 다이어그램을 도시한 것이다.
도 3a 및 도 3b는 인공 현실 시스템을 통해 본 예시적인 이미지를 도시한 것이다.
도 4a 및 도 4b는 인공 현실 시스템을 통해 본 예시적인 이미지를 도시한 것이다.
도 5는 가상 객체 오클루전을 검출하는 동안 사용자의 손의 시각적 표현을 도시한 것이다.
도 6은 가상 환경의 이미지를 생성하는 시각적 표현을 도시한 것이다.
도 7은 가상 환경의 이미지를 생성하는 시각적 표현을 도시한 것이다.
도 8a 및 도 8b는 증강 현실에서 가상 객체의 현실 세계 객체 오클루전을 제공하기 위한 예시적인 방법을 예시한 것이다.
도 9는 예시적인 컴퓨터 시스템을 도시한 것이다.
특정 실시예에서, 방법은 인공 현실 시스템의 하나 이상의 컴퓨팅 시스템에 의해 수행된다. 이러한 컴퓨팅 시스템은 헤드 마운트 디스플레이 또는 휴대성이 낮은 컴퓨팅 시스템 내에 구현될 수 있다. 방법은 헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하는 단계를 포함한다. 이미지는 사용자의 환경을 더 포함할 수 있다. 이미지는 헤드 마운트 디스플레이의 하나 이상의 카메라에 의해 생성될 수 있다. 방법은 적어도 이미지로부터 사용자의 손의 가상 객체 표현을 생성하는 단계를 포함할 수 있으며, 손의 가상 객체 표현은 가상 환경에서 정의된다. 사용자의 손의 가상 객체 표현은 가상 환경에서 사용자의 손을 나타내는 3차원 메시에 기반하여 생성될 수 있고, 이러한 3차원 메시는 가상 환경에서 검출된 사용자의 손의 포즈에 기반하여 준비되었다. 방법은, 가상 환경 내에서의 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 가상 환경 내로의 사용자의 관점에서 가상 환경의 이미지를 렌더링하는 단계를 포함할 수 있다. 가상 환경 내로의 관점은 실제 환경 내로의 사용자의 관점과 가상 환경 내로의 사용자의 관점 간의 대응 관계에 기반하여 결정될 수 있다. 렌더링된 이미지는 사용자의 관점에서 볼 수 있는 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함할 수 있다. 픽셀 세트는, 사용자의 관점에서 사용자의 손의 가상 객체 표현이 적어도 부분적으로 가상 환경 내의 다른 가상 객체 전방에 위치한다고 결정함으로써, 결정될 수 있다. 방법은 헤드 마운트 디스플레이의 발광체의 세트에 가상 환경의 이미지를 디스플레이하라는 명령을 제공하는 단계를 포함할 수 있고, 여기서 손의 가상 객체 표현의 부분에 대응하는 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 한다. 헤드 마운트 디스플레이 내의 조명되지 않는 발광체는 사용자의 환경으로부터의 광이 사용자에게 인식되도록 지속되게 할 수 있다.
본 개시 내용은 특정 실시예에서 물리적 객체를 사용자에게 제시되는 가상 환경과 관련시키는 문제에 관한 것이다. 증강 현실(AR)에서, 가상 환경은 실제 환경 위에 증강된 레이어로서 사용자에게 디스플레이될 수 있다. 이것은 가상 환경 내로의 관점에 대한 실제 환경 내로의 관점의 대응 관계 또는 매핑을 생성함으로써 수행될 수 있다. 본 개시 내용의 실시예는 증강 현실에서 물리적 객체, 예를 들어, 사용자의 손에 의한 가상 객체의 오클루전(occlusion)을 효율적으로 렌더링하는 작업에 관한 것이다. (예를 들어, 헤드 마운트 디스플레이(HMD)와 같은) AR 디바이스를 통해 사용자의 손을 볼 경우, 사용자는 사용자의 시선에서 가상 객체 전방에 위치할 것으로 예상되는 각 손의 부분이 사용자의 손의 후방에 위치하는 가상 객체를 자연스럽게 가릴 것이라고 예상한다. 반대로, 사용자의 시선에서 가상 객체 후방에 위치하는 각 손의 임의의 부분은 가상 객체에 의해 자연스럽게 가려질 것으로 예상된다. 예를 들어, 손이 객체를 잡고 있는 경우, 손의 일부는 객체 후방에 위치할 수 있다. 사용자는 손 후방에 위치한 객체의 부분이 디스플레이되지 않을 것으로 예상할 수 있고, 그에 따라 사용자는 가려진 객체 전방의 자신의 실제 손을 볼 수 있을 것이라는 것을 예상할 수 있다. 사용자에게 가상 객체 전방의 자신의 실제 손의 뷰를 제시하거나 가상 객체와 상호작용하는 것은 사용자가 증강 현실 환경으로 편안함을 느끼는 데 도움을 줄 수 있다. 예를 들어, 본 개시 내용의 실시예는 사용자를 위해 멀미 또는 시뮬레이션 멀미를 줄이는 데 도움을 줄 수 있다.
현재의 AR 기술은 이러한 문제를 효율적으로 해결할 수 없다. AR 체험을 제시하는 한 가지 일반적인 접근 방식에서, 사용자는 표준 화면(예컨대, 스마트폰 화면)을 통해 환경을 본다. 가상 환경은 카메라에 의해 캡처된 환경 이미지 상에 중첩된다. 이는 환경 이미지를 신속하게 캡처 및 처리해야 하므로 상당한 계산 리소스를 필요로 하며, 모바일 디바이스의 배터리를 빠르게 소모할 것이다. 추가적으로, 이러한 타입의 체험은 작은 화면을 통해 환경을 보는 것으로 제한되기 때문에 사용자에게 특별히 높은 몰입감을 제공하지 못한다. 관련된 접근 방식에서, 많은 현재 시스템은 사용자의 손이 가상 환경에서 가상 객체를 조작하는 데 사용될 수 있을 정도로 이용 가능한 카메라 기법을 사용하여 사용자의 손을 정확하게 검출하는 것이 어렵다. 가상 환경에서 사용자의 손과 해당 환경에서 사용자의 손으로 인한 효과를 정확하게 모델링하고, 그 효과에 기반하여 가상 환경을 렌더링하는 본원에 개시된 것과 같은 고급 기술이 부족하다. 하나의 추가 예로서, 인공 현실 시스템에 대한 현재의 렌더링 접근 방식은 사용자가 상당한 시간 동안 가상 환경을 편안하게 체험할 수 있을 만큼 충분히 높은 프레임 레이트 및 품질 수준으로 대부분의 가상 환경을 렌더링할 수 없다. 본원에 기술된 바와 같이, 높은 프레임 레이트는 혼합 또는 증강 현실 체험에 특히 유리할 수 있는데, 이는 가상 객체와 사용자의 실제 환경 간의 병치를 통해 사용자가 렌더링 시 임의의 기술적 결함을 신속하게 식별할 수 있을 것이기 때문이다. 본원에 기술된 접근 방식은 모든 기술적 문제 등을 다루고 있다.
본 개시 내용에서, 사용자의 손의 예가 제공될 것이지만, 본원에 기술된 접근 방식은 다른 타입의 객체와 함께 사용될 수 있다. 이러한 다른 객체는 사용자 신체의 다른 부분, 사용자가 들고 있는 객체(예컨대, 펜 또는 다른 표시자), 사용자가 패스스루를 위해 지정한 특정 객체(예컨대, 사용자의 자녀 또는 애완동물), 사용자 또는 AR 헤드셋 제공자가 패스스루를 위해 지정한 일반 객체(예컨대, 차량, 다른 사람), 및 많은 다른 객체를 포함한다. 실제 객체 패스스루, 예컨대, 손 오클루전(hand occlusion)을 허용하기 위해, AR 헤드셋(예컨대, HMD) 상의 하나 이상의 카메라는 오클루전이 결정될 객체를 포함하여 장면의 이미지를 캡처한다. (본원에 기술된 바와 같이, HMD 내에 구현될 수 있거나 HMD와 유선 또는 무선으로 통신될 수 있는) 컴퓨팅 디바이스는 이미지에서 손을 검출하기 위해 손 추적 알고리즘(hand-tracking algorithm)을 실행한다. 그 후, 이미지에서 손가락 및 관절과 같은 손 특징의 위치가 결정된다. 손의 가상 객체 표현(예컨대, 사용자의 손처럼 보이는 3차원 메시)은 손의 손가락 및 관절의 검출된 위치에 기반하여 생성된다.
컴퓨팅 디바이스는 사용자의 손으로부터 실제 환경 내로의 사용자의 관점까지의 거리를 결정한다. 컴퓨팅 디바이스는 그 거리를, 손의 가상 객체 표현으로부터 가상 환경 내로의 사용자의 관점까지의 거리와 상관시킨다. 컴퓨팅 디바이스는 또한 손의 서로 다른 영역에 대한 높이 정보를 저장하기 위한 그리드를 생성한다. 이미지(들) 및 3차원 메시로부터, 컴퓨팅 디바이스는 손의 포인트의 높이(예컨대, 손의 평균 또는 중간 높이 또는 손의 기준 포인트에 대한 손의 특정 포인트의 높이)를 결정한다. 결정된 높이는 손의 나머지 부분에 대한 손의 포인트의 위치를 나타낸다. 결정된 거리와 결합하여, 높이는 사용자에 대한 손의 다양한 부분의 정확한 위치를 결정하는 데 사용될 수 있다.
가상 환경을 렌더링하고 사용자에게 가상 환경을 제시하는 동안, 임의의 가상 객체보다 사용자에게 더 가까운 손의 부분은 사용자에게 보여져야 하지만, 적어도 하나의 가상 객체 후방에 위치한 손의 부분은 가리워져야 한다. 사용자의 현실의 실제 손은 AR 시스템의 HMD를 통해 사용자에게 보일 수 있게 만들어질 수 있다. 특정 실시예에서, 가상 환경에서 가상 객체를 디스플레이하는 HMD의 발광 컴포넌트(예컨대, LED)는 실제 환경으로부터의 광이 HMD를 투과하여 사용자의 눈에 도달할 수 있도록 선택적으로 비활성화될 수 있다. 즉, 컴퓨팅 디바이스는 렌더링된 이미지에서 손이 나타날 컷아웃 구역(cut-out area)을 생성한다. 따라서, 예를 들어, 사용자의 현실의 실제 엄지는 엄지의 위치에 대응하는 디스플레이의 위치를 조명하지 않도록 발광체에 지시함으로써 HMD를 통해 사용자에게 보일 수 있게 만들어질 수 있다. 발광체가 턴오프되므로, 그 후방에 위치한 임의의 가상 객체의 부분은 디스플레이되지 않는다.
현실 세계 객체 오클루전을 적절하게 렌더링하기 위해서는, 객체의 부분(예컨대, 사용자의 손의 부분)에 대응하는 발광체는, 손의 해당 부분이 가상 환경 내의 임의의 가상 객체보다 실제 환경의 사용자에 더 가까울 경우, 턴오프되어야 하거나, 조명하지 않도록 지시받아야 하며, 가상 객체가 사용자와 손의 해당 부분 사이에 존재할 경우, 턴온되어야 한다. 가상 환경의 사용자로부터의 가상 객체보다 실제 환경의 사용자로부터 더 멀리 있는 객체의 부분(예컨대, 손의 손가락)은 가상 객체를 디스플레이하는 발광체에 의해 가상 객체 후방에 위치하는 것으로 보여진다. 현실 세계 객체까지의 거리와 가상 객체까지의 거리를 비교하는 것이 가능한데, 그 이유는, 예를 들어, 이들 거리가 손 추적 알고리즘에 의해 결정되기 때문이다. 가상 객체 거리는 AR 시스템 상에서 실행되는 애플리케이션 또는 장면에 의해 알려져 있으며, AR 시스템 및 HMD에 이용될 수 있다. 
사용자의 손의 가상 객체 표현과 알려진 손 위치의 높이가 주어지면, 사용자에게 보여져야 하는 손의 부분은 다음과 같이 HMD에 의해 보일 수 있도록 만들어질 수 있다. 가상 환경을 나타내는 프레임은, 사용자의 현재 포즈(예컨대, 위치 및 방향)에 기반하여, 30fps와 같은 제1 프레임 레이트에서의 기본 렌더링 컴포넌트에 의해 렌더링된다. 프레임을 렌더링하는 부분으로서, 다음의 2개의 항목: 즉, (1) 3차원 메시에 기반한 손에 대한 2차원 불투명 텍스처, 및 (2) 손에 대한 높이 맵이 생성된다. 2차원 텍스처는 가상 객체 표현(본 개시 전체에서 "표면"으로도 지칭됨)을 위한 평면 객체 표현의 텍스처로서 저장된다. 이들 동작은 HMD에 의해 수행되거나, HMD 하드웨어와 통신하는 별도의 컴퓨팅 디바이스(예컨대, 클라우드 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 모바일 디바이스)에 의해 수행될 수 있다. 발광체는 텍스처에 대해 특별히 지정된 색상을 사용함으로써 조명되지 않도록 쉽게 지시받을 수 있다. AR에서는 실제 환경으로부터의 광이 투과할 수 있도록 디폴트 배경을 갖는 것이 바람직할 수 있다. 이를 통해, 실제 환경에 나타나는 가상 객체의 몰입감을 크게 높일 수 있다. 따라서, 배경은 조명하지 않도록 하는 발광체에 대한 명령으로 변환되는 색상과 연관될 수 있다. 특정 실시예에서, 이러한 색상은 "불투명한 검정색"으로 지칭될 수 있는데, 이는, 예를 들어, 해당 텍스처와 연관된 객체 후방의 광이 투과되지 않는다는 것을 의미한다. 가상 객체 표현(예컨대, 평면 객체)은 이러한 색상과 연관되어, 손이 보이는 위치에서의 픽셀에 대응하는 LED가 오프되도록(즉, 조명하지 않도록) 할 수 있다.
그 후, HMD는 이전에 생성된 프레임에 기반하여(예컨대, 30fps에서 생성된 프레임에 기반하여) 200fps와 같은 제2 프레임 레이트로 서브프레임을 렌더링한다. 각 서브프레임마다, AR 시스템은 가상 환경 내로의 각 개별 픽셀 또는 픽셀 타일에 대한 사용자의 포즈(이는 메인 30fps 프레임 생성에 사용되는 포즈와는 다를 수 있음)를 기반으로 사용자의 현재 관점에서 가상 환경 내로 하나 이상의 광선을 투사함으로써 기본 가시성 테스트를 수행할 수 있다. 이러한 광선은 개별 픽셀인 경우 광선이거나 타일인 경우 피라미드로서 개념화될 수 있다. 특정 실시예에서, 가상 환경은 제한된 수의 가상 객체를 가질 수 있다. 예를 들어, AR 시스템은 가상 환경에서 (사용자의 손을 나타내기 위해 생성된 객체를 포함하여) 개별 객체의 수를 제한할 수 있다. 일부 실시예에서, 프레임의 범위에 대해 유사한 방식으로 이동할 것으로 예상되는 다수의 객체가 함께 그룹화될 수 있다. 가상 객체는 해당 높이 맵 정보와 함께 평면 객체로 표현될 수 있다. 투사된 광선이 사용자의 손에 대응하는 표면과 교차하면, 연관된 텍스처를 샘플링하여 서브프레임을 렌더링한다. 텍스처는 불투명한 검은색으로서, 이는 발광체가 조명되지 않아야 함을 나타내므로, 현실의 실제 손은 투명한 HMD의 조명되지 않는 구역을 통해 보일 수 있다.
특정 실시예에서, AR 시스템은 높이 맵에 기반하여 각각의 표면에 대한 픽셀당 높이 테스트를 지원할 수 있다. 이 경우, 가상 객체 전방에 위치한 손의 부분은 픽셀 레벨 해상도로 가상 객체를 가릴 수 있는 반면, 가상 객체 후방에 위치한 동일한 손의 픽셀은 디스플레이 내의 가상 객체의 개별 픽셀에 의해 가려질 수 있다. 높이 맵을 사용하는 실시예에서, 픽셀당 높이 테스트는 사용자의 관점에 대한 실제 또는 가상 객체의 깊이와 높이 맵에 레코딩된 차이에 기반하여 결정된다. 가상 객체에 대해 픽셀당 높이를 사용하면 손 오클루전의 시각적 모양이 크게 향상된다.
특정 실시예에서, 픽셀당 높이 정보는 (예컨대, 이용 가능한 계산 리소스에 대한 제한으로 인해) 이용 가능하지 않을 수 있다. 그러한 경우에, 손은 평면 객체로서의 가상 객체 표현만으로 표현될 수 있다. 전술한 바와 같이, 평면 객체의 심도(예컨대, 평면 객체로부터 가상 환경 내로의 사용자의 관점까지의 거리)는 알려져 있다. 특정 실시예에서, 평평한 표면 상의 각각의 위치에 대해, 심도는 수학적 변환을 사용하여 결정될 수 있다. 실제 객체(예컨대, 평면 객체)의 가상 객체 표현 및 가상 객체(그 자체가 표면으로 표현될 수 있음)는 순서가 객체의 심도를 기반으로 하고 있는 순서화된 표면 그룹을 형성한다. 따라서 종단에 대응하는 평면 객체는 각 평면의 전방이나 후방에 위치한다.
전술한 바와 같이 가상 객체의 실제 객체 오클루전을 결정하기 위해 높이 맵을 사용하게 되면 전력 소비는 증가될 수 있다. 예를 들어, HMD가 높이 맵을 생성하는 경우, 상당한 리소스가 소모될 수 있다. 다른 예로서, HDM이 다른 컴퓨팅 디바이스에 의해 생성되는 경우, HMD로 높이 맵이 전송되어야 할 수 있다. AR 시스템은 이용 가능 전력에 기반하여 높이 맵의 사용 여부 및 사용 방법을 결정할 수 있다. 이용 가능한 전력이 충분하면, 높이 맵을 생성하여 전송할 수 있다. 이용 가능한 전력이 충분하지 않은 경우, 특히 가상 객체와 사용자의 관점 간의 거리가 중요한 경우, 높이 맵이 없는 평면을 사용하는 것은 손 오클루전의 합리적인 모양을 생성하기에 충분할 수 있다.
특정 실시예에서, 기본 렌더링 디바이스, 예컨대, HMD 이외의 다른 컴퓨팅 디바이스는 HMD보다 처리 용량 및 전력 공급이 더 많을 수 있다. 따라서 기본 렌더링 디바이스는 본원에 기술된 기법의 특정 부분을 수행할 수 있다. 예를 들어, 기본 렌더링 디바이스는 손 추적 계산을 수행하고, 손을 위한 3차원 메시, 2차원 불투명 텍스처, 및 높이 맵을 생성할 수 있다. 예를 들어, 기본 렌더링 디바이스는 HMD의 카메라에 의해 생성된 이미지를 수신하고, 특정 작업에 대해 보다 효율적이거나 강력하도록 설계된 특수 컴퓨팅 하드웨어를 사용하여 필요한 처리를 수행할 수 있다. 그러나, HMD가 충분한 프로세싱 및 전력을 갖는다면, HMD는 (예컨대, 자체 온보드 컴퓨팅 컴포넌트를 사용하여) 이들 단계 중 하나 이상을 수행하여 지연을 감소시킬 수 있다. 특정 실시예에서, 본원에 기술된 모든 단계는 HMD 상에서 수행된다.
도 1a는 예시적인 인공 현실 시스템(100)을 도시한 것이다. 특정 실시예에서, 인공 현실 시스템(100)은 (HMD 내에 구현될 수 있는) 헤드셋 시스템(110), 신체 착용형 컴퓨팅 시스템(120), 클라우드 컴퓨팅 환경(130) 내의 클라우드 컴퓨팅 시스템(132) 등을 포함할 수 있다. 특정 실시예에서, 헤드셋 시스템(110)은 데이터 버스(114)를 통해 2개의 눈 디스플레이 시스템(116A 및 116B)에 연결된 디스플레이 엔진(112)을 포함할 수 있다. 헤드셋 시스템(110)은 사용자에게 인공 또는 증강 현실을 제공하기 위해 사용자의 머리에 장착될 수 있는 헤드 마운트 디스플레이(HMD)를 포함하는 시스템일 수 있다. 헤드셋 시스템(110)은, 경량이며 휴대성이 높게 설계될 수 있다. 그 결과, 헤드셋 시스템은 전원(예컨대, 배터리)에서 이용 가능한 전력이 제한될 수 있다. 디스플레이 엔진(112)은 (예컨대, 200Hz 이상의 리프레시 레이트를 지원하기에 적합한) 비교적 높은 데이터 레이트를 가진 데이터 버스(114)를 통해 눈 디스플레이 시스템(116A 및 116B)에 디스플레이 데이터를 제공할 수 있다. 디스플레이 엔진(112)은 하나 이상의 컨트롤러 블록, 텍셀(texel) 메모리, 변환 블록, 픽셀 블록 등을 포함할 수 있다. 텍셀 메모리에 저장된 텍셀은 픽셀 블록에 의해 액세스될 수 있고, 디스플레이를 위해 눈 디스플레이 시스템(116A 및 116B)에 제공될 수 있다. 기술된 디스플레이 엔진(112)에 대한 추가 정보는 2019년 10월 1일자로 출원된 미국 특허 출원 번호 제16/657,820호, 2019년 9월 27일자로 출원된 미국 특허 출원 번호 제16/586,590호, 및 2019년 9월 27일자로 출원된 미국 특허 출원 번호 제16/586,598호에서 찾을 수 있고, 이들 미국 출원은 참조로 포함된다.
특정 실시예에서, 신체 착용형 컴퓨팅 시스템(120)은 사용자의 신체에 착용될 수 있다. 특정 실시예에서, 신체 착용형 컴퓨팅 시스템(120)은 사용자 신체에 착용되지 않는 컴퓨팅 시스템(예컨대, 랩톱, 데스크톱, 모바일 컴퓨팅 시스템)일 수 있다. 신체 착용형 컴퓨팅 시스템(120)은 하나 이상의 GPU, 하나 이상의 스마트 비디오 디코더, 메모리, 프로세서, 및 다른 모듈을 포함할 수 있다. 신체 착용형 컴퓨팅 시스템(120)은 디스플레이 엔진(112)보다 더 많은 계산 리소스를 가질 수 있지만, 일부 실시예에서는 여전히 자신의 전원(예컨대, 배터리)에서 제한된 전력을 가질 수 있다. 신체 착용형 컴퓨팅 시스템(120)은 무선 연결(144)을 통해 헤드셋 시스템(110)과 연결될 수 있다. 클라우드 컴퓨팅 시스템(132)은 고성능 컴퓨터(예컨대, 서버)를 포함할 수 있고, 무선 연결(142)을 통해 신체 착용형 컴퓨팅 시스템(120)과 통신할 수 있다. 일부 실시예에서, 클라우드 컴퓨팅 시스템(132)은 무선 연결(미도시)을 통해 헤드셋 시스템(110)과 추가로 통신할 수 있다. 신체 착용형 컴퓨팅 시스템(120)은 (예컨대, 30Hz 이상의 리프레시 레이트를 지원하기에 적합한) 표준 데이터 레이트로 렌더링하기 위한 데이터를 생성할 수 있다. 디스플레이 엔진(112)은 신체 착용형 컴퓨팅 시스템(120)으로부터 수신된 데이터를 업샘플링(up-sample)하여, 더 높은 프레임 레이트(예컨대, 200Hz 이상)에서 눈 디스플레이 시스템(116A 및 116B)에 의해 디스플레이될 프레임을 생성할 수 있다.
도 1b는 헤드셋 시스템(110)의 예시적인 눈 디스플레이 시스템(예컨대, 116A 또는 116B)을 도시한 것이다. 특정 실시예에서, 눈 디스플레이 시스템(116A)은 드라이버(154), 동공 디스플레이(156) 등을 포함할 수 있다. 디스플레이 엔진(112)은 (예컨대, 200Hz 이상의 리프레시 레이트를 지원하기에 적합한) 높은 데이터 레이트로 디스플레이 데이터를 동공 디스플레이(156), 데이터 버스(114), 및 드라이버(154)에 제공할 수 있다.
도 2는 디스플레이 엔진(112)에 대한 시스템 다이어그램을 도시한 것이다. 특정 실시예에서, 디스플레이 엔진(112)은 컨트롤러 블록(210), 변환 블록(220A 및 220B), 픽셀 블록(230A 및 230B), 디스플레이 블록(240A 및 240B) 등을 포함할 수 있다. 디스플레이 엔진(112)의 하나 이상의 컴포넌트는 고속 버스, 공유 메모리, 또는 임의의 다른 적합한 방법을 통해 통신하도록 구성될 수 있다. 도 2에 도시된 바와 같이, 디스플레이 엔진(112)의 컨트롤러 블록(210)은 변환 블록(220A 및 220B), 픽셀 블록(230A 및 230B), 및 디스플레이 블록(240A 및 240B)과 통신하도록 구성될 수 있다. 본원에서 더 상세히 설명되는 바와 같이, 이러한 통신은 데이터 뿐만 아니라 제어 신호, 인터럽트, 및 다른 명령을 포함할 수 있다.
특정 실시예에서, 컨트롤러 블록(210)은 신체 착용형 컴퓨팅 시스템(예컨대, 도 1a의 120)으로부터 입력을 수신하고, 디스플레이 엔진(112)에서의 파이프라인을 초기화하여, 디스플레이를 위한 렌더링을 완료할 수 있다. 특정 실시예에서, 컨트롤러 블록(210)은 제1 데이터 레이트 또는 프레임 레이트에서 신체 착용형 컴퓨팅 시스템으로부터 데이터 및 제어 패킷을 수신할 수 있다. 데이터 및 제어 패킷은 텍스처 데이터 및 위치 데이터를 포함하는 하나 이상의 데이터 구조와 같은 정보와 추가 렌더링 명령을 포함할 수 있다. 특정 실시예에서, 이러한 데이터 구조는 2차원 렌더링 정보를 포함할 수 있다. 이러한 데이터 구조는 본원에서 "표면"으로 지칭될 수 있다. 컨트롤러 블록(210)은 필요에 따라 디스플레이 엔진(112)의 하나 이상의 다른 블록에 데이터를 분배할 수 있다. 컨트롤러 블록(210)은 디스플레이될 하나 이상의 프레임에 대한 파이프라인 처리를 개시할 수 있다. 특정 실시예에서, 눈 디스플레이 시스템(116A 및 116B) 각각은 자신의 컨트롤러 블록(210)을 포함할 수 있다. 특정 실시예에서, 눈 디스플레이 시스템(116A 및 116B) 중 하나 이상은 컨트롤러 블록(210)을 공유할 수 있다.
특정 실시예에서, 변환 블록(220A 및 220B)은 인공 현실 장면에 디스플레이될 표면에 대한 초기 가시성 정보를 결정할 수 있다. 일반적으로, 변환 블록(220A 및 220B)은 디스플레이될 이미지 내의 픽셀 위치에 기반한 원점을 갖는 광선을 투사하고, 픽셀 블록(230A 및 230B)에 전송할 필터 커맨드(예컨대, 쌍선형(bilinear) 또는 다른 타입의 보간 기법에 기반한 필터링)를 생성할 수 있다. 변환 블록(220A 및 220B)은 사용자의 현재 관점에 기반하여 사용자의 실제 또는 가상 환경 내로의 광선 투사를 수행할 수 있다. 사용자의 관점은 헤드셋의 센서, 예를 들어, 하나 이상의 카메라(예컨대, 흑백, 풀 컬러(full-color), 심도 감지), 관성 측정 유닛, 눈 추적기, 및/또는 표면이 위치하는 환경 및/또는 가상 장면 내로의 동시 로컬화 및 매핑(simultaneous localization and mapping)(SLAM)과 같은 임의의 적합한 추적/로컬화 알고리즘을 사용하여 결정될 수 있고, 픽셀 블록(230A 및 230B)에 전송할 결과를 생성할 수 있다.
일반적으로, 변환 블록(220A 및 220B)은 각각 특정 실시예에 따라 4-스테이지 파이프라인을 포함할 수 있다. 변환 블록(220A 또는 220B)의 스테이지들은 다음과 같이 진행될 수 있다. 광선 캐스터(ray caster)는 타일이라고 하는 하나 이상의 정렬된 픽셀의 어레이에 대응하는 광선 번들(ray bundle)을 발행할 수 있다(예를 들어, 각각의 타일은 16x16 정렬된 픽셀을 포함할 수 있다). 광선 번들은 인공 현실 장면에 진입하기 전에 하나 이상의 왜곡 메시에 따라 뒤틀릴 수 있다. 이러한 왜곡 메시는 적어도 헤드셋 시스템(110)의 눈 디스플레이 시스템(116A 및 116B)으로부터 유래하는 기하학적 왜곡 효과를 보정하도록 구성될 수 있다. 특정 실시예에서, 변환 블록(220A 및 220B)은 각 타일의 경계 상자를 표면에 대한 경계 상자와 비교함으로써 각각의 광선 번들이 장면 내의 표면과 교차하는지 여부를 결정할 수 있다. 광선 번들이 객체와 교차하지 않으면 폐기될 수 있다. 타일-표면 교차가 검출되고, 해당 타일-표면 쌍은 픽셀 블록(230A 및 230B)으로 전달된다.
일반적으로, 픽셀 블록(230A 및 230B)은 특정 실시예에 따라 타일-표면 쌍으로부터 색상 값을 결정하여 픽셀 색상 값을 생성할 수 있다. 각 픽셀에 대한 색상 값은 컨트롤러 블록(210)에 의해 수신되어 저장된 표면의 텍스처 데이터로부터 샘플링될 수 있다. 픽셀 블록(230A 및 230B)은 변환 블록(220A 및 220B)으로부터 타일-표면 쌍을 수신하고, 쌍선형 필터링을 스케줄링할 수 있다. 각 타일-표면 쌍마다, 픽셀 블록(230A 및 230B)은 투사된 타일이 표면과 교차하는 위치에 대응하는 색상 값을 사용하여 타일에 대응하는 픽셀에 대한 색상 정보를 샘플링할 수 있다. 특정 실시예에서, 픽셀 블록(230A 및 230B)은 각각의 픽셀에 대해 적색, 녹색, 및 청색 색상 성분을 개별적으로 처리할 수 있다. 특정 실시예에서, 본원에 기술된 바와 같이, 픽셀 블록은 표면과 연관된 색상(예컨대, 색상 및 불투명도)에 기반한 하나 이상의 처리 숏컷(shortcut)을 활용할 수 있다. 특정 실시예에서, 제1 눈 디스플레이 시스템(116A)의 디스플레이 엔진(112)의 픽셀 블록(230A)은 독립적으로, 그리고 제2 눈 디스플레이 시스템(116B)의 디스플레이 엔진(112)의 픽셀 블록(230B)과 병렬로 진행할 수 있다. 그 다음, 픽셀 블록은 디스플레이 블록에 자신의 색상 결정을 출력할 수 있다.
일반적으로, 디스플레이 블록(240A 및 240B)은 픽셀 블록(230A 및 230B)으로부터 픽셀 색상 값을 수신하고, (예컨대, 디스플레이가 스캔라인 디스플레이에서와 같이 특정 데이터 포맷을 요구하는 경우) 데이터의 포맷을 디스플레이에 더 적합하도록 변환하고, 픽셀 색상 값에 하나 이상의 밝기 보정(brightness correction)을 적용하고, 그리고 디스플레이에 출력할 픽셀 색상 값을 준비할 수 있다. 디스플레이 블록(240A 및 240B)은 픽셀 블록(230A 및 230B)에 의해 생성된 타일 체계(tile-order) 픽셀 색상 값을 물리적 디스플레이에서 요구될 수 있는 스캔라인 또는 행 체계 데이터로 변환할 수 있다. 밝기 보정은 임의의 필요한 밝기 보정, 감마 매핑, 및 디더링을 포함할 수 있다. 디스플레이 블록(240A 및 240B)은 보정된 픽셀 색상 값을 물리적 디스플레이(예컨대, 드라이버(154)를 통해 도 1b의 동공 디스플레이(156))에 직접 출력하거나, 이러한 픽셀 값을 디스플레이 엔진(112) 외부의 다양한 포맷의 블록에 출력할 수 있다. 예를 들어, 눈 디스플레이 시스템(116A 및 116B) 또는 헤드셋 시스템(110)은, 백엔드 색상 처리를 추가로 커스터마이징하거나, 디스플레이에 대한 보다 넓은 인터페이스를 지원하거나, 디스플레이 속도 또는 충실도를 최적화하기 위한 추가 하드웨어 또는 소프트웨어를 포함할 수 있다.
특정 실시예에서, 컨트롤러 블록(210)은 마이크로컨트롤러(212), 텍셀 메모리(214), 메모리 컨트롤러(216), I/O 통신을 위한 데이터 버스(217), 입력 스트림 데이터(205)를 위한 데이터 버스(218) 등을 포함할 수 있다. 메모리 컨트롤러(216)와 마이크로컨트롤러(212)는 시스템의 다른 모듈과의 I/O 통신을 위한 데이터 버스(217)를 통해 연결될 수 있다. 마이크로컨트롤러(212)는 데이터 버스(217)를 통해 위치 데이터 및 표면 정보와 같은 제어 패키지를 수신할 수 있다. 입력 스트림 데이터(205)는 마이크로컨트롤러(212)에 의해 설정된 후에 신체 착용형 컴퓨팅 시스템으로부터 컨트롤러 블록(210)으로 입력될 수 있다. 입력 스트림 데이터(205)는 메모리 컨트롤러(216)에 의해 필요한 텍셀 포맷으로 변환되어 텍셀 메모리(214)에 저장될 수 있다. 특정 실시예에서, 텍셀 메모리(214)는 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
특정 실시예에서, 신체 착용형 컴퓨팅 시스템은 입력 스트림 데이터(205)를 메모리 컨트롤러(216)에 전송할 수 있고, 메모리 컨트롤러(216)는 입력 스트림 데이터를 요구된 포맷을 갖는 텍셀로 변환하고, 스위즐 패턴(swizzle pattern)을 갖는 텍셀을 텍셀 메모리(214)에 저장할 수 있다. 이러한 스위즐 패턴으로 구성된 텍셀 메모리를 통해, 매 픽셀(모든 픽셀은 타일과 연관되며, 예컨대, "타일"은 16x16 픽셀의 블록과 같은 정렬된 픽셀 블록을 나타냄)의 적어도 하나의 색상 성분(예컨대, 적색, 녹색, 및/또는 청색)을 결정하는 데 필요한 (예컨대, 4x4 텍셀 블록 내의) 텍셀은 하나의 판독 동작을 사용하여 픽셀 블록(230A 및 230B)에 의해 검색될 수 있다. 그 결과, 디스플레이 엔진(112)은, 텍셀 어레이가 적절한 패턴으로 저장되어 있지 않은 경우, 텍셀 어레이를 판독하고 어셈블링하는 데 일반적으로 요구되는 과도한 멀티플렉싱 동작을 방지할 수 있고, 따라서 디스플레이 엔진(112) 및 헤드셋 시스템의 계산 리소스 요구사항 및 전력 소비를 전반적으로 줄일 수 있다.
특정 실시예에서, 픽셀 블록(230A 및 230B)은 텍셀 메모리(212)로부터 검색된 텍셀에 기반하여 디스플레이를 위한 픽셀 데이터를 생성할 수 있다. 메모리 컨트롤러(216)는 2개의 256-비트 데이터 버스(204A 및 204B)를 통해 제각기의 픽셀 블록(230A 및 230B)에 연결될 수 있다. 픽셀 블록(230A 및 230B)은 각각의 변환 블록(220A 및 220B)으로부터 타일/표면 쌍(202A 및 202B)을 수신할 수 있고, 타일과 연관된 모든 픽셀의 적어도 하나의 색상 성분을 결정하는 데 필요한 텍셀을 식별할 수 있다. 픽셀 블록(230A 및 230B)은 메모리 컨트롤러(216) 및 256-비트 데이터 버스(204A 및 204B)를 통해 텍셀 메모리(214)로부터 식별된 텍셀(예컨대, 4×4 텍셀 어레이)을 병렬로 검색할 수 있다. 예를 들어, 타일과 연관된 모든 픽셀의 적어도 하나의 색상 성분을 결정하는 데 필요한 4×4 텍셀 어레이는 하나의 메모리 블록에 저장될 수 있고, 하나의 메모리 판독 동작을 사용하여 검색될 수 있다. 픽셀 블록(230A 및 230B)은 서로 다른 텍셀 그룹에 대한 보간을 병렬로 수행하도록 다수의 샘플 필터 블록을 (예컨대, 각각의 색상 성분마다 하나씩) 사용하여, 해당 픽셀에 대한 해당 색상 성분을 결정할 수 있다. 각각의 눈에 대한 픽셀 값(203A 및 203B)은 각각의 눈 디스플레이 시스템(116A 및 116B)에 의해 디스플레이되기 전에, 추가 처리를 위해 디스플레이 블록(240A 및 240B)으로 전송될 수 있다.
특정 실시예에서, 인공 현실 시스템(100), 및 특히 헤드셋 시스템(110)은 증강 현실 환경을 사용자에게 렌더링하는 데 사용될 수 있다. 증강 현실 환경은, 가상 요소가 사용자의 실제 환경 위에 또는 그 일부에 나타나도록, 사용자를 위해 렌더링된 가상 현실 환경의 요소(예컨대, 가상 현실 객체)를 포함할 수 있다. 예를 들어, 사용자는 본원에 개시된 기법의 특징을 구현하는 HMD(예컨대, 헤드셋 시스템(110))를 착용하고 있을 수 있다. HMD는 사용자의 환경으로부터의 광이 일반적으로 사용자의 눈에 지속되도록 허용하는 디스플레이를 포함할 수 있다. 그러나, 디스플레이의 발광 컴포넌트(예컨대, LED, OLED, 마이크로LED 등)가 디스플레이의 특정 위치에서 조명되는 경우, LED의 색상이 사용자의 환경 위에 중첩될 수 있다. 따라서, 디스플레이의 발광체가 조명될 경우 가상 객체가 사용자의 실제 환경 전방에 나타날 수 있는 반면, 해당 위치에서의 발광 컴포넌트가 조명되지 않을 경우 사용자의 환경은 디스플레이를 통해 특정 위치에서 보일 수 있다. 이것은 카메라를 사용하여 환경을 다시 렌더링하지 않고도 수행될 수 있다. 이러한 절차는 인공 현실 시스템(100)을 사용하는 사용자의 몰입감 및 사용자의 편안함을 증가시킬 수 있는 동시에, 가상 환경을 렌더링하는 것에 의해 야기되는 배터리 소비와 필요한 컴퓨팅 파워를 감소시킬 수 있다.
특정 실시예에서, 선택적으로 조명되는 디스플레이는 가상 환경에서 가상 객체와 사용자의 상호작용을 가능하게 하는 데 사용될 수 있다. 예를 들어, 사용자의 손의 위치는 추적될 수 있다. 이전 시스템에서, 사용자의 손을 가상 환경에서, 심지어는 손 추적 시스템에서 표현하는 유일한 방법은 손의 가상 표현을 생성하고 렌더링하는 것이다. 많은 사용 시나리오에서, 이는 부적절할 수 있다. 예를 들어, 작업장 환경에서는 사용자의 손이 객체와 상호작용하므로 사용자의 손 자체가 사용자에게 보일 수 있도록 하는 것이 바람직할 수 있다. 예를 들어, 예술가는 가상의 붓이나 다른 도구를 파지하고 있으므로 자신의 손을 보는 것이 바람직할 수 있다. 이러한 고급 디스플레이를 가능하게 하는 기법이 본원에 개시되어 있다.
도 3a는 사용자가 인공 현실 디스플레이 시스템을 통해 자신의 손을 보는 예를 도시하는 사용자의 헤드셋 내 뷰(in-headset view)의 일 예를 도시한 것이다. 헤드셋 내 뷰(300)는 가상 객체(304)의 뷰 및 사용자의 실제 손(302)의 뷰를 포함하는 합성(예컨대, 혼합) 현실 디스플레이를 보여주고 있다. 사용자는 가상 객체(304)의 버튼을 누르려고 시도하고 있다. 이와 같이, 사용자의 손(302)은 가상 객체(304)의 부분보다 사용자의 관점에 더 가깝다. 이는, 사용자가 버튼(예컨대, 엘리베이터 버튼)을 누르려고 할 때 손이 엘리베이터 버튼 및 패널 부분 전방에 나타나므로, 사용자의 일반적인 직관과 일치한다.
도 3b는 동일한 장면의 대안적인 뷰를 도시한 것이다. 도 3a가 사용자의 헤드셋 내 뷰(300)를 도시하는 경우, 도 3b는 헤드셋 시스템의 발광 컴포넌트에 의해 디스플레이되는 픽셀(310)만을 도시한 것이다. 픽셀은 가상 객체(304)의 표현을 포함한다. 그러나, 디스플레이 시스템 내의 임의의 조명된 발광체에 의해 가상 객체(304)는 환경에 중첩되어 디스플레이되기 때문에, 가상 객체(304)의 렌더링은 사용자의 손이 (도 3a에서와 같이) 디스플레이를 통해 표시될 수 있도록 수정되어야 한다. 이를 위해, 가상 객체(304)의 렌더링은 사용자의 손의 형상을 밀접하게 추적하는 컷아웃(cut-out)을 포함하도록 수정된다. 가상 환경을 디스플레이할 때 컷아웃 부분은 조명되지 않는 픽셀 영역(312)으로 처리된다. 다시 말해서, 가상 객체(304)의 색상을 일반적으로 디스플레이하는 발광 컴포넌트는 대신 조명하지 않도록 지시받는다. 그 결과로 나타나는 인상은 사용자 환경의 광이 계속 통과하여 도 3a에 표시된 합성 효과를 생성하도록 하는 것이다.
도 4a는 사용자의 헤드셋 내 뷰의 다른 예를 도시한 것이다. 도 4a에서, 헤드셋 내 뷰(400)는 사용자가 가상 객체(404)를 손가락으로 감쌈으로써 가상 객체(404)와 상호작용하는 것을 보여주고 있다. 사용자의 실제 손(402)의 뷰는 사용자의 손(예컨대, 사용자의 손바닥 근처)을 부분적으로 가리고 사용자의 손(402)(예컨대, 사용자의 손가락)에 의해 부분적으로 가려진 가상 객체(404)를 보여주고 있다. 사용자는, 본원에 기술된 부분 렌더링 기법으로 인해, 가상 객체(404)를 물리적으로 느끼지는 못하더라도 가상 객체(404)를 잡고 있다는 것을 보다 직관적으로 이해할 수 있다.
도 4b는 도 4a에 도시된 장면의 대안적인 뷰를 도시한 것이다. 도 3b에서와 같이, 도 4b는 헤드셋 시스템의 발광 컴포넌트에 의해 디스플레이되는 픽셀(410)만을 도시한 것이다. 픽셀은 가상 객체(404)의 표현을 포함한다. 가상 객체(404)의 영역은 디스플레이되지 않는데(예컨대, 가상 객체는 조명되지 않는 픽셀 영역(412)을 포함함), 그 이유는 해당 영역이 가상 및 실제 환경의 헤드셋 내 뷰에서 사용자의 손에 의해 가려지기 때문이다. 주목할 것은 도 4b는 단순히 장면 내에 사용자의 손이 있는 위치를 결정하고 사용자의 손이 항상 디스플레이되게 하는 것이 충분하지 않을 것이라는 것을 도시한다는 것이다. 도 4a 및 도 4b에 도시된 것에 대한 반대 예가 고려된다. 사용자의 손이 항상 임의의 가상 객체 전방에 나타나게 된다면, 인공 현실 시스템(100)은 사용자의 손이 가상 객체(404)에 의해 부분적으로 가려지는 도 4a에 도시된 것과 같은 시나리오를 렌더링할 수 없을 것이다. 따라서, 가상 객체와 상호작용하는 혼합 현실 환경에서 사용자의 손을 정확하게 디스플레이하려면, 사용자의 손의 개별 부분의 심도(예컨대, 포인트와 사용자 관점 사이의 거리)를 추적하고 가상 객체의 심도와 비교해야 한다.
도 5는, 사용자의 손의 어떤 부분이 가상 객체를 가리고 또는 가상 객체에 의해 가려지는지를 결정할 경우의 사용자의 손의 이미지의 처리를 위한 그래픽 표현을 도시한 것이다. 도 5는 본 개시 내용에서 사용되는 사용자의 손의 이미지 및 그 가상 표현의 상태를 생성하는 방법을 도시하는 것으로 이해될 수 있다. 도 5에 도시된 예는 도 3a 및 도 3b의 예에서 계속된다. 사용자의 실제 손의 하나 이상의 이미지(302)는 헤드셋 시스템(110)의 하나 이상의 카메라에 의해 캡처된다. (일부 실시예에서 헤드셋 시스템(110) 또는 신체 착용형 컴퓨팅 시스템(120)을 포함할 수 있는) 컴퓨팅 시스템은 손 추적 알고리즘을 수행하여, 사용자의 손 상의 다양한 개별 위치에 대한 상대적 위치에 기반하여 사용자의 손의 포즈를 결정한다. 예를 들어, 손 추적 알고리즘은 사용자의 손의 손가락 끝, 관절, 손바닥과 손등, 및 다른 별개의 부분의 위치를 검출할 수 있다. 컴퓨팅 시스템은 또한 사용자의 손의 심도(예컨대, 카메라에 의해 표현되는 바와 같은 사용자의 관점과 손 사이의 거리)를 결정할 수 있다.
결정된 포즈로부터, 컴퓨팅 시스템은 손에 대한 3D 메시(502)를 생성한다. 3D 메시는 사용자의 손의 가상 객체 표현을 포함할 수 있다. 특정 실시예에서, 3D 메시는 몰입형 인공 현실 장면에서 사용자의 손의 표현을 렌더링하기 위해 생성될 수 있는 3D 메시와 유사할 수 있다. 컴퓨팅 시스템은 또한 3D 메시에 대한 높이 그리드(504) 오버레이를 생성한다. 컴퓨팅 시스템은 3D 메시에 기반하여 높이 그리드를 생성할 수 있다. 예를 들어, 컴퓨팅 시스템은 (예컨대, 사용자의 손바닥과 같은 랜드마크 위치에 기반하여) 손에 대한 고정된 평면을 결정할 수 있다. 컴퓨팅 시스템은 3D 메시에 기반하여 고정 평면으로부터의 변화를 결정할 수 있고, 그에 따라 컴퓨팅 시스템은 특정 위치(예컨대, 손가락 끝, 관절 등)의 심도가 고정 평면의 심도에서 벗어난다고 결정하게 된다. 이들 포인트에서의 변화는 높이 그리드에 저장될 수 있다. 컴퓨팅 시스템은 또한 알려진 거리(예컨대, 추적된 위치)를 보간하여 추론된 거리를 결정함으로써 3D 메시의 위치에서의 높이를 계산할 수 있다.
전술한 바와 같이, 3D 메시(502) 및 높이 그리드(504)는 신체 착용형 컴퓨팅 시스템(120) 및 헤드셋 시스템(110)의 이용 가능 컴퓨팅 리소스 및 전력 리소스에 기반하여, 신체 착용형 컴퓨팅 시스템(120)에 의해 생성될 수 있다. 인공 현실 시스템(100)은 인공 현실 시스템(100)과 관련된 컴퓨팅 시스템의 컴퓨팅 파워, 메모리 가용성, 전력 가용성 등과 같은 리소스의 가용성을 이용하여 렌더링 지연 및 그래픽 품질에 대한 고려 사항의 균형을 추구할 수 있다. 예를 들어, 인공 현실 시스템(100)은 어떠한 컴퓨팅 시스템이 손 추적, 3D 메시(502) 생성, 및 높이 그리드(504) 생성과 같은 작업을 처리하고 있는지를 선제적으로 관리할 수 있다. 인공 현실 시스템(100)은 헤드셋 시스템이 충분한 배터리 전력 및 프로세서 가용성을 갖는다고 결정할 수 있고, 헤드셋 시스템(110)에 이들 단계를 수행하도록 지시할 수 있다. 특정 실시예에서, 헤드셋 시스템(110)과 신체 착용형 컴퓨팅 시스템(120) 사이의 데이터 전송에 의해 도입되는 지연을 줄이기 위해 헤드셋 시스템(110)이 가능한 한 많은 렌더링 프로세스를 처리하도록 하는 것이 선호될 수 있다.
3D 메시(502) 및 높이 그리드(504)는 프레임 렌더러(506)로 전달될 수 있다. 특정 실시예에서, 프레임 렌더러는 헤드셋 시스템(110)보다 더 많은 이용 가능한 컴퓨팅 리소스를 갖는 신체 착용형 컴퓨팅 시스템(120) 또는 다른 컴퓨팅 디바이스에 구현될 수 있다. 프레임 렌더러(506)는 3D 메시(502)를 3D 메시(502)의 경계에 기반하여 2차원 가상 객체 프리미티브를 포함하는 표면 표현으로 변환할 수 있다. 표면은 사용자의 손에 대한 2D 텍스처(508)를 포함할 수 있다. 특정 실시예에서, 2D 텍스처(508)는 사용자의 손을 나타내는 것으로 표면을 플래그하는 특정 색상과 연관될 수 있다. 특정 실시예에서, 텍스처의 색상은 불투명한 검정색으로 지정될 수 있으며, 이는, 텍스처를 "디스플레이"할 때 발광 컴포넌트가 조명되어서는 안 되며, 가상 환경을 렌더링할 때 (예컨대, 가상 객체로부터의) 어떠한 광도 표면을 투과하도록 허용되어서는 안 된다는 것을 의미한다. 표면은 또한 높이 그리드(504)의 위치 및 임의의 보간된 위치를 표면의 특정 위치에 매핑하는 높이 맵(510)과 연관될 수 있다. 특정 실시예에서, 2D 텍스처(508)의 위치와 높이 맵(510)의 위치 사이에는 (예컨대, 픽셀당 레벨에 대한) 직접적인 대응 관계가 있을 수 있으며, 여기서 높이 그리드(504)는 처리 필요성 때문에 더 거친 해상도를 가질 수 있다. 프레임 렌더러(506)는 이들 단계를 수행하면서 동시에 가상 환경에서 가상 객체의 표면 표현을 생성할 수 있다. 프레임 렌더러(506)는 가상 환경 내로의 사용자의 관점에 기반하여 표면 표현을 생성할 수 있다. 예를 들어, 헤드셋 시스템(110)은 헤드셋 시스템(110)이 가상 환경에서 사용자의 방향을 결정할 수 있게 하는 다양한 센서를 포함할 수 있다. 프레임 렌더러(506)는, 적절하게 배치된 2D 표면이 사용자의 관점에 기반하여 3D 객체를 나타내는 데 사용될 수 있다는 개념을 이용하여 표면을 생성할 때, 이러한 방향 정보를 사용할 수 있다. 2D 텍스처(508) 및 높이 맵(510)을 포함하는 생성된 표면은 서브-프레임 렌더러(512)로 전달될 수 있다.
서브-프레임 렌더러(512)는 사용자의 손의 가상 객체 표현(예컨대, 표면)에 대한 기본 가시성 결정을 수행하는 것을 담당할 수 있다. 본원에서 더 상세히 설명되는 바와 같이, 기본 가시성 결정은 가상 장면 내로 광선 투사를 수행하는 것 및 임의의 광선에 대해, 사용자의 손에 대한 표면 표현이 교차된 제1 표면인지 여부를 결정하는 것을 포함할 수 있다. 이는, 사용자의 손이 가상 환경의 나머지 가상 객체를 가리고, 사용자에게 디스플레이되어야 한다는 것을 나타낸다. 서브-프레임 렌더러(512)는 프레임 렌더러(506)보다 더 높은 레이트로 프레임(예컨대, 표시될 이미지)을 생성할 수 있기 때문에 그렇게 명명되었다. 예를 들어, 프레임 렌더러(506)가, 예를 들어, 초당 60프레임으로, 데이터를 생성할 수 있는 경우, 서브-프레임 렌더러(512)는, 예를 들어, 초당 200프레임으로, 데이터를 생성할 수 있다. 서브-프레임 렌더러(512)는, 기본 가시성 결정을 수행할 때, 업데이트된(예컨대, 데이터가 프레임 렌더러(506)로부터 수신된 이후 업데이트된) 사용자의 관점을 사용하여, (예컨대, 해당 표면의 모양을 수정함으로써) 임의의 가상 객체의 가시성 및 위치를 미세 조정할 수 있다. 특정 실시예에서, 지연을 추가로 감소시키기 위해, 서브-프레임 렌더러(512)는 프레임을 출력할 때까지 디스플레이 시스템에 가능한 한 가깝게 되도록 헤드셋 시스템(110) 내에 구현될 수 있다. 이것은 사용자의 움직임(예컨대, 사용자의 머리 또는 눈의 움직임)과 사용자에게 표시되는 (해당 움직임을 포함하는) 이미지 사이의 지연을 감소시키는 것이다.
도 6은 본원에 논의된 실시예에 따라 사용자를 위한 가상 장면의 이미지를 생성하는 프로세스를 도시한 것이다. 도 6은 도 3a-도 3b 및 도 5에 도시된 예를 계속하여 구축한 것이다. 먼저, 헤드셋 시스템(110)의 카메라는 사용자의 환경의 이미지를 캡처한다. 이미지는 장면에서 가상 객체를 가릴 객체, 예를 들어, 사용자의 손을 포함한다. 동시에, 헤드셋 시스템(110)은 제1 사용자 포즈(600)를 결정한다. 제1 사용자 포즈(600)는 (예컨대, SLAM 또는 다른 로컬화 기법을 사용하여) 캡처된 이미지 또는 이미지들로부터 결정될 수 있다. 제1 사용자 포즈(600)는 헤드셋 시스템의 하나 이상의 온보드 센서(예컨대, 관성 측정 유닛)에 기반하여 결정될 수 있다. 캡처된 이미지는, 예를 들어, 헤드셋 시스템(110) 또는 신체 착용형 컴퓨팅 시스템(120)에 의해, 손 추적을 수행하고, 3D 메시(502) 및 높이 그리드(504)를 생성하는 데 사용될 수 있다. 제1 사용자 포즈(600), 3D 메시(502), 및 높이 그리드(504)는 프레임 렌더러(506)로 전달될 수 있다.
프레임 렌더러(506)는 전술한 바와 같이 3D 메시(502) 및 높이 그리드(504)에 기반하여 프레임(602)에 사용될 사용자 손의 표면 가상 객체 표현을 생성할 수 있다. 표면은 2D 불투명 텍스처(508), 높이 맵(510), 및 가상 환경에서 사용자의 손의 위치, 표면의 경계 등과 같은 가상 환경에서 사용자의 손을 나타내는 데 필요한 다른 정보를 포함할 수 있다. 프레임 렌더러(506)는 또한 가상 환경에서 다른 가상 객체(604)를 나타내는 표면을 생성할 수 있다. 프레임 렌더러(506)는 제1 프레임 레이트(예컨대, 60fps)를 지원하기 위해 이러한 정보를 생성하는 데 필요한 계산을 수행할 수 있다. 프레임 렌더러는 (예컨대, 프레임 렌더러(506)가 신체 착용형 컴퓨터 내에 구현되는 경우 무선 연결을 통해) 이러한 모든 정보를 서브-프레임 렌더러(512)에 전달할 수 있다.
서브-프레임 렌더러(512)는 가상 객체(604)에 대한 표면 및 사용자의 손의 가상 객체 표현에 대한 표면을 수신할 수 있다. 서브-프레임 렌더러(512)는 가상 장면(606)에서 이들 표면의 가시성 결정을 수행할 수 있다. 서브-프레임 렌더러(512)는 제2 사용자 포즈(608)를 결정할 수 있다. 제2 사용자 포즈(608)는, 제1 사용자 포즈(600)가 생성된 프레임마다 업데이트되더라도, 사용자가 약간 움직일 수 있기 때문에, 제1 사용자 포즈(600)와 다를 수 있다. 업데이트된 사용자 포즈를 해명하지 못하면 인공 현실 시스템(100)을 사용하는 동안 사용자의 불편함이 크게 증가할 수 있다. 가시성 결정은, 헤드셋 시스템(110) 및 제2 사용자 포즈(608)의 디스플레이에서의 위치에 기반하는 여러 광선(예컨대, 광선(610a, 610b, 610c, 및 610d)) 각각의 원점을 갖는 제2 사용자 포즈(608)에 기반하여 가상 환경 내로의 광선 투사를 수행하는 것을 포함할 수 있다. 특정 실시예에서, 광선 투사는 디스플레이 엔진(112)의 변환 블록(220A 및 220B)에 의해 수행되는 것과 유사하거나 이와 함께 수행될 수 있다.
가시성 결정에 사용되는 각각의 광선마다, 서브-프레임 렌더러(512)는 이러한 광선을 가상 환경 내로 투사하고, 해당 광선이 가상 환경 내의 표면과 교차하는지 여부를 결정할 수 있다. 특정 실시예에서, 표면당 레벨에 대한 심도 테스팅(예컨대, 어느 표면이 먼저 교차하는지의 결정)이 수행될 수 있다. 즉, 각각의 표면은 서브-프레임 렌더러(512)(또는 변환 블록(220A 및 220B))가 상호작용하는 표면을 신속하게 식별할 수 있게 하는 단일의 높이 또는 심도 값을 가질 수 있다. 예를 들어, 서브-프레임 렌더러(512)는 광선(610a)을 가상 환경 내로 투사하고, 해당 광선이 가상 객체(304)에 대응하는 표면과 처음으로 교차한다고 결정할 수 있다. 서브-프레임 렌더러(512)는 광선(610b)을 가상 환경 내로 투사하고, 해당 광선이 사용자의 손에 대응하는 표면(612) 근처의 포인트에서 가상 객체(304)와 교차한다고 결정할 수 있다. 서브-프레임 렌더러는 광선(610c)을 가상 환경 내로 투사하고, 해당 광선이 사용자의 손에 대응하는 표면(612)과 처음으로 교차한다고 결정할 수 있다. 서브-프레임 렌더러(512)는 광선(610d)을 가상 환경 내로 투사하고, 해당 광선이 가상 환경 내의 어떤 객체와도 교차하지 않는다고 결정할 수 있다.
환경 내로 투사된 각 광선은 사용자에게 디스플레이될 이미지의 하나 이상의 픽셀에 대응할 수 있다. 광선에 대응하는 픽셀은 광선이 교차하는 표면에 기반하여 색상 값을 할당받을 수 있다. 예를 들어, 광선(610a 및 610b)과 연관된 픽셀은 가상 객체(304)에 기반하여 (예컨대, 표면과 연관된 텍스처 값을 샘플링함으로써) 색상 값을 할당받을 수 있다. 광선(610c)과 연관된 픽셀은 표면(612)에 기반하여 색상 값을 할당받을 수 있다. 특정 실시예에서, 색상 값은 렌더링된 이미지를 궁극적으로 디스플레이할 디스플레이의 발광 컴포넌트에 명령을 제공하기 위해 불투명(예컨대, 블렌딩이 발생하지 않거나 광이 투과하지 않을 것) 및 어둡거나 검정색으로 지정될 수 있다. 광선(610d)과 연관된 픽셀은 디폴트 색상을 할당받을 수 있다. 특정 실시예에서, 디폴트 색상은 표면(612)에 사용된 값과 유사할 수 있거나, 이러한 값과 동일한 값을 제공받을 수 있다. 이러한 디폴트 색상은, 표시할 가상 객체가 없을 경우(예컨대, 빈 공간이 있는 경우), 사용자의 환경이 가시성을 갖도록 선택될 수 있다.
광선의 각각에 대해 행해진 색상 값 결정은 서브-프레임 렌더러(512)에 의해 디스플레이를 위한 이미지를 준비하는 데 사용될 수 있다. 특정 실시예에서, 이것은 디스플레이 엔진(112)의 픽셀 블록(230A 및 230B)과 디스플레이 블록(240A 및 240B)에 의해 수행되는 적절한 단계를 포함할 수 있다. 서브-프레임 렌더러(512)는 결정된 픽셀 색상 값을 합성하여 사용자에게 디스플레이하기 위한 서브-프레임(614)을 준비할 수 있다. 서브-프레임은 사용자의 손에 대한 컷아웃을 포함하는 것으로 나타나는 가상 객체(616)의 표현을 포함할 수 있다. 헤드셋 시스템의 디스플레이 컴포넌트에 의해 디스플레이될 경우, 컷아웃은 밝은 사용자의 손이 표면(612) 대신에 실제로 나타나게 할 수 있다. 따라서, 사용자는 가상 객체(616)와 상호작용하는 자신의 실제 손을 인지할 수 있을 것이다.
도 7은 본원에 논의된 실시예에 따라 사용자를 위한 가상 장면의 이미지를 생성하는 프로세스를 도시한 것이다. 도 7은 도 4a 및 도 4b에 도시된 예를 계속해서 구축한다. 먼저, 헤드셋 시스템(110)의 카메라는 사용자의 환경의 이미지를 캡처한다. 이미지는 장면에서 가상 객체를 가릴 객체, 예를 들어, 사용자의 손을 포함한다. 동시에, 헤드셋 시스템(110)은 제1 사용자 포즈(700)를 결정한다. 캡처된 이미지는, 예를 들어, 헤드셋 시스템(110) 또는 신체 착용형 컴퓨팅 시스템(120)에 의해, 손 추적을 수행하고, 3D 메시(701) 및 해당 높이 그리드를 생성하는 데 사용될 수 있다. 제1 사용자 포즈(700), 3D 메시(701), 및 해당 높이 그리드는 프레임 렌더러(506)로 전달될 수 있다.
프레임 렌더러(506)는 전술한 바와 같이 3D 메시(701) 및 높이 그리드에 기반하여 프레임(702)에 사용될 사용자 손의 표면(가상 객체 표현)을 생성할 수 있다. 표면은 2D 불투명 텍스처(706), 높이 맵(708), 및 가상 환경에서 사용자의 손의 위치, 표면의 경계 등과 같은 가상 환경에서 사용자의 손을 나타내는 데 필요한 다른 정보를 포함할 수 있다. 프레임 렌더러(506)는 또한 가상 환경에서 다른 가상 객체(404)를 나타내는 표면을 생성할 수 있다. 프레임 렌더러(506)는 제1 프레임 레이트(예컨대, 60fps)를 지원하기 위해 이러한 정보를 생성하는 데 필요한 계산을 수행할 수 있다. 프레임 렌더러는 (예컨대, 프레임 렌더러(506)가 신체 착용형 컴퓨터 내에 구현되는 경우 무선 연결을 통해) 이러한 모든 정보를 서브-프레임 렌더러(512)에 전달할 수 있다.
서브-프레임 렌더러(512)는 가상 객체(404)에 대한 표면 및 사용자의 손의 가상 객체 표현에 대한 표면을 수신할 수 있다. 서브-프레임 렌더러(512)는 가상 장면(716)에서 이들 표면의 가시성 결정을 수행할 수 있다. 서브-프레임 렌더러(512)는 제2 사용자 포즈(710)를 결정할 수 있다. 제2 사용자 포즈(710)는, 제1 사용자 포즈(700)가 생성된 프레임마다 업데이트되더라도, 사용자가 약간 움직일 수 있기 때문에, 제1 사용자 포즈(700)와 다를 수 있다. 업데이트된 사용자 포즈를 해명하지 못하면 인공 현실 시스템(100)을 사용하는 동안 사용자의 불편함이 크게 증가할 수 있다. 가시성 결정은, 헤드셋 시스템(110) 및 제2 사용자 포즈(710)의 디스플레이에서의 위치에 기반하는 여러 광선(예컨대, 광선(720a, 720b, 720c, 및 720d)) 각각의 원점을 갖는 제2 사용자 포즈(710)에 기반하여 가상 환경 내로의 광선 투사를 수행하는 것을 포함할 수 있다. 특정 실시예에서, 광선 투사는 디스플레이 엔진(112)의 변환 블록(220A 및 220B)에 의해 수행되는 것과 유사하거나 이와 함께 수행될 수 있다.
가시성 결정에 사용되는 각각의 광선마다, 서브-프레임 렌더러(512)는 이러한 광선을 가상 환경 내로 투사하고, 해당 광선이 가상 환경 내의 표면과 교차하는지 여부를 결정할 수 있다. 특정 실시예에서, 픽셀당 레벨에 대한 심도 테스팅(예컨대, 어느 표면이 먼저 교차하는지의 결정)이 수행될 수 있다. 즉, 가상 환경의 각각의 표면은, 서브-프레임 렌더러(512)(또는 변환 블록(220A 및 220B))가 개별 픽셀 기반으로 표면 간의 상호작용 및 교차를 구별할 수 있게 하는 높이 맵 또는 심도 맵을 가질 수 있다. 예를 들어, 서브-프레임 렌더러(512)는 광선(720a)을 가상 환경 내로 투사하고, 해당 광선이 가상 객체(404)에 대응하는 표면과 처음으로 교차한다고 결정할 수 있다. 서브-프레임 렌더러(512)는 광선(720b)을 가상 환경 내로 투사하고, 해당 광선이 가상 환경 내의 어떤 객체와도 교차하지 않는다고 결정할 수 있다. 예를 들어, 서브-프레임 렌더러(512)는 광선(720c)을 가상 환경 내로 투사하고, 해당 광선이 가상 객체(404)에 대응하는 표면과 처음으로 교차한다고 결정할 수 있다. 주목할 것은 광선(720c)이, 가상 객체(724)가 사용자의 손에 대응하는 표면(722)과 중첩하는 가상 객체(724)에 대한 표면의 중첩 영역을 따른 포인트에서 교차한다는 것이다. 서브-프레임 렌더러는 광선(720d)을 가상 환경 내로 투사하고, 해당 광선이 사용자의 손에 대응하는 표면(722)과 처음으로 교차한다고 결정할 수 있다.
환경 내로 투사된 각 광선은 사용자에게 디스플레이될 이미지의 하나 이상의 픽셀에 대응할 수 있다. 광선에 대응하는 픽셀은 광선이 교차하는 표면에 기반하여 색상 값을 할당받을 수 있다. 예를 들어, 광선(720a 및 720c)과 연관된 픽셀은 가상 객체(404)에 기반하여 (예컨대, 표면과 연관된 텍스처 값을 샘플링함으로써) 색상 값을 할당받을 수 있다. 광선(720d)과 연관된 픽셀은 표면(722)에 기반하여 색상 값을 할당받을 수 있다. 특정 실시예에서, 색상 값은 렌더링된 이미지를 궁극적으로 디스플레이할 디스플레이의 발광 컴포넌트에 명령을 제공하기 위해 불투명(예컨대, 블렌딩이 발생하지 않거나 광이 투과하지 않을 것) 및 어둡거나 검정색으로 지정될 수 있다. 광선(720b)과 연관된 픽셀은 디폴트 색상을 할당받을 수 있다. 특정 실시예에서, 디폴트 색상은 표면(722)에 사용된 값과 유사할 수 있거나, 이러한 값과 동일한 값을 제공받을 수 있다. 이러한 디폴트 색상은, 표시할 가상 객체가 없을 경우(예컨대, 빈 공간이 있는 경우), 사용자의 환경이 가시성을 갖도록 선택될 수 있다.
광선의 각각에 대해 행해진 색상 값 결정은 서브-프레임 렌더러(512)에 의해 디스플레이를 위한 이미지를 준비하는 데 사용될 수 있다. 특정 실시예에서, 이것은 디스플레이 엔진(112)의 픽셀 블록(230A 및 230B)과 디스플레이 블록(240A 및 240B)에 의해 수행되는 적절한 단계를 포함할 수 있다. 서브-프레임 렌더러(512)는 결정된 픽셀 색상 값을 합성하여 사용자에게 디스플레이하기 위한 서브-프레임(728)을 준비할 수 있다. 서브-프레임은 사용자의 손에 대한 컷아웃을 포함하는 것으로 나타나는 가상 객체(726)의 표현을 포함할 수 있다. 헤드셋 시스템의 디스플레이 컴포넌트에 의해 디스플레이될 경우, 컷아웃은 사용자의 손이 표면(722) 대신에 실제로 나타나게 할 수 있다. 따라서, 사용자는 자신의 실제 손이 가상 객체(726)와 상호작용하고 가상 객체(726)가 자신의 손의 부분을 적절하게 가리는 것을 인지할 수 있을 것이다.
도 8a 및 도 8b는 증강 현실에서 가상 객체의 현실 세계 객체 오클루전을 제공하기 위한 예시적인 방법(800)을 예시한 것이다. 방법은 단계 810에서 시작할 수 있고, 이 단계에서 헤드셋 시스템(110)(예컨대, 헤드 마운트 디스플레이)의 적어도 하나의 카메라는 헤드셋 시스템(110)의 환경의 이미지를 캡처할 수 있다. 특정 실시예에서, 이미지는 표준 풀 컬러 이미지, 흑백 이미지, 심도 감지 이미지, 또는 임의의 다른 적합한 타입의 이미지일 수 있다. 이미지는 인공 현실 시스템(100)이 가상 또는 혼합 현실 뷰에서 특정 가상 객체를 가리는 데 사용되어야 한다고 결정하는 객체를 포함할 수 있다. 다음 예에서, 해당 객체는 사용자의 손이지만, 다양한 적합한 객체일 수 있으며, 위에서 기술되었다.
특정 실시예에서, 단계 815 내지 840은 가상 환경에서 사용자의 손 및 가상 객체의 위치에 기반하여 사용자에게 디스플레이될 프레임을 생성하는 것과 관련될 수 있다. 특정 실시예에서, 단계 815 내지 840 중 하나 이상은 헤드셋 시스템(110)에 의해, 신체 착용형 컴퓨팅 시스템(120)에 의해, 또는 헤드셋 시스템보다 더 큰 컴퓨팅 리소스를 갖고 헤드셋 시스템(110)에 통신 가능하게 연결된 다른 적합한 컴퓨팅 시스템에 의해 수행될 수 있다. 특정 실시예에서, 각 단계에서 수행되는 작업은 인공 현실 시스템(100)의 작업 컨트롤러에 의해 적격 컴퓨팅 시스템 사이에 할당될 수 있다.
방법은 단계 815에서 계속될 수 있고, 이 단계에서 컴퓨팅 시스템은 환경 내로의 헤드셋 시스템의 사용자의 관점을 결정할 수 있다. 특정 실시예에서, 이러한 관점은 적절한 로컬화 및/또는 매핑 기법을 사용하여 환경의 캡처된 이미지로부터 순수하게 결정될 수 있다. 특정 실시예에서, 이러한 관점은 헤드셋 시스템의 다른 센서로부터 검색된 데이터를 사용하여 결정될 수 있다.
단계 820에서, 컴퓨팅 시스템은 사용자의 손의 포즈를 검출할 수 있다. 사용자의 손의 포즈를 검출하기 위해, 컴퓨팅 시스템은 먼저 사용자의 손을 포함하는 캡처 이미지의 부분을 식별할 수 있다. 컴퓨팅 시스템은 여러 알고리즘 중 하나를 수행하여 캡처 이미지 내의 사용자의 손의 존재를 식별할 수 있다. 손이 실제로 이미지에 나타나는 것을 확인한 후, 컴퓨팅 시스템은 손 추적 분석을 수행하여, 캡처 이미지 내의 사용자의 손 상의 여러 개별 위치의 존재 및 위치를 식별할 수 있다. 특정 실시예에서, 손 추적은 심도 추적 카메라를 사용하여 가능해질 수 있다. 특정 실시예에서, 손 추적은 표준 심도 추적 없이 심층 학습 및 모델 기반 추적을 사용하여 수행될 수 있다. 심층 신경망은 사람의 손의 위치 뿐만 아니라 손 관절 및 손가락 끝과 같은 랜드마크를 예측하도록 트레이닝 및 사용될 수 있다. 랜드마크는 손과 손가락의 높은 자유도 포즈(예컨대, 26 자유도 포즈)를 재구성하는 데 사용될 수 있다. 포즈는 환경 내에서 사용자의 관점에 대한 손의 위치를 제공할 수 있다.
단계 825에서, 컴퓨팅 시스템은 검출된 포즈에 기반하여 사용자의 손에 대한 3D 메시를 생성할 수 있다. 캡처된 이미지를 사용하여, 컴퓨팅 시스템은 검출된 포즈를 설명하는 사용자의 손의 모델을 준비할 수 있다. 특정 실시예에서, 3D 메시는, 사용자의 손이 가상 장면에서 적절하게 표현될 수 있도록, 사용자의 손에 기반하여 완전히 모델링된 가상 객체일 수 있다. 3D 메시로부터, 컴퓨팅 시스템은 환경 내의 사용자의 손의 높이 맵을 생성할 수 있다. 예를 들어, 컴퓨팅 시스템은 사용자의 손 부분의 심도(예컨대, 관점 및/또는 카메라로부터 사용자의 손의 거리)를 결정할 수 있다. 가상 객체의 정확한 오클루전을 가능하게 하려면, 사용자의 손의 위치를 훨씬 더 세밀하게 알아야 한다. 이미지만을 기반으로 심도를 정확하게 계산하는 것은 엄청나게 많은 계산 비용이 들 수 있다. 3D 메시는 갭을 충전하는 데 사용될 수 있는데, 그 이유는 사용자의 손의 윤곽이 3D 메시로부터 결정될 수 있고, 사용자의 손의 다양한 높이를 저장하는 데이터 구조 또는 높이 맵을 생성할 수 있기 때문이다.
단계 830에서, 컴퓨팅 시스템은 사용자 주변의 가상 환경 내로의 사용자의 관점을 결정할 수 있다. 가상 환경은 인공 현실 시스템(100)에 의해 실행되는 인공 현실 애플리케이션에 의해 제어될 수 있다. 가상 환경은 가상 환경 내의 복수의 가상 객체를 포함할 수 있다. 각각의 가상 객체는 그 사이즈, 형상, 텍스처, (예컨대, 고정 포인트와 관련한) 절대 위치, 및 (예컨대, 관점과 관련한) 상대 위치를 기술하는 정보와 연관될 수 있다. 가상 환경 내의 관점은 실제 환경 내로의 사용자의 관점과 가상 환경 내로의 사용자의 관점 간의 대응 관계에 기반하여 결정될 수 있다. 이러한 대응 관계는 인공 현실 시스템(100)에 의해 결정될 수 있거나 사용자에 의해 지정(예컨대, 캘리브레이션)될 수 있다.
단계 835에서, 컴퓨팅 시스템은 3D 메시에 기반하여 사용자의 손에 대한 가상 객체 표현을 생성할 수 있다. 또한 본 개시 내용 전체에서 표면으로 참조되는 가상 객체 표현은 텍스처 및 연관된 높이 맵과 연관될 수 있다. 특정 실시예에서, 가상 객체 표현은 가상 환경 내로의 관점에서 볼 때 사용자의 손의 3D 메시의 2D 표현일 수 있다. 이러한 2D 표현은 3D 메시를 표현하는 데 적합할 수 있는데, 그 이유는 컴퓨팅 시스템이 2D 표현만이 생성되었다는 것을 사용자가 검출할 수 없을 정도로 프레임을 충분히 빠른 레이트로 (예컨대, 60Hz 이상으로) 생성할 수 있기 때문이다.
단계 840에서, 컴퓨팅 시스템은, 가상 객체의 모델 및 가상 환경의 모델과 가상 환경 내로의 사용자의 관점에 기반하여, 가상 환경 내의 다른 가상 객체의 표현을 생성할 수 있다. 사용자의 손의 가상 객체 표현과 유사하게, 이들 가상 객체 표현은 가상 객체에 대한 텍스처, 및, 예를 들어, 가상 객체들 간의 교차를 결정할 때, 3D 모델을 빠르게 시뮬레이션하는 데 사용될 수 있는 높이 맵과 연관될 수 있다. 종합하면, 가상 객체 표현은 가상 환경의 프레임을 렌더링하기 위한 데이터를 구성한다. 이러한 맥락에서, 프레임은 가상 객체 표현이 생성되는 레이트를 의미한다. 이러한 레이트는 사용자의 관점의 특정 움직임 정도의 가능성에 기반하여 결정될 수 있다.
방법은 도 8b에 도시된 단계 850으로 진행할 수 있다. 단계 850 내지 890은 디스플레이를 위한 가상 환경의 서브-프레임을 생성하고 제공하는 것에 관한 것일 수 있다. 서브-프레임은 생성 및 발생된 데이터를 가상 환경의 프레임으로 사용하고, 필요한 경우 데이터를 업데이트하고, 그리고 헤드셋 시스템(110)의 디스플레이 컴포넌트(예컨대, 발광 컴포넌트의 어레이)에 의해 사용자에게 표시될 이미지를 실제로 결정할 수 있다. 서브-프레임은 프레임이 준비되는 레이트보다 훨씬 높은 레이트로 (예컨대, 200Hz 이상으로) 준비되어 디스플레이될 수 있다. 서브-프레임이 준비되는 레이트가 높기 때문에, 시스템 간 통신이 제한될 필요가 있을 수 있다. 따라서, 단계 850 내지 890에 의해 요구되는 계산이 헤드셋 시스템(110)에 통신 가능하게 연결된 신체 착용형 컴퓨팅 시스템(120) 또는 다른 컴퓨팅 시스템이 아닌, 헤드셋 시스템(110) 자체에 의해 수행되는 것이 선호될 수 있다.
단계 850에서, 컴퓨팅 시스템은 환경 내로의 그리고 사용자 주변의 가상 환경 내로의 업데이트된 사용자 관점을 결정할 수 있다. 사용자의 미세한 움직임(예컨대, 머리 움직임, 눈 움직임 등)을 고려하여 서브-프레임을 준비할 수 있도록 업데이트된 사용자 관점이 필요할 수 있다. 업데이트된 사용자 관점은 전술한 바와 동일한 방식으로 결정될 수 있다.
단계 855에서, 컴퓨팅 시스템은 가상 객체 표현 및 사용자의 손의 가상 객체 표현과 관련하여 가상 환경 내로의 사용자의 관점의 기본 가시성 결정을 수행할 수 있다. 특히, 가시성 결정은 광선 투사 기법을 사용하여 수행될 수 있다. 컴퓨팅 시스템은 가상 환경 내로 투사될 여러 광선을 구성할 수 있다. 각각의 광선은 헤드셋 시스템(110)에 의해 디스플레이될 이미지의 하나 이상의 픽셀에 대응할 수 있다. 각각의 픽셀은 헤드셋 시스템(110)의 발광체의 하나 이상의 디스플레이 위치에 대응할 수 있다. 각 광선의 원점은 가상 환경 내로의 사용자의 관점과 해당 픽셀의 위치를 기반으로 할 수 있다. 광선의 방향은 가상 환경 내로의 사용자의 관점에 기반하여 유사하게 결정될 수 있다. 광선을 가상 환경 내로 투사하는 것은 가상 환경에서 광의 거동을 시뮬레이션하는 데 수행될 수 있다. 일반적으로 말하면, 광선을 투사하는 것은, 광선이 가상 환경 내의 가상 객체와 교차하는지 여부를 결정하고, 교차하는 광선에 대응하는 픽셀에 색상을 할당하는 것으로 구성된다.
각 광선에 대한 프로세스는 단계 860 내지 880과 관련하여 부분적으로 기술되었다. 단계 860에서, 컴퓨팅 시스템은 각각의 광선이 가상 환경 내의 가상 객체와 교차하는지 여부를 결정한다. 특정 실시예에서, 컴퓨팅 시스템은 고정된 거리 또는 시간량 동안 가상 환경 내로의 광선의 경로를 시뮬레이션함으로써 교차를 체킹할 수 있다. 경로의 각 단계에서, 광선은 자신의 위치를 특정 프레임에 대해 생성된 다양한 가상 객체 표현의 위치와 비교할 수 있다. 가상 객체의 위치는, 깊이를 포함하여 해당 표현에 대해 지정된 위치와 해당 표현과 연관될 수 있는 높이 맵에 기반하여 알려져 있다. 이러한 광선 투사 기법을 사용하면, 광선에 대응하는 픽셀의 정확한 색상 값은 광선이 교차하는 제1 가상 객체와 연관된 색상 값이라는 것이 가정된다. 컴퓨팅 시스템이 광선이 가상 객체와 교차하지 않는다고 결정하면, 방법은 단계 875로 바로 진행할 수 있고, 이 단계에서는 아래에서 추가로 기술되는 바와 같이, 광선(및 후속적으로 해당 픽셀)과 연관된 색상 값은 광이 환경으로부터 사용자에게로 투과할 수 있도록 발광체가 조명되지 않는 상태로 유지되는 전용 패스스루 색상(dedicated passthrough color)으로 설정된다. 컴퓨팅 시스템이 광선이 가상 객체와 교차한다고 결정하면, 방법은 단계 865로 진행할 수 있다.
단계 865에서, 컴퓨팅 시스템은 교차된 가상 객체 표현을 식별하고, 교차 포인트에서 해당 텍스처의 색상을 샘플링할 수 있다. 해당 색상을 샘플링하기 위해, 컴퓨팅 시스템은 먼저 교차된 가상 객체 표현과 연관된 텍스처를 검색할 수 있다. 그 후 컴퓨팅 시스템은 교차 포인트에 대응하는 텍스처 상의 포인트를 결정할 수 있다. 이것은 교차 포인트를 전역 기반 또는 뷰 기반 좌표(global- or view-based coordinate)에서 텍스처 기반 좌표(texture-based coordinate)로 변환하는 것을 포함할 수 있다. 적절한 좌표가 결정되면, 컴퓨팅 시스템은 적절한 위치에서의 텍스처에 저장된 색상 값을 식별할 수 있다. 특정 실시예에서, 인공 현실 시스템(100)은 숏컷을 사용하여 이러한 동작을 수행하는 데 필요한 메모리 액세스 시간을 감소시킬 수 있다. 이러한 숏컷은 특정 가상 객체 표현을 플래깅하는 것을 포함할 수 있다.
단계 870에서, 컴퓨팅 시스템은 샘플링된 색상의 값을 결정할 수 있다. 샘플링된 색상이 불투명한 검정색(또는 해당 발광체가 조명되지 않는 상태로 유지되어야 함을 나타내는 데 사용되는 것으로 지정된 다른 색상)인 경우, 방법은 단계 875로 진행할 수 있다. 그렇지 않으면, 방법은 단계 880으로 진행할 수 있다.
단계 875에서, 컴퓨팅 시스템은 광선에 대응하는 픽셀의 색상 값을 패스스루 색상으로 설정할 수 있다. 이러한 패스스루 색상은 최종 이미지가 사용자에게 서브-프레임으로 디스플레이될 때 발광체가 조명해서는 안 된다는 것을 나타내는 발광체에 대한 명령을 생성하는 데 사용될 수 있거나 그러한 명령과 연관될 수 있다. 예시적인 패스스루 색상은 (해당 발광체가 어두워야 함을 나타내는) 검정색 또는 (발광체에 의해 광이 생성되지 않아야 함을 나타내는) 투명색(clear)을 포함할 수 있다.
단계 880에서, 컴퓨팅 시스템은 교차 포인트에서 텍스처로부터 샘플링된 색상에 기반하여 색상 값을 설정할 수 있다. 특정 실시예에서, 이것은 (예컨대, 교차 포인트가 텍스처의 개별 텍셀 위치 사이에 있을 경우) 다수의 위치에서 색상의 보간을 스케줄링하는 것을 포함할 수 있다. 특정 실시예에서, 색상을 설정하는 것은 (디스플레이 엔진(112)의 디스플레이 블록(240A 및 240B)과 관련하여 전술한 바와 같이) 색상 조정 및 밝기 보정을 수행하는 것을 포함할 수 있다.
단계 885에서, 컴퓨팅 시스템은 각각의 광선 및 해당 픽셀 위치에 대해 결정된 색상 값에 기반하여 서브-프레임으로서 디스플레이를 위한 이미지를 생성할 수 있다. 이미지는 합성 이미지로 지칭될 수 있는데, 그 이유는 이미지가 특정 위치(예컨대, 가상 환경 내로의 사용자의 관점에서 보일 수 있는 디스플레이 가상 객체인 이미지 위치)에 대해서는 최종적인 색상 값을 결합하고, 다른 위치(예컨대, 광선이 가상 객체 표현과 교차하지 않은 위치 또는 광선이 사용자의 손의 가상 객체 표현과 처음 교차한 위치)에서는 광이 전혀 생성되지 않아야 한다는 것(예컨대, 발광체가 조명되지 않아야 한다는 것)을 나타내기 때문이다. 따라서, 합성 이미지만 보면, 시청자는 렌더링된 가상 객체와 완전한 공백 위치를 볼 수 있을 것이다.
단계 890에서, 컴퓨팅 시스템은 디스플레이를 위해 서브-프레임을 제공할 수 있다. 컴퓨팅 시스템은 헤드셋 시스템(110)의 디스플레이의 발광체를 위한 합성 이미지에 기반하여 명령을 생성할 수 있다. 명령은 색상 값, 색상 밝기 또는 강도, 및 서브-프레임의 디스플레이에 영향을 미치는 임의의 변수를 포함할 수 있다. 이러한 명령은 또한 특정 발광체가 조명되지 않는 상태를 유지하거나 필요한 경우 턴오프하도록 하는 명령을 포함할 수도 있다. 전체에 기술된 바와 같이, 의도된 효과는 사용자가 결정된 관점에서 (가상 환경 내의 가상 객체와 상호작용할 수 있는) 사용자의 손을 포함한 실제 환경의 부분과 혼합된 가상 환경 내로의 가상 환경의 부분(예컨대, 가상 환경 내의 가상 객체)을 볼 수 있도록 하는 것이다.
특정 실시예는 적절한 경우 도 8a 및 도 8b의 방법의 하나 이상의 단계를 반복할 수 있다. 본 개시 내용은 도 8a 및 도 8b의 방법의 특정 단계를 특정 순서로 발생하는 것으로 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 순서로 발생하는 도 8a 및 도 8b의 방법의 임의의 적합한 단계를 고려하고 있다. 더욱이, 본 개시 내용은 도 8a 및 도 8b의 방법의 특정 단계를 포함하는 증강 현실에서 가상 객체의 현실 세계 객체 오클루전을 제공하기 위한 예시적인 방법을 기술하고 예시하지만, 본 개시 내용은, 적절한 경우, 도 8a 및 도 8b의 방법의 모든 단계 또는 일부의 단계를 포함할 수 있거나, 또는 어떠한 단계도 전혀 포함하지 않을 수 있는 임의의 적합한 단계를 포함하는 증강 현실에서 가상 객체의 현실 세계 객체 오클루전을 제공하기 위한 임의의 적합한 방법을 고려하고 있다. 또한, 본 개시 내용은 도 8a 및 도 8b의 방법의 특정 단계를 수행하는 특정 컴포넌트, 디바이스, 또는 시스템을 기술하고 예시하지만, 본 개시 내용은 도 8a 및 도 8b의 방법의 임의의 적합한 단계를 수행하는 임의의 적합한 컴포넌트, 디바이스, 또는 시스템에 대한 임의의 적합한 조합을 고려하고 있다.
도 9는 예시적인 컴퓨터 시스템(900)을 도시한 것이다. 특정 실시예에서, 하나 이상의 컴퓨터 시스템(900)은 본원에 기술되거나 예시된 하나 이상의 방법의 하나 이상의 단계를 수행한다. 특정 실시예에서, 하나 이상의 컴퓨터 시스템(900)은 본원에 기술되거나 예시된 기능을 제공한다. 특정 실시예에서, 하나 이상의 컴퓨터 시스템(900) 상에서 실행되는 소프트웨어는 본원에 기술되거나 예시된 하나 이상의 방법의 하나 이상의 단계를 수행하거나 본원에 기술되거나 예시된 기능을 제공한다. 특정 실시예는 하나 이상의 컴퓨터 시스템(900)의 하나 이상의 부분을 포함한다. 여기에서, 컴퓨터 시스템에 대한 언급은 컴퓨팅 디바이스를 포함할 수 있으며, 적절한 경우 그 반대도 마찬가지일 수 있다. 더욱이, 컴퓨터 시스템에 대한 언급은 적절한 경우 하나 이상의 컴퓨터 시스템을 포함할 수 있다.
본 개시 내용은 임의의 적합한 수의 컴퓨터 시스템(900)을 고려하고 있다. 본 개시 내용은 임의의 적합한 물리적 형태를 취하는 컴퓨터 시스템(900)을 고려하고 있다. 제한이 아닌 예로서, 컴퓨터 시스템(900)은 임베디드 컴퓨터 시스템, 시스템 온 칩(SOC), (예를 들어, 컴퓨터 온 모듈(computer-on-module)(COM) 또는 시스템 온 모듈(system-on-module)(SOM)과 같은) 단일 보드 컴퓨터 시스템(SBC), 데스크톱 컴퓨터 시스템, 랩톱 또는 노트북 컴퓨터 시스템, 대화형 키오스크, 메인프레임, 컴퓨터 시스템의 메시, 모바일폰, 개인 정보 단말기(PDA), 서버, 태블릿 컴퓨터 시스템, 증강/가상 현실 디바이스, 또는 이들 중 둘 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(900)은 하나 이상의 컴퓨터 시스템(900)을 포함할 수 있거나; 단일이거나 분산될 수 있거나; 다수의 위치에 걸쳐 있거나; 다수의 머신에 걸쳐 있거나; 다수의 데이터 센터에 걸쳐 있거나; 또는 하나 이상의 네트워크에서 하나 이상의 클라우드 컴포넌트를 포함할 수 있는 클라우드에 상주할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템(900)은 실질적인 공간적 또는 시간적 제한 없이 본원에 기술되거나 예시된 하나 이상의 방법의 하나 이상의 단계를 수행할 수 있다. 제한이 아닌 예로서, 하나 이상의 컴퓨터 시스템(900)은 실시간으로 또는 배치 모드(batch mode)에서 본원에 기술되거나 예시된 하나 이상의 방법의 하나 이상의 단계를 수행할 수 있다. 하나 이상의 컴퓨터 시스템(900)은 서로 다른 시간에 또는 서로 다른 위치에서, 적절한 경우, 본원에 기술되거나 예시된 하나 이상의 방법의 하나 이상의 단계를 수행할 수 있다.
특정 실시예에서, 컴퓨터 시스템(900)은 프로세서(902), 메모리(904), 스토리지(906), 입/출력(I/O) 인터페이스(908), 통신 인터페이스(910), 및 버스(912)를 포함한다. 본 개시 내용이 특정 배열에서 특정 수의 특정 컴포넌트를 갖는 특정 컴퓨터 시스템을 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 배열에서 임의의 적합한 수의 임의의 적합한 컴포넌트를 갖는 임의의 적합한 컴퓨터 시스템을 고려하고 있다.
특정 실시예에서, 프로세서(902)는 컴퓨터 프로그램을 구성하는 것과 같은 인스트럭션을 실행하기 위한 하드웨어를 포함한다. 제한이 아닌 예로서, 인스트럭션을 실행하기 위해, 프로세서(902)는 내부 레지스터, 내부 캐시, 메모리(904), 또는 스토리지(906)로부터 인스트럭션을 검색(또는 페치)할 수 있고; 인스트럭션을 디코딩하고 실행할 수 있고; 그 후 하나 이상의 결과를 내부 레지스터, 내부 캐시, 메모리(904), 또는 스토리지(906)에 기입할 수 있다. 특정 실시예에서, 프로세서(902)는 데이터, 인스트럭션, 또는 어드레스를 위한 하나 이상의 내부 캐시를 포함할 수 있다. 본 개시 내용은 적절한 경우, 임의의 적합한 수의 임의의 적합한 내부 캐시를 포함하는 프로세서(902)를 고려하고 있다. 제한이 아닌 예로서, 프로세서(902)는 하나 이상의 인스트럭션 캐시, 하나 이상의 데이터 캐시, 및 하나 이상의 변환 룩어사이드 버퍼(translation lookaside buffer)(TLB)를 포함할 수 있다. 인스트럭션 캐시 내의 인스트럭션은 메모리(904) 또는 스토리지(906) 내의 인스트럭션의 복사본일 수 있고, 인스트럭션 캐시는 프로세서(902)에 의한 이러한 인스트럭션의 검색 속도를 높일 수 있다. 데이터 캐시 내의 데이터는 동작을 위해 프로세서(902)에서 실행되는 인스트럭션을 위한 메모리(904) 또는 스토리지(906) 내의 데이터의 복사본일 수 있거나; 프로세서(902)에서 실행되는 후속 인스트럭션에 의한 액세스를 위해 또는 메모리(904) 또는 스토리지(906)에 기입하기 위해 프로세서(902)에서 실행된 이전 인스트럭션의 결과이거나; 또는 다른 적합한 데이터일 수 있다. 데이터 캐시는 프로세서(902)에 의한 판독 또는 기입 동작의 속도를 높일 수 있다. TLB는 프로세서(902)를 위한 가상 어드레스 변환 속도를 높일 수 있다. 특정 실시예에서, 프로세서(902)는 데이터, 인스트럭션, 또는 어드레스를 위한 하나 이상의 내부 레지스터를 포함할 수 있다. 본 개시 내용은 적절한 경우, 임의의 적합한 수의 임의의 적합한 내부 레지스터를 포함하는 프로세서(902)를 고려하고 있다. 적절한 경우, 프로세서(902)는 하나 이상의 산술 로직 유닛(arithmetic logic unit)(ALU)을 포함할 수 있거나; 멀티 코어 프로세서일 수 있거나; 또는 하나 이상의 프로세서(902)를 포함할 수 있다. 본 개시 내용이 특정 프로세서를 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 프로세서를 고려하고 있다.
특정 실시예에서, 메모리(904)는, 프로세서(902)가 실행하기 위한 인스트럭션 또는 프로세서(902)가 동작하기 위한 데이터를 저장하기 위한 메인 메모리를 포함한다. 제한이 아닌 예로서, 컴퓨터 시스템(900)은 스토리지(906) 또는 다른 소스(예를 들어, 다른 컴퓨터 시스템(900))로부터 메모리(904)로 인스트럭션을 로딩할 수 있다. 그 후 프로세서(902)는 메모리(904)로부터 내부 레지스터 또는 내부 캐시로 인스트럭션을 로딩할 수 있다. 인스트럭션을 실행하기 위해, 프로세서(902)는 내부 레지스터 또는 내부 캐시로부터 인스트럭션을 검색하고 이를 디코딩할 수 있다. 인스트럭션의 실행 동안 또는 실행 후에, 프로세서(902)는 하나 이상의 결과(중간 또는 최종 결과일 수 있음)를 내부 레지스터 또는 내부 캐시에 기입할 수 있다. 그 후 프로세서(902)는 그 결과들 중 하나 이상을 메모리(904)에 기입할 수 있다. 특정 실시예에서, 프로세서(902)는 하나 이상의 내부 레지스터 또는 내부 캐시 또는 (스토리지(906) 또는 다른 곳과 대조적인) 메모리(904)에서 인스트럭션만을 실행하고, 하나 이상의 내부 레지스터 또는 내부 캐시 또는 (스토리지(906) 또는 다른 곳과 대조적인) 메모리(904)에서 데이터에 대해서만 동작한다. 하나 이상의 메모리 버스(각각 어드레스 버스 및 데이터 버스를 포함할 수 있음)는 프로세서(902)를 메모리(904)에 연결할 수 있다. 버스(912)는 후술하는 바와 같이 하나 이상의 메모리 버스를 포함할 수 있다. 특정 실시예에서, 하나 이상의 메모리 관리 유닛(memory management unit)(MMU)은 프로세서(902)와 메모리(904) 사이에 상주하고, 프로세서(902)에 의해 요청된 메모리(904)에 대한 액세스를 가능하게 한다. 특정 실시예에서, 메모리(904)는 랜덤 액세스 메모리(RAM)를 포함한다. 이 RAM은 적절한 경우 휘발성 메모리일 수 있다. 적절한 경우, 이 RAM은 동적 RAM (DRAM) 또는 정적 RAM (SRAM)일 수 있다. 또한, 적절한 경우, 이 RAM은 단일 포트 또는 멀티 포트 RAM일 수 있다. 본 개시 내용은 임의의 적합한 RAM을 고려하고 있다. 메모리(904)는 적절한 경우, 하나 이상의 메모리(904)를 포함할 수 있다. 본 개시 내용이 특정 메모리를 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 메모리를 고려하고 있다.
특정 실시예에서, 스토리지(906)는 데이터 또는 인스트럭션을 위한 대용량 스토리지를 포함한다. 제한이 아닌 예로서, 스토리지(906)는 하드 디스크 드라이브(HDD), 플로피 디스크 드라이브, 플래시 메모리, 광학 디스크, 광자기 디스크, 자기 테이프, 또는 범용 직렬 버스(Universal Serial Bus)(USB) 드라이버, 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 스토리지(906)는 적절한 경우, 착탈식 또는 비착탈식(또는 고정) 매체를 포함할 수 있다. 스토리지(906)는 적절한 경우, 컴퓨터 시스템(900)의 내부 또는 외부에 있을 수 있다. 특정 실시예에서, 스토리지(906)는 비휘발성의 솔리드 스테이트 메모리이다. 특정 실시예에서, 스토리지(906)는 판독 전용 메모리(ROM)를 포함한다. 적절한 경우, 이 ROM은 마스크 프로그래밍된 ROM, 프로그래머블 ROM (PROM), 소거가능한 PROM (EPROM), 전기적으로 소거가능한 PROM (EEPROM), 전기적으로 변경가능한 ROM (EAROM), 또는 플래시 메모리 또는 이들 중 둘 이상의 조합일 수 있다. 본 개시 내용은 임의의 적합한 물리적 형태를 취하는 대용량 스토리지(906)를 고려하고 있다. 스토리지(906)는 적절한 경우, 프로세서(902)와 스토리지(906) 사이의 통신을 가능하게 하는 하나 이상의 스토리지 제어 유닛을 포함할 수 있다. 적절한 경우, 스토리지(906)는 하나 이상의 스토리지(906)를 포함할 수 있다. 본 개시 내용이 특정 스토리지를 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 스토리지를 고려하고 있다.
특정 실시예에서, I/O 인터페이스(908)는 컴퓨터 시스템(900)과 하나 이상의 I/O 디바이스 사이의 통신을 위한 하나 이상의 인터페이스를 제공하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 컴퓨터 시스템(900)은 적절한 경우, 이들 I/O 디바이스 중 하나 이상을 포함할 수 있다. 이들 I/O 디바이스 중 하나 이상은 사람과 컴퓨터 시스템(900) 간의 통신을 가능하게 할 수 있다. 제한이 아닌 예로서, I/O 디바이스는 키보드, 키패드, 마이크로폰, 모니터, 마우스, 프린터, 스캐너, 스피커, 스틸 카메라, 스타일러스, 태블릿, 터치 스크린, 트랙볼, 비디오 카메라, 다른 적합한 I/O 디바이스, 또는 이들 중 둘 이상의 조합을 포함할 수 있다. I/O 디바이스는 하나 이상의 센서를 포함할 수 있다. 본 개시 내용은 임의의 적합한 I/O 디바이스 및 이들을 위한 임의의 적합한 I/O 인터페이스(908)를 고려하고 있다. 적절한 경우, I/O 인터페이스(908)는 프로세서(902)가 이들 I/O 디바이스 중 하나 이상을 구동할 수 있게 하는 하나 이상의 디바이스 또는 소프트웨어 드라이버를 포함할 수 있다. I/O 인터페이스(908)는 적절한 경우, 하나 이상의 I/O 인터페이스(908)를 포함할 수 있다. 본 개시 내용이 특정 I/O 인터페이스를 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 I/O 인터페이스를 고려하고 있다.
특정 실시예에서, 통신 인터페이스(910)는 컴퓨터 시스템(900)과 하나 이상의 다른 컴퓨터 시스템(900) 또는 하나 이상의 네트워크 간의 통신(예를 들어, 패킷 기반 통신)을 위한 하나 이상의 인터페이스를 제공하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 제한이 아닌 예로서, 통신 인터페이스(910)는, 이더넷 또는 다른 유선 기반 네트워크와 통신하기 위한 네트워크 인터페이스 컨트롤러(network interface controller)(NIC) 또는 네트워크 어댑터, 또는 WI-FI 네트워크와 같은 무선 네트워크와 통신을 위한 무선 NIC (WNIC) 또는 무선 어댑터를 포함할 수 있다. 본 개시 내용은 임의의 적합한 네트워크 및 이러한 네트워크를 위한 임의의 적합한 통신 인터페이스(910)를 고려하고 있다. 제한이 아닌 예로서, 컴퓨터 시스템(900)은 애드혹 네트워크(ad hoc network), PAN(personal area network), LAN(local area network), WAN(wide area network), MAN(metropolitan area network), 또는 인터넷의 하나 이상의 부분, 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 하나 이상의 이들 네트워크의 하나 이상의 부분은 유선 또는 무선일 수 있다. 일 예로서, 컴퓨터 시스템(900)은 무선 PAN (WPAN)(예를 들어, BLUETOOTH WPAN), WI-FI 네트워크, WI-MAX 네트워크, 셀룰러 전화 네트워크(예를 들어, GSM(Global System for Mobile Communications) 네트워크), 또는 다른 적합한 무선 네트워크, 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 컴퓨터 시스템(900)은 적절한 경우, 이들 네트워크 중 임의의 것에 대한 임의의 적합한 통신 인터페이스(910)를 포함할 수 있다. 통신 인터페이스(910)는 적절한 경우, 하나 이상의 통신 인터페이스(910)를 포함할 수 있다. 본 개시 내용이 특정 통신 인터페이스를 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 통신 인터페이스를 고려하고 있다.
특정 실시예에서, 버스(912)는 컴퓨터 시스템(900)의 컴포넌트를 서로 연결하는 하드웨어, 소프트웨어, 또는 이들 양자 모두를 포함한다. 예로서 제한 없이 버스(912)는 가속 그래픽 포트(Accelerated Graphics Port)(AGP) 또는 다른 그래픽 버스, EISA(Enhanced Industry Standard Architecture) 버스, FSB(front-side bus), HT(HYPERTRANSPORT) 인터커넥트, ISA(Industry Standard Architecture) 버스, INFINIBAND 인터커넥트, LPC(low-pin-count) 버스, 메모리 버스, 마이크로 채널 아키텍처(Micro Channel Architecture)(MCA) 버스, PCI(Peripheral Component Interconnect) 버스, PCI-Express (PCIe) 버스, SATA(serial advanced technology attachment) 버스, VLB(Video Electronics Standards Association local) 버스, 또는 다른 적합한 버스 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 버스(912)는 적절한 경우, 하나 이상의 버스(912)를 포함할 수 있다. 본 개시 내용이 특정 버스를 기술하고 예시하지만, 본 개시 내용은 임의의 적합한 버스 또는 인터커넥트를 고려하고 있다.
본원에서, 컴퓨터 판독 가능한 비일시적 저장 매체는 하나 이상의 반도체 기반 또는 다른 집적 회로(IC)(예를 들어, 필드 프로그래머블 게이트 어레이(field-programmable gate arrays)(FPGA) 또는 주문형 집적 회로(application-specific IC)(ASIC)), 하드 디스크 드라이브(HDD), 하이브리드 하드 드라이브(HHD), 광학 디스크, 광학 디스크 드라이브(ODD), 광자기 디스크, 광자기 드라이브, 플로피 디스켓, 플로피 디스크 드라이브(FDD), 자기 테이프, 솔리드 스테이트 드라이브(SSD), RAM 드라이브, 보안 디지털(SECURE DIGITAL) 카드 또는 드라이브, 임의의 다른 적합한 컴퓨터 판독 가능한 비일시적 저장 매체, 또는 적절한 경우 이들 중 둘 이상의 임의의 적합한 조합을 포함할 수 있다. 컴퓨터 판독 가능한 비일시적 저장 매체는 적절한 경우, 휘발성, 비휘발성, 또는 휘발성과 비휘발성의 조합일 수 있다.
본원에서 "또는"은 명시적으로 달리 표시되거나 문맥에 따라 달리 표시되지 않는 한, 포괄적이고, 배타적이지 않다. 따라서, 본원에서, "A 또는 B"는 명시적으로 달리 표시되거나 문맥에 따라 달리 표시되지 않는 한, "A, B, 또는 둘 다"를 의미한다. 또한, "및"은 명시적으로 달리 표시되거나 문맥에 따라 달리 표시되지 않는 한, 결합 및 개별의 모두이다. 따라서, 본원에서 "A 및 B"는 명시적으로 달리 표시되거나 문맥에 따라 달리 표시되지 않는 한, "결합적이거나 또는 개별적인 A 및 B"를 의미한다.
본 개시 내용의 범위는 본 기술 분야의 통상의 기술자가 이해할 수 있는 본원에 기술되거나 도시된 예시적인 실시예에 대한 모든 변경, 대체, 변화, 개조, 및 수정을 포함한다. 본 개시 내용의 범위는 본원에 기술되거나 도시된 예시적인 실시예로 제한되지는 않는다. 더욱이, 본 개시 내용은 본원의 각각의 실시예를 특정 컴포넌트, 요소, 특징, 기능, 동작, 또는 단계를 포함하는 것으로 기술하고 예시하지만, 이들 실시예 중 임의의 실시예는 본 기술 분야의 통상의 기술자가 이해할 수 있는, 본원의 어느 곳에서나 기술되거나 예시된 컴포넌트, 요소, 특징, 기능, 동작, 또는 단계 중 임의의 것의 임의의 조합 또는 순열을 포함할 수 있다. 또한, 첨부된 청구항에서, 장치 또는 시스템, 또는 장치 또는 시스템의 컴포넌트가 특정 기능을 수행하도록 적응, 배열, 가능, 구성, 인에이블, 동작 가능, 또는 작동한다는 것은, 해당 장치, 시스템, 또는 컴포넌트가 그렇게 적응, 배열, 가능, 구성, 인에이블, 동작 가능, 또는 작동하는 한, 해당 장치, 시스템, 또는 컴포넌트이든 간에 특정 기능이 활성화, 턴온, 또는 잠금 해제된다는 것을 의미한다. 추가로, 본 개시 내용은 특정 이점을 제공하는 것으로 특정 실시예를 기술하거나 예시하지만, 특정 실시예는 이러한 이점을 전혀 제공하지 않거나, 이러한 이점의 일부 또는 전부를 제공할 수 있다.

Claims (15)

  1. 하나 이상의 컴퓨팅 디바이스에 의한 방법에 있어서,
    헤드 마운트 디스플레이(head-mounted display)의 사용자의 손을 포함하는 이미지에 액세스하는 단계;
    적어도 상기 이미지로부터 상기 사용자의 손의 가상 객체 표현을 생성하는 단계 ― 상기 손의 가상 객체 표현은 가상 환경에서 정의됨 ―;
    상기 가상 환경 내에서의 상기 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 상기 사용자의 관점에서 상기 가상 환경의 이미지를 렌더링하는 단계 ― 상기 이미지는 상기 사용자의 관점에서 볼 수 있는 상기 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함함 ―; 및
    상기 헤드 마운트 디스플레이의 발광체의 세트에, 상기 가상 환경의 이미지를 디스플레이하라는 명령을 제공하는 단계
    를 포함하고,
    상기 손의 가상 객체 표현의 부분에 대응하는 상기 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 하는 것인, 방법.
  2. 제1항에 있어서,
    조명되지 않은 특정 위치의 발광체는 상기 사용자의 환경으로부터의 광이 상기 특정 위치의 사용자에게는 지속되게 하거나, 또는 상기 사용자의 손을 포함하는 이미지는 상기 사용자의 관점에서 상기 사용자의 환경을 더 포함하는 것인, 방법.
  3. 제1항에 있어서,
    적어도 상기 이미지로부터 상기 사용자의 손의 가상 객체 표현을 생성하는 단계는:
    상기 사용자의 손을 포함하는 이미지로부터 결정된 상기 사용자의 손의 포즈에 기반하여, 상기 가상 환경 내에서 상기 사용자의 손의 가상 객체 표현의 위치를 결정하는 단계를 포함하는 것인, 방법.
  4. 제1항에 있어서,
    상기 사용자의 손의 가상 객체 표현의 텍스처는 발광체가 조명되지 않도록 하는 명령에 부합하거나, 또는 상기 사용자의 손의 가상 객체 표현은 상기 가상 환경의 배경과 또한 연관되는 색상과 연관되는 것인, 방법.
  5. 제1항에 있어서,
    상기 사용자의 관점에서 상기 가상 환경의 이미지를 렌더링하는 단계는:
    상기 가상 환경 내에서의 상기 사용자의 손의 가상 객체 표현 및 상기 적어도 하나의 다른 가상 객체를 상기 사용자의 관점에서 볼 수 있는지 여부를 결정하는 단계를 포함하고, 그리고 선택적으로, 상기 방법은:
    상기 사용자의 관점에 기반하여 원점 및 방향을 갖는 광선을 상기 가상 환경 내로 투사하는 것에 의해; 그리고
    상기 가상 환경 내에서 상기 사용자의 손의 가상 객체 표현과 상기 광선의 교차 포인트를 결정하는 것에 의해 ― 상기 광선은 상기 가상 환경 내에서 다른 객체와 교차하기 전에 상기 가상 객체 표현과 교차함 ―,
    상기 가상 환경 내에서 상기 손의 가상 객체 표현이 적어도 부분적으로 상기 적어도 하나의 다른 가상 객체의 전방에 있는 하나 이상의 위치를 결정하는 단계를 더 포함하는 것인, 방법.
  6. 제1항에 있어서,
    적어도 상기 이미지로부터 상기 사용자의 손의 가상 객체 표현을 생성하는 단계는:
    적어도 상기 이미지로부터 상기 손의 포즈를 결정하는 단계;
    적어도 상기 이미지 및 상기 포즈로부터, 상기 손의 가상 객체 표현을 위한 삼각형 메시를 생성하는 단계;
    적어도 상기 이미지로부터, 상기 사용자의 관점으로부터 상기 손의 거리를 결정하는 단계; 및
    상기 손에 대한 상기 삼각형 메시에 기반하여, 상기 결정된 손의 거리로부터 상기 손의 하나 이상의 위치의 변화를 나타내는 높이 맵을 생성하는 단계
    를 포함하는 것인, 방법.
  7. 제6항에 있어서,
    상기 손의 가상 객체 표현과 연관된 상기 높이 맵 및 상기 손의 거리를 특정 위치에서의 다른 가상 객체와 연관된 높이 맵 및 거리와 비교하는 것에 의해; 그리고
    상기 비교에 기반하여 상기 손의 가상 객체 표현이 상기 관점에 대해 가장 가까운 객체임을 결정하는 것에 의해,
    상기 높이 맵에 기반하여, 상기 가상 환경 내에서 상기 손의 가상 객체 표현이 상기 다른 가상 객체의 전방에 있는 하나 이상의 위치를 결정하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 가상 환경의 이미지를 디스플레이하라는 명령은 또한, 상기 적어도 하나의 다른 가상 객체의 부분이 상기 사용자의 관점에서 상기 사용자의 손의 가상 객체 표현의 전방에 있는 하나 이상의 위치에서 발광체가 조명하도록 하는 것인, 방법.
  9. 제1항에 있어서,
    상기 컴퓨팅 디바이스 중 하나 이상이 상기 헤드 마운트 디스플레이에서 구현되고, 상기 컴퓨팅 디바이스 중 하나 이상은 별도의 컴퓨팅 디바이스이며, 선택적으로, 상기 방법은:
    이용 가능한 컴퓨팅 리소스의 하나 이상의 메트릭에 기반하여 상기 헤드 마운트 디스플레이의 상기 컴퓨팅 디바이스와 상기 별도의 컴퓨팅 디바이스 사이에 상기 방법의 단계들을 할당하는 단계를 더 포함하는 것인, 방법.
  10. 제1항에 있어서,
    상기 이미지는 상기 헤드 마운트 디스플레이의 제1 카메라에 의해 생성되고,
    상기 사용자의 손의 가상 객체 표현을 생성하는 단계는:
    상기 헤드 마운트 디스플레이의 제2 카메라에 의해 생성된 제2 이미지에 액세스하는 단계; 및
    상기 이미지 및 상기 제2 이미지에 기반하여 상기 사용자의 손을 상기 사용자의 관점과 관련하여 로컬화하는 단계
    를 포함하는 것인, 방법.
  11. 제10항에 있어서,
    상기 사용자의 손의 가상 객체 표현을 생성하는 단계는:
    상기 사용자의 손의 위치에 대응하는 위치를 갖는 어레이를 생성하는 단계;
    상기 손의 하나 이상의 위치와 상기 사용자의 관점 사이의 거리의 값을 상기 어레이에 저장하는 단계; 및
    상기 어레이를 상기 사용자의 손의 가상 객체 표현과 연관시키는 단계
    를 더 포함하거나, 또는 상기 헤드 마운트 디스플레이의 제2 카메라는 심도 감지 카메라인 것인, 방법.
  12. 소프트웨어를 구현하는 하나 이상의 컴퓨터 판독 가능한 비일시적 저장 매체에 있어서, 상기 소프트웨어는 실행 시 제1항 내지 제11항 중 어느 한 항의 방법을 수행하도록, 또는:
    헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하고;
    적어도 상기 이미지로부터 상기 사용자의 손의 가상 객체 표현을 생성하고 ― 상기 손의 가상 객체 표현은 가상 환경에서 정의됨 ―;
    상기 가상 환경 내에서의 상기 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 상기 사용자의 관점에서 상기 가상 환경의 이미지를 렌더링하고 ― 상기 이미지는 상기 사용자의 관점에서 볼 수 있는 상기 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함함 ―;
    상기 헤드 마운트 디스플레이의 발광체의 세트에, 상기 가상 환경의 이미지를 디스플레이하라는 명령을 제공하도록 동작 가능하며, 상기 손의 가상 객체 표현의 부분에 대응하는 상기 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 하는 것인, 컴퓨터 판독 가능한 비일시적 저장 매체.
  13. 제12항에 있어서,
    조명되지 않는 특정 위치의 발광체는 상기 사용자의 환경으로부터의 광이 상기 특정 위치의 사용자에게는 지속되게 하는 것인, 컴퓨터 판독 가능한 비일시적 저장 매체.
  14. 시스템에 있어서,
    하나 이상의 프로세서; 및
    상기 프로세서 중 하나 이상에 연결되고, 인스트럭션을 포함하는 하나 이상의 컴퓨터 판독 가능한 비일시적 저장 매체
    를 포함하고, 상기 인스트럭션은 상기 프로세서 중 하나 이상에 의해 실행될 때 상기 시스템으로 하여금 제1항 내지 제11항 중 어느 한 항의 방법을 수행하게 하도록, 또는:
    헤드 마운트 디스플레이의 사용자의 손을 포함하는 이미지에 액세스하고;
    적어도 상기 이미지로부터 상기 사용자의 손의 가상 객체 표현을 생성하고 ― 상기 손의 가상 객체 표현은 가상 환경에서 정의됨 ―;
    상기 가상 환경 내에서의 상기 손의 가상 객체 표현 및 적어도 하나의 다른 가상 객체에 기반하여, 상기 사용자의 관점에서 상기 가상 환경의 이미지를 렌더링하고 ― 상기 이미지는 상기 사용자의 관점에서 볼 수 있는 상기 손의 가상 객체 표현의 부분에 대응하는 픽셀 세트를 포함함 ―;
    상기 헤드 마운트 디스플레이의 발광체의 세트에, 상기 가상 환경의 이미지를 디스플레이하라는 명령을 제공하게 하도록 동작 가능하며, 상기 손의 가상 객체 표현의 부분에 대응하는 상기 이미지 내의 픽셀 세트는 하나 이상의 위치에 있는 발광체가 조명되지 않도록 하는 것인, 시스템.
  15. 제14항에 있어서,
    조명되지 않는 특정 위치의 발광체는 상기 사용자의 환경으로부터의 광이 상기 특정 위치의 사용자에게는 지속되게 하는 것인, 시스템.
KR1020227022323A 2020-02-28 2021-01-08 증강 현실에서 물리적 객체에 의한 가상 객체의 오클루전 KR20220137880A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/805,484 US11107280B1 (en) 2020-02-28 2020-02-28 Occlusion of virtual objects in augmented reality by physical objects
US16/805,484 2020-02-28
PCT/US2021/012829 WO2021173237A1 (en) 2020-02-28 2021-01-08 Occlusion of virtual objects in augmented reality by physical objects

Publications (1)

Publication Number Publication Date
KR20220137880A true KR20220137880A (ko) 2022-10-12

Family

ID=74550736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227022323A KR20220137880A (ko) 2020-02-28 2021-01-08 증강 현실에서 물리적 객체에 의한 가상 객체의 오클루전

Country Status (6)

Country Link
US (3) US11107280B1 (ko)
EP (1) EP4111292A1 (ko)
JP (1) JP2023514796A (ko)
KR (1) KR20220137880A (ko)
CN (1) CN115244492A (ko)
WO (1) WO2021173237A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922573B2 (en) * 2018-10-22 2021-02-16 Future Health Works Ltd. Computer based object detection within a video or image
CN114945947A (zh) 2019-11-18 2022-08-26 奇跃公司 可通行世界的映射和定位
USD952673S1 (en) 2019-12-09 2022-05-24 Magic Leap, Inc. Portion of a display screen with transitional graphical user interface for guiding graphics
US11107280B1 (en) * 2020-02-28 2021-08-31 Facebook Technologies, Llc Occlusion of virtual objects in augmented reality by physical objects
US11887267B2 (en) 2021-07-07 2024-01-30 Meta Platforms Technologies, Llc Generating and modifying representations of hands in an artificial reality environment
US20230041294A1 (en) * 2021-08-03 2023-02-09 Sony Interactive Entertainment Inc. Augmented reality (ar) pen/hand tracking
US11620797B2 (en) * 2021-08-05 2023-04-04 Bank Of America Corporation Electronic user interface with augmented detail display for resource location

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012135545A1 (en) 2011-03-29 2012-10-04 Qualcomm Incorporated Modular mobile connected pico projectors for a local multi-user collaboration
US9344707B2 (en) * 2011-06-29 2016-05-17 Microsoft Technology Licensing, Llc Probabilistic and constraint based articulated model fitting
US9002099B2 (en) * 2011-09-11 2015-04-07 Apple Inc. Learning-based estimation of hand and finger pose
US9392264B1 (en) * 2012-10-12 2016-07-12 Amazon Technologies, Inc. Occluded object recognition
US9202313B2 (en) 2013-01-21 2015-12-01 Microsoft Technology Licensing, Llc Virtual interaction with image projection
US9733715B2 (en) * 2013-03-15 2017-08-15 Leap Motion, Inc. Resource-responsive motion capture
US20160162039A1 (en) * 2013-07-21 2016-06-09 Pointgrab Ltd. Method and system for touchless activation of a device
JP2015119373A (ja) * 2013-12-19 2015-06-25 ソニー株式会社 画像処理装置および方法、並びにプログラム
KR101687017B1 (ko) * 2014-06-25 2016-12-16 한국과학기술원 머리 착용형 컬러 깊이 카메라를 활용한 손 위치 추정 장치 및 방법, 이를 이용한 맨 손 상호작용 시스템
US9818225B2 (en) * 2014-09-30 2017-11-14 Sony Interactive Entertainment Inc. Synchronizing multiple head-mounted displays to a unified space and correlating movement of objects in the unified space
US9696795B2 (en) 2015-02-13 2017-07-04 Leap Motion, Inc. Systems and methods of creating a realistic grab experience in virtual reality/augmented reality environments
US10318008B2 (en) * 2015-12-15 2019-06-11 Purdue Research Foundation Method and system for hand pose detection
WO2018005359A1 (en) * 2016-06-27 2018-01-04 Robert Bosch Gmbh Systems and methods for dynamic occlusion handling
US10489915B2 (en) * 2017-04-01 2019-11-26 Intel Corporation Decouple multi-layer render fequency
KR20200006064A (ko) * 2017-04-19 2020-01-17 비도니 인코포레이티드 모션 캡처된 가상의 손을 이용한 증강 현실 학습 시스템 및 방법
US11176747B2 (en) * 2017-10-30 2021-11-16 Sony Corporation Information processing apparatus and information processing method
US10755486B2 (en) * 2018-04-19 2020-08-25 Disney Enterprises, Inc. Occlusion using pre-generated 3D models for augmented reality
CN110058777B (zh) * 2019-03-13 2022-03-29 华为技术有限公司 快捷功能启动的方法及电子设备
US11562598B2 (en) * 2019-03-25 2023-01-24 Microsoft Technology Licensing, Llc Spatially consistent representation of hand motion
US10846899B2 (en) * 2019-04-17 2020-11-24 Honeywell International Inc. Methods and systems for augmented reality safe visualization during performance of tasks
US11710310B2 (en) * 2019-06-19 2023-07-25 Apple Inc. Virtual content positioned based on detected object
CN110515468A (zh) * 2019-08-30 2019-11-29 Oppo广东移动通信有限公司 控制方法、控制装置、电子装置和存储介质
JP7127659B2 (ja) * 2020-02-07 2022-08-30 カシオ計算機株式会社 情報処理装置、仮想・現実合成システム、学習済みモデルの生成方法、情報処理装置に実行させる方法、プログラム
US11107280B1 (en) * 2020-02-28 2021-08-31 Facebook Technologies, Llc Occlusion of virtual objects in augmented reality by physical objects
US11295513B1 (en) * 2020-10-07 2022-04-05 Able Hands Rehab PC Method for generating a custom hand brace for a patient
US11402634B2 (en) * 2020-12-30 2022-08-02 Facebook Technologies, Llc. Hand-locked rendering of virtual objects in artificial reality

Also Published As

Publication number Publication date
US11107280B1 (en) 2021-08-31
WO2021173237A1 (en) 2021-09-02
US20230148279A1 (en) 2023-05-11
US20220005278A1 (en) 2022-01-06
US11954805B2 (en) 2024-04-09
JP2023514796A (ja) 2023-04-11
CN115244492A (zh) 2022-10-25
US11557095B2 (en) 2023-01-17
US20210272361A1 (en) 2021-09-02
EP4111292A1 (en) 2023-01-04

Similar Documents

Publication Publication Date Title
US11719933B2 (en) Hand-locked rendering of virtual objects in artificial reality
US11954805B2 (en) Occlusion of virtual objects in augmented reality by physical objects
US10762694B1 (en) Shadows for inserted content
US11170577B2 (en) Generating and modifying representations of objects in an augmented-reality or virtual-reality scene
CN112513712A (zh) 具有虚拟内容翘曲的混合现实系统和使用该系统生成虚拟内容的方法
JP7201869B1 (ja) 前の目線からのレンダリングされたコンテンツおよびレンダリングされなかったコンテンツを使用した新しいフレームの生成
CN115529835A (zh) 用于新颖视图合成的神经混合
US20210090322A1 (en) Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene
CN115661408A (zh) 在人工现实环境中生成和修改手的表示