KR20240036122A - 프로세스 데이터 공유 방법 및 디바이스 - Google Patents

프로세스 데이터 공유 방법 및 디바이스 Download PDF

Info

Publication number
KR20240036122A
KR20240036122A KR1020247007313A KR20247007313A KR20240036122A KR 20240036122 A KR20240036122 A KR 20240036122A KR 1020247007313 A KR1020247007313 A KR 1020247007313A KR 20247007313 A KR20247007313 A KR 20247007313A KR 20240036122 A KR20240036122 A KR 20240036122A
Authority
KR
South Korea
Prior art keywords
data
processes
determining
access
time
Prior art date
Application number
KR1020247007313A
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 KR20240036122A publication Critical patent/KR20240036122A/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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/161Detection; Localisation; Normalisation
    • G06V40/166Detection; Localisation; Normalisation using acquisition arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • G06V40/23Recognition of whole body movements, e.g. for sport training

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)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Psychiatry (AREA)
  • Social Psychology (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

일 구현예에서, 프로세스들 사이에서 공유 데이터에 액세스하는 방법이 프로세서(들), 비일시적 메모리, 및 이미지 획득 인터페이스를 포함하는 디바이스에 의해 수행된다. 본 방법은 이미지 획득 인터페이스에 의해 획득된 이미지 데이터를 획득하는 단계를 포함한다. 본 방법은 이미지 획득 인터페이스에 의해 측정된 관성 측정 유닛(inertial measurement unit, IMU) 정보에 적어도 부분적으로 기초하여 포즈 데이터(pose data)를 결정하는 단계를 추가로 포함한다. 본 방법은 또한 이미지 획득 인터페이스를 통해 획득된 눈 추적 정보에 적어도 부분적으로 기초하여 시선 추정치를 결정하는 단계를 포함한다. 프로세스들의 특성들에 적어도 부분적으로 기초하여, 본 방법은 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열을 결정하는 단계를 포함한다. 본 방법은 추가적으로, 배열, 프로세스들의 특성들, 및 디바이스와 연관된 하드웨어 타이밍 파라미터들 중 적어도 하나에 적어도 부분적으로 기초하여 프로세스들에 대한 액세스 스케줄을 결정하는 단계를 포함한다.

Description

프로세스 데이터 공유 방법 및 디바이스{METHOD AND DEVICE FOR PROCESS DATA SHARING}
본 개시내용은 일반적으로 데이터 공유에 관한 것으로, 특히 결정론적 풀/페치 모델을 사용하여 낮은-레이턴시 데이터 공유를 제공하는 시스템들, 방법들, 및 디바이스들에 관한 것이다.
물리적 환경은 사람들이 전자 시스템들의 도움없이 감지하고 그리고/또는 상호작용할 수 있는 물리적 세계를 지칭한다. 물리적 공원과 같은 물리적 환경들은 물리적 물품들, 예컨대 물리적 나무들, 물리적 건물들, 및 물리적 사람들을 포함한다. 사람들은, 예컨대 시각, 촉각, 청각, 미각, 및 후각을 통해, 물리적 환경을 직접 감지하고 그리고/또는 그와 상호작용할 수 있다.
대조적으로, 컴퓨터-생성 현실(computer-generated reality, CGR) 환경은 사람들이 전자 시스템을 통해 감지하고/하거나 그와 상호작용하는 완전히 또는 부분적으로 시뮬레이션된 환경을 지칭한다. CGR에서, 사람의 물리적 움직임들, 또는 이들의 표현들의 서브세트가 추적되고, 이에 응답하여, CGR 환경에서 시뮬레이션된 하나 이상의 가상 객체들의 하나 이상의 특성들이 적어도 하나의 물리 법칙에 따르는 방식으로 조정된다. 예를 들어, CGR 시스템은 사람이 고개를 돌리는 것을 검출할 수 있고, 이에 응답하여, 그 사람에게 제시되는 그래픽 콘텐츠 및 음장(acoustic field)을 물리적 환경에서 그러한 뷰들 및 소리들이 변화하는 방식과 유사한 방식으로 조정할 수 있다. 일부 상황들에서(예를 들어, 접근성 이유들 때문에), CGR 환경에서의 가상 객체(들)의 특성(들)에 대한 조정들은 물리적 움직임들의 표현들(예를 들어, 음성 커맨드들)에 응답하여 이루어질 수 있다.
사람은, 시각, 청각, 촉각, 미각, 및 후각을 포함하는 그들의 감각들 중 임의의 하나를 사용하여 CGR 객체를 감지하고/하거나 그와 상호작용할 수 있다. 예를 들어, 사람은 3D 공간에서의 포인트 오디오 소스들의 지각을 제공하는 3D 또는 공간적 오디오 환경을 생성하는 오디오 객체들을 감지하고/하거나 그와 상호작용할 수 있다. 다른 예에서, 오디오 객체들은 오디오 투명성을 가능하게 할 수 있으며, 이는 선택적으로, 물리적 환경으로부터의 주변 소리들을 컴퓨터-생성 오디오와 함께 또는 그것 없이 통합한다. 일부 CGR 환경들에서, 사람은 오디오 객체들만을 감지하고/하거나 그와 상호작용할 수 있다.
CGR의 예들은 가상 현실 및 혼합 현실을 포함한다.
가상 현실(VR) 환경은 하나 이상의 감각들에 대한 컴퓨터-생성 감각 입력들에 전적으로 기초하도록 설계된 시뮬레이션된 환경을 지칭한다. VR 환경은 사람이 감지하고 그리고/또는 상호작용할 수 있는 복수의 가상 객체들을 포함한다. 예를 들어, 나무들, 빌딩들, 및 사람들을 표현하는 아바타들의 컴퓨터-생성 형상화가 가상 객체들의 예들이다. 사람은, 컴퓨터-생성 환경에서의 사람의 존재의 시뮬레이션을 통해 그리고/또는 컴퓨터-생성 환경에서의 사람의 신체적 움직임들의 서브세트의 시뮬레이션을 통해 VR 환경에서 가상 객체들을 감지하고/하거나 그와 상호작용할 수 있다.
컴퓨터-생성 감각 입력들에 전적으로 기초하도록 설계되는 VR 환경과는 대조적으로, 혼합 현실(MR) 환경은 컴퓨터-생성 감각 입력들(예를 들어, 가상 객체들)을 포함하는 것에 부가하여, 물리적 환경으로부터의 감각 입력들, 또는 그들의 표현을 통합하도록 설계된 시뮬레이션된 환경을 지칭한다. 가상 연속체(virtuality continuum)에서, 혼합 현실 환경은 한쪽의 완전히 물리적인 환경과 다른 쪽의 가상 현실 환경 사이의 임의의 곳에 있지만, 포함하지는 않는다.
일부 MR 환경들에서, 컴퓨터-생성 감각 입력들은 물리적 환경으로부터의 감각 입력들의 변화들에 응답할 수 있다. 또한, MR 환경을 제시하기 위한 일부 전자 시스템들은 물리적 환경에 대한 위치 및/또는 배향을 추적하여 가상 객체들이 실제 객체들(즉, 물리적 환경으로부터의 물리적 물품들 또는 물리적 물품들의 표현들)과 상호작용할 수 있게 할 수 있다. 예를 들어, 시스템은 움직임들을 고려하여 가상 나무가 물리적 땅에 대하여 고정되어 있는 것처럼 보이도록 할 수 있다.
혼합 현실들의 예들은 증강 현실 및 증강 가상을 포함한다.
증강 현실(AR) 환경은 하나 이상의 가상 객체가 물리적 환경, 또는 그의 표현 위에 중첩되어 있는 시뮬레이션된 환경을 지칭한다. 예를 들어, AR 환경을 제시하기 위한 전자 시스템은 사람이 직접 물리적 환경을 볼 수 있는 투명 또는 반투명 디스플레이를 가질 수 있다. 시스템은 투명 또는 반투명 디스플레이 상에 가상 객체들을 제시하도록 구성되어, 사람이, 시스템을 사용하여, 물리적 환경 위에 중첩된 가상 객체들을 지각하도록 할 수 있다. 대안적으로, 시스템은 불투명 디스플레이, 및 물리적 환경의 표현들인 물리적 환경의 이미지들 또는 비디오를 캡처하는 하나 이상의 이미징 센서들을 가질 수 있다. 시스템은 이미지들 또는 비디오를 가상 객체들과 합성하고, 합성물을 불투명 디스플레이 상에 제시한다. 사람은, 시스템을 사용하여, 물리적 환경의 이미지들 또는 비디오에 의해 물리적 환경을 간접적으로 보고, 물리적 환경 위에 중첩된 가상 객체들을 지각한다. 본 명세서에 사용되는 바와 같이, 불투명 디스플레이 상에 보여지는 물리적 환경의 비디오는 "패스-스루(pass-through) 비디오"로 불리는데, 이는 시스템이 하나 이상의 이미지 센서(들)를 사용하여 물리적 환경의 이미지들을 캡처하고, AR 환경을 불투명 디스플레이 상에 제시할 시에 이들 이미지들을 사용하는 것을 의미한다. 추가로 대안적으로, 시스템은 가상 객체들을 물리적 환경에, 예를 들어, 홀로그램으로서 또는 물리적 표면 상에 투영하는 투영 시스템을 가질 수 있어서, 사람이 시스템을 사용하여 물리적 환경 위에 중첩된 가상 객체들을 지각하게 한다.
증강 현실 환경은 또한 물리적 환경의 표현이 컴퓨터-생성 감각 정보에 의해 변환되는 시뮬레이션된 환경을 지칭한다. 예를 들어, 패스-스루 비디오를 제공할 시에, 시스템은 하나 이상의 센서 이미지들을 변환하여 이미징 센서들에 의해 캡처된 시점과 상이한 선택 관점(예를 들어, 시점)을 부과할 수 있다. 다른 예를 들어, 물리적 환경의 표현은 그것의 일부들을 그래픽적으로 수정(예컨대, 확대)함으로써 변환될 수 있고, 수정된 부분은 원래 캡처된 이미지들의 대표적인 버전일 수 있지만, 실사 버전은 아닐 수 있다. 추가적인 예로서, 물리적 환경의 표현은 그의 일부들을 그래픽적으로 제거하거나 또는 흐리게 함으로써 변환될 수 있다.
증강 가상(AV) 환경은 가상 또는 컴퓨터 생성 환경이 물리적 환경으로부터의 하나 이상의 감각 입력들을 통합하는 시뮬레이션된 환경을 지칭한다. 감각 입력들은 물리적 환경의 하나 이상의 특성들의 표현들일 수 있다. 예를 들어, AV 공원은 가상 나무들 및 가상 빌딩들을 가질 수 있지만, 사람들의 얼굴들은 물리적 사람들을 촬영한 이미지들로부터 실사처럼 재현될 수 있다. 다른 예로서, 가상 객체는 하나 이상의 이미징 센서들에 의해 이미징되는 물리적 물품의 형상 또는 색상을 채용할 수 있다. 추가적인 예로서, 가상 객체는 물리적 환경에서 태양의 위치에 부합하는 그림자들을 채용할 수 있다.
사람이 다양한 CGR 환경들을 감지하고/하거나 그와 상호작용할 수 있게 하는 많은 상이한 유형들의 전자 시스템들이 존재한다. 예들은 스마트폰들, 태블릿들, 데스크톱/랩톱 컴퓨터들, 헤드 장착형 시스템들, 투영-기반 시스템들, 헤드-업 디스플레이(heads-up display, HUD)들, 디스플레이 기능이 통합된 차량 앞유리들, 디스플레이 기능이 통합된 창문들, 사람의 눈들에 배치되도록 설계된 렌즈들로서 형성된 디스플레이(예를 들어, 콘택트 렌즈들과 유사함), 헤드폰들/이어폰들, 스피커 어레이들, 입력 시스템들(예를 들어, 햅틱 피드백이 있거나 또는 없는 웨어러블 또는 핸드헬드 제어기들 및/또는 손 추적 및/또는 신체 포즈 추정 능력들을 갖는 카메라들)을 포함한다.
헤드 장착형 시스템은 하나 이상의 스피커(들) 및 통합 불투명 디스플레이를 가질 수 있다. 대안적으로, 헤드 장착형 시스템은 외부 불투명 디스플레이(예를 들어, 스마트폰)를 수용하도록 구성된 헤드 장착형 인클로저(head-mounted enclosure, HME)일 수 있다. 헤드 장착형 시스템은 물리적 환경의 이미지들 또는 비디오를 캡처하기 위한 하나 이상의 이미징 센서들, 및/또는 물리적 환경의 오디오를 캡처하기 위한 하나 이상의 마이크로폰들을 통합할 수 있다. 헤드 장착형 시스템은 불투명 디스플레이보다는, 투명 또는 반투명 디스플레이를 가질 수 있다. 투명 또는 반투명 디스플레이는 이미지들을 표현하는 광이 사람의 눈들로 지향되는 매체를 가질 수 있다. 디스플레이는 디지털 광 프로젝션, OLED들, LED들, uLED들, 실리콘 액정 표시장치, 레이저 스캐닝 광원, 또는 이들 기술들의 임의의 조합을 이용할 수 있다. 매체는 광학 도파관, 홀로그램 매체, 광학 조합기, 광학 반사기, 또는 이들의 임의의 조합일 수 있다. 일 구현예에서, 투명 또는 반투명 디스플레이는 선택적으로 불투명해지도록 구성될 수 있다. 투영-기반 시스템들은 그래픽 이미지들을 사람의 망막 상에 투영하는 망막 투영 기술을 이용할 수 있다. 투영 시스템들은 또한 가상 객체들을 물리적 환경에, 예를 들어, 홀로그램으로서 또는 물리적 표면 상에 투영하도록 구성될 수 있다.
CGR 디바이스들에서 이용가능한 콘텐츠는 더 몰입되고, 더 그래픽 집약적이며, 일상 생활에 보편적으로 적용가능해지고 있다. 따라서, CGR 디바이스들에서의 하드웨어는 CGR 콘텐츠를 따라잡기 위해 리소스를 많이 쓰는(resource-heavy) 프로세스들을 수용하도록 계속 발전한다. 그러나, 다수의 프로세스들이 한꺼번에 리소스들에 대해 경쟁하는 경우, 레이턴시 및 다수의 인터럽트들이 자연스럽게 병목 효과를 생성한다. 가시적 레이턴시 문제들은 사용자의 경험에 악영향을 줄 수 있다.
본 명세서에 개시된 다양한 구현예들은 프로세스들 사이에서 공유 데이터에 액세스하기 위한 디바이스들, 시스템들, 및 방법들을 포함한다. 다양한 구현예들에서, 방법은 하나 이상의 프로세서들, 비일시적 메모리, 및 이미지 획득 인터페이스를 포함하는 디바이스에서 수행된다. 본 방법은 이미지 획득 인터페이스에 의해 획득된 시야와 연관된 이미지 데이터를 획득하는 단계를 포함한다. 본 방법은 관성 측정 유닛(inertial measurement unit, IMU) 정보에 적어도 부분적으로 기초하여 포즈 데이터를 결정하는 단계를 추가로 포함하며, 여기서 포즈 데이터는 이미지 획득 인터페이스에 의해 측정된 사용자의 현재 자세에 대응한다. 본 방법은 추가적으로 이미지 획득 인터페이스를 통해 획득된 눈 추적 정보에 적어도 부분적으로 기초하여 시선 추정치를 결정하는 단계를 포함한다. 본 방법은 또한 이미지 획득 인터페이스와 통신가능한 복수의 프로세스들의 복수의 특성들에 적어도 부분적으로 기초하여 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열을 결정하는 단계를 추가로 포함한다. 본 방법은 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열, 복수의 프로세스들의 복수의 특성들, 및 디바이스와 연관된 하드웨어 타이밍 파라미터들 중 적어도 하나에 적어도 부분적으로 기초하여 복수의 프로세스들에 대한 액세스 스케줄을 결정하는 단계를 추가로 포함한다.
일부 구현예들에 따르면, 디바이스는 하나 이상의 프로세서들, 비일시적 메모리, 및 하나 이상의 프로그램들을 포함하고; 하나 이상의 프로그램들은 비일시적 메모리에 저장되며 하나 이상의 프로세서들에 의해 실행되도록 구성되고, 하나 이상의 프로그램들은 본 명세서에 설명된 방법들 중 임의의 방법을 수행하거나 그의 수행을 야기하기 위한 명령어들을 포함한다. 일부 구현예들에 따르면, 비일시적 컴퓨터 판독가능 저장 매체는, 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금, 본 명세서에 설명되는 방법들 중 임의의 방법을 수행하게 하거나 수행을 야기하는 명령어들을 내부에 저장한다. 일부 구현예들에 따르면, 디바이스는 하나 이상의 프로세서들, 비일시적 메모리, 및 본 명세서에 설명되는 방법들 중 임의의 방법을 수행하거나 수행을 야기하기 위한 수단을 포함한다.
본 개시내용이 당업자들에 의해 이해될 수 있도록, 더 상세한 설명이 일부 예시적인 구현예들의 양태들에 대한 참조에 의해 이루어질 수 있으며, 이들 중 일부는 첨부 도면들에 도시된다.
도 1은 일부 구현예들에 따른 예시적인 동작 환경의 블록도이다.
도 2는 일부 구현예들에 따른 CGR 데이터 공유를 위한 인터럽트 모델을 예시하는 블록도이다.
도 3은 일부 구현예들에 따른 프로세스들 사이의 CGR 데이터 공유를 위한 예시적인 결정론적 풀/페치 모델의 블록도이다.
도 4는 일부 구현예들에 따른, 결정론적 풀/페치 모델에 기초한 예시적인 CGR 데이터 공유 프로세스를 예시하는 블록도이다.
도 5a는 일부 구현예들에 따른, 풀/페치 모델에 사용되는 제어기의 일 예의 블록도이다.
도 5b는 일부 구현예들에 따른, 예시적인 제어기 관리(controller managed) 데이터 배열 및 프로세스 액세스 스케줄링을 예시하는 블록도이다.
도 6은 일부 구현예들에 따른 예시적인 CGR 디바이스의 블록도이다.
도 7a는 일부 구현예들에 따른 CGR 파이프라인을 예시한다.
도 7b는 일부 구현예들에 따른 CGR 파이프라인을 구현하는 분산 시스템을 예시한다.
도 8은 일부 구현예들에 따른, 프로세스들 사이에서 공유 데이터에 액세스하는 방법의 흐름도 표현이다.
일반적인 실시에 따라, 도면에 예시된 다양한 특징부들은 축척대로 그려지지 않을 수 있다. 따라서, 다양한 특징부들의 치수들은 명료함을 위해 임의대로 확대 또는 축소될 수 있다. 부가적으로, 도면들 중 일부는 주어진 시스템, 방법 또는 디바이스의 컴포넌트들 모두를 도시하지는 않을 수 있다. 마지막으로, 동일한 도면 번호들은 명세서 및 도면들 전반에 걸쳐 동일한 특징부들을 나타내기 위해 사용될 수 있다.
도면들에 도시된 예시적인 구현예들의 완전한 이해를 제공하기 위해 다수의 세부사항들이 설명된다. 그러나, 도면들은 단지 본 개시내용의 일부 예시적인 양태들만을 도시할 뿐이며, 따라서 제한적인 것으로 고려되지 않는다. 당업자들은 다른 효과적인 양태들 및/또는 변형들이 본 명세서에 설명되는 특정 세부사항들 모두를 포함하지는 않음을 인식할 것이다. 또한, 잘 알려진 시스템들, 방법들, 컴포넌트들, 디바이스들 및 회로들은 본 명세서에 설명되는 예시적인 구현예들의 더 적절한 양태들을 불명확하게 하지 않기 위해 철저히 상세하게 설명되지 않았다.
전술된 바와 같이, 리소스들에 대한 인터럽트 모델을 따르는 CGR 디바이스들 상의 프로세스들은 종종 동시에 리소스들에 대해 경쟁한다. 그 결과, 병목 효과는 사용자의 경험에 악영향을 주는 레이턴시를 야기할 수 있다. 본 명세서에 개시된 다양한 구현예들은 인터럽트 모델로부터 떠나서 결정론적 풀/페치 모델을 향해 이동한다. 프로세스들이 설정된 시간들에 데이터를 페치할 수 있게 하는 액세스 스케줄이 결정된다. 액세스 스케줄은 시스템 파라미터들 및 사용자 포즈 정보와 같은 알려진(예컨대, 결정론적) 정보에 기초하여 결정된다. 따라서, 본 명세서에 설명되는 다양한 구현예들은 전술한 단점들, 구체적으로 데이터 액세스에 관련된 것들을 해결한다. 결과적으로, 더 적은 메모리 및 프로세싱 리소스들이 소비된다. 데이터가 CGR 디스플레이 파이프라인을 통과할 때 레이턴시들이 감소되기 때문에, 전반적인 사용자 경험이 향상될 수 있다는 결론에 자연스럽게 이르게 된다.
도 1은 일부 구현예들에 따른 예시적인 동작 환경(100)의 블록도이다. 관련 특징부들이 도시되어 있지만, 당업자는 본 개시내용으로부터, 다양한 다른 특징부들이 간결함을 위해 그리고 본 명세서에 개시되는 예시적인 구현예들의 더 많은 관련 양태들을 불명료하게 하지 않도록 하기 위해 예시되지 않았음을 인식할 것이다. 이를 위해, 비제한적인 예로서, 동작 환경(100)은 제어기(102) 및 CGR 디바이스(104)를 포함한다.
일부 구현예들에서, CGR 디바이스(104)는 태블릿 또는 모바일 폰에 대응한다. 다양한 구현예들에서, CGR 디바이스(104)는 헤드 장착형 디바이스(HMD) 또는 태블릿 또는 모바일 폰이 내부에 삽입된 헤드 장착형 인클로저(HME)와 같은 헤드 장착형 시스템에 대응한다. 일부 구현예들에서, CGR 디바이스(104)는 CGR 콘텐츠를 사용자에게 제시하도록 구성된다. 일부 구현예들에서, CGR 디바이스(104)는 소프트웨어, 펌웨어, 및/또는 하드웨어의 적합한 조합을 포함한다.
일부 구현예들에 따르면, CGR 디바이스(104)는, 사용자가 CGR 디바이스(104)의 시야(111) 내에 테이블(107)을 포함하는 장면(106) 내에서 가상적으로 그리고/또는 물리적으로 존재하는 동안, 디스플레이(122)를 통해, CGR 콘텐츠를 사용자에게 제시한다. 일부 구현예들에서, CGR 디바이스(104)는 가상 콘텐츠(예컨대, 가상 실린더(109))를 제시하도록 그리고 디스플레이(122) 상에서의 (예컨대, 테이블(107)의 표현(117)을 포함하는) 장면(106)의 비디오 패스-스루를 가능하게 하도록 구성된다. 일부 구현예들에서, CGR 디바이스(104)는 가상 콘텐츠를 제시하도록 그리고 장면(106)의 광학적 시스루(see-through)를 가능하게 하도록 구성된다.
일부 구현예들에서, 사용자는 자신의 손(들)에 CGR 디바이스(104)를 보유한다. 일부 구현예들에서, 사용자는 CGR 디바이스(104)를 자신의 머리 상에 착용한다. 이와 같이, CGR 디바이스(104)는 CGR 콘텐츠를 디스플레이하기 위해 제공되는 하나 이상의 CGR 디스플레이들을 포함한다. 예를 들어, CGR 디바이스(104)는 사용자의 시야를 둘러싼다. 일부 구현예들에서, CGR 디바이스(104)는 CGR 콘텐츠를 제시하도록 구성된 CGR 챔버, 인클로저, 또는 방으로 대체되며, 여기서 사용자는 CGR 디바이스(104)를 착용하지 않는다.
일부 구현예들에서, 제어기(102)는 사용자에 대한 CGR 콘텐츠의 제시를 관리 및 조정하도록 구성된다. 일부 구현예들에서, 제어기(102)는 소프트웨어, 펌웨어, 및/또는 하드웨어의 적합한 조합을 포함한다. 일부 구현예들에서, 제어기(102)는 장면(106)에 대해 로컬 또는 원격인 컴퓨팅 디바이스이다. 예를 들어, 제어기(102)는 장면(106) 내에 위치된 로컬 서버이다. 다른 예에서, 제어기(102)는 장면(106)의 외부에 위치된 원격 서버(예를 들어, 클라우드 서버, 중앙 서버 등)이다. 일부 구현예들에서, 제어기(102)는 하나 이상의 유선 또는 무선 통신 채널들(144)(예컨대, 블루투스, IEEE 802.11x, IEEE 802.16x, IEEE 802.3x 등)을 통해 CGR 디바이스(104)와 통신가능하게 결합된다. 일부 구현예들에서, 제어기(102)의 기능들은 CGR 디바이스(104)에 의해 제공되고/되거나 그와 조합된다.
도 1에 예시된 바와 같이, CGR 디바이스(104)는 장면(106)의 표현을 제시한다. 일부 구현예들에서, 장면(106)의 표현은 제어기(102) 및/또는 CGR 디바이스(104)에 의해 생성된다. 일부 구현예들에서, 장면(106)의 표현은 장면(106)의 시뮬레이션된 대체물인 가상 장면을 포함한다. 다시 말하면, 일부 구현예들에서, 장면(106)의 표현은 제어기(102) 및/또는 CGR 디바이스(104)에 의해 시뮬레이션된다. 그러한 구현예들에서, 장면(106)의 표현은 CGR 디바이스(104)가 위치되는 장면(106)과 상이하다. 일부 구현예들에서, 장면(106)의 표현은 (예컨대, 가상 실린더(109)를 포함하는) 장면(106)의 수정된 버전인 증강 장면을 포함한다. 예를 들어, 일부 구현예들에서, 제어기(102) 및/또는 CGR 디바이스(104)는 장면(106)의 표현을 생성하기 위해 장면(106)의 이미지를 수정(예컨대, 증강)한다. 일부 구현예들에서, 제어기(102) 및/또는 CGR 디바이스(104)는 장면(106)의 복제물을 시뮬레이션함으로써 장면(106)의 표현을 생성한다. 일부 구현예들에서, 제어기(102) 및/또는 CGR 디바이스(104)는 장면(106)의 시뮬레이션된 복제물로부터 아이템들을 제거 및/또는 추가함으로써 장면(106)의 표현을 생성한다.
도 2는 CGR 데이터 공유를 위한 인터럽트 모델(200)을 예시하는 블록도이다. 일부 구현예들에서, (도 1에 예시된 바와 같은) 장면(106)의 표현을 생성하기 위해, 복수의 프로세스들, 예컨대, 프로세스 1(210-1), 프로세스 2(210-2), 프로세스 3(210-3)…프로세스 N(210-N)은 입력들로서 (도 1에 예시된 바와 같이) CGR 디바이스(104)에 의해 획득된 원시 데이터를 획득한다. 예를 들어, 원시 데이터는 이미지 센서(들)에 의해 획득된 이미지 데이터(230), IMU에 의해 획득된 포즈 데이터(240), 눈 추적기에 의해 획득된 정보로부터 도출된 시선 추정치 데이터(250), 및 CGR 디바이스(104)에 의해 획득된 다른 데이터(260)를 포함한다. 일부 구현예들에서, 복수의 프로세스들(210)은 서로 의존하여, 하나의 프로세스로부터의 출력들이 다른 프로세스에 의해 입력들로서 사용되는데, 예컨대 프로세스 2(210-2)로부터의 출력들은 프로세스 3(210-3)에 대한 입력들이다. 일부 구현예에서, 원시 데이터 및/또는 프로세스들(210)로부터의 출력들은 통신 경로(220), 예를 들어, 제어기(102)의 통신 인터페이스(들) 및/또는 CGR 디바이스(104)의 통신 인터페이스(들)를 통해 확립된 통신 경로를 통해 통신된다.
도 2에 도시된 바와 같이, 프로세스 1(210-1)이 이미지 데이터(230) 및 시선 추정치 데이터(250)를 필요로 할 때, 프로세스 1(210-1)은 이미지 데이터(230)의 사본 및 시선 추정치 데이터(250)의 사본을 입력들로서 획득하기 위해 이미지 센서 및 눈 추적기를 인터럽트한다. 마찬가지로, 프로세스 2(210-2)가 이미지 데이터(230) 및 시선 추정치 데이터(250)를 필요로 할 때, 프로세스 2(210-2)는 이미지 데이터(230)의 사본 및 포즈 추정 데이터(250)의 사본을 입력들로서 획득하기 위해 이미지 센서 및 눈 추적기를 인터럽트한다. 다른 예에서, 도 2에 도시된 바와 같이, 프로세스 3(210-3)은 프로세스 2(210-2)로부터의 입력들, 포즈 데이터(240), 및 다른 데이터(260)를 필요로 한다. 프로세스 3(210-3)은 포즈 데이터(240) 및 다른 데이터(260)를 획득하기 위해 IMU 및 다른 센서(들)를 인터럽트하면서 프로세스 2(210-2)의 완료를 기다릴 것이다.
인터럽트 모델(200)은 여러 이유로 비효율적이다. 첫째, 다수의 프로세스들(예컨대, 프로세스 1(210-1) 및 프로세스 2(210-2))이 리소스들(예컨대, 이미지 데이터(230) 및 시선 추정치 데이터(250))에 대해 경쟁하고 있을 때, 인터럽트들은 다수의 병목들, 예컨대, 센서들에서의 적어도 하나의 병목 및 통신 경로(220)에서의 다른 병목을 생성하였다. 둘째로, 데이터의 다수의 사본들이 다수의 프로세스들에 대해 생성되기 때문에, 인터럽트 모델(200)은 상이한 태스크들에 걸쳐 메모리를 공유하지 않는다. 이와 같이, 메모리 사용은 비효율적이다. 병목들, 비효율적인 메모리 이용, 및 프로세스 의존성으로부터의 캐스케이드 효과로 인해, 인터럽트 모델(200)은 CGR 콘텐츠의 실시간 스트리밍에 대한 레이턴시 요건을 충족시킬 수 없다. 이와 같이, 인터럽트 모델(200)을 사용하여 제시되는 CGR 장면은 사용자에게 멀미를 야기할 수 있다.
도 3은 일부 실시예들에 따른, 프로세스들 사이의 CGR 데이터 공유를 위한 예시적인 결정론적 풀/페치 모델(300)의 블록도이다. 결정론적 시스템은 전형적으로 시스템의 미래의 상태들의 개발에서 랜덤성을 수반하지 않는다. 따라서, 결정론적 모델은 주어진 시작 조건 또는 초기 상태로부터 동일한 출력을 생성할 것이다. 이와 같이, 결정론적 모델(300)을 사용하여, 시스템은 언제 어디로부터의 데이터가 생성되고 액세스되는지를 예측할 수 있다. 이와 같이, 풀/페치 모델(300)은 프로세스들이, 데이터가 페치될 준비가 될 때 그리고 검색에 효율적인 위치로부터 데이터를 검색할 수 있게 한다. 따라서, 그러한 시스템에서, 병목들은 감소되고, 리소스들에 대한 경쟁은 감소한다.
예를 들어, 도 3은 2개의 프로세스들, 즉 프로세스 M 및 프로세스 N을 도시하는데, 여기서 프로세스 N은 프로세스 M으로부터의 출력들에 의존하고, 프로세스 M은 카메라에 의해 촬영된 이미지 데이터를 페치한다. 시스템은 카메라 노출 시간 Δ1과 같은 하드웨어 타이밍 파라미터들뿐만 아니라, 프로세스들의 특성들, 예컨대 프로세스 M에 대한 프로세싱 시간 Δ2 및/또는 프로세스들 M 및 N에 대한 입력 데이터의 유형을 학습한다. 이러한 파라미터들 및 특성들은, 프로세스가 데이터를 페치할 시기 및 데이터가 페치될 위치를 결정하기 위해 시스템에 의해 사용된다. 도 3에서, 시스템은 시스템 동기화 클록을 사용하여 시작 시간(예컨대, T1), 예상된 카메라 동작 지속기간(예컨대, T2에서 T3까지), 및 예상된 프로세스 M 실행 시간(T4에서 T5까지)을 측정하고, 프로세스 M에 대한 웨이크업 시간 T4 및 프로세스 N에 대한 웨이크업 시간 T6을 계산한다.
일부 실시예들에서, 결정론적 시스템은 각각의 프로세스에 대한 계산된 웨이크업 시간을 포함하는 프로세스들에 대한 액세스 스케줄을 생성한다. 일부 실시예들에서, 각각의 태스크 사이에, 임계 시간량, 예를 들어, T1과 T2 사이, T3과 T4 사이, 그리고 T5과 T6 사이의 기간들이 예약된다. 임계 시간량은 프로세스들 및/또는 하드웨어 컴포넌트들 사이의 통신 레이턴시를 위해 예약되는데, 예컨대 T1과 T2 사이의 시간은 시스템이 이미지 데이터 획득을 시작하도록 카메라에 통지하기 위한 것이고, T3과 T4 사이의 시간은 카메라가 프로세스 M을 웨이크업하기 위한 것이고, T5와 T6 사이의 시간은 프로세스 M이 프로세스 N을 웨이크업하기 위한 것이다. 일부 실시예들에서, 임계 시간량은 또한 액세스 스케줄에 기록된다. 액세스 스케줄에 이어서, 웨이크업 시, 프로세스들 M 및 N에 대한 입력들은 페치될 준비가 된다. 따라서, 도 2에 도시된 바와 같은 인터럽트 모델(200)과는 대조적으로, 도 3에 도시된 바와 같은 풀/페치 모델(300)은 시스템 레벨에서의 제약들을 감소시키고 전체적으로 시스템 성능을 증가시킨다.
도 4는 일부 구현예들에 따른, 결정론적 풀/페치 모델(300)에 기초한 CGR 데이터 공유 프로세스(400)를 예시하는 블록도이다. 일부 구현예들에서, (도 1에 예시된 바와 같은) 장면(106)의 표현을 생성하기 위해, 복수의 프로세스들, 예컨대, 프로세스 1(410-1), 프로세스 2(410-2), 프로세스 3(410-3)…프로세스 N(410-N)은 (도 1에 예시된 바와 같이) CGR 디바이스(104)에 의해 획득된 원시 데이터를 수신한다. 예를 들어, 원시 데이터는 이미지 센서(들)에 의해 획득된 이미지 데이터(430), IMU에 의해 획득된 포즈 데이터(440), 눈 추적기에 의해 획득된 정보로부터 도출된 시선 추정치 데이터(450), 및 CGR 디바이스(104)에 의해 획득된 다른 데이터(460)를 포함한다. 일부 구현예들에서, 복수의 프로세스들은 서로 의존하여, 하나의 프로세스로부터의 출력들이 다른 프로세스에 의해 입력들로서 사용되는데, 예컨대 프로세스 2(410-2)로부터의 출력들은 프로세스 3(410-3)에 대한 입력들이다. 일부 구현예에서, 원시 데이터 및/또는 복수의 프로세스들(410)로부터의 출력들은 통신 경로(420), 예를 들어, 제어기(102)의 통신 인터페이스(들) 및/또는 CGR 디바이스(104)의 통신 인터페이스(들)를 통해 확립된 통신 경로를 통해 통신된다.
도 4에 도시된 바와 같이, 결정론적 모델(300)을 사용하여, 제어기(102)는 버퍼(425) 내의 데이터(427)에 대한 데이터 배열들(예컨대, 레이아웃 및/또는 시퀀싱)을 지시하고, 예컨대 버퍼(425) 내의 데이터가 풀링/페치될 준비가 될 때, 액세스 스케줄에 따라 복수의 프로세스들(410)을 웨이크업한다. 예를 들어, 프로세스 2(410-2)에 대한 이미지 데이터(427-2)(도 4에서 (I, 2)로 표현됨) 및 프로세스 3(410-3)에 대한 이미지 데이터(427-4)(도 4에서 (I, 3)으로 표현됨)가 카메라 캡처 이미지 데이터(430)로부터 획득된다. 프로세스 2(410-2)에 대한 이미지 데이터(427-2) 및 프로세스 3(410-3)에 대한 이미지 데이터(427-4)는, 이미지 데이터(427-2, 427-4)가 데이터 스트림으로 프로세스들(410)에 제공될 때 프로세스 2(410-2) 및 프로세스 3(410-3)이 액세스 스케줄에 따라 순차적으로 웨이크업하도록, 레이아웃 및/또는 시퀀스로 버퍼(425) 내에 배열된다. 특히, 프로세스 3(410-3)이 웨이크업할 때, 이미지 데이터(427-4)뿐만 아니라 프로세스 2(410-2)로부터의 출력들이 풀링/페치될 준비가 된다.
도 5a는 일부 구현예들에 따른, 전술된 풀/페치 모델에 사용되는 제어기(102)의 일 예의 블록도이다. 도 5b는 일부 구현예들에 따른, 제어기(102)에 의해 관리되는 데이터 배열 및 프로세스 액세스 스케줄링을 예시하는 블록도이다. 도 5b는 일부 구현예들에 따른, 도 5a에 도시된 제어기(102)에 의해 관리되는 예시적인 CGR 장면 생성을 예시하기 위해 사용된다. 소정의 특정 특징부들이 예시되어 있지만, 당업자들은 본 개시내용으로부터, 다양한 다른 특징부들이 간결함을 위해 그리고 본 명세서에 개시된 구현예들의 더 적절한 양태들을 불명확하게 하지 않도록 하기 위해 예시되지 않았음을 이해할 것이다. 이를 위해, 비제한적인 예로서, 도 5a에 도시된 바와 같이, 일부 구현예들에서, 제어기(102)는 하나 이상의 프로세싱 유닛들(502)(예를 들어, 마이크로프로세서들, 주문형 집적 회로(ASIC)들, 필드-프로그래밍가능 게이트 어레이(FPGA)들, 그래픽 프로세싱 유닛(GPU)들, 중앙 프로세싱 유닛(CPU)들, 프로세싱 코어들 등), 하나 이상의 입/출력(I/O) 디바이스들(506), 하나 이상의 통신 인터페이스들(508)(예를 들어, 범용 직렬 버스(USB), FIREWIRE, THUNDERBOLT, IEEE 802.3x, IEEE 802.11x, IEEE 802.16x, 모바일 통신들을 위한 글로벌 시스템(GSM), 코드 분할 다중 액세스(CDMA), 시분할 다중 액세스(TDMA), 글로벌 포지셔닝 시스템(GPS), 적외선(IR), 블루투스, 지그비, 및/또는 유사한 유형의 인터페이스), 하나 이상의 프로그래밍(예를 들어, I/O) 인터페이스들(510), 메모리(520), 및 이들 및 다양한 다른 컴포넌트들을 상호연결시키기 위한 하나 이상의 통신 버스들(504)을 포함한다.
일부 구현예들에서, 하나 이상의 통신 버스들(504)은 시스템 컴포넌트들 사이의 통신을 상호연결시키고 제어하는 회로부를 포함한다. 일부 구현예들에서, 하나 이상의 I/O 디바이스들(506)은 키보드, 마우스, 터치패드, 조이스틱, 하나 이상의 마이크로폰들, 하나 이상의 스피커들, 하나 이상의 이미지 센서들, 하나 이상의 디스플레이들 등 중 적어도 하나를 포함한다.
메모리(520)는 동적-랜덤 액세스 메모리(DRAM), 정적 랜덤-액세스 메모리(SRAM), 더블-데이터-레이트 랜덤-액세스 메모리(DDR RAM), 또는 다른 랜덤-액세스 솔리드-스테이트 메모리 디바이스들과 같은 고속 랜덤-액세스 메모리를 포함한다. 일부 구현예들에서, 메모리(520)는 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 솔리드-스테이트 저장 디바이스들과 같은 비휘발성 메모리를 포함한다. 메모리(520)는 선택적으로, 하나 이상의 프로세싱 유닛들(502)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. 메모리(520)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 구현예들에서, 메모리(520) 또는 메모리(520)의 비일시적 컴퓨터 판독가능 저장 매체는 선택적인 운영 체제(530) 및 CGR 콘텐츠 모듈(540)을 포함하는 다음의 프로그램들, 모듈들 및 데이터 구조들, 또는 그들의 서브세트를 저장한다.
운영 체제(530)는 다양한 기본 시스템 서비스들을 처리하고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함한다. 일부 구현예들에서, CGR 콘텐츠 모듈(540)은 하나 이상의 사용자들에 대한 CGR 콘텐츠의 제시(예를 들어, 하나 이상의 사용자들에 대한 CGR 콘텐츠의 단일 세트, 또는 하나 이상의 사용자들의 개개의 그룹들에 대한 CGR 콘텐츠의 다수의 세트들)를 관리하고 조정하도록 구성된다. 이를 위해, 다양한 구현예들에서, CGR 콘텐츠 모듈(540)은 데이터 획득 유닛(542), 추적 유닛(544), 조정 유닛(546), 데이터 송신 유닛(548), 및 데이터 액세스 유닛(550)을 포함한다.
일부 구현예들에서, 데이터 획득 유닛(542)은 적어도 CGR 디바이스(104)로부터 데이터(예를 들어, 이미지 데이터, 포즈 데이터, 시선 추정치, 제시 데이터, 상호작용 데이터, 센서 데이터, 위치 데이터 등)를 획득하도록 구성된다. 이를 위해, 다양한 구현예들에서, 데이터 획득 유닛(542)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
일부 구현예들에서, 추적 유닛(544)은 장면(106)을 맵핑하도록 그리고 장면(106)에 대한 적어도 CGR 디바이스(104)의 포지션/위치를 추적하도록 구성된다. 이를 위해, 다양한 구현예들에서, 추적 유닛(544)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
일부 구현예들에서, 조정 유닛(546)은 CGR 디바이스(104)에 의한 사용자에 대한 CGR 콘텐츠의 제시를 관리 및 조정하도록 구성된다. CGR 콘텐츠의 제시를 관리 및 조정하기 위해, 일부 구현예들에서, 조정 유닛(546)은 프로세스들, 데이터 저장소, 및 하드웨어 특성들에 관련된 정보를 획득하도록 구성된다. 이어서, 정보는 시스템 레벨에서 프로세스들을 조정하기 위해 조정 유닛(546)에 의해 사용된다. 이를 위해, 다양한 구현예들에서, 조정 유닛(546)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
일부 구현예들에서, 데이터 송신 유닛(548)은 데이터(예를 들어, 제시 데이터, 위치 데이터 등)를 적어도 CGR 디바이스(104)에 송신하도록 구성된다. 이를 위해, 다양한 구현예들에서, 데이터 송신 유닛(548)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
일부 구현예들에서, 데이터 액세스 유닛(550)은 프로세스들이 데이터 획득 유닛(542)으로부터 획득된 데이터를 페치할 수 있게 하는 액세스 스케줄을 결정하도록 구성된다. 일부 구현예들에서, 데이터 액세스 유닛(550)은 프로세스들에 의한 효율적인 데이터 검색을 위한 데이터 배열(552)을 결정한다. 일부 구현예들에서, 데이터 액세스 유닛(550)은 또한 프로세스들이 데이터를 풀링 또는 페치하기 위한 액세스 스케줄(554)을 결정한다. 이를 위해, 다양한 구현예들에서, 데이터 송신 유닛(548)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
예를 들어, 도 5b에서, 장면 인식 프로세스(560)는 장면(106)을 인식하기 위한 이미지 데이터 및 포즈 데이터(580)를 획득한다. 눈 추적기가 장면(106) 내의 관심 영역(ROI)(572)에 근접한 사용자 고정 시선을 검출함에 따라, ROI 인식 프로세스(562)는 시선 추정치 데이터(582)에 기초하여 이미지 데이터에서 ROI 이미지 데이터(590)를 식별한다. 후속적으로, 객체 인식 프로세스(564)는 ROI 이미지 데이터(590)를 분석하고 ROI(572) 내의 객체(574)를 인식한다. 도 5b에 도시된 바와 같이, 프로세스들(560, 562, 564)은 액세스 스케줄(554)에 따라 데이터 배열(552)에 액세스하며, 여기서 액세스 스케줄(554)은 각각의 프로세스에 대한 시작 시간과 같은 정보를 포함한다. 또한 도 5b에 도시된 바와 같이, 데이터 배열(552) 내의 데이터는 스케줄링된 페칭을 수용하도록 배열된다. 예를 들어, ROI 이미지 데이터(590)는 ROI 인식 프로세스(562) 및 객체 인식 프로세스(564)에 의해 사용되기 때문에, ROI 이미지 데이터(590)는 더 빈번하거나 더 긴급한 액세스를 수용하기 위해 비-ROI 이미지 데이터(592)와는 별도로 저장된다.
도 5a를 다시 참조하면, 데이터 획득 유닛(542), 추적 유닛(544), 조정 유닛(546), 데이터 송신 유닛(548), 및 데이터 액세스 유닛(550)이 단일 디바이스(예컨대, 제어기(102)) 상에 존재하는 것으로 도시되어 있지만, 다른 구현예들에서, 데이터 획득 유닛(542), 추적 유닛(544), 조정 유닛(546), 데이터 송신 유닛(548), 및 데이터 액세스 스케줄링 유닛(550)의 임의의 조합이 별개의 컴퓨팅 디바이스들 내에 위치될 수 있다는 것을 이해해야 한다.
또한, 도 5a는 본 명세서에 설명된 구현예들의 구조적 개략도와는 대조적으로 특정 실시예에 존재하는 다양한 특징부들의 기능 설명으로서 더 의도된다. 당업자들에 의해 인식되는 바와 같이, 별개로 도시된 아이템들은 조합될 수 있고 일부 아이템들은 분리될 수 있다. 예를 들어, 다양한 구현예들에서, 도 5a에서 별개로 도시된 일부 기능 모듈들은 단일 모듈로 구현될 수 있고, 단일 기능 블록들의 다양한 기능들은 하나 이상의 기능 블록들에 의해 구현될 수 있다. 모듈들의 실제 수량 및 특정 기능들의 분할 그리고 특징부들이 그들 사이에서 어떻게 할당되는지는 실시예마다 변할 것이고, 일부 구현예들에서, 특정 실시예에 대해 선택된 하드웨어, 소프트웨어, 및/또는 펌웨어의 특정 조합에 부분적으로 의존한다.
도 6은 일부 구현예들에 따른 예시적인 CGR 디바이스(104)의 블록도이다. 소정의 특정 특징부들이 예시되어 있지만, 당업자들은 본 개시내용으로부터, 다양한 다른 특징부들이 간결함을 위해 그리고 본 명세서에 개시된 구현예들의 더 적절한 양태들을 불명확하게 하지 않도록 하기 위해 예시되지 않았음을 이해할 것이다. 이를 위해, 비-제한적인 예로서, 일부 구현예들에서, CGR 디바이스(104)는 하나 이상의 프로세싱 유닛들(602)(예를 들어, 마이크로프로세서들, ASIC들, FPGA들, GPU들, CPU들, 프로세싱 코어들 등), 하나 이상의 입/출력(I/O) 디바이스들(606), 하나 이상의 통신 인터페이스들(608)(예를 들어, USB, FIREWIRE, THUNDERBOLT, IEEE 802.3x, IEEE 802.11x, IEEE 802.16x, GSM, CDMA, TDMA, GPS, IR, 블루투스, 지그비, 및/또는 유사한 유형의 인터페이스), 하나 이상의 프로그래밍(예를 들어, I/O) 인터페이스들(610), 하나 이상의 CGR 디스플레이들(612), 하나 이상의 이미지 획득 인터페이스들(614)(예를 들어, 선택적인 내부 및/또는 외부 대면 이미지 센서들), 메모리(620), 및 이들 및 다양한 다른 컴포넌트들을 상호연결시키기 위한 하나 이상의 통신 버스들(604)을 포함한다.
일부 구현예들에서, 하나 이상의 통신 버스들(604)은 시스템 컴포넌트들 사이의 통신을 상호연결시키고 제어하는 회로부를 포함한다. 일부 구현예들에서, 하나 이상의 I/O 디바이스들(606)은 하나 이상의 생리학적 센서들(예를 들어, 혈압 모니터, 심박수 모니터, 혈중 산소 센서, 혈당 센서 등), 하나 이상의 마이크로폰들, 하나 이상의 스피커들, 햅틱 엔진 등 중 적어도 하나를 포함한다.
일부 구현예들에서, 하나 이상의 CGR 디스플레이들(612)은 CGR 콘텐츠를 사용자에게 제시하도록 구성된다. 일부 실시예들에서, 하나 이상의 CGR 디스플레이들(612)은 홀로그래픽, 디지털 광 프로세싱(DLP), 액정 디스플레이(LCD), 실리콘 액정 표시장치(LCoS), 유기 발광 전계-효과 트랜지터리(OLET), 유기 발광 다이오드(OLED), 표면-전도 전자-방출기 디스플레이(SED), 전계-방출 디스플레이(FED), 양자점 발광 다이오드(QD-LED), 마이크로-전자기계 시스템(MEMS), 및/또는 유사한 디스플레이 유형들에 대응한다. 일부 실시예들에서, 하나 이상의 CGR 디스플레이들(612)은 회절, 반사, 편광, 홀로그래픽 등의 도파관 디스플레이들에 대응한다. 예를 들어, CGR 디바이스(104)는 단일 AR/VR 디스플레이를 포함한다. 다른 예에서, CGR 디바이스(104)는 사용자의 각각의 눈을 위한 CGR 디스플레이를 포함한다.
일부 구현예들에서, 하나 이상의 이미지 획득 인터페이스들(614)은 CGR 콘텐츠 생성을 위한 데이터를 획득하도록 구성된다. 일부 구현예들에서, 하나 이상의 이미지 획득 인터페이스들(614)은 하나 이상의 이미지 센서들, 관성 측정 유닛(IMU), 가속도계, 자이로스코프, 온도계, 하나 이상의 깊이 센서들(예컨대, 구조화된 광, 비행시간 등), 눈 추적기 중 적어도 하나를 포함한다. 예를 들어, 하나 이상의 이미지 센서들은 하나 이상의 RGB 카메라들(예를 들어, 상보형 금속-산화물-반도체(CMOS) 이미지 센서 또는 전하-결합 디바이스(CCD) 이미지 센서를 구비함), IR 카메라, 이벤트-기반 카메라 등에 대응한다.
메모리(620)는 DRAM, SRAM, DDR RAM, 또는 다른 랜덤-액세스 솔리드-스테이트 메모리 디바이스들과 같은 고속 랜덤-액세스 메모리를 포함한다. 일부 구현예들에서, 메모리(620)는 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 솔리드-스테이트 저장 디바이스들과 같은 비휘발성 메모리를 포함한다. 메모리(620)는 선택적으로, 하나 이상의 프로세싱 유닛들(602)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. 메모리(620)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 구현예들에서, 메모리(620) 또는 메모리(620)의 비일시적 컴퓨터 판독가능 저장 매체는 선택적인 운영 체제(630) 및 CGR 제시 모듈(640)을 포함하는 다음의 프로그램들, 모듈들 및 데이터 구조들, 또는 그들의 서브세트를 저장한다.
운영 체제(630)는 다양한 기본 시스템 서비스들을 처리하고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함한다. 일부 구현예들에서, CGR 제시 모듈(640)은 하나 이상의 CGR 디스플레이들(612)을 통해 CGR 콘텐츠를 사용자에게 제시하도록 구성된다. 이를 위해, 다양한 구현예들에서, CGR 제시 모듈(640)은 데이터 획득 유닛(642), CGR 제시 유닛(644), 눈 추적 유닛(646), 및 데이터 송신 유닛(648)을 포함한다.
일부 구현예들에서, 데이터 획득 유닛(642)은 적어도 제어기(102)로부터 데이터(예를 들어, 이미지 데이터, 포즈 데이터, 제시 데이터, 상호작용 데이터, 센서 데이터, 위치 데이터 등)를 획득하도록 구성된다. 이를 위해, 다양한 구현예들에서, 데이터 획득 유닛(642)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
일부 구현예들에서, CGR 제시 유닛(644)은 하나 이상의 CGR 디스플레이들(612)을 통해 CGR 콘텐츠를 제시하도록 구성된다. 이를 위해, 다양한 구현예들에서, CGR 제시 유닛(644)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다. 일부 구현들에서, CGR 제시 유닛(644)은 제1 파장 범위 내의 광을 왜곡시키는 아이피스를 통해 제1 파장 범위 내의 방출된 광을 포함하는 이미지를 투영하도록 구성된다. 일부 실시예들에서, CGR 제시 유닛(644)은 제2 파장 범위 내의 광을 실질적인 왜곡 없이 통과시키면서 제1 파장 범위 내의 광을 반사 및 굴절시키는 아이피스를 통해 제1 파장의 발광된 광을 포함하는 이미지를 투영하도록 구성된다.
일부 구현예들에서, 눈 추적 유닛(646)은, 아이피스와 디스플레이 사이에 배치된 하나 이상의 광원들을 사용하여, 제2 파장 범위 내의 광을 방출하고, 카메라를 사용하여, 제2 파장 범위 내의 광을 검출하도록 구성된다. 다양한 구현예들에서, 하나 이상의 광원들은 사용자의 눈을 조명하고, 카메라는 사용자의 눈으로부터 반사된 광을 검출한다. 이를 위해, 다양한 구현예들에서, 눈 추적 유닛(646)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다. 일부 구현예들에서, 눈 추적 유닛(646)은 아이피스를 통해 제2 파장 범위 내의 광을 방출하고, 사용자의 눈에 의해 반사된 제2 파장 범위 내의 광을 검출하도록 구성된다. 일부 구현예들에서, 눈 추적 유닛(646)은 사용자의 눈으로부터의 검출된 광 반사에 적어도 부분적으로 기초하여 시선 추정치를 제공한다.
일부 구현예들에서, 데이터 송신 유닛(648)은 데이터(예컨대, 제시 데이터, 위치 데이터 등)를 적어도 제어기(102)로 송신하도록 구성된다. 이를 위해, 다양한 구현예들에서, 데이터 송신 유닛(648)은 그에 대한 명령어들 및/또는 로직, 및 그에 대한 휴리스틱스 및 메타데이터를 포함한다.
데이터 획득 유닛(642), CGR 제시 유닛(644), 눈 추적 유닛(646), 및 데이터 송신 유닛(648)이 단일 디바이스(예컨대, CGR 디바이스(104)) 상에 존재하는 것으로 도시되어 있지만, 다른 구현예들에서, 데이터 획득 유닛(642), CGR 제시 유닛(644), 눈 추적 유닛(646), 및 데이터 송신 유닛(648)의 임의의 조합이 별개의 컴퓨팅 디바이스들 내에 위치될 수 있다는 것을 이해해야 한다.
또한, 도 6은 본 명세서에 설명된 구현예들의 구조적 개략도와는 대조적으로 특정 실시예에 존재하는 다양한 특징부들의 기능 설명으로서 더 의도된다. 당업자들에 의해 인식되는 바와 같이, 별개로 도시된 아이템들은 조합될 수 있고 일부 아이템들은 분리될 수 있다. 일부 구현예들에서, 도 6에서 별개로 도시된 일부 기능 모듈들은 단일 모듈로 구현될 수 있고, 단일 기능 블록들의 다양한 기능들은 다양한 구현예들에서 하나 이상의 기능 블록들에 의해 구현될 수 있다. 모듈들의 실제 수량 및 특정 기능들의 분할 그리고 특징부들이 그들 사이에서 어떻게 할당되는지는 실시예마다 변할 것이고, 일부 구현예들에서, 특정 실시예에 대해 선택된 하드웨어, 소프트웨어, 및/또는 펌웨어의 특정 조합에 부분적으로 의존한다.
추가적으로, 일부 구현예들에서, 도 5a에 도시된 바와 같은 제어기(102) 및 도 6에 도시된 바와 같은 CGR 디바이스(104)에 의해 수행되는 기능들은 디바이스들 사이에서 분배된다. 예를 들어, 도 7a는 일부 구현예들에 따른, 센서들로부터 데이터를 수신하고 (도 1에 예시된 바와 같이) 장면(106)의 표현을 생성하는 CGR 파이프라인(700)을 예시한다. 도 7b는 CGR 파이프라인(700)을 구현하는 시스템(750)을 예시한다. 시스템(750)은 전술된 제어기(102) 및/또는 CGR 디바이스(104)에 의해 수행되는 태스크들을 제어기(102)와 CGR 디바이스(104) 사이에 분배한다.
도 7a에 도시된 바와 같이, 일부 구현예들에서, 이미지 획득 인터페이스(614)(도 6)는 적어도 이미지 데이터를 출력하기 위한 이미지 센서(710), 포즈 데이터를 출력하기 위한 IMU(712), 시선 추정치를 제공하기 위한 눈 추적기(714), 및 장면(106)을 생성하기 위해 프로세스들에 대한 입력들로서 원시 데이터를 제공하기 위한 하나 이상의 다른 센서들(716)을 포함한다. 이미지 데이터, 포즈 데이터, 시선 추정치 데이터, 및 원시 데이터를 수신하면, 제어기(102)에 의해 실행되는 프로세스들은 수신된 데이터를 전술된 바와 같이 데이터 배열(552)에 따라 버퍼(예컨대, 도 4의 버퍼(425) 또는 도 7a의 버퍼(720))에 저장한다. 또한, 제어기(102)에 의해 실행되는 프로세스들은 액세스 스케줄(554)에 따라 버퍼(720)에 액세스한다. 액세스 스케줄(554)은 도 3을 참조하여 전술된 바와 같은 결정론적 모델에 따라 생성된다.
일부 구현예들에서, CGR 파이프라인(700)은 CGR 콘텐츠 및 버퍼(720)로부터의 데이터를 수신하고 디스플레이(612) 상에 이미지를 렌더링하는 렌더링 모듈(730)을 포함한다. 다양한 구현예들에서, CGR 콘텐츠는 가상 객체들의 기하학적 형상들, 가상 객체들의 색상들 및/또는 텍스처들, 이미지들(예컨대, 장면(106)의 시스루 이미지), 및 렌더링된 이미지에서 표현될 콘텐츠를 설명하는 다른 정보의 정의들을 포함한다. 일부 구현예들에서, 렌더링된 이미지를 디스플레이하기 전에 최종 보정이 수행된다. 예를 들어, 포즈 데이터에 기초하여, 렌더링된 이미지는 사용자의 경험을 개선하도록 보정된다.
일부 구현예들에서, 최종 보정 및 다른 덜 계산-집약적인 태스크들(예컨대, 센서 데이터 프리프로세싱)은 도 7b에 도시된 바와 같이 CGR 디바이스에서 수행된다. 일부 실시예들에 따른 CGR 파이프라인(700)을 구현하는 도 7b의 시스템(750)은 제어기(102) 및/또는 CGR 디바이스(104)에 의해 수행되는 기능들을 분배한다. 이와 같이, 더 계산-집약적인 태스크들은, 예를 들어, 기계 학습, 컴퓨터 비전, 및/또는 3D 렌더링 등과 같은 태스크들에 대해 제어기(102)의 하나 이상의 프로세서들(756)을 사용하여 제어기(102)에서 수행된다. 이어서, 제어기(102)는 디스플레이 전에 최종 보정을 위해 컴퓨팅된 이미지를 CGR 디바이스(104)로 전송한다. 일부 구현예들에서, 전송 프로세스는 제어기(102)와 CGR 디바이스(104) 사이의 압축/압축해제 및 통신을 포함한다.
일부 구현예들에서, 하나 이상의 프로세서들(756)은 조정 유닛(546) 및 데이터 액세스 유닛(550)을 포함하고, 데이터 액세스 유닛(550)은 시스템(750)에 걸쳐 분배된 프로세스들에 대한 데이터 배열(552-1) 및 액세스 스케줄(554-1)을 추가로 포함한다. 예를 들어, 제어기(102)는 CGR 디바이스(104)로부터 프로세스들의 특성들 및 하드웨어 파라미터들을 수집한다. 신경망과 같은 기계 학습을 사용하여, 전송 프로세스, 센서 데이터 프리프로세싱, 및/또는 최종 보정 등을 포함하는 플랫폼들에 걸친 프로세스들의 특성들이 추출될 수 있고, 데이터에 액세스하는 프로세스들의 시퀀싱이 예측될 수 있도록 가중치들이 할당된다. 제어기(102)는 또한 일부 구현예들에서 액세스 스케줄(554-1)에 적어도 부분적으로 기초하여 예측 데이터 액세스를 수용하기 위해 데이터 배열(552-1)을 결정할 수 있다. 도 7b는 하나의 제어기(102) 및 하나의 CGR 디바이스(104)를 포함하는 시스템(750)을 예시하지만, 일부 실시예들에서, 다수의 CGR 디바이스들이 제어기(102)에 연결될 수 있다. 그러한 실시예들에서, 제어기(102) 상의 기계 학습은 (예컨대, 멀티-플레이어 CGR 환경에서) 다수의 CGR 디바이스들에 걸친 프로세스들을 포함하는 크로스-플랫폼 프로세스들에 대한 액세스 스케줄을 예측하는 데 사용될 수 있다. 일부 구현예들에서, 제어기(102)는 전-시스템적(system wide) 데이터 배열(552-1) 및 액세스 스케줄(554-1)을 분배하여, 각각의 CGR 디바이스가 제어기(102)로부터 데이터 배열(552-1) 및/또는 액세스 스케줄(554-1)의 사본 또는 서브세트를 획득하도록 한다. 데이터 배열(552-2)의 로컬 사본 및 액세스 스케줄(554-2)의 로컬 사본에 따라, 이미지 획득 인터페이스(614)에 의해 획득된 데이터가 배열되고, CGR 디바이스(104)와 연관된 프로세스들은 스케줄에 따라 배열된 데이터에 액세스한다. 이와 같이, 각각의 프로세스 또는 각각의 디바이스가 데이터 액세스를 위해 최적화되었을 수 있는 다른 시스템들과는 상이하게, 본 명세서에 설명된 실시예들에 따른 시스템(750)은 시스템 레벨에서의 데이터 액세스에 대한 플랫폼 애그노스틱(agnostic) 스케줄링을 제공하여, 레이턴시는 전체적으로서 감소된다.
도 8은 일부 구현예들에 따른, 프로세스들에 대한 액세스 스케줄을 결정하는 방법(800)의 흐름도 표현이다. 다양한 구현예들에서, 방법(800)은 하나 이상의 프로세서들, 비일시적 메모리, 및 이미지 획득 인터페이스(예컨대, 도 6의 이미지 획득 인터페이스(614))를 갖는 디바이스에 의해 수행된다. 일부 구현예들에서, 방법(800)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 구현예들에서, 방법(800)은 비일시적 컴퓨터 판독가능 매체(예를 들어, 메모리)에 저장된 명령어들(예를 들어, 코드)을 실행하는 프로세서 및/또는 제어기(예를 들어, 도 1의 제어기(102))에 의해 수행된다. 간단히, 일부 상황들에서, 방법(800)은 이미지 데이터를 획득하고, 포즈 데이터를 결정하고, 시선 추정치를 결정하기 위해 이미지 획득 인터페이스를 이용하는 단계; 이미지 획득 인터페이스와 통신가능한 복수의 프로세스들의 복수의 특성들에 적어도 부분적으로 기초하여 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열을 결정하는 단계; 및 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열, 복수의 프로세스들의 복수의 특성들, 및 디바이스와 연관된 하드웨어 타이밍 파라미터들 중 적어도 하나에 적어도 부분적으로 기초하여 복수의 프로세스들에 대한 액세스 스케줄을 결정하는 단계를 포함한다.
방법(800)은, 블록(810)에서, 디바이스가 이미지 획득 인터페이스에 의해 획득된 시야와 연관된 이미지 데이터를 획득하는 것으로 시작한다. 일부 실시예들에서, 이미지 획득 인터페이스는 시야와 연관된 이미지 데이터를 획득하기 위한 이미지 센서(예컨대, 도 7a의 이미지 센서(710))를 포함한다.
방법(800)은, 블록(820)에서, 디바이스가 관성 측정 유닛(IMU) 정보에 적어도 부분적으로 기초하여 포즈 데이터를 결정하는 단계로 계속되며, 여기서 포즈 데이터는 이미지 획득 인터페이스에 의해 측정된 사용자의 현재 자세에 대응한다. 일부 실시예들에서, 이미지 획득 인터페이스는 사용자의 현재 자세를 측정하기 위한 IMU(예컨대, 도 7a의 IMU(712))를 포함한다.
방법(800)은, 블록(830)에서, 디바이스가 이미지 획득 인터페이스를 통해 획득된 눈 추적 정보에 적어도 부분적으로 기초하여 시선 추정치를 결정하는 단계로 계속된다. 일부 실시예들에서, 이미지 획득 인터페이스는 눈 추적 정보를 획득하기 위한 눈 추적기(예를 들어, 도 7a의 눈 추적기(714))를 포함한다.
방법(800)은, 블록(840)에서, 디바이스가 이미지 획득 인터페이스와 통신가능한 복수의 프로세스들의 복수의 특성들에 적어도 부분적으로 기초하여 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열을 결정하는 단계로 계속된다. 예를 들어, 도 4에 도시된 바와 같이, 버퍼(425) 내의 데이터(427)의 배열은 결정론적 모델(300)을 사용하여 제어기(102)에 의해 결정된다. 도 3에 도시된 바와 같은 결정론적 모델(300)은 버퍼(425) 내의 데이터(427)의 배열을 결정하기 위한 파라미터들의 일부로서 프로세스들의 특성들(예컨대, 실행 시퀀싱 및/또는 프로세스 실행 지속기간)을 획득한다.
일부 실시예들에서, 블록(842)에 의해 표현된 바와 같이, 배열 결정은 상이한 프로세스들에 대한 데이터를 집계하는 단계, 및 복수의 프로세스들의 복수의 특성들에 적어도 부분적으로 기초하여 집계된 데이터를 배열하는 단계를 포함한다. 예를 들어, 2개의 프로세스들에 대한 배열 결정은 다음 단계들을 포함한다: (1) 복수의 프로세스들 중 제1 프로세스에 대한 제1 이미지 데이터, 제1 포즈 데이터, 및 제1 시선 추정치 중 적어도 하나를 획득하는 단계 - 여기서 제1 프로세스는 제1 세트의 특성들에 의해 특징지어짐 -; (2) 복수의 프로세스들 중 제2 프로세스에 대한 제2 이미지 데이터, 제2 포즈 데이터, 및 제2 시선 추정치 중 적어도 하나를 획득하는 단계 - 여기서 제2 프로세스는 제2 세트의 특성들에 의해 특징지어짐 -; 및 (3) 제1 이미지 데이터, 제1 포즈 데이터, 및 제1 시선 추정치를 제2 이미지 데이터, 제2 포즈 데이터, 및 제2 시선 추정치와 집계하여 이미지 데이터, 포즈 데이터, 및 시선 추정치를 생성하는 단계 - 여기서 이미지 데이터, 포즈 데이터, 및 시선 추정치는 제1 세트의 특성들 및 제2 세트의 특성들에 적어도 부분적으로 기초하여 배열됨 -.
예를 들어, 도 4에 도시된 바와 같이, 버퍼(425) 내의 데이터(427)의 배열은 프로세스들(410)의 특성들에 적어도 부분적으로 기초하여 결정된다. 프로세스 2(410-2)로부터의 출력들이 프로세스 3(410-3)에 의해 입력들로서 사용되는 경우, 프로세스 2(410-2)에 대한 데이터(427-2)는, 데이터(427-4)가 프로세스 3(410-3)에 의해 페치될 준비가 되기 전에 데이터(427-2)가 프로세스 2(410-2)에 의해 페치될 준비가 되도록, 버퍼 내에 배열된다. 다른 예에서, 도 5b에 도시된 바와 같이, ROI 이미지 데이터(590)는 비-ROI 이미지 데이터(592)보다 더 많은 프로세스들에 의해 사용된다. 이와 같이, 데이터 배열(552)에 따르면, ROI 이미지 데이터(590)는 더 빈번한 액세스 영역 및/또는 더 긴급한 필요를 위한 영역에 저장된다.
여전히 도 8을 참조하면, 방법(800)은, 블록(850)에서, 디바이스가 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열, 복수의 프로세스들의 복수의 특성들, 및 디바이스와 연관된 하드웨어 타이밍 파라미터들 중 적어도 하나에 적어도 부분적으로 기초하여 복수의 프로세스들에 대한 액세스 스케줄을 결정하는 단계로 계속된다. 일부 실시예들에서, 블록(852)에 의해 표현된 바와 같이, 방법(800)은 결정론적 모델에 기초하여 액세스 스케줄을 결정하는 단계를 포함한다. 그러한 실시예들에서, 방법(800)은, 복수의 프로세스들 중 제1 프로세스에 대해, 제1 프로세스에 대한 입력들, 입력들을 제공하는 하드웨어 또는 제2 프로세스 중 적어도 하나, 및 하드웨어 또는 제2 프로세스 중 적어도 하나로부터 입력들을 획득하기 위한 시간 파라미터를 결정하는 단계; 및 시간 파라미터에 적어도 부분적으로 기초하여 제1 프로세스에 대한 웨이크 시간(waking time)을 계산하는 단계를 추가로 포함한다. 예를 들어, 도 3에 도시된 바와 같이, 프로세스 M의 경우, 프로세스 M의 실행을 위한 웨이크 시간은 카메라의 노출 시간, 예컨대, 알려진 Δ1에 적어도 부분적으로 결정된다. 프로세스 N의 경우, 프로세스 M의 실행을 위한 웨이크 시간은 카메라의 노출 시간 및 프로세스 M의 실행 지속기간, 예컨대, 알려진 Δ1 및 알려진 Δ2에 적어도 부분적으로 결정된다.
일부 실시예들에서, 블록(854)에 의해 표현된 바와 같이, 방법(800)은 계산-집약적인 태스크들을 베이스 디바이스에 분배하는 단계 및 사용자 경험을 최적화하기 위해(예컨대, 멀미를 감소시킴) 디바이스에서 최종 보정을 수행하는 단계를 포함한다. 예를 들어, 도 7a에 도시된 바와 같은 CGR 파이프라인(700)에서, (렌더링 모듈(730)에 의해 수행되는 바와 같은) 렌더링을 포함하는 계산-집약적인 태스크들은 도 7b에 도시된 바와 같이 제어기(102)에 의해 수행될 수 있는 한편; 센서 데이터 프리프로세싱과 같은 최소 계산은 도 7b에 도시된 바와 같이 CGR 디바이스(104)에 의해 수행될 수 있다. 또한 도 7a에 도시된 바와 같이, 장면을 디스플레이하기 전에, CGR 디바이스(104)로부터의 데이터(예컨대, 포즈 데이터)가 최종 보정을 위해 사용될 수 있다. 일부 실시예들에서, 렌더링을 위해 베이스에 의해 전송된 프레임들은 타임스탬핑된다. 프레임들이 베이스에서 컴퓨팅되는 시간을 알면, 베이스로부터 프레임들을 수신할 시, CGR 디바이스는 (예컨대, 이미지 획득 인터페이스에 의해 측정된 바와 같은 사용자의 현재 자세에 대응하는) 포즈 데이터의 궤적에 기초하여 렌더링 시간에서의 렌더링 포즈를 예측한다. 이어서, CGR 디바이스는 렌더링 시간에서의 렌더링 포즈를 사용하여 프레임들을 조정함으로써 최종 보정을 수행한다.
일부 실시예들에서, 블록(856)에 의해 표현된 바와 같이, 방법(800)은 제2 디바이스에 의해 액세스 스케줄 및/또는 배열을 결정하는 단계를 포함한다. 특히, 분배된 액세스 스케줄 결정은: 베이스 디바이스에 의한 데이터의 수집을 트리거링하는 단계 - 베이스 디바이스는 이미지 데이터, 포즈 데이터, 및 시선 추정치에 대한 배열, 복수의 프로세스들의 복수의 특성들, 및 하드웨어 타이밍 파라미터들 중 적어도 하나를 디바이스로부터 획득하고, 데이터는 또한 다른 디바이스들로부터 베이스 디바이스에 의해 수집됨 -; 및 제2 디바이스로부터 액세스 스케줄을 수신하는 단계 - 액세스 스케줄은 데이터에 기초하여 제2 디바이스에 의해 결정됨 - 를 포함한다. 예를 들어, 도 7b에 도시된 바와 같이, 제어기(102)는 CGR 디바이스(104)로부터 프로세스 특성들, 데이터 배열 정보, 및 하드웨어 파라미터들 등을 획득한다. 일부 실시예들에서, 제어기(102)는 또한 다른 CGR 디바이스들로부터 그러한 정보를 수신한다. 수집된 정보를 이용하여, 제어기(102)는 전-시스템적 액세스 스케줄(554-1) 및/또는 데이터 배열(552-1)을 제공한다.
일부 실시예들에서, 방법(800)은, 블록(860)에서, 디바이스가 디스플레이를 위한 장면(예컨대, 현실 세계 장면의 표현인 CGR 장면 또는 완전 가상 장면인 CGR 장면)을 생성하기 위해 액세스 스케줄에 따라 배열에 액세스하는 단계; 및 배열로부터 획득된 데이터를 사용하여 그리고 액세스 스케줄에 따라 장면을 디스플레이하는 단계로 계속되며, 여기서 데이터는 이미지 데이터, 포즈 데이터, 및 시선 추정치 중 적어도 하나의 서브세트이다. 예를 들어, 도 7a에서, CGR 디바이스의 디스플레이(612)에 제공되는 장면은 버퍼(720)로부터의 데이터를 사용하여 생성된다. 도 4에 도시된 바와 같이, 장면을 생성하기 위한 프로세스들(410)은 액세스 스케줄에 따라 버퍼(425)로부터 데이터 스트림을 풀링하며, 여기서 버퍼(425) 내의 데이터(427)는 배열에 따라 배열된다. 다른 예에서, 도 5b에 도시된 바와 같이, 장면 인식 프로세스(560), ROI 인식 프로세스(562), 및 객체 인식 프로세스(564)는 액세스 스케줄(554)에 따라 데이터에 액세스하고, ROI 이미지 데이터(590) 및 비-ROI 이미지 데이터(592)는 데이터 배열(552)에 따라 저장된다.
일부 실시예들에서, 블록(862)에 의해 표현된 바와 같이, 액세스 스케줄에 따라 배열에 액세스하는 단계는 액세스 스케줄에 기초하여 복수의 프로세스들의 프로세스에 대한 예상된 실행 시간을 결정하는 단계, 및 배열에 따라 프로세스에 의해 사용되는 데이터를 페치할 시 예상된 실행 시간에 데이터 액세스를 위해 프로세스를 웨이크업하는 단계를 포함한다. 예를 들어, 도 3에 도시된 바와 같이, 액세스 스케줄에 기초하여, 시간 T4에서의 프로세스 M에 대한 예상된 실행 시간은 스케줄링된 액세스에 따라 결정된다. 시간 T4에서, 카메라로부터의 이미지 데이터는, 데이터가 시스템 결정된 데이터 배열에 따라 배열되는 버퍼로부터 프로세스 M에 의해 페치된다.
첨부된 청구범위의 범주 내의 구현예들의 다양한 양태들이 위에서 설명되지만, 위에서 설명된 구현예들의 다양한 특징들이 광범위하게 다양한 형태들로 구현될 수 있고 위에서 설명된 임의의 특정 구조 및/또는 기능이 단지 예시적이라는 것이 명백할 것이다. 본 개시내용에 기초하여, 당업자는 본 명세서에 설명된 양태가 임의의 다른 양태들과 독립적으로 구현될 수 있고 이들 양태들 중 2개 이상이 다양한 방식들로 조합될 수 있음을 이해해야 한다. 예를 들어, 본 명세서에 기재된 임의의 수의 양태들을 사용하여 장치가 구현될 수 있고/있거나 방법이 실시될 수 있다. 부가적으로, 본 명세서에 기재된 양태들 중 하나 이상에 부가하여 또는 그 이외의 다른 구조 및/또는 기능을 사용하여 그러한 장치가 구현될 수 있고/있거나 그러한 방법이 실시될 수 있다.
용어들 "제1", "제2" 등이 다양한 요소들을 설명하기 위해 본 명세서에서 사용될 수 있지만, 이들 요소들은 이들 용어들에 의해 제한되어서는 안 된다는 것이 또한 이해될 것이다. 이러한 용어들은 하나의 요소를 다른 요소와 구별하는 데에만 사용된다. 예를 들어, 모든 "제1 노드"의 발생이 일관되게 재명명되고 모든 "제2 노드"의 발생이 일관되게 재명명되기만 한다면, 제1 노드는 제2 노드로 지칭될 수 있고, 유사하게, 제2 노드는 제1 노드로 지칭될 수 있으며, 이는 설명의 의미를 변경한다. 제1 노드 및 제2 노드는 둘 모두 노드들이지만, 그것들은 동일한 노드가 아니다.
본 명세서에서 사용되는 용어는 단지 특정 구현예들만을 설명하는 목적을 위한 것이고, 청구범위를 제한하도록 의도되지 않는다. 본 구현예들의 설명 및 첨부된 청구범위에 사용되는 바와 같이, 단수형들("a", "an" 및 "the")은 문맥상 명확하게 달리 나타나지 않으면 복수형들도 또한 포함하도록 의도된다. 또한, 본 명세서에서 사용되는 바와 같은 용어 "및/또는"은 열거되는 연관된 항목들 중 하나 이상의 항목들의 임의의 및 모든 가능한 조합들을 나타내고 그들을 포괄하는 것임이 이해될 것이다. 본 명세서에서 사용될 때 "포함한다(comprise)" 및/또는 "포함하는(comprising)"이라는 용어들은 진술되는 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는다는 것이 추가로 이해될 것이다.
본 명세서에서 사용되는 바와 같이, 상황에 따라 진술된 선행 조건이 사실"인 경우(if)"라는 용어는 그 조건이 사실"일 때(when)" 또는 그 조건이 사실"일 시(upon)" 또는 그 조건이 사실"이라고 결정하는 것에 응답하여(in response to determining)" 또는 그 조건이 사실"이라는 결정에 따라(in accordance with a determination)" 또는 그 조건이 사실"임을 검출하는 것에 응답하여(in response to detecting)"를 의미하는 것으로 해석될 수 있다. 유사하게, 어구 "[진술된 선행 조건이 사실이라고] 결정되는 경우" 또는 "[진술된 선행 조건이 사실]인 경우" 또는 "[진술된 선행 조건이 사실]일 때"는 상황에 따라, 진술된 선행 조건이 사실"이라고 결정할 시에" 또는 그 조건이 사실"이라고 결정하는 것에 응답하여" 또는 그 조건이 사실"이라는 결정에 따라" 또는 그 조건이 사실"이라는 것을 검출할 시에" 또는 그 조건이 사실"임을 검출하는 것에 응답하여"를 의미하는 것으로 해석될 수 있다.

Claims (20)

  1. 방법으로서,
    하나 이상의 프로세서들 및 비일시적 메모리를 갖는 디바이스에서:
    데이터 배열에 액세스하기 위한 복수의 프로세스들에 대한 결정론적 액세스 스케줄을 결정하는 단계를 포함하고,
    상기 데이터 배열에 액세스하기 위한 복수의 프로세스들에 대한 결정론적 액세스 스케줄을 결정하는 단계는,
    상기 복수의 프로세스들 중 제1 프로세스에 대해, 상기 제1 프로세스에 대한 입력들과, 하드웨어 또는 제2 프로세스 중 적어도 하나로부터 상기 입력들을 획득하기 위한 시간 파라미터를 결정하는 단계; 및
    상기 시간 파라미터에 적어도 부분적으로 기초하여 상기 제1 프로세스에 대한 웨이크 시간(waking time)을 계산하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 액세스 스케줄에 따라 상기 데이터 배열에 액세스하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서, 상기 액세스 스케줄에 따라 상기 데이터 배열에 액세스하는 단계는:
    상기 액세스 스케줄에 기초하여 상기 복수의 프로세스들 중 상기 제1 프로세스에 대한 예상된 실행 시간을 결정하는 단계; 및
    상기 예상된 실행 시간에 상기 데이터 배열에 액세스하기 위해 상기 제1 프로세스를 웨이크업하는 단계
    를 포함하는, 방법.
  4. 제2항에 있어서,
    상기 액세스 스케줄에 따라 상기 데이터 배열에 액세스하는 것에 기초하여 디스플레이를 위한 장면을 생성하는 단계; 및
    상기 액세스 스케줄에 따라 상기 데이터 배열로부터 획득된 데이터를 사용하여 상기 장면을 디스플레이하는 단계 - 상기 데이터는 이미지 데이터, 포즈 데이터, 또는 시선 추정 데이터 중 적어도 하나를 포함함 -
    를 더 포함하는, 방법.
  5. 제1항에 있어서, 상기 복수의 프로세스들에 대한 상기 액세스 스케줄을 결정하는 단계는, 상기 복수의 프로세스들 각각에 대한 웨이크 시간을 계산하는 단계를 포함하는, 방법.
  6. 제1항에 있어서, 상기 시간 파라미터를 결정하는 단계는, 상기 입력들이 페치될 준비가 된 시간을 결정하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 입력들이 페치될 준비가 된 상기 시간을 결정하는 단계는, 상기 하드웨어의 하드웨어 동작 지속기간 또는 상기 제2 프로세스의 프로세스 실행 시간 중 적어도 하나를 결정하는 단계를 포함하는, 방법.
  8. 제6항에 있어서, 상기 시간 파라미터를 결정하는 단계는, 상기 입력들이 페치될 준비가 된 상기 시간에 예약된 통신 레이턴시 시간량을 더하는 단계를 포함하는, 방법.
  9. 제1항에 있어서, 상기 결정론적 액세스 스케줄을 결정하는 단계는, 상기 데이터 배열에 기초하는, 방법.
  10. 제1항에 있어서,
    제1 센서로부터 제1 데이터를 획득하고, 제2 센서로부터 제2 데이터를 획득하는 단계; 및
    상기 복수의 프로세스들의 복수의 특성들에 적어도 부분적으로 기초하여 상기 제1 데이터 및 상기 제2 데이터에 대한 상기 데이터 배열을 결정하는 단계
    를 더 포함하는, 방법.
  11. 디바이스로서,
    비일시적 메모리; 및
    하나 이상의 프로세서를 포함하며, 상기 하나 이상의 프로세서는,
    복수의 프로세스들 중 제1 프로세스에 대해, 상기 제1 프로세스에 대한 입력들과, 하드웨어 또는 제2 프로세스 중 적어도 하나로부터 상기 입력들을 획득하기 위한 시간 파라미터를 결정하는 것; 및
    상기 시간 파라미터에 적어도 부분적으로 기초하여 상기 제1 프로세스에 대한 웨이크 시간을 계산하는 것
    에 의해 데이터 배열에 액세스하기 위한 상기 복수의 프로세스들에 대한 결정론적 액세스 스케줄을 결정하는, 디바이스.
  12. 제11항에 있어서, 상기 하나 이상의 프로세서는 추가로, 상기 액세스 스케줄에 따라 상기 데이터 배열에 액세스하는, 디바이스.
  13. 제12항에 있어서, 상기 하나 이상의 프로세서는,
    상기 액세스 스케줄에 기초하여 상기 복수의 프로세스들 중 상기 제1 프로세스에 대한 예상된 실행 시간을 결정하는 것; 및
    상기 예상된 실행 시간에 상기 데이터 배열에 액세스하기 위해 상기 제1 프로세스를 웨이크업하는 것
    에 의해 상기 액세스 스케줄에 따라 상기 데이터 배열에 액세스하는, 디바이스.
  14. 제12항에 있어서, 상기 하나 이상의 프로세서는 추가로:
    상기 액세스 스케줄에 따라 상기 데이터 배열에 액세스하는 것에 기초하여 디스플레이를 위한 장면을 생성하고;
    상기 액세스 스케줄에 따라 상기 데이터 배열로부터 획득된 데이터를 사용하여 상기 장면을 디스플레이하고, 상기 데이터는 이미지 데이터, 포즈 데이터, 또는 시선 추정 데이터 중 적어도 하나를 포함하는, 디바이스.
  15. 제11항에 있어서, 상기 하나 이상의 프로세서는 상기 복수의 프로세스들 각각에 대한 웨이크 시간을 계산하는 것에 의해 상기 복수의 프로세스들에 대한 상기 액세스 스케줄을 결정하는, 디바이스.
  16. 제11항에 있어서, 상기 하나 이상의 프로세서는 상기 입력들이 페치될 준비가 된 시간을 결정하는 것에 의해 상기 시간 파라미터를 결정하는, 디바이스.
  17. 제16항에 있어서, 상기 하나 이상의 프로세서는 상기 하드웨어의 하드웨어 동작 지속기간 또는 상기 제2 프로세스의 프로세스 실행 시간 중 적어도 하나를 결정하는 것에 의해 상기 입력들이 페치될 준비가 된 상기 시간을 결정하는, 디바이스.
  18. 제16항에 있어서, 상기 하나 이상의 프로세서는 상기 입력들이 페치될 준비가 된 상기 시간에 예약된 통신 레이턴시 시간량을 더하는 것에 의해 상기 시간 파라미터를 결정하는, 디바이스.
  19. 제11항에 있어서, 상기 하나 이상의 프로세서는 상기 데이터 배열에 기초하여 상기 결정론적 액세스 스케줄을 결정하는, 디바이스.
  20. 명령어들이 인코딩되어 있는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은, 디바이스의 하나 이상의 프로세서에 의해 실행될 때, 상기 디바이스로 하여금,
    복수의 프로세스들 중 제1 프로세스에 대해, 상기 제1 프로세스에 대한 입력들과, 하드웨어 또는 제2 프로세스 중 적어도 하나로부터 상기 입력들을 획득하기 위한 시간 파라미터를 결정하는 것; 및
    상기 시간 파라미터에 적어도 부분적으로 기초하여 상기 제1 프로세스에 대한 웨이크 시간을 계산하는 것
    에 의해 데이터 배열에 액세스하기 위한 상기 복수의 프로세스들에 대한 결정론적 액세스 스케줄을 결정하게 하는, 비일시적 컴퓨터 판독가능 매체.


KR1020247007313A 2018-08-23 2019-08-22 프로세스 데이터 공유 방법 및 디바이스 KR20240036122A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862721685P 2018-08-23 2018-08-23
US62/721,685 2018-08-23
PCT/US2019/047661 WO2020041567A1 (en) 2018-08-23 2019-08-22 Method and device for process data sharing
KR1020217004689A KR102644991B1 (ko) 2018-08-23 2019-08-22 프로세스 데이터 공유 방법 및 디바이스

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004689A Division KR102644991B1 (ko) 2018-08-23 2019-08-22 프로세스 데이터 공유 방법 및 디바이스

Publications (1)

Publication Number Publication Date
KR20240036122A true KR20240036122A (ko) 2024-03-19

Family

ID=67841287

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217004689A KR102644991B1 (ko) 2018-08-23 2019-08-22 프로세스 데이터 공유 방법 및 디바이스
KR1020247007313A KR20240036122A (ko) 2018-08-23 2019-08-22 프로세스 데이터 공유 방법 및 디바이스

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217004689A KR102644991B1 (ko) 2018-08-23 2019-08-22 프로세스 데이터 공유 방법 및 디바이스

Country Status (6)

Country Link
US (2) US11204783B2 (ko)
EP (1) EP3841453A1 (ko)
JP (2) JP7194263B2 (ko)
KR (2) KR102644991B1 (ko)
CN (1) CN112639681A (ko)
WO (1) WO2020041567A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11799643B2 (en) 2021-01-19 2023-10-24 Bank Of America Corporation Collaborative architecture for secure data sharing
CN115051924B (zh) * 2022-06-08 2023-11-21 上海佰贝网络工程技术有限公司 基于数据广播的Gossip算法中通信方式协调方法、装置、设备、系统及介质
CN115482325B (zh) * 2022-09-29 2023-10-31 北京百度网讯科技有限公司 画面渲染方法、装置、系统、设备及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1408510A3 (en) * 2002-05-17 2005-05-18 Matsushita Electric Industrial Co., Ltd. Memory control apparatus, method and program
US7409587B2 (en) * 2004-08-24 2008-08-05 Symantec Operating Corporation Recovering from storage transaction failures using checkpoints
US8516454B2 (en) * 2008-07-10 2013-08-20 Rocketick Technologies Ltd. Efficient parallel computation of dependency problems
EP2175375A1 (en) * 2008-10-09 2010-04-14 Fastrax Ltd Geographic location for an image
US8769543B2 (en) * 2010-09-27 2014-07-01 Throughputer, Inc. System and method for maximizing data processing throughput via application load adaptive scheduling and context switching
JP2012208558A (ja) * 2011-03-29 2012-10-25 Yamaha Corp 表示制御装置、端末装置、通信システムおよびプログラム
CN102902807B (zh) * 2011-10-18 2016-06-29 微软技术许可有限责任公司 使用多个视觉输入模态的视觉搜索
JP6353214B2 (ja) * 2013-11-11 2018-07-04 株式会社ソニー・インタラクティブエンタテインメント 画像生成装置および画像生成方法
US9652893B2 (en) * 2014-04-29 2017-05-16 Microsoft Technology Licensing, Llc Stabilization plane determination based on gaze location
KR20160024168A (ko) * 2014-08-25 2016-03-04 삼성전자주식회사 전자 장치의 디스플레이 제어 방법 및 전자 장치
JP2018524134A (ja) * 2015-06-14 2018-08-30 株式会社ソニー・インタラクティブエンタテインメント Vr観戦のための拡大された視野再レンダリング
US20170150137A1 (en) * 2015-11-25 2017-05-25 Atheer, Inc. Method and apparatus for selective mono/stereo visual display
WO2018086295A1 (zh) * 2016-11-08 2018-05-17 华为技术有限公司 一种应用界面显示方法及装置

Also Published As

Publication number Publication date
US11204783B2 (en) 2021-12-21
JP7194263B2 (ja) 2022-12-21
US20200065571A1 (en) 2020-02-27
JP2021534510A (ja) 2021-12-09
KR102644991B1 (ko) 2024-03-08
US20220075633A1 (en) 2022-03-10
WO2020041567A1 (en) 2020-02-27
KR20210031957A (ko) 2021-03-23
EP3841453A1 (en) 2021-06-30
CN112639681A (zh) 2021-04-09
JP2023036676A (ja) 2023-03-14

Similar Documents

Publication Publication Date Title
US10824864B2 (en) Plane detection using semantic segmentation
US20220075633A1 (en) Method and Device for Process Data Sharing
US20130326364A1 (en) Position relative hologram interactions
US11610397B2 (en) Plane detection using semantic segmentation
US11703944B2 (en) Modifying virtual content to invoke a target user state
KR20210030207A (ko) 인스턴스 검출 및 일반적인 장면 이해를 이용한 객체 검출
US11699270B2 (en) Computationally efficient model selection
US11403811B1 (en) Estimating optical parameters of surfaces
US20230290042A1 (en) Content playback and modifications in a 3d environment
US11961195B2 (en) Method and device for sketch-based placement of virtual objects
US11836842B2 (en) Moving an avatar based on real-world data
US11468611B1 (en) Method and device for supplementing a virtual environment
US20210201108A1 (en) Model with multiple concurrent timescales
US10976817B2 (en) Method and device for eye tracking with content-embedded glints
US20210097729A1 (en) Method and device for resolving focal conflict
US11797889B1 (en) Method and device for modeling a behavior with synthetic training data
US11838486B1 (en) Method and device for perspective correction using one or more keyframes
US11301035B1 (en) Method and device for video presentation
US10964056B1 (en) Dense-based object tracking using multiple reference images
US20200387712A1 (en) Method and device for generating a synthesized reality reconstruction of flat video content
WO2022261205A1 (en) Eye model enrollment

Legal Events

Date Code Title Description
A107 Divisional application of patent