CN108604391B - 基于虚拟/增强现实系统中的深度信息的时间扭曲调整 - Google Patents
基于虚拟/增强现实系统中的深度信息的时间扭曲调整 Download PDFInfo
- Publication number
- CN108604391B CN108604391B CN201780011175.4A CN201780011175A CN108604391B CN 108604391 B CN108604391 B CN 108604391B CN 201780011175 A CN201780011175 A CN 201780011175A CN 108604391 B CN108604391 B CN 108604391B
- Authority
- CN
- China
- Prior art keywords
- frame
- vertex
- depth
- determining
- adjusted
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 230000003190 augmentative effect Effects 0.000 title claims description 6
- 230000008859 change Effects 0.000 claims abstract description 72
- 238000000034 method Methods 0.000 claims abstract description 51
- 210000003128 head Anatomy 0.000 claims description 111
- 230000015654 memory Effects 0.000 claims description 65
- 238000012545 processing Methods 0.000 claims description 25
- 238000009877 rendering Methods 0.000 claims description 24
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000013519 translation Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 33
- 238000004590 computer program Methods 0.000 description 18
- 230000003287 optical effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 10
- 230000009466 transformation Effects 0.000 description 10
- 230000003993 interaction Effects 0.000 description 7
- 230000006641 stabilisation Effects 0.000 description 6
- 238000011105 stabilization Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 208000013057 hereditary mucoepithelial dysplasia Diseases 0.000 description 2
- 230000001953 sensory effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 210000000744 eyelid Anatomy 0.000 description 1
- 210000001747 pupil Anatomy 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/80—Geometric correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/128—Adjusting depth or disparity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/275—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
- H04N13/279—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals the virtual viewpoint locations being selected by the viewers or determined by tracking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/332—Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
- H04N13/344—Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/366—Image reproducers using viewer tracking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/366—Image reproducers using viewer tracking
- H04N13/383—Image reproducers using viewer tracking for tracking with gaze detection, i.e. detecting the lines of sight of the viewer's eyes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2004—Aligning objects, relative positioning of parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2016—Rotation, translation, scaling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N2013/0074—Stereoscopic image analysis
- H04N2013/0081—Depth or disparity estimation from stereoscopic image signals
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Optics & Photonics (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Processing Or Creating Images (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
一种技术包括确定帧的多个像素中的每个像素的深度值;下采样所述帧的图块的深度值以获得多个下采样的深度值,所述帧包括一个或多个图块;确定头部姿势的变化;从所述多个下采样的深度值确定顶点的下采样的深度值;基于所述头部姿势的变化和所述顶点的下采样的深度值,确定所述顶点的调整位置;至少基于所述顶点的调整位置来执行所述帧的深度调整时间扭曲,以获得深度调整的时间扭曲帧;以及触发所述深度调整的时间扭曲帧的显示。
Description
相关申请的交叉引用
本申请要求于2016年5月29日提交的美国临时申请No. 62/342,999的优先权,并且要求于2016年6月24日提交的美国临时申请No.62/354,443的优先权,其全部内容在此引入以供参考。
技术领域
本文献总体上涉及虚拟或增强现实系统。
背景技术
执行视频渲染在虚拟现实(VR)环境中消耗大量时间和计算资源。视频渲染可以包括例如计算机处理来自编码数据源的信息并且使用该信息来产生和显示图像或一系列图像的过程。虚拟现实应用可以接收或生成应用数据。然后,图形或渲染引擎可以渲染帧以作为虚拟现实内容的一部分显示。在某些情况下,当图形引擎渲染帧的图形时,用户的头部或VR头戴设备(或头戴式显示器)可能会移动,导致到了帧被输出到显示器的时间用户头部的定位/方向信息不准确。
发明内容
一个方面中,一种方法可以包括:确定帧的多个像素中的每个像素的深度值;下采样所述帧的图块的深度值以获得多个下采样的深度值,所述帧包括一个或多个图块;确定头部姿势的变化;从所述多个下采样的深度值确定顶点的下采样的深度值;基于所述头部姿势的变化和所述顶点的下采样的深度值来确定所述顶点的调整位置;至少基于所述顶点的调整位置来执行所述帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧;以及触发所述深度调整的时间扭曲帧的显示。
一种装置可以包括至少一个处理器和含计算机指令的至少一个存储器,所述计算机指令在由所述至少一个处理器执行时使所述装置:确定帧的多个像素中的每个像素的深度值;下采样所述帧的图块的深度值以获得多个下采样的深度值,所述帧包括一个或多个图块;确定头部姿势的变化;从所述多个下采样的深度值确定顶点的下采样的深度值;基于所述头部姿势的变化和所述顶点的下采样的深度值来确定所述顶点的调整位置;至少基于所述顶点的调整位置来执行所述帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧;以及触发所述深度调整的时间扭曲帧的显示。
一种计算机程序产品可以包括非瞬时计算机可读存储介质并且存储可执行代码,所述可执行代码在由至少一个数据处理装置执行时被配置为使所述至少一个数据处理装置执行包括以下步骤的方法:确定帧的多个像素中的每个像素的深度值;下采样所述帧的图块的深度值以获得多个下采样的深度值,所述帧包括一个或多个图块;确定头部姿势的变化;从所述多个下采样的深度值确定顶点的下采样的深度值;基于所述头部姿势的变化和所述顶点的下采样的深度值来确定所述顶点的调整位置;至少基于所述顶点的调整位置来执行所述帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧;以及触发所述深度调整的时间扭曲帧的显示。
在附图和下述描述中阐述了一个或多个实施例的细节。其他特征从说明书和附图以及权利要求将是显而易见的。
附图说明
图1是虚拟现实系统的示例性实施例。
图2A和2B是根据本文广泛描述的实施例的头戴式显示设备的透视图。
图3是根据本文广泛描述的实施例的虚拟现实系统的框图。
图4是示出根据示例性实施例的虚拟现实(VR)系统的框图。
图5是示出根据示例性实施例的帧顶点网格的图。
图6是示出根据示例性实施例的帧或图块的像素深度值的图。
图7是示出根据示例性实施例,下采样像素深度值以获得图块或帧的下采样深度值的子集的图。
图8是示出根据示例性实施例的帧顶点网格的图。
图9是示出根据示例性实施例的虚拟现实系统的操作的流程图。
图10示出可以被用来实现本文所述的技术的计算机设备和移动计算机设备的示例。
具体实施方式
根据说明性示例的实施例,虚拟现实(其也可以被称为沉浸式多媒体或计算机模拟人生)至少在一些情况下,可以在不同程度上复制或模拟现实世界或想象的世界或环境中的场所的环境或物理存在。虚拟现实(VR)系统和/或增强现实(AR)系统可以包括例如头戴式视听设备,诸如VR头戴设备、头戴式显示器(HMD)设备,或者用户佩戴在例如用户的头上的类似设备,以生成用户将体验的沉浸式虚拟世界环境。例如,VR/AR系统可以生成三维(3D)沉浸式虚拟环境。用户可以通过与各种电子设备的交互来体验该3D沉浸式虚拟环境。
传感系统可以跟踪VR头戴设备或用户头部的姿势。姿势可包括例如任何对象(物理或虚拟),诸如VR控制器(作为示例)的位置(或定位)和/或方位信息。姿势可以包括例如物理世界内的对象或虚拟世界内的对象(例如,虚拟对象或渲染元素)的绝对或相对位置、定位和/或方位。图形引擎(或图形处理单元(GPU))可以被用来基于VR 头戴设备或用户的头部的当前姿势来渲染VR内容的图形以供显示。在一些情况下,当图形引擎渲染帧时,用户的头部或VR头戴设备可能会移动,导致到帧被输出到显示器的时间用户的头部姿势的定位/方位信息不准确。
根据示例性实施例,时间扭曲可以被用来扭曲(例如,位移、旋转、调整或重投影)图像或帧以校正在渲染帧(或纹理或图像)之后 (或同时)发生的头部运动或平移(用户的头部姿势的变化),由此减少感知延迟。例如,单应扭曲可以使用图像的单应变换来基于后渲染姿势信息旋转图像。时间扭曲可以包括同步时间扭曲或异步时间扭曲。此外,时间扭曲可以包括由于用户头部的旋转而调整或位移图像的旋转时间扭曲,以及由于用户的头部的平移(或位置或定位的变化) 而位移或调整图像的位置时间扭曲。由此,根据示例性实施例,时间扭曲可以包括由于用户/用户的头部的位置或定位的变化而导致的旋转时间扭曲分量和位置时间扭曲分量。根据示例性实施方式,时间扭曲 (也可以被称为异步重投影或图像扭曲)可以包括接收包括已经被投影到平面的3D场景的图像,然后重投影3D场景,其中,重投影是基于用户的更新的头部姿势或头部姿势的变化而被修改(例如,位移、旋转或其他修改)的2D图像。
此外,根据示例性实施方式,时间扭曲(其也可以被称为图像扭曲或重投影)可以被看作是通过执行逐像素重投影,由参考图像生成新视图的基于图像的技术。以这种方式,对新对象姿势和相机视点,变换和重投影应用帧。参见例如Smit,F.A等人,2010年,AShared-Scene-Graph Image-Warping Architecture for VR:Low Latency Versus ImageQuality,Computers&Graphics(用于VR的共享场景图形图像扭曲架构:低延迟与图像质量,计算机和图形)34,第1期,第3-16页。
根据一个或多个示例性实施方式,本文公开的技术通过例如执行图像的深度调整的时间扭曲来减少感知延迟而不会使硬件或系统资源过载(例如,不会使内存带宽、处理器资源等过载)来改进用户体验。
根据示例性实施例,为了改进VR系统的3D体验,可以基于图像的深度来调整或缩放应用于图像(或其部分)的时间扭曲量。例如,随着用户转过头或改变他/她的定位,帧中更靠近用户的对象比离得远的对象应当位移或移动得更多。根据示例性实施例,可以对图像的每个像素提供颜色值(例如,指示每个像素的RGB/红绿蓝和α信息)和深度值(例如,指示像素的深度或相对深度)。因此,根据示例性实施例,可以基于帧的每个像素的深度值来调整或缩放帧的逐像素时间扭曲。
根据示例性实施例,帧的颜色值和深度值可以最初被存储在本地存储器(或GPU存储器)中以供GPU/图形引擎处理。至少在一些系统中,为了对帧执行时间扭曲,可以将颜色和深度信息从本地(GPU) 存储器写入到主存储器,使得帧的时间扭曲可以由另一处理器/过程或控制器执行。然而,本地存储器(例如,GPU存储器)和主存储器之间通常存在非常有限的带宽。因此,将帧的大量深度值写入主存储器以进行时间扭曲处理可能会增加帧的处理/渲染的显著延时。同时,基于逐像素深度值来调整或缩放每个像素的时间扭曲的时间量通常会显著增加在帧上执行时间扭曲的时间量或延迟。因此,至少在一些情况下,由于许多VR系统或HMD的这类存储器带宽约束和/或处理限制,基于帧的各个单个像素的深度值,对帧的每个像素调整时间扭曲可能是不切实际的或至少在技术上具有挑战性。替选地,可以将单个深度值用于该帧,然后,可以基于该帧的单个深度值来调整帧的时间扭曲。然而,对帧使用单个深度值可能过度简化帧的深度,因此,例如,当对帧执行时间扭曲时,可能不足以适应或反映帧中的各个对象的深度。
因此,根据示例性实施例,提供为头戴式显示器(HMD)100的一部分(或提供为第一电子设备300的一部分)的图形引擎或GPU例如可以确定帧的深度值的子集,其中,深度值的子集可以是例如每帧大于1个深度值,并且小于帧的每个(或所有)像素的深度值。可以使用深度值的基于图块的处理来下采样图块的深度值以获得例如每个图块的下采样的深度值的子集,其中,每帧可以存在一个或多个图块。在一些情况下,帧的所有像素的深度值的全集可能太大而不能被图形引擎/GPU处理和下采样。因此,图形引擎/GPU可以下采样帧的每个图块的深度值。只要对每个图块确定了一组下采样深度值,这些下采样的深度值可以从GPU/本地存储器输出到主存储器,使得可以由电子显示稳定(EDS)引擎读取或使用这些下采样深度值的子集以执行帧的深度调整时间扭曲。通过使用来自帧的深度值的子集,例如可以对VR 系统改进帧的时间扭曲,同时不会对时间扭曲处理引入显著的延时。
根据示例性实施例,帧可以包括或可以被划分为多个图块(或部分),并且可以对每个像素提供深度值。在示例性实施方式中,可以下采样每个图块的深度值以获得帧的下采样深度值的子集,包括每个图块的一个或多个深度值。同时,根据示例性实施例,帧可以被划分为多个多边形(例如,矩形、三角形),其中,可以对帧的一个或多个多边形的每个顶点确定下采样深度值。例如,可以对顶点确定坐标位置。然后,EDS设备可以从下采样深度值的子集,将具有与顶点相同(或重叠)坐标定位的下采样深度值确定为顶点的下采样深度值。
如所示,仅对帧,例如,对帧的每个图块,提供或确定下采样深度值的子集。可以对每个顶点分配或确定这些下采样深度值中的一个 (或多个)。根据示例性实施方式,不是处理用于帧的每个像素的单独的深度值以执行时间扭曲,而是系统可以处理下采样深度值的子集,例如,每个顶点的深度值,以执行帧的深度值调整的时间扭曲。以这种方式,可以执行更有效和高效的深度调整的时间扭曲,例如,这可以减少这种时间扭曲的计算负荷。然后,EDS设备可以至少基于顶点的调整位置,执行帧的深度调整的时间扭曲。根据示例性实施例,可以基于用户的头部姿势的变化和用于(或处于)顶点的下采样深度值,确定顶点的调整的位置(例如,x',y')。例如,可以对多边形的多个(或一组)顶点的每个顶点确定调整的位置。根据示例性实施例,为了对帧执行深度调整的时间扭曲,电子显示稳定(EDS)设备(例如)可以对帧的一个或多个多边形中的每一个,通过在多边形的一组顶点的调整的位置之间插值,确定多边形内的一个或多个像素的调整的位置。
因此,根据示例性实施例,一种技术可以包括确定帧的多个像素中的每个像素的深度值,下采样帧的图块的深度值以获得多个下采样的深度值,帧包括一个或多个图块,确定头部姿势的变化,从多个下采样的深度值确定顶点的下采样的深度值,基于头部姿势的变化和顶点的下采样的深度值来确定顶点的调整的位置,至少基于顶点的调整的位置来执行帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧,并且触发深度调整的时间扭曲帧的显示。
在图1所示的示例性实施例中,用户可以佩戴头戴式视听设备,诸如头戴式显示器(HMD)100。如图1所示,佩戴HMD 100的用户持有便携式或手持式电子设备102,诸如智能手机或经由例如有线连接或无线连接(诸如Wi-Fi或蓝牙连接)或其他无线连接,可以与HMD100配对或可操作地耦合并且与之通信的其他便携式手持电子设备(或电子手持控制器)。该配对或可操作的耦合可以提供手持电子设备102 和HMD 100之间的数据通信和交换,使得手持电子设备102可以用作与HMD 100通信的控制器(例如,手持控制器),用于在由HMD100 生成的沉浸式虚拟世界体验中交互。在图1所示的示例中,用户用右手握住手持电子设备102。然而,用户还可以用左手、用左右手握住手持电子设备102,并且仍然与由HMD 100产生的沉浸式虚拟世界体验交互。如所示,用户佩戴HMD 100(作为头戴式视听设备的示例)并且可以手持(并且可能操作)手持电子设备102。由此,当用户移动时,例如,改变物理空间内的定位或方位,HMD 100(以及可能的手持电子设备102)还将基于用户的移动来改变物理空间内的定位和/或方位。
图2A和2B是示例性HMD,诸如,图1中用户佩戴的HMD 100 的透视图,以生成沉浸式虚拟体验。HMD 100可以包括耦合,例如可旋转地耦合和/或可拆卸地附接到框架120的壳体110。包括例如安装在耳机中的扬声器的音频输出设备130也可以耦合到框架120。在图 2B中,壳体110的正面110a旋离壳体110的基座部110b,使得容纳在壳体110中的一些部件是可见的。显示器140可以安装在壳体110 的正面110a上。当正面110a相对于壳体110的基座部110b处于关闭位置时,镜头150可以安装在壳体110中、在用户的眼睛和显示器140 之间。镜头150的位置可以与用户的眼睛的相应的光轴对准,以提供相对宽的视场和相对短的焦距。在一些实施例中,HMD 100可以包括包含各种传感器的传感系统160以及包含处理器190和便于HMD 100 的操作的各种控制系统设备的控制系统170。
在一些实施例中,HMD 100可以包括相机180以捕获HMD 100 外部的现实世界环境的静止和运动图像。在一些实施例中,由相机180 捕获的图像可以在穿过模式中在显示器140上显示给用户,允许用户临时观看现实世界而不移除HMD 100或以其他方式改变HMD100的配置以使壳体110移出用户的视线。
在一些实施例中,HMD 100可以包括光学跟踪设备165,以检测和跟踪用户眼睛运动和活动。光学跟踪设备165可以包括例如图像传感器165A以捕获用户的眼睛的图像,并且在一些实施例中,可以捕获用户的眼睛的特定部分,诸如瞳孔。在一些实施例中,光学跟踪设备 165可以包括定位成检测和跟踪用户眼睛活动的多个图像传感器 165A。在一些实施例中,光学跟踪设备165可以检测和跟踪光学姿势,诸如与睁开和/或闭合用户的眼睛相关联的眼睑运动(例如,闭合达阈值时间段然后睁开,睁开达阈值时间段然后闭合,以特定模式闭合和/ 或睁开)。在一些实施例中,光学跟踪设备165可以检测并且跟踪眼睛注视方向和持续时间。在一些实施例中,HMD 100可以被配置为使得由光学跟踪设备165检测的光学活动被处理为将被转换成由HMD 100生成的沉浸式虚拟世界体验中的相应交互的用户输入。
图3是根据本文广泛描述的实施例的虚拟现实系统的框图。该系统可以包括第一用户电子设备300。在一些实施例中,第一用户电子设备300可以与第二用户电子设备302通信。第一用户电子设备300可以是例如上文参考图1,2A和2B描述的HMD,生成沉浸式虚拟沉浸式体验,以及第二用户电子设备302可以是例如上文参考图1描述的手持电子设备,与第一用户电子设备300通信以便于用户与由HMD生成的虚拟沉浸式体验交互。
第一电子设备300可以包括传感系统360和控制系统370,分别类似于图2A和2B所示的传感系统160和控制系统170。传感系统360 可以包括许多不同类型的传感器,包括例如光传感器、音频传感器、图像传感器、距离/接近传感器、包括例如加速度计和陀螺仪的惯性测量系统,和/或其他传感器和/或传感器的不同组合。在一些实施例中,光传感器、图像传感器和音频传感器可以被包括在一个组件中,诸如相机,诸如图2A和2B所示的HMD 100的相机180。在一些实施例中,传感系统360可以包括定位成检测和跟踪用户的光学活动的图像传感器,诸如类似于图2B所示的光学跟踪设备165的设备。控制系统370 可以包括许多不同类型的设备,包括例如启动/暂停控制设备、音频和视频控制设备、光学控制设备、转换控制设备和/或其他这样的设备和/ 或设备的不同组合。在一些实施例中,取决于特定实施例,传感系统 360和/或控制系统370可以包括更多或更少的设备。包括在传感系统 360和/或控制系统370中的元件可以在例如除了图2A和2B所示的 HMD 100之外的HMD内具有不同的物理布置(例如,不同的物理定位)。
根据示例性实施方式,传感系统360可以检测用户的头部/HMD 100的旋转量或者用户的头部/HMD 100的旋转的变化。根据示例性实施方式,可以基于用户的头部/HMD 100的旋转的变化,确定待对帧执行的旋转时间扭曲量。传感系统360还可以检测用户的眼睛的定位和/ 或确定用户的眼睛的定位的平移或变化。例如,用户的眼睛的定位的变化可以基于与HMD 100的定位的固定偏移来确定(或确定为与HMD 100的定位的固定偏移)。另外,或者可选地,传感系统360可以包括跟踪用户的眼睛的定位或定位的变化的眼睛跟踪设备。根据示例性实施方式,(例如,基于HMD定位的固定偏移或者基于由眼睛跟踪设备检测的眼睛位置)用户的眼睛的定位的变化可以被用来确定待对帧执行的位置时间扭曲量。
第一电子设备300还可以包括与传感系统360和控制系统370通信的处理器390、可以由例如控制系统370的模块访问的存储器380,以及提供第一电子设备300与另一外部设备(诸如,与第一电子设备 300配对的第二电子设备302)之间通信的通信模块350。
第二电子设备302可以包括通信模块306,其提供第二电子设备 302与另一外部设备(诸如,与第二电子设备302配对的第一电子设备 300)之间的通信。除了在第一电子设备300和第二电子设备302之间提供交换例如电子数据外,在一些实施例中,通信模块306还可以被配置为发射光线或光束。第二电子设备302可以包括传感系统304,传感系统304例如包括图像传感器和音频传感器(诸如被包括在例如相机和麦克风中的)、惯性测量单元、触摸传感器(诸如被包括在手持电子设备的触敏表面中的),以及其他这样的传感器和/或不同的传感器组合。处理器309可以与第二电子设备302的传感系统304和控制器305通信,控制器305可以访问存储器308并且控制第二电子设备 302的整体操作。
根据示例性实施例,为了在不增加显著延迟的情况下改进VR系统中的时间扭曲的性能,可以使用下采样的深度值的子集来调整或缩放帧的时间扭曲。如图3所示,第一电子设备300(可以是HMD)可以包括图形引擎(例如,图形处理单元/GPU)414,用于执行各种图形操作,诸如渲染帧,并且还下采样帧的每个图块的深度值,以获得帧的下采样的深度值的子集。第一电子显示设备300还可以包括电子显示稳定(EDS)设备418,用于基于用户的头部姿势的变化和下采样深度值的子集的一个或多个下采样的深度值,执行帧的深度调整的时间扭曲。根据示例性实施例,在图4中更详细地描述了图形引擎414和 EDS设备418。
图4是示出根据示例性实施例的虚拟现实(VR)系统400的框图。 VR系统400可以是(或可以包括)例如作为说明性示例的HMD 100 (图1)或第一电子设备300(图3),或其他VR系统。虚拟现实(VR) 应用412可以生成和/或接收(例如,经由网络)虚拟现实内容,包括一个或多个帧。例如,帧的每个像素的颜色值和深度值可以经由线路 434由图形引擎(GPU)414接收。每个深度值可以指示帧的像素的相对深度。
VR系统400可以包括传感系统360(例如,其可以与图3的传感系统360相同),例如,用于测量和/或确定用户的头部的姿势和/或 HMD的姿势。传感系统360可以包括例如惯性测量单元(IMU)、加速度计、光学检测器、相机或其他设备,以检测或感测用户的头部或 HMD100的姿势(例如,定位和/或方位),包括由图形引擎414用来渲染帧的初始姿势,以及可以被用来执行帧的时间扭曲的用户的头部 /HMD 100的更新姿势。VR系统400可以包括一个或多个图形引擎,诸如图形引擎414(可以是图形处理单元/GPU),用于基于例如用户的头部/HMD 100的初始头部姿势信息来渲染虚拟现实内容的一个或多个帧。图形引擎414可以在不同的时间点从传感系统360接收头部姿势信息。
如所示,在一些情况下,当图形引擎414或GPU正在渲染帧时,用户的头部/HMD 100可能移动,从而使得到帧被输出到显示器430 的时间用户的头部/HMD 100的姿势(例如,定位/方位)信息改变或不准确。
因此,根据示例性实施例,为了补偿用户的头部/HMD 100的旋转和/或平移(例如,定位或位置的改变),电子显示稳定(EDS)引擎418可以基于从传感系统360接收的更新的头部姿势信息(或基于头部姿势信息的变化),在从图形引擎414接收的帧上执行时间扭曲。为了提高时间扭曲性能,EDS设备418可以执行所接收的帧的深度调整的时间扭曲,其中,基于该帧的下采样的深度值的子集的一个或多个深度值,调整该帧的时间扭曲的至少一部分。然后,将深度调整的时间扭曲帧438提供给扫描输出块428,然后将帧输出或扫描输出到显示设备430以显示给用户。例如,EDS设备418可以在生成深度调整的时间扭曲帧438时,触发(或使得)显示深度调整的时间扭曲帧。
图5是示出根据示例性实施例,执行深度调整的时间扭曲的帧顶点网格的图。根据示例性实施例,帧的颜色值和深度值可以被初始地存储在本地存储器(或GPU存储器)中以由GPU/图形引擎414处理。至少在一些系统中,为了在帧上执行时间扭曲,可以将颜色和深度信息从本地(GPU)存储器写入到主存储器,使得可以由EDS设备418 执行帧的时间扭曲。然而,在本地(GPU)存储器和主存储器之间通常存在非常有限的带宽。因此,将帧的大量深度值写入主存储器以进行时间扭曲处理可能增加显著的延时。此外,由于EDS设备418的有限处理能力,如果处理每个像素的深度值以在帧上执行(例如逐个像素)时间扭曲,则会在EDS 418处的时间扭曲处理中引入显著的延迟或延时。
因此,根据示例性实施例,可以接收帧504,例如,包括帧的每个像素的颜色值(例如,R、G、B、α值)和深度值并且存储在本地(例如GPU)存储器中。帧504可以包括多个图块506(或部分)。图形引擎414例如可以下采样每个图块506的深度值,以获得每个图块的一个或多个下采样的深度值。例如,图块的尺寸可以由VR应用412 确定,并且可以是例如矩形或其他形状或尺寸。例如,如图5所示,作为说明性示例,可以存在256像素×256像素(256×256)的图块,具有最初对每个像素提供的深度值。作为说明性示例,图形引擎414 可以下采样256×256个深度值以获得下采样的深度值的子集。例如,图形引擎414可以下采样256×256个深度值以获得128×128个深度值,然后,在另一次下采样之后,获得64×64个下采样,直到最终可以存在用于每个图块的例如4×4(例如,16)个下采样的深度值。也可以使用其他技术来执行下采样。例如,256×256(图块大小)和4 ×4(帧的每个图块的一组下采样的深度值的大小)的大小仅被用作说明性示例,并且可以使用任何大小。存在可以执行下采样的各种方式。例如,为了下采样4个深度值(与4个不同像素相关联),作为示例,可以平均4个深度值以获得一个下采样的深度值。替选地,不是平均深度值,而是可以选择一组深度值的最小深度值或最大深度值以获得下采样的深度值。在已经由图形引擎414确定了下采样的深度值的子集,然后从本地(GPU)存储器写入主存储器之后,然后,EDS设备 418可以基于一个或多个这些下采样的深度值,对帧执行深度调整的时间扭曲。通过使用来自帧的深度值的子集,可以对VR系统执行帧的有效深度调整的时间扭曲,例如,同时减少或至少限制由于处理帧的时间扭曲的深度值而引入的处理开销和延迟。
此外,根据示例性实施例,帧可以被划分为多个多边形(例如,矩形、三角形)。例如,图形引擎414可以渲染帧的每个多边形(例如,由多边形渲染的帧)。例如,当渲染图块时,图形引擎414可以渲染与图块相交的所有多边形/三角形。作为示例,帧顶点网格510可以包括多个多边形和多个顶点。顶点的定位可以由VR应用412确定,并且可以定义将由图形引擎414渲染的三角形。还可以提供帧顶点网格510,用于基于下采样的深度值来执行帧的时间扭曲。帧顶点网格 510可以表示帧或帧的一部分,例如,具有对每个多边形和顶点示出的坐标或定位。在该示例中,多边形被示为三角形,但是也可以使用其他类型的多边形。
在示例性实施方式中,可以下采样每个图块的深度值以获得帧的下采样的深度值的子集,包括每个图块的一个或多个深度值。此外,根据示例性实施例,帧可以被划分为多个多边形(例如,矩形、三角形),其中,可以对帧的一个或多个多边形的每个顶点确定下采样的深度值。例如,可以确定顶点的坐标位置(例如,x,y坐标)。然后, EDS设备418可以从下采样的深度值的子集确定(或选择)具有与顶点相同(或重叠或最近)坐标定位,或者基于(靠近顶点的)多个附近深度值的插值的下采样的深度值。
如所示,下采样深度值的子集仅针对帧,例如对帧的每个图块被提供或确定,然后用于时间扭曲。可以对每个顶点分配或确定一个(或多个)这些下采样的深度值。根据示例性实施方式,不是处理帧的每个像素的单独的深度值以执行时间扭曲,而是VR系统400可以处理下采样深度值的子集,例如,处于/用于每个顶点的深度值,以执行帧的深度调整的时间扭曲。以这种方式,可以执行更有效和高效的深度调整的时间扭曲,例如,这可以减少这种时间扭曲的计算负荷。
EDS 418可以基于头部姿势的变化和顶点的下采样的深度值来确定顶点的调整位置。EDS设备418可以至少基于顶点的调整位置,执行帧的深度调整的时间扭曲,例如,可以包括通过说明性示例:使用插值来确定多边形内的一个或多个像素的调整位置。
根据示例性实施例,可以基于用户的头部姿势的变化和用于(或处于)顶点(或处于顶点的x,y坐标)的下采样的深度值,确定顶点的调整位置(例如,x',y')。例如,可以为顶点或多边形的多个(或一组)顶点的每个顶点确定调整的位置。根据示例性实施例,为了对帧执行深度调整的时间扭曲,电子显示稳定(EDS)设备418可以对帧的一个或多个多边形中的每一个,通过在多边形的一组顶点的调整位置之间插值,确定多边形内的一个或多个像素的调整位置。
作为说明性示例,再次参考图5中的帧顶点网格510,每个三角形可以包括三个顶点(或顶点)。例如,三角形511可以包括顶点512、 514和516。顶点可以是多边形/三角形的两条线或边的交点。例如,三角形的顶点定义三角形。例如,图形引擎414可以确定顶点512的下采样的深度值A、顶点514的下采样的深度值B,以及顶点516的下采样的深度值C,其中A、B和C可以是例如指示顶点处的或用于顶点的深度或相对深度的数字或值。例如,顶点的每个下采样的深度值可以是来自图块506之一的下采样的深度值。例如,可以对顶点选择或确定下采样的深度值,其中:图块或帧504内的下采样的深度值的(例如,x,y)坐标或定位匹配(或最接近匹配)于或对应于或重叠于帧顶点网格510内的顶点的定位或坐标。替选地,可以将顶点的深度值计算为帧或图块的两个或以上的下采样的深度值的平均值或插值。
帧顶点网格510可以例如反映(或可以是)显示设备的大小和/或分辨率(和/或显示设备内的坐标或定位),并且可以允许帧被划分多个多边形或三角形。帧顶点网格510内的每个多边形或三角形可以包括将在显示设备上显示的多个像素。帧(例如,包括帧的像素)的深度调整的时间扭曲可以包括基于头部姿势的变化和帧的深度信息,将帧的每个像素的位置位移或移动到新的或调整的位置。不是使用每个像素的深度值来确定每个像素的深度调整的位置,而是通过使用顶点 (或多个顶点的每一个)的下采样的深度值,一定程度上简化帧的深度调整的时间扭曲。例如,帧的深度调整的时间扭曲可以包括:1)基于头部姿势的变化和顶点的下采样深度值/顶点的初始x,y帧坐标,确定顶点(或者顶点的x,y坐标)的调整位置(x',y'),以及2)基于调整的位置(例如,x',y'),或者基于x,y偏移,对顶点或多个顶点,(例如,基于插值)执行帧的深度调整的时间扭曲以获得深度调整的时间扭曲帧。
根据示例性实施例,可以对每个三角形或多边形提供一组(一个或多个)顶点。例如,如所示,对三角形511提供顶点51、514和516。例如,可以在x,y的初始定位/位置处提供顶点516(例如,指示显示器的水平和垂直维度中的位置),然后可以移动或位移了偏置524(dx, dy),使得在调整位置(x',y')处提供顶点516。
根据示例性实施例,对帧执行深度调整的时间扭曲可以包括EDS 设备418对一个或多个多边形/三角形中的每一个执行以下操作:通过在多边形的一组顶点的每个顶点的调整位置之间执行插值,确定多边形内的像素的调整位置。或者,例如,可以通过插值多边形的顶点的位置变化(例如,dx,dy)来确定多边形内的像素的位置的变化。因此,通过仅使用下采样深度值的子集来减小深度调整的时间扭曲的计算复杂度(从而减少延迟),以基于头部姿势的变化和顶点的下采样深度值确定每个顶点的调整位置(例如,调整的坐标,x',y'),然后插值多边形/三角形的调整的顶点位置/坐标以确定多边形/三角形内的像素的调整位置(或调整的坐标)。在一些示例性实施例中,可以通过GPU/ 图形引擎414或EDS设备418非常快速且廉价地执行值之间的插值。
根据示例性实施例,可以基于用户或HMD的头部姿势的变化以及顶点的下采样的深度值,确定多个顶点的每一个的调整位置(例如, x',y')。例如,电子显示稳定(EDS)设备418可以基于变换矩阵,确定基于用户的头部姿势的变化和每个顶点的初始位置(例如,x,y)的多个顶点中的每一个的调整位置(例如,x',y')。可以基于顶点的下采样深度值,调整变换矩阵和顶点的调整位置(例如,对具有较小下采样的深度值的顶点提供位置的更大变化,并且对具有较大下采样深度值的顶点提供更小位置变化)。根据示例性实施例,顶点的调整位置可以基于顶点的位置偏移,其可以包括基于顶点的下采样深度值,缩放或调整的位置时间扭曲分量。在示例性实施例中,对多个顶点中的每一个(或顶点的坐标)的调整位置(调整的x,y帧坐标)可以包括基于与顶点的初始x,y位置的x,y偏移(dx,dy)的调整的x,y位置(例如,x',y')。
根据示例性实施方式,时间扭曲可以包括由于用户的头部的旋转导致的旋转时间扭曲,以及由于用户的头部的平移(或定位或位置的改变)导致的位置时间扭曲,其中,基于一个或多个顶点的深度值来缩放或调整位置时间扭曲。
根据示例性实施例,确定顶点的调整位置实际上可以表示或包括对顶点处的x,y帧坐标,确定调整的x,y坐标。不是顶点改变位置,而是使最初(在时间扭曲之前)位于顶点处的x,y帧坐标位移或调整到新的或调整的x,y帧坐标(其可以表示为x',y')。因此,根据示例性实施例,顶点在帧顶点网格510内可以是固定的,但是顶点处的x,y 坐标/位置可以移动或位移x,y偏移量到更新或调整的x,y帧坐标/位置 (x',y')。例如,可以在x,y帧坐标处提供帧顶点。可以将基于头部姿势的变化和顶点的x,y帧坐标处的下采样深度值的x,y坐标的调整(或更新)位置确定为与x,y帧坐标的x,y偏移(dx,dy),以获得调整的 x,y帧坐标(x',y')。由此,例如,(顶点的)x,y帧坐标处的像素可以被位移dx,dy(x,y偏移)到调整的/更新的x,y帧坐标,其中,可以基于头部姿势的变化和顶点的x,y帧坐标处的下采样深度值,确定最初位于顶点处的这些像素的x,y偏移。例如,可以基于插值确定多边形内的中间像素(不位于顶点处的像素)的位置。可以执行深度调整的时间扭曲,其中,可以通过在多边形的顶点的x,y坐标的x,y偏移之间插值,确定多边形内的每个像素的x,y偏移。然后,使多边形内的像素的位置或x,y帧坐标调整或位移像素的x,y偏移。或者替选地,可以通过在顶点位置/坐标的调整的x,y帧坐标(或调整的位置)之间插值,确定多边形内的每个像素的调整的x,y帧坐标。
根据示例性实施例,顶点可以保持在相同位置,并且可以位移x,y 纹理(帧)坐标。顶点将预期(或初始)x,y坐标包含在帧中(无需时间扭曲)。然后,变换矩阵基于头部旋转和位置变化(按x,y偏移) 位移预期的x,y坐标。基于该顶点处的深度调整变换矩阵中的位置平移。变换的结果是调整的纹理(帧)坐标到顶点的源帧中。只要对每个顶点获得调整的帧坐标,则在例如用于多边形内的每个像素的显示帧网格510中的顶点之间插值纹理(或帧)坐标。可以对帧上的x,y 坐标确定x,y偏移。结果是用于(或处于)顶点的调整坐标:x',y'=x+dx, y+dy(其中dx,dy是偏移,而x,y是处于某个顶点的预期纹理坐标)。在示例性实施例中,可以通过矩阵变换来应用偏移:[x',y']=matrix*[x, y],其中,同时应用位置平移和旋转。基于处于(或用于)该顶点的深度值,对每个顶点调整由变换矩阵执行的变换。
图6是示出根据示例性实施例的帧或图块的像素深度值的图。帧内的不同对象(由此不同的像素)可以具有不同的深度,诸如近深度、中深度和远深度,诸如对存在3个示例性深度值的简单情况。这仅仅是一个简单的示例,可以提供许多深度值来区分不同的深度。应用帧 610可以包括多个像素,其中,可以在远深度处提供一组像素606,而在近处(其中,近深度是比深度更近或更低的深度)提供一组像素608。应用深度缓冲器630可以指示每个像素的深度值,包括区域610内的每个像素的远深度值,以及区域612内的所有像素的近深度值。
图7是示出根据示例性实施例,下采样像素深度值以获得用于图块或帧的下采样深度值的子集的图。所示的应用深度缓冲器630包括区域610和区域612,区域610包括深度值=远的像素,区域612包括深度值=近的像素(作为说明性示例)。图形引擎414可以逐个图块或对每一图块下采样来自应用深度缓冲器630的像素深度值,例如,以获得图块或帧的一组(例如,4×4)下采样深度值。深度图指示用于图块或帧的16个下采样深度值中的每一个的深度值,例如,其中,存在4×4组下采样的深度值。例如,作为说明性示例,下采样深度值 730表示深度值=近;下采样深度值732表示深度值=中距离,以及下采样深度值734指示深度值=远。
图8是示出根据示例性实施例的帧顶点网格810的图。根据示例性实施例,帧顶点网格指示处于水平和垂直线的交叉点处的顶点,总共36个顶点(例如,中间具有20个顶点,并且沿着帧顶点网格810 的边界具有20个以上顶点)。基于深度图 (图7),顶点820可以具有近的下采样的深度值;顶点822可以具有中的下采样的深度值,以及顶点824可以具有远的下采样的深度值。
根据示例性实施例,如图8所示,帧顶点网格810内的每个四边形或矩形(或四边形或矩形内的像素)通常可以被光栅化为两个三角形。例如,光栅化可以包括将三角形或其他几何图元渲染到离散的像素网格的过程。可以将一个示例性四边形或矩形光栅化为两个三角形 808。在帧顶点网格810中示出不同的坐标(或坐标定位或位置),例如,其可以对应于显示器上的坐标或位置。例如,帧顶点网格的左上角可以对应于(x,y)坐标(0,0),右上角可以对应于(x,y)坐标(1, 0),左下角可以对应于(x,y)坐标(0,1),以及右下角可以对应于(x,y)坐标(1,1)。例如,为了确定顶点的下采样深度值,EDS设备418可以从深度图采样或读取用于顶点的坐标/位置的下采样的深度值。
下文给出另一说明性示例性实施方式:
P={x,y,深度},其中,P是在图像空间中的定位{x,y,深度}处,用于显示的图像的像素、顶点或其他点。
Pc=P基于被用来渲染图像的投影矩阵的逆矩阵变换到相机空间 (Pc)。
Pc'=M*Pc,其中,M是头部姿势变化变换矩阵。Pc'是相机空间中的点或像素的时间扭曲或重投影的定位。
P'=Pc'通过被用来渲染图像的投影矩阵,从相机空间转换回图像空间。P'是图像空间中的点或像素的时间扭曲或重投影的位置。
示例1.图9是示出根据示例性实施例的虚拟现实系统的操作的流程图。图9的流程图可以针对一种基于深度信息来调整虚拟现实系统的帧的时间扭曲的方法。操作910可以包括确定帧的多个像素中的每个像素的深度值。操作920包括下采样帧的图块的深度值以获得多个下采样的深度值,帧包括一个或多个图块。操作930包括确定头部姿势的变化。操作940包括从多个下采样的深度值确定顶点的下采样的深度值。操作950包括基于头部姿势的变化和顶点的下采样的深度值来确定顶点的调整位置。操作960包括至少基于顶点的调整位置来执行帧的深度调整时间扭曲,以获得深度调整的时间扭曲帧。操作970 包括触发深度调整的时间扭曲帧的显示。
示例2.根据示例1的示例性实施例,从多个下采样的深度值确定顶点的下采样的深度值可以包括确定顶点的坐标定位;以及从多个下采样的深度值,将坐标定位的下采样的深度值确定为顶点的下采样的深度值。
示例3.根据示例1-2的任何一个的示例性实施例,从多个下采样的深度值确定顶点的下采样的深度值可以包括:确定第一顶点的第一坐标定位;从多个下采样的深度值,将第一坐标定位的第一下采样的深度值确定为第一顶点的下采样的深度值;确定第二顶点的第二坐标定位;以及从多个下采样的深度值,将第二坐标定位的第二下采样的深度值确定为第二顶点的下采样的深度值;其中,确定顶点的调整位置可以包括:基于头部姿势的变化和第一下采样的深度值来确定第一顶点的调整位置;以及基于头部姿势的变化和第二下采样的深度值来确定第二顶点的调整位置。
示例4.根据示例1-3的任何一个的示例性实施例,从帧的多个深度值确定顶点的下采样的深度值可以包括确定第一顶点的第一下采样的深度值和第二顶点的第二下采样的深度值;其中,基于头部姿势的变化和顶点的下采样的深度值确定顶点的调整位置可以包括:基于第一下采样的深度值和第二下采样的深度值来分别确定第一顶点的调整位置和第二顶点的调整位置;以及其中,执行可以包括至少基于第一顶点的调整位置和第二顶点的调整位置来执行帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧。
示例5.根据示例1-4的任何一个的示例性实施例,确定头部姿势的变化可以包括:确定初始头部姿势信息;基于多个像素的颜色值和初始头部姿势信息来渲染帧;在渲染期间或之后,确定更新的头部姿势信息,其中,头部姿势的变化基于更新的头部姿势信息和初始头部姿势信息之间的差异。
示例6.根据示例1-5的任何一个的示例性实施例,下采样可以包括:确定帧的图块;以及下采样图块的深度值以获得一个或多个下采样的深度值。
示例7.根据示例1-6的任何一个的示例性实施例,时间扭曲可以包括由于用户头部的旋转引起的旋转时间扭曲以及由于用户眼睛的定位的平移或变化引起的位置时间扭曲,其中,基于一个或多个顶点的深度值来缩放或调整位置时间扭曲。
示例8.根据示例1-7的任何一个的示例性实施例,顶点的调整位置可以基于顶点的位置偏移,顶点的位置偏移包括基于顶点的下采样的深度值缩放或调整的位置时间扭曲分量。
示例9.根据示例1-8的任何一个的示例性实施例,顶点的调整位置可以包括基于与顶点的初始x,y位置的x,y偏移的调整的x,y位置。
示例10.根据示例1-9的任何一个的示例性实施例,确定顶点的调整位置可以包括:基于变换矩阵来确定基于头部姿势的变化和顶点的初始位置的顶点的调整位置,其中,基于顶点的下采样的深度值调整变换矩阵和顶点的调整位置。
示例11.根据示例1-10的任何一个的示例性实施例,顶点包括第一顶点,其中,对帧内的多边形提供第一顶点和第二顶点,其中,对第一顶点和第二顶点中的每一个确定调整位置,并且其中,对帧执行深度调整的时间扭曲可以包括对多边形执行以下操作:通过在第一顶点的调整位置和第二顶点的调整位置之间插值来确定多边形内的一个或多个像素的调整位置。
示例12.根据示例1-11的任何一个的示例性实施例,其中,顶点提供在x,y帧坐标处,并且其中,顶点的调整位置包括基于x,y偏移的顶点的调整的x,y帧坐标,其中,基于头部姿势的变化和顶点处的 x,y坐标的深度值来确定x,y偏移。
示例13.根据示例1-12的任何一个的示例性实施例,顶点可以包括第一顶点,其中,对帧内的多边形提供第一顶点和第二顶点,其中,第一顶点提供在第一x,y帧坐标处,并且其中,第一顶点的调整位置可以包括基于第一x,y偏移的第一顶点的第一调整x,y帧坐标,其中,基于头部姿势的变化和第一x,y坐标的深度值来确定第一x,y偏移;其中,第二顶点提供在第二x,y帧坐标处,并且其中,第二顶点的调整位置可以包括基于第二x,y偏移的第二顶点的第二调整x,y帧坐标,其中,基于头部姿势的变化和深度x,y坐标的深度值,确定第二x,y 偏移;以及其中,对帧执行深度调整的时间扭曲可以包括通过在第一顶点的第一x,y偏移和第二顶点的第二x,y偏移之间插值来确定多边形内的一个或多个像素的x,y偏移。
示例14.根据示例1-13的任何一个的示例性实施例,顶点包括在第一x,y帧坐标处提供的第一顶点,其中,第二顶点提供在第二x,y 帧坐标处,对多边形提供第一顶点和第二顶点;其中,第一顶点的调整位置可以包括基于第一x,y偏移的第一顶点的第一调整x,y帧坐标,第一x,y偏移基于头部姿势的变化和第一x,y坐标处的深度值确定;其中,第二顶点的调整位置可以包括基于第二x,y偏移的第二顶点的第二调整x,y帧坐标,第二x,y偏移是基于头部姿势的变化和第二x,y 坐标处的深度值来确定的;其中,对帧执行深度调整的时间扭曲可以包括:通过在第一顶点的第一x,y偏移和第二顶点的第二x,y偏移之间插值来确定多边形内的像素的x,y偏移;以及基于像素的x,y偏移来调整多边形内的像素的位置。
示例15.根据示例1-14的任何一个的示例性实施例,顶点可以包括第一顶点,其中,对帧内的多边形提供第一顶点和第二顶点,其中,对第一顶点和第二顶点中的每一个确定调整位置,以及其中,在帧上执行深度调整的时间扭曲可以包括对多边形执行以下操作:通过在第一顶点的调整位置和第二顶点的调整位置之间插值来确定多边形内的像素的调整位置。
示例16.根据示例1-15的任何一个的示例性实施例,进一步包括:由头戴式视听设备产生虚拟空间内的虚拟世界沉浸式体验;以及其中,显示可以包括:通过头戴式视听设备在显示设备上显示深度调整的时间扭曲帧。
示例17.根据示例性实施例,一种装置包括至少一个处理器和含计算机指令的至少一个存储器,计算机指令在由至少一个处理器执行时使装置:确定帧的多个像素中的每个像素的深度值;下采样帧的图块的深度值以获得多个下采样的深度值,帧包括一个或多个图块;确定头部姿势的变化;从多个下采样的深度值确定顶点的下采样的深度值;基于头部姿势的变化和顶点的下采样的深度值来确定顶点的调整位置;至少基于顶点的调整位置来执行帧的深度调整时间扭曲,以获得深度调整的时间扭曲帧;以及触发深度调整的时间扭曲帧的显示。
示例18.根据另一示例性实施例,一种计算机程序产品包括计算机可读存储介质并且存储可执行代码,可执行代码在由至少一个数据处理装置执行时被配置为使至少一个数据处理装置执行包括以下步骤的方法:确定帧的多个像素中的每个像素的深度值;下采样帧的图块的深度值以获得多个下采样的深度值,帧包括一个或多个图块;确定头部姿势的变化;从多个下采样的深度值确定顶点的下采样的深度值;基于头部姿势的变化和顶点的下采样的深度值来确定顶点的调整位置;至少基于顶点的调整位置来执行帧的深度调整时间扭曲,以获得深度调整的时间扭曲帧;以及触发深度调整的时间扭曲帧的显示。
示例19.根据示例性实施例,一种装置包括用于执行示例1-16的任何一个的方法的装置。
本文所述的各种技术的实施例可以以数字电子电路或计算机硬件、固件、软件或其组合来实现。实施例可以实现为计算机程序产品,即,有形地体现在信息载体中,例如机器可读存储设备(计算机可读介质)中的计算机程序,用于由数据处理装置,例如可编程处理器、计算机或多台计算处理或控制其操作。由此,计算机可读存储介质可以被配置成存储当被执行时,使得处理器(例如,主机设备处的处理器、客户端设备处的处理器)执行过程的指令。
诸如上述计算机程序的计算机程序可以以任何形式的编程语言编写,包括汇编或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合于用在计算环境的其他单元。计算机程序可以被部署在一台计算机上或一个站点或者分布在多个站点上并且由通信网络互连的多台计算机上以处理。
方法步骤可以由执行计算机程序的一个或多个可编程处理器来执行以通过对输入数据进行操作并且产生输出来执行功能。方法步骤还还可由专用逻辑电路(例如FPGA(现场可编程门阵列或ASIC(专用集成电路))来执行的,并且装置还可以实现为专用逻辑电路。
适于执行计算机程序的处理器包括例如通用和专用微处理器这样两者以及任何类型的数字计算机中的任何一个或多个处理器。通常,处理器将接收来自只读存储器或随机存取存储器或这两者的指令和数据。计算机的元件可以包括用于执行指令的至少一个处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个海量存储设备,例如磁盘、磁光盘、或光盘或者可操作地与所述一个或多个海量存储设备耦合以接收来自所述一个或多个海量存储设备的数据或将数据传送到所述一个或多个海量存储设备或者这两者。适于体现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,其包括例如:半导体存储器设备(例如 EPROM、EEPROM、以及闪速存储器设备);磁盘(例如内部硬盘或可移动盘);磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或合并且入专用逻辑电路中。
为了提供与用户的交互,本发明的实施例能被实现在计算机上,该计算机具有用于向用户显示信息的显示器设备(例如阴极射线管 (CRT)、发光二极管(LED)或者液晶显示器(LCD)监视器)以及用户可以用来向计算机提供给输入的键盘和指示设备(例如鼠标或者跟踪球)。其他种类的设备也可以用来提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈(例如视觉反馈、听觉反馈或者触觉反馈);并且可以用包括声音、话语或者触觉输入的任何形式接收来自用户的输入。
实施例能被实现在计算系统中,该计算系统包括后端部件(例如作为数据服务器)或者包括中间件部件(例如应用服务器)或者包括前端部件(例如具有图形用户接口或者网上浏览器(用户可以通过该图形用户接口或者网上浏览器来与实施例交互)的客户端计算机)或者这样的后端、中间件或者前端部件的任意组合。组件可以由任何数字数据通信形式或者介质(例如通信网络)互连。通信网络的示例包括局域网(“LAN”)以及广域网(“WAN”),例如因特网。
图10示出了可以与本文所述的技术一起使用的通用计算机设备 1000和通用移动计算机设备1050的示例。计算设备1000旨在表示各种形式的数字计算机,诸如膝上型计算机、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其它合适的计算设备。计算设备1050旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话和其它类似的计算设备。本文所示的组件、它们的连接和关系以及它们的功能仅仅意为示例性的,并不意味着限制本文档中所述的和/或所要求的发明的实施例。
计算设备1000包括处理器1002、存储器1004、存储设备1006、连接到存储器1004和高速扩展端口1010的高速接口1008,以及连接到低速总线1014和存储设备1006的低速接口1012。处理器1002可以是基于半导体的处理器。存储器1004可以是基于半导体的存储器。组件1002、1004、1006、1008、1010和1012中的每一个使用各种总线互连,并且可以按需安装在公共母板上或以其它方式安装。处理器1002 可以处理在计算设备1000内执行的指令,包括存储在存储器1004或存储设备1006上的指令,以在外部输入/输出设备,诸如耦合到高速接口1008的显示器1016上显示GUI的图形信息。在其它实施例中,可以按需与多个存储器和多种类型的存储器一起使用多个处理器和/或多条总线。也可以连接多个计算设备1000,每个设备提供部分必要操作 (例如,作为服务器组、一组刀片服务器或多处理器系统)。
存储器1004在计算设备1000内存储信息。在一个实施例中,存储器1004是一个或多个易失性存储器单元。在另一实施例中,存储器 1004是一个或多个非易失性存储器单元。存储器1004也可以是另一种形式的计算机可读介质,例如磁盘或光盘。
存储设备1006能够为计算设备1000提供大容量存储。在一个实施例中,存储设备1006可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备,或磁带设备,闪存或其它类似的固态存储设备,或包括存储区域网络中的设备或其它配置的设备阵列。计算机程序产品能够被有形地体现在信息载体中。计算机程序产品也可以包含指令,当指令被执行时,执行一种或多种方法,例如上述的方法。信息载体是计算机或机器可读介质,诸如存储器1004、存储设备1006或处理器 1002上的存储器。
高速控制器1008管理计算设备1000的带宽密集型操作,而低速控制器1012管理较低带宽密集型操作。这种功能分配仅是示例性的。在一个实施例中,高速控制器1008耦合到存储器1004、显示器1016 (例如,通过图形处理器或加速器),并且耦合到可以接受各种扩展卡(未示出)的高速扩展端口1010。在该实施例中,低速控制器1012 耦合到存储设备1006和低速扩展端口1014。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以耦合到一个或多个输入/输出设备,诸如键盘、指向设备、扫描仪,或例如通过网络适配器耦合到诸如交换机或路由器的网络设备。
如图所示,计算设备1000可被实现为多种不同的形式。例如,它可以被实现为标准服务器1020,或者在一组这样的服务器中多次实现。它也可以被实现为机架服务器系统1024的一部分。此外,它可以以诸如膝上型计算机1022的个人计算机来实现。可替选地,计算设备1000 的组件可以与诸如设备1050的移动设备中的其它组件(未示出)组合。这些设备中的每一个都可以包含一个或多个计算设备1000,1050,并且整个系统可以由彼此通信的多个计算设备1000、1050组成。
计算设备1050包括处理器1052、存储器1064、诸如显示器1054 的输入/输出设备、通信接口1066和收发器1068以及其它组件。设备1050也可以具有诸如微驱动器或其它设备的存储设备,以提供额外的存储。组件1050、1052、1064、1054、1066和1068中的每一个都使用各种总线互连,并且若干组件可以按需安装在公共母板上或以其它方式来安装。
处理器1052可以执行计算设备1050内的指令,包括存储在存储器1064中的指令。处理器可被实现为包括单独的和多个模拟和数字处理器的芯片的芯片组。处理器可以例如提供对设备1050的其它组件的协调,诸如用户接口的控制、由设备1050运行的应用以及设备1050 的无线通信。
处理器1052可以通过控制接口1058和耦合到显示器1054的显示接口1056与用户通信。显示器1054可以例如是TFT LCD(薄膜晶体管液晶显示器)或OLED(有机发光二极管)显示器或其它适当的显示技术。显示接口1056可以包括用于驱动显示器1054以向用户呈现图形和其它信息的适当电路。控制接口1058可以接收来自用户的命令并且将其转换以提交给处理器1052。另外,可以提供外部接口1062以与处理器1052通信,以便实现设备1050与其它设备的近区域通信。外部接口1062可以提供例如一些实施例中的有线通信,或者其它实施例中的无线通信,并且也可以使用多个接口。
存储器1064将信息存储在计算设备1050内。存储器1064能够被实现为计算机可读介质或介质、一个或多个易失性存储器单元或一个或多个非易失性存储器单元中的一个或多个。还可以提供扩展存储器 1074并且通过扩展接口1072将其连接到设备1050,扩展接口1072可以包括例如SIMM(单列直插存储器模块)卡接口。这种扩展存储器 1074可以为设备1050提供额外的存储空间,或者还可以存储用于设备 1050的应用或其它信息。特别地,扩展存储器1074可以包括用于执行或补充上述过程的指令,并且也可以包括安全信息。因此,例如,扩展存储器1074可以被提供为用于设备1050的安全模块,并且可以通过允许安全使用设备1050的指令来编程。另外,可以经由SIMM卡以及附加信息来提供安全应用,诸如以不可攻击的方式将标识信息置于 SIMM卡上。
如下文所述,存储器可以包括例如闪存和/或NVRAM存储器。在一个实施例中,计算机程序产品以信息载体有形地体现。计算机程序产品包含指令,当指令被执行时,执行一个或多个方法,诸如上述方法。信息载体是可以例如通过收发机1068或外部接口1062接收的计算机或机器可读介质,诸如存储器1064、扩展存储器1074或处理器 1052上的存储器。
设备1050可以通过通信接口1066无线通信,通信接口1066在必要时,可以包括数字信号处理电路。通信接口1066可以提供各种模式或协议下的通信,诸如GSM语音呼叫、SMS、EMS或MMS消息、 CDMA、TDMA、PDC、WCDMA、CDMA2000或GPRS等。这种通信可以例如通过射频收发机1068发生。另外,可能发生短距离通信,例如使用蓝牙、Wi-Fi或其它此类收发器(未示出)。另外,GPS(全球定位系统)接收器模块1070可以向设备1050提供额外的导航和位置相关无线数据,这些数据可由在设备1050上运行的应用按需使用。
设备1050还可以使用音频编解码器1060可听地通信,音频编解码器1060可以从用户接收所说的信息并且将其转换为可用的数字信息。音频编解码器1060同样可以为用户生成可听的声音,诸如通过例如在设备1050的话筒中的扬声器。这种声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且也可以包括由在设备1050上操作的应用生成的声音。
如图所示,计算设备1050可以以多种不同的形式来实现。例如,它可以被实现为蜂窝电话1080。它也可以被实现为智能电话1082、个人数字助理或其它类似移动设备的一部分。
本文所述的系统和技术的各种实施例能够以数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现。这些各种实施例可以包括以在可编程系统上执行和/或解释的一个或多个计算机程序的实施例,可编程系统包括可以是专用或通用的至少一个可编程处理器,其被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。
这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象编程语言和/或汇编/机器语言实现。本文使用的术语“机器可读介质”、“计算机可读介质”是指被用来向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括将机器指令接收为机器可读信号的机器可读介质。术语“机器可读信号”是指被用来向可编程处理器提供机器指令和/或数据的任何信号。
为了提供与用户的交互,本文所述的系统和技术可以实现在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD (液晶显示器)监视器),和用户可以通过其向计算机提供输入的键盘和指向设备(例如,鼠标或轨迹球)的计算机上。也可以使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈或触觉反馈);以及可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。
本文所述的系统和技术可以以包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)),或者包括前端组件(例如,具有用户通过其与本文所述的系统和技术的实施例交互的图形用户界面或Web浏览器的客户端计算机),或者这种后端、中间件或前端组件的任何组合的计算系统实现。系统的组件可以通过数字数据通信(例如,通信网络)的任何形式或媒介互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)和因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络交互。客户端和服务器的关系借助在各自的计算机上运行的并且彼此具有客户端-服务器关系的计算机程序产生。
已经描述了多个实施例。然而,将理解到,在不脱离本发明的精神和范围的情况下可以进行各种改进。
另外,图中图示的逻辑流程不需要所示出的特定顺序或连续顺序来实现期望的结果。另外,可以从所述的流程提供其他步骤,或者可以消除步骤,并且可以向所述的系统添加其他组件或从其移除。因此,其他实施例在下述权利要求的范围内。
贯穿本说明书参考“一个实施例”或“实施例”是指结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,贯穿本说明书中各处出现的短语“在一个实施例中”或“在实施例中”并不一定都指相同的实施例。另外,术语“或”旨在表示包含性的“或”而不是排他性的“或”。
尽管如本文所述,示出所述的实施例的某些特征,但是本领域技术人员现在将想到许多改进、替代、改变和等同物。因此,应当理解到,所附权利要求旨在覆盖落入实施例的范围内的所有这些改进和变化。应当理解到,它们仅作为示例而不是限制,并且可以在形式和细节上做出各种改变。本文所述的装置和/或方法的任何部分可以以除互相排斥的组合之外的任何组合进行组合。本文所述的实施例可以包括所述的不同实施例的功能、组件和/或特征的各种组合和/或子组合。
Claims (20)
1.一种基于深度信息来调整虚拟现实或增强现实系统的帧的时间扭曲的方法,所述方法包括:
渲染具有多个像素的帧,所述渲染包括确定所述帧的所述多个像素中的每个像素的深度值,所述帧与将所述帧划分为多个多边形的帧顶点网格相关联;
下采样所述帧的深度值以获得多个下采样的深度值;
确定头部姿势的变化;
从所述多个下采样的深度值确定所述帧顶点网格的顶点的下采样的深度值;
基于所述头部姿势的变化和所述帧顶点网格的所述顶点的下采样的深度值来确定所述帧顶点网格的所述顶点的调整位置;
至少基于所述帧顶点网格的所述顶点的调整位置来执行所述帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧;以及
触发所述深度调整的时间扭曲帧的显示。
2.根据权利要求1所述的方法,
其中,从所述多个下采样的深度值确定顶点的下采样的深度值包括:
确定所述顶点的坐标定位;以及
从所述多个下采样的深度值,将所述坐标定位的下采样的深度值确定为所述顶点的下采样的深度值。
3.根据权利要求1所述的方法,
其中,从所述多个下采样的深度值确定顶点的下采样的深度值包括:
确定第一顶点的第一坐标定位;
从所述多个下采样的深度值,将所述第一坐标定位的第一下采样的深度值确定为所述第一顶点的下采样的深度值;
确定第二顶点的第二坐标定位;以及
从所述多个下采样的深度值,将所述第二坐标定位的第二下采样的深度值确定为所述第二顶点的下采样的深度值;
其中,确定所述顶点的调整位置包括:
基于所述头部姿势的变化和所述第一下采样的深度值来确定所述第一顶点的调整位置;以及
基于所述头部姿势的变化和所述第二下采样的深度值来确定所述第二顶点的调整位置。
4.根据权利要求1所述的方法,
其中,从所述帧的多个深度值确定顶点的下采样的深度值包括确定第一顶点的第一下采样的深度值和第二顶点的第二下采样的深度值;
其中,基于所述头部姿势的变化和所述顶点的下采样的深度值来确定所述顶点的调整位置包括:
基于所述第一下采样的深度值和所述第二下采样的深度值分别确定所述第一顶点的调整位置和所述第二顶点的调整位置;以及
其中,所述执行包括至少基于所述第一顶点的调整位置和所述第二顶点的调整位置来执行所述帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧。
5.根据权利要求1所述的方法,其中,确定头部姿势的变化包括:
确定初始头部姿势信息;
基于所述多个像素的颜色值和所述初始头部姿势信息来渲染所述帧;以及
在所述渲染期间或之后,确定更新的头部姿势信息,其中,头部姿势的变化基于所述更新的头部姿势信息和所述初始头部姿势信息之间的差异。
6.根据权利要求1所述的方法,其中,下采样包括:
确定所述帧的图块;以及
下采样所述图块的深度值以获得一个或多个下采样的深度值。
7.根据权利要求1所述的方法,其中,所述时间扭曲包括由于用户头部的旋转引起的旋转时间扭曲以及由于用户眼睛的定位的平移或变化引起的位置时间扭曲,其中,基于一个或多个顶点的深度值来缩放或调整所述位置时间扭曲。
8.根据权利要求1所述的方法,其中,所述顶点的调整位置基于所述顶点的位置偏移,所述顶点的位置偏移包括基于所述顶点的下采样的深度值来缩放或调整的位置时间扭曲分量。
9.根据权利要求1所述的方法,其中,所述顶点的调整位置包括基于与所述顶点的初始x,y位置的x,y偏移的调整的x,y位置。
10.根据权利要求1所述的方法,其中,确定所述顶点的调整位置包括:
基于变换矩阵来确定基于所述头部姿势的变化和所述顶点的初始位置的所述顶点的调整位置,其中,基于所述顶点的下采样的深度值来调整所述变换矩阵和所述顶点的调整位置。
11.根据权利要求1所述的方法,其中,所述顶点包括第一顶点,其中,对所述帧内的多边形提供所述第一顶点和第二顶点,其中,对所述第一顶点和所述第二顶点中的每一个确定调整位置,并且其中,对所述帧执行深度调整的时间扭曲包括对所述多边形执行以下操作:
通过在所述第一顶点的调整位置和所述第二顶点的调整位置之间插值来确定所述多边形内的像素的调整位置。
12.根据权利要求1所述的方法,
其中,所述顶点提供在x,y帧坐标处,并且其中,所述顶点的调整位置包括基于x,y偏移的所述顶点的调整的x,y帧坐标,其中,基于头部姿势的变化和所述顶点的x,y坐标处的深度值来确定所述x,y偏移。
13.根据权利要求1所述的方法,其中,所述顶点包括第一顶点,其中,对所述帧内的多边形提供所述第一顶点和第二顶点,
其中,所述第一顶点提供在第一x,y帧坐标处,并且其中,所述第一顶点的调整位置包括基于第一x,y偏移的所述第一顶点的第一调整的x,y帧坐标,其中,基于头部姿势的变化和所述第一x,y坐标的深度值来确定所述第一x,y偏移;
其中,所述第二顶点提供在第二x,y帧坐标处,并且其中,所述第二顶点的调整位置包括基于第二x,y偏移的所述第二顶点的第二调整的x,y帧坐标,其中,基于头部姿势的变化和所述第二x,y帧坐标的深度值来确定所述第二x,y偏移;
以及其中,对所述帧执行深度调整的时间扭曲包括通过在所述第一顶点的所述第一x,y偏移和所述第二顶点的所述第二x,y偏移之间插值来确定所述多边形内的一个或多个像素的x,y偏移。
14.根据权利要求1所述的方法,
其中,所述顶点包括在第一x,y帧坐标处提供的第一顶点,其中,第二顶点提供在第二x,y帧坐标处,对多边形提供所述第一顶点和所述第二顶点;
其中,所述第一顶点的调整位置包括基于第一x,y偏移的所述第一顶点的第一调整的x,y帧坐标,所述第一x,y偏移是基于头部姿势的变化和所述第一x,y帧坐标处的深度值来确定的;
其中,所述第二顶点的调整位置包括基于第二x,y偏移的所述第二顶点的第二调整的x,y帧坐标,所述第二x,y偏移是基于头部姿势的变化和所述第二x,y帧坐标处的深度值来确定的;
以及其中,对所述帧执行深度调整的时间扭曲包括:
通过在所述第一顶点的所述第一x,y偏移和所述第二顶点的所述第二x,y偏移之间插值来确定所述多边形内的像素的x,y偏移;以及
基于所述像素的x,y偏移来调整所述多边形内的像素的位置。
15.根据权利要求1所述的方法,其中,所述方法进一步包括:
由头戴式视听设备产生虚拟空间内的虚拟世界沉浸式体验;以及
其中,所述显示包括:
由所述头戴式视听设备在显示设备上显示所述深度调整的时间扭曲帧。
16.一种基于深度信息来调整虚拟现实或增强现实系统的帧的时间扭曲的装置,所述装置包括至少一个处理器和含计算机指令的至少一个存储器,所述计算机指令在由所述至少一个处理器执行时使所述装置:
渲染具有多个像素的帧,所述帧与将所述帧划分为多个多边形的帧顶点网格相关联;
确定所述帧的所述多个像素中的每个像素的深度值;
下采样所述帧的深度值以获得多个下采样的深度值;
确定头部姿势的变化;
从所述多个下采样的深度值确定所述帧顶点网格的顶点的下采样的深度值;
基于所述头部姿势的变化和所述帧顶点网格的所述顶点的下采样的深度值来确定所述帧顶点网格的所述顶点的调整位置;
至少基于所述帧顶点网格的所述顶点的调整位置来执行所述帧的深度调整的时间扭曲,以获得深度调整的时间扭曲帧;以及
触发所述深度调整的时间扭曲帧的显示。
17.根据权利要求16所述的装置,其中,使所述装置确定头部姿势的变化的指令包括使所述装置执行以下步骤的指令:
确定初始头部姿势信息;
基于所述多个像素的颜色值和所述初始头部姿势信息来渲染所述帧;以及
在所述渲染期间或之后,确定更新的头部姿势信息,其中,头部姿势的变化基于所述更新的头部姿势信息和所述初始头部姿势信息之间的差异。
18.一种存储可执行代码的计算机可读存储介质,所述可执行代码在由至少一个数据处理装置执行时被配置为使所述至少一个数据处理装置执行包括以下步骤的方法:
渲染具有多个像素的帧,所述渲染包括确定所述帧的所述多个像素中的每个像素的深度值,所述帧与将所述帧划分为多个多边形的帧顶点网格相关联;
下采样所述帧的深度值以获得多个下采样的深度值;
确定头部姿势的变化;
从所述多个下采样的深度值确定所述帧顶点网格的顶点的下采样的深度值;
基于所述头部姿势的变化和所述帧顶点网格的所述顶点的下采样的深度值来确定所述帧顶点网格的所述顶点的调整位置;
至少基于所述帧顶点网格的所述顶点的调整位置来执行所述帧的深度调整的时间扭曲以获得深度调整的时间扭曲帧;以及
触发所述深度调整的时间扭曲帧的显示。
19.根据权利要求18所述的计算机可读存储介质,其中,确定头部姿势的变化包括:
确定初始头部姿势信息;
基于所述多个像素的颜色值和所述初始头部姿势信息来渲染所述帧;以及
在所述渲染期间或之后,确定更新的头部姿势信息,其中,头部姿势的变化基于所述更新的头部姿势信息和所述初始头部姿势信息之间的差异。
20.根据权利要求18所述的计算机可读存储介质,其中,所述帧顶点网格包括限定所述多个多边形的多个顶点,并且执行所述帧的深度调整的时间扭曲以获得深度调整的时间扭曲帧包括基于所述帧顶点网格的所述多个顶点的深度调整的位置来执行所述深度调整的时间扭曲。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662342999P | 2016-05-29 | 2016-05-29 | |
US62/342,999 | 2016-05-29 | ||
US201662354443P | 2016-06-24 | 2016-06-24 | |
US62/354,443 | 2016-06-24 | ||
PCT/US2017/034689 WO2017210111A1 (en) | 2016-05-29 | 2017-05-26 | Time-warping adjustment based on depth information in a virtual/augmented reality system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108604391A CN108604391A (zh) | 2018-09-28 |
CN108604391B true CN108604391B (zh) | 2022-06-14 |
Family
ID=59227891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780011175.4A Active CN108604391B (zh) | 2016-05-29 | 2017-05-26 | 基于虚拟/增强现实系统中的深度信息的时间扭曲调整 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10453272B2 (zh) |
EP (1) | EP3465627B1 (zh) |
CN (1) | CN108604391B (zh) |
WO (1) | WO2017210111A1 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2016225963B2 (en) | 2015-03-05 | 2021-05-13 | Magic Leap, Inc. | Systems and methods for augmented reality |
US10838207B2 (en) | 2015-03-05 | 2020-11-17 | Magic Leap, Inc. | Systems and methods for augmented reality |
WO2017096396A1 (en) | 2015-12-04 | 2017-06-08 | Magic Leap, Inc. | Relocalization systems and methods |
WO2017210111A1 (en) | 2016-05-29 | 2017-12-07 | Google Llc | Time-warping adjustment based on depth information in a virtual/augmented reality system |
AU2017305227B2 (en) | 2016-08-02 | 2021-12-16 | Magic Leap, Inc. | Fixed-distance virtual and augmented reality systems and methods |
US10379611B2 (en) * | 2016-09-16 | 2019-08-13 | Intel Corporation | Virtual reality/augmented reality apparatus and method |
US10812936B2 (en) | 2017-01-23 | 2020-10-20 | Magic Leap, Inc. | Localization determination for mixed reality systems |
WO2018144890A1 (en) * | 2017-02-03 | 2018-08-09 | Warner Bros. Entertainment, Inc. | Rendering extended video in virtual reality |
US11127110B2 (en) | 2017-03-01 | 2021-09-21 | Arm Limited | Data processing systems |
US10861237B2 (en) | 2017-03-17 | 2020-12-08 | Magic Leap, Inc. | Mixed reality system with multi-source virtual content compositing and method of generating virtual content using same |
CN117873313A (zh) | 2017-03-17 | 2024-04-12 | 奇跃公司 | 具有彩色虚拟内容扭曲的混合现实系统及使用该系统生成虚拟内容的方法 |
JP7055815B2 (ja) | 2017-03-17 | 2022-04-18 | マジック リープ, インコーポレイテッド | 仮想コンテンツをワーピングすることを伴う複合現実システムおよびそれを使用して仮想コンテンツを生成する方法 |
CN110573929A (zh) * | 2017-05-01 | 2019-12-13 | 无限增强现实以色列有限公司 | 增强或混合现实环境的光学引擎时间扭曲 |
US10504272B2 (en) * | 2017-06-13 | 2019-12-10 | Intel Corporation | Apparatus and method for optimizing time/space warp for virtual reality using dynamic tiling and dirty tile marking |
US10776992B2 (en) * | 2017-07-05 | 2020-09-15 | Qualcomm Incorporated | Asynchronous time warp with depth data |
GB2565301A (en) * | 2017-08-08 | 2019-02-13 | Nokia Technologies Oy | Three-dimensional video processing |
US10521881B1 (en) * | 2017-09-28 | 2019-12-31 | Apple Inc. | Error concealment for a head-mountable device |
US10706813B1 (en) | 2018-02-03 | 2020-07-07 | Facebook Technologies, Llc | Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays |
US10559276B2 (en) | 2018-02-03 | 2020-02-11 | Facebook Technologies, Llc | Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays |
US20190310818A1 (en) * | 2018-04-06 | 2019-10-10 | Qualcomm Incorporated | Selective execution of warping for graphics processing |
US10861215B2 (en) * | 2018-04-30 | 2020-12-08 | Qualcomm Incorporated | Asynchronous time and space warp with determination of region of interest |
US10678325B2 (en) * | 2018-05-22 | 2020-06-09 | Facebook Technologies, Llc | Apparatus, system, and method for accelerating positional tracking of head-mounted displays |
KR102664392B1 (ko) | 2018-06-28 | 2024-05-08 | 삼성전자주식회사 | 디스플레이 장치 |
WO2020023383A1 (en) | 2018-07-23 | 2020-01-30 | Magic Leap, Inc. | Mixed reality system with virtual content warping and method of generating virtual content using same |
KR102673817B1 (ko) | 2018-07-30 | 2024-06-10 | 삼성전자주식회사 | 3차원 영상 표시 장치 및 영상 처리 방법 |
KR102546321B1 (ko) | 2018-07-30 | 2023-06-21 | 삼성전자주식회사 | 3차원 영상 표시 장치 및 방법 |
CN109242944B (zh) * | 2018-09-28 | 2023-08-11 | 京东方科技集团股份有限公司 | 一种显示方法和装置 |
CN114449266B (zh) * | 2018-10-08 | 2023-02-17 | 北京达佳互联信息技术有限公司 | 用于对视频信号进行编码的方法 |
CN109615664B (zh) * | 2018-12-12 | 2020-06-30 | 亮风台(上海)信息科技有限公司 | 一种用于光学透视增强现实显示器的标定方法与设备 |
US11016560B1 (en) | 2019-04-08 | 2021-05-25 | Rockwell Collins, Inc. | Video timewarp for mixed reality and cloud rendering applications |
US11783444B1 (en) * | 2019-11-14 | 2023-10-10 | Apple Inc. | Warping an input image based on depth and offset information |
US20210192681A1 (en) * | 2019-12-18 | 2021-06-24 | Ati Technologies Ulc | Frame reprojection for virtual reality and augmented reality |
US20220201271A1 (en) * | 2020-12-23 | 2022-06-23 | Facebook Technologies, Llc | Temporal foveated rendering |
US20220207834A1 (en) * | 2020-12-30 | 2022-06-30 | Heinrich Fink | Optimizing motion-to-photon latency in mobile augmented reality systems |
US11205310B1 (en) * | 2021-03-08 | 2021-12-21 | Htc Corporation | Background skybox constructing method and electronic device |
US11481871B2 (en) | 2021-03-12 | 2022-10-25 | Samsung Electronics Co., Ltd. | Image-guided depth propagation for space-warping images |
US20220375026A1 (en) * | 2021-05-18 | 2022-11-24 | Snap Inc. | Late warping to minimize latency of moving objects |
DE102021117453B3 (de) | 2021-07-06 | 2022-10-20 | Holoride Gmbh | Verfahren zum Betreiben einer Datenbrille in einem Kraftfahrzeug während einer Fahrt, entsprechend betreibbare Datenbrille, Prozessorschaltung sowie Kraftfahrzeug |
US20230030247A1 (en) * | 2021-07-29 | 2023-02-02 | Alt Llc | Method of asynchronous reprojection of an image of a 3d scene |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105225264A (zh) * | 2014-06-27 | 2016-01-06 | 三星电子株式会社 | 基于运动的自适应渲染 |
US9240069B1 (en) * | 2015-06-30 | 2016-01-19 | Ariadne's Thread (Usa), Inc. | Low-latency virtual reality display system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6005582A (en) * | 1995-08-04 | 1999-12-21 | Microsoft Corporation | Method and system for texture mapping images with anisotropic filtering |
US8295546B2 (en) * | 2009-01-30 | 2012-10-23 | Microsoft Corporation | Pose tracking pipeline |
US9445072B2 (en) * | 2009-11-11 | 2016-09-13 | Disney Enterprises, Inc. | Synthesizing views based on image domain warping |
US8320621B2 (en) * | 2009-12-21 | 2012-11-27 | Microsoft Corporation | Depth projector system with integrated VCSEL array |
US20140098096A1 (en) * | 2012-10-08 | 2014-04-10 | Nvidia Corporation | Depth texture data structure for rendering ambient occlusion and method of employment thereof |
WO2017210111A1 (en) | 2016-05-29 | 2017-12-07 | Google Llc | Time-warping adjustment based on depth information in a virtual/augmented reality system |
-
2017
- 2017-05-26 WO PCT/US2017/034689 patent/WO2017210111A1/en unknown
- 2017-05-26 US US15/606,569 patent/US10453272B2/en active Active
- 2017-05-26 EP EP17733652.6A patent/EP3465627B1/en active Active
- 2017-05-26 CN CN201780011175.4A patent/CN108604391B/zh active Active
-
2019
- 2019-10-21 US US16/658,898 patent/US10672197B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105225264A (zh) * | 2014-06-27 | 2016-01-06 | 三星电子株式会社 | 基于运动的自适应渲染 |
US9240069B1 (en) * | 2015-06-30 | 2016-01-19 | Ariadne's Thread (Usa), Inc. | Low-latency virtual reality display system |
Non-Patent Citations (1)
Title |
---|
Low Latency Rendering and Positioning for Mobile Augmented Reality;W. Pasman等;《Vision, Modeling, and Visualisation 99》;19991117;第1-7页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108604391A (zh) | 2018-09-28 |
US10672197B2 (en) | 2020-06-02 |
US20170345220A1 (en) | 2017-11-30 |
US10453272B2 (en) | 2019-10-22 |
WO2017210111A1 (en) | 2017-12-07 |
US20200051342A1 (en) | 2020-02-13 |
EP3465627A1 (en) | 2019-04-10 |
EP3465627B1 (en) | 2020-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108604391B (zh) | 基于虚拟/增强现实系统中的深度信息的时间扭曲调整 | |
JP7042286B2 (ja) | 滑らかに変化するフォービエイテッドレンダリング | |
CN110709897B (zh) | 用于插入到图像中的图像内容的阴影生成 | |
US11170577B2 (en) | Generating and modifying representations of objects in an augmented-reality or virtual-reality scene | |
KR20170092632A (ko) | 혼합 현실 시각화 및 방법 | |
US11676292B2 (en) | Machine learning inference on gravity aligned imagery | |
CN111696190B (zh) | 来自发光的插入内容的照明效果 | |
US20210090322A1 (en) | Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |