CN110770796A - 平稳变化的中央凹型渲染 - Google Patents

平稳变化的中央凹型渲染 Download PDF

Info

Publication number
CN110770796A
CN110770796A CN201880025339.3A CN201880025339A CN110770796A CN 110770796 A CN110770796 A CN 110770796A CN 201880025339 A CN201880025339 A CN 201880025339A CN 110770796 A CN110770796 A CN 110770796A
Authority
CN
China
Prior art keywords
image
scene
gaze point
warping
instructions
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.)
Granted
Application number
CN201880025339.3A
Other languages
English (en)
Other versions
CN110770796B (zh
Inventor
贝南·巴斯塔尼
布赖恩·丰特
西尔万·维尼奥
江浩渺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN110770796A publication Critical patent/CN110770796A/zh
Application granted granted Critical
Publication of CN110770796B publication Critical patent/CN110770796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/44Morphing

Landscapes

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

Abstract

提供了用于执行中央凹型渲染的系统和方法。示例系统和方法可以基于注视点来使3D场景翘曲。所述系统和方法还可以渲染翘曲的3D场景以生成第一图像。所述系统和方法还可以使所述第一图像解除翘曲以生成第二图像。例如,所述第一图像可以比所述第二图像具有更少的像素。

Description

平稳变化的中央凹型渲染
相关申请的交叉引用
本申请要求2017年6月5日提交的美国申请第62/515,124号的优先权,其公开内容通过引用的方式全部并入本文。
背景技术
虚拟现实(VR)系统为用户生成沉浸式虚拟环境。例如,该沉浸式环境可以是三维的(3D)并且可以包括用户可以与其交互的多个虚拟对象。增强现实(AR)系统为用户生成增强环境。例如,可以通过将计算机生成的图像叠加在用户对现实世界的视场上来生成增强环境。
用户可以经由各种显示设备(诸如,例如,头盔或者其它头戴式设备,包括用户在查看显示设备时进行透视的显示器、眼镜或者护目镜)来体验沉浸式虚拟环境或者增强环境。
发明内容
该文献大体上涉及中央凹型渲染。在一些实施方式中,中央凹型渲染是平稳变化的。
一个方面是一种方法,该方法包括:基于注视点来使3D场景翘曲。该方法还包括:渲染翘曲的3D场景以生成第一图像;以及使第一图像解除翘曲以生成第二图像。
另一方面是一种系统,该系统包括:至少一个处理器;以及存储指令的存储器。当指令由该至少一个处理器执行时,指令使该系统:基于注视点来使3D场景翘曲;渲染翘曲的3D场景以生成第一图像;并且使第一图像解除翘曲以生成第二图像。
另一方面是一种包括存储在其上的指令的非暂时性计算机可读存储介质。当指令由该至少一个处理器执行时,指令使计算系统至少:确定头戴式显示设备的穿戴者的瞳孔位置;并且基于瞳孔位置来确定注视点。指令还使计算系统:基于注视点来使3D场景翘曲;并且渲染翘曲的3D场景以生成第一图像。指令还使计算系统:使第一图像解除翘曲以生成第二图像;并且使头戴式显示设备显示第二图像。
在附图和下面的描述中阐述了一种或者多种实施方式的细节。其它特征将通过描述和附图以及权利要求书而显而易见。
附图说明
图1是图示了根据示例实施方式的系统的框图。
图2是根据如本文描述的实施方式的包括具有平稳变化的中央凹型渲染的头戴式显示器的增强/虚拟现实系统的示例实施方式。
图3A、图3B和图3C是描绘了根据如本文描述的实施方式的示例头戴式显示设备和控制器的示意图。
图4是根据如本文描述的实施方式的渲染平稳变化的中央凹型图像的示例方法400的流程图。
图5A和图5B是图示了根据如本文描述的实施方式的示例翘曲函数如何对图像进行采样的示意图。
图6是根据如本文描述的实施方式的具有若干示例翘曲函数的绘图的曲线图。
图7A是根据如本文描述的实施方式的翘曲的场景的示例中间图像。
图7B是与图7B所示图像对应的解除翘曲的场景的图像。
图8是根据一些实施方式的中央凹型渲染过程的示意图。
图9是根据一些实施方式的中央凹型渲染过程的示意图。
图10是可以用于实施本文描述的技术的计算机设备和移动计算机设备的示例。
图11A至图11C是根据一些实施方式的场景的示例中央凹型图像。
图12A至图12D是根据一些实施方式的场景的示例中央凹型图像。
具体实施方式
现在将详细参考本公开的非限制性示例,在附图中图示了这些非限制性示例中的示例。下面通过参考附图描述了这些示例,其中,相同的附图标记是指相同的元件。当示出相同的附图标记时,不重复(多个)对应描述,并且感兴趣的读者参考(多个)先前讨论的附图以获得对(多个)相同元件的描述。
VR系统和AR系统的至少一些实施方式包括可以由用户穿戴的头戴式显示设备(HMD)。在至少一些实施方式中,HMD包括立体显示器,在该立体显示器中,向用户的每只眼睛显示不同的图像和/或视频以传达深度。HMD可以显示覆盖用户视场的一些(例如,AR)或者全部(例如,VR)的图像。HMD还可以追踪用户的头部的移动和/或瞳孔位置。随着用户的头部移动,HMD可以显示与用户在AR或者VR环境中的变化的定向和/或位置对应的更新图像。
HMD可以显示由渲染引擎生成的图像和/或视频。渲染引擎可以是HMD的部件,或者可以是将渲染的图像传输至HMD的另一计算设备的部件。渲染图像以显示在VR或者AR系统中会占用大量资源。
为了改善在VR和AR系统上的视觉体验,需要具有更高的分辨率、更高的锐度和更低的移动时间延迟的显示器。移动时间延迟是指在检测运动与更新沉浸式虚拟环境或者增强现实环境之间的时间延迟。所有这些元素都要求具有较高处理能力的系统以较低延迟来渲染更多数量的像素。此外,移动VR和AR系统需要在最小化能量使用的同时满足这些要求。
为了产生令人满意的VR或者AR体验,渲染引擎会需要使移动时间延迟最小化,使得按照与用户的移动相匹配的方式来更新VR或者AR环境。实际上,如果移动时间延迟过长,则VR系统会使用户感到晕动症。
一些实施方式包括中心凹型渲染引擎,该中央凹型引擎基于用户看着的地方和/或HMD的透镜的性能来以变化的质量渲染图像以大致与用户的视觉锐度对应。例如,可以在注视点处以较高的质量渲染图像,但是随着与注视点的距离增加而以逐渐降低的质量水平来渲染图像。在一些实施方式中,HMD包括基于用户看着的地方来识别注视点的瞳孔追踪器。该识别到的注视点可以用于识别用户的视场的中心部分,在该中心部分中,用户将比在用户的视场的其它部分(例如,在用户的外围视场内)中具有更高的视觉锐度。
中心凹型渲染引擎可以生成图像,该图像在图像的旨在显示在用户的视场的中央部分内的部分中具有较高的质量,而在图像的旨在显示在用户的视场的外围部分内的部分中具有较低的质量。作为示例,较低质量渲染会比较高质量渲染处于更低的分辨率。中央凹型渲染引擎的实施方式利用了以下事实:人类视觉系统的锐度根据与凝视的中心的离心率急剧下降。通过以较低质量渲染图像的部分,中央凹型渲染引擎可以更快地渲染图像,同时使用更少的处理器周期和能量。由于这些较低质量部分远离注视点而放置,因此,较低质量不太可能引起用户的注意,因为随着与注视点的距离增加,用户的视觉锐度降低。
在一些实施方式中,图像的质量从在识别到的注视点处的较高质量平稳地变化到在图像的外围区域中的较低质量。由于由中央凹型渲染引擎生成的图像的质量平稳地变化,因此,图像没有视觉伪像,诸如,隧道视觉效果或者可感知的边界或者在不同质量水平的区域之间的过度。
在一些实施方式中,中央凹型渲染引擎通过使用与注视点的距离的非线性函数使三维(3D)场景翘曲以生成翘曲场景来从该场景生成中央凹型图像和/或视频。在一些实施方式中,使该场景翘曲包括:按照非均匀的方式来改变场景(即,使得并非按照相同的方式来改变场景的所有部分)。在一些实施方式中,使该场景翘曲包括:改变在3D场景中的顶点与注视点之间的距离。在一些实施方式中,使该场景翘曲包括:将3D场景映射到压缩中间空间。该压缩中间空间会向场景的靠近注视点的部分分配更多的屏幕空间,而向场景的离注视点更远的部分分配更少的屏幕空间。
非线性函数可以是对数函数、近似对数函数等。3D场景可以包括被表示为由顶点和面限定的多边形网格的一个或者多个对象。例如,渲染引擎可以计算从3D场景中的每个顶点到垂直于查看平面并且穿过注视点的线的距离。
虽然本文中的示例使用距离的函数来执行翘曲,但是其它实施方式使用其它类型的函数。例如,一些实施方式使用与注视点的垂直距离和/或水平距离的翘曲函数。按照这种方式,翘曲函数可以使场景在水平维度与垂直维度翘曲到不同的程度。此外,一些实施方式包括不对称的翘曲函数,该不对称的翘曲函数使得在注视点的一侧与在另一侧翘曲不同的量。例如,可以使场景的在右眼的注视点的左边的部分比在注视点的右边的部分更大程度地翘曲,因为场景的在注视点的左边的部分中的大部分被用户的鼻子遮住,反之亦然。
在使3D场景翘曲之后,渲染引擎可以通过使用各种渲染技术来渲染翘曲的场景并且使翘曲的场景离散以生成翘曲的图像。例如,可以使用标准图形处理器单元(GPU)操作来渲染翘曲的场景中的图像。与期望的最终图像相比较,可以按照降低的分辨率(例如,具有更少的像素)来渲染翘曲的图像。渲染像素中的每个像素可以涉及GPU执行在计算上昂贵的各种操作,诸如,通过使用GPU着色器来计算照明和纹理值。由于用于渲染图像的时间是被渲染的像素的数量的函数,因此,翘曲的图像将比期望的最终图像需要更少的时间来渲染。例如,翘曲的图像可以在垂直和水平方向上具有期望的最终图像的大约一半数量的像素,这引起翘曲的图像具有期望的最终图像的四分之一的像素。像素的数量的这种四倍减少会引起针对翘曲的图像的渲染时间减少四倍。在具有超宽视场的图像中,甚至可以进行更大的改进。
在一些实施方式中,然后,使翘曲的图像解除翘曲以生成期望的最终图像。例如,使图像解除翘曲可以抵消先前执行的翘曲。在一些实施方式中,使图像解除翘曲包括:将用于使3D场景翘曲的函数的反函数应用于图像的像素。例如,函数的反函数可以将表示3D场景的部分的像素移动回在翘曲之前那些部分所在的地方。
可以通过使用GPU操作按照在计算上廉价的方式来完成解除翘曲以基于由解除翘曲函数在翘曲的图像中确定的位置处的像素的值来确定在最终图像中的像素的值。与通过使用该技术避免的像素渲染计算相比较,使翘曲的图像解除翘曲所需的计算在计算上是廉价的(例如,使图像解除翘曲以生成期望的最终图像比渲染期望的最终图像的每个像素使用更少的处理器周期)。由于翘曲函数将更多的图像空间分配给3D场景中靠近注视点的顶点,而不是更远的那些顶点,因此,翘曲的图像中的更多像素代表3D场景中靠近注视点的部分。换句话说,翘曲的图像以比进一步远离注视点的区域更高的速率来对在注视点周围的区域进行采样。这种可变采样允许在注视点的周围以较高的分辨率并且在别处以较低的分辨率来重新构建期望的最终图像。
除了如上面描述的那样使图像解除翘曲之外,其它非线性操作也可以应用于图像。例如,可以应用非线性透镜失真校正以生成最终图像。在一些实施方式中,将解除翘曲和至少一个其它非线性操作组合成单个操作,使得可以应用多个操作,而不需要进行任何附加的每像素计算。换句话说,通过将多个非线性操作组合成单个操作,减少了应用于最终图像的每个像素的操作的数量,因此,减少了用于渲染图像的时间和/或用于渲染图像的处理器周期的数量。
除非另有说明,否则本文所描述的技术可以应用于生成中央凹型图像和/或视频。生成的图像和/或视频可以包括计算机生成的内容、真实场景中的标准照片和视频以及其组合。此外,本文所描述的技术可以应用于生成用于AR或者VR环境的一系列图像(或者视频)。
图1是图示了根据示例实施方式的系统100的框图。系统100为系统100的用户生成增强现实(AR)环境或者虚拟现实(VR)环境。在一些实施方式中,系统100包括计算设备102、头戴式显示设备(HMD)104和AR/VR内容源106。还示出了网络108,计算设备102可以通过该网络108与AR/VR内容源106通信。
在一些实施方式中,计算设备102是可以被配置为向用户提供或者输出VR内容的移动设备(例如,智能电话)。计算设备102可以包括存储器110、处理器组件112、显示设备114、通信模块116和传感器系统118。存储器110可以包括AR/VR应用120、中央凹型渲染引擎122、眼睛追踪器124和AR/VR内容126。计算设备102还可以包括各种用户输入部件(未示出),诸如,通过使用无线通信协议来与计算设备102通信的控制器。
存储器110可以包括一种或者多种非暂时性计算机可读存储介质。存储器110可以存储可用于为用户生成AR/VR环境的指令和数据。
处理器组件112包括能够执行指令(诸如,由存储器110存储的指令)以执行各种任务(诸如,图像和视频渲染)的一个或者多个设备。例如,处理器组件112可以包括中央处理单元(CPU)和/或图形处理器单元(GPU)。例如,如果存在GPU,则可以将一些视频渲染任务从CPU卸载到GPU。
例如,显示设备114可以包括:LCD(液晶显示器)屏幕、OLED(有机发光二极管)屏幕、触摸屏或者用于向用户显示图像或者信息的任何其它屏幕或者显示器。在一些实施方式中,显示设备114包括布置为将光投射到用户的眼睛的一部分上的投光器。
通信模块116包括用于与其它计算设备(诸如,AR/VR内容源106)通信的一个或者多个设备。通信模块116可以经由无线或者有线网络来进行通信。
传感器系统118可以包括各种传感器,包括:惯性运动单元(IMU)128。传感器系统118的实施方式还可以包括不同类型的传感器,包括:例如,光传感器、音频传感器、图像传感器、距离和/或接近传感器、接触传感器(诸如,电容传感器)、定时器和/或其它传感器和/或传感器的(多种)不同组合。
IMU 128检测计算设备102和/或HMD 104的运动、移动和/或加速。IMU 128可以包括各种不同类型的传感器,诸如,例如,加速度计、陀螺仪、磁力计以及其它这种传感器。可以基于由IMU 128中包括的传感器提供的数据来检测并且追踪HMD 104的位置和定向。HMD104的检测到的位置和定向可以允许系统转而检测并且追踪用户的凝视方向和头部移动。
AR/VR应用120可以经由计算设备102的一个或者多个输出设备(诸如,显示设备114、(多个)扬声器(未示出)和/或其它输出设备)来将AR/VR内容呈现或者提供给用户。在一些实施方式中,AR/VR应用120包括存储在存储器110中的指令,这些指令在由处理器组件112执行时使处理器组件112执行本文描述的操作。例如,AR/VR应用120可以基于例如AR/VR内容(诸如,AR/VR内容126和/或从AR/VR内容源106接收到的AR/VR内容)来生成AR/VR环境并且向用户呈现AR/VR环境。AR/VR内容126可以包括可以被渲染为图像或者视频以便显示在显示设备114上的3D场景。例如,3D场景可以包括被表示为多边形网格的一个或者多个对象。多边形网格可以与各种表面纹理(诸如,颜色和图像)相关联。3D场景还可以包括其它信息,诸如,例如,用于渲染3D场景的光源。
AR/VR应用120可以使用中央凹型渲染引擎122来基于AR/VR内容126生成要显示在显示设备114上的图像。在一些实施方式中,中央凹型渲染引擎122包括存储在存储器110中的指令,这些指令在由处理器组件112执行时使处理器组件112执行本文描述的操作。例如,中央凹型渲染引擎122可以基于AR/VR内容126的3D场景来生成中央凹型图像。这些中央凹型图像具有变化的质量水平以近似视觉系统的变化的锐度(即,图像的预期由用户的眼睛的中央凹所感知的部分比图像的预期由用户的眼睛的其它区域所感知的部分具有更高的质量水平)。在至少一些实施方式中,随着与注视点的距离增加,中央凹型渲染引擎122生成质量平稳下降的图像。
例如,中央凹型图像可以是通过渲染3D场景而生成的具有变化的质量水平的图像。这些图像可以是二维的(2D)(例如,2D像素阵列)。在一些实施方式中,图像是立体图像,HMD 104可以显示这些立体图像以传达深度,使得HMD的穿戴者感知3D环境。例如,立体图像可以包括针对每只眼睛的图像的单独部分。这些部分可以表示来自略微不同的视角(例如,来自左眼和右眼的视角)的相同场景。
渲染图像可以包括:确定相机位置和将通过其渲染3D场景的2D图像的视口(或者图像平面)。视口就像通过其查看3D场景的窗口。视口的尺寸与期望的2D图像的尺寸对应,并且可以将2D图像的每个像素映射到视口上的位置。然后,可以基于相机在视口的对应位置处将看到的内容来确定每个像素的颜色值。
基于相机的位置和视口,可以将3D场景投影到屏幕空间坐标(例如,与图像内的垂直位置和水平位置对应的2D坐标)中。例如,可以基于从实体延伸到相机的线段与视口之间的交叉点来将3D场景中的每个实体(或者实体的一部分,诸如,顶点)映射到视口上的特定位置。对于一些3D场景,场景的某些部分可以不与视口相交。这些部分将不是渲染的2D图像的一部分。在立体图像中,对于左眼图像部分,视口和相机位置可以与对于右眼图像部分略微不同。
中央凹型图像可以包括至少一个注视点。注视点可以是图像中比图像的其它部分具有更高质量水平的点。例如,可以按照比更低质量水平部分更高的分辨率来渲染更高质量水平部分。在一些实施方式中,注视点是图像内的屏幕空间坐标。在一些实施方式中,注视点是图像内基于用户正看着的方向而确定的屏幕空间坐标。在一些实施方式中,注视点是图像内基于用户通过其进行观看的透镜的属性而确定的屏幕空间坐标。在一些实施方式中,注视点是3D场景内的3D坐标。在这些实施方式中,可以将注视点投影到屏幕空间坐标中。
在至少一些实施方式中,中央凹型渲染引擎122至少部分地基于眼睛追踪器124来确定用户正看着的注视点。在一些实施方式中,眼睛追踪器124包括存储在存储器110中的指令,这些指令在由处理器组件112执行时使处理器组件112执行本文描述的操作。例如,眼睛追踪器124可以确定用户的凝视所指向的显示设备114上的位置。眼睛追踪器124可以基于识别并且追踪用户的瞳孔在由传感器系统118的成像设备捕获到的图像中的位置来进行该确定。
AR/VR应用120可以基于从IMU 128和/或传感器系统118的其它部件接收到的输入来更新AR/VR环境。例如,IMU 128可以检测计算设备102和/或显示设备114的运动、移动和/或加速度。IMU 128可以包括各种不同类型的传感器,诸如,例如,加速度计、陀螺仪、磁力计以及其它这种传感器。可以基于由IMU 128中包括的传感器提供的数据来检测并且追踪HMD104的位置和定向。HMD 104的检测到的位置和定向可以允许系统转而检测并且追踪用户的凝视方向和头部移动。基于检测到的凝视方向和头部移动,AR/VR应用120可以更新AR/VR环境以反映用户在环境内的改变的定向和/或位置。
虽然计算设备102和HMD 104在图1中被示出为单独的设备,但是在一些实施方式中,计算设备102可以包括HMD 104。在一些实施方式中,如在图1中示出的,计算设备102经由电缆与HMD 104通信。例如,计算设备102可以向HMD 104传输音频信号和视频信号以用于向用户显示,并且HMD 104可以向计算设备102传输运动信息、位置信息和/或定向信息。在一些实施方式中,HMD 104包括可以放置计算设备102的腔室。在一些实施方式中,用户能够在穿戴HMD 104的同时(例如,通过HMD 104内的透镜或者孔)查看计算设备102的显示设备114。例如,计算设备102和HMD 104可以通过将显示设备114的屏幕分成为当通过HMD查看时仅用户的左眼可见的第一图像和当通过HMD查看时仅用户的右眼可见的第二图像来一起用作立体查看器。
AR/VR内容源106可以生成并且输出AR/VR内容,可以经由网络108来将该AR/VR内容分布到或者发送至一个或者多个计算设备(诸如,计算设备102)。在示例实施方式中,AR/VR内容包括三维场景和/或三维图像。此外,AR/VR内容可以包括被流传输或者分布到一个或者多个计算设备的音频/视频信号。AR/VR内容还可以包括在计算设备102上运行以生成3D场景、音频信号和/或视频信号的AR/VR应用。根据说明性示例实施方式,至少在一些情况下,虚拟现实(VR)(其也可以被称为沉浸式多媒体或者计算机模拟的生活)可以在不同的程度上复制或者模拟在现实世界或者想象的世界或者环境中的地方中的环境或者物理存在。至少在一些情况下,增强现实(AR)可以将计算机生成的图像覆盖在用户对现实世界的视场上。
网络108可以是互联网、局域网(LAN)、无线局域网(WLAN)和/或任何其它网络。例如,计算设备102可以接收音频/视频信号,其可以在说明性示例实施方式中被提供作为VR内容的一部分。
图2是物理空间200的第三人称视角,在该物理空间200中,人P正通过HMD 104体验VR环境202。在该示例中,计算设备102被布置在HMD 104内,使得用户可以在穿戴HMD 104的同时看到显示设备114。VR环境202由计算设备102生成并且被显示在计算设备102的显示设备114上。
VR环境包括由中央凹型渲染引擎122生成的中央凹型帧(诸如,帧204)。这些中央凹型帧的质量水平随着与注视点206的距离增加而逐渐降低。如在帧204中可以看到的,在注视点206附近的图像质量比进一步远离注视点(例如,在帧204的边缘附近)的图像质量更高。由于以较低的质量水平来渲染中央凹型帧的各个部分,因此,渲染中央凹型帧需要比完全以较高的质量水平来渲染帧将需要的处理器周期更少的处理器周期。此外,由于中央凹型帧的以较低的质量水平渲染的区域旨在显示在人的外围视觉中,因此,人不太可能注意到质量下降。此外,由于质量平稳下降,因此,随着质量水平变化,中央凹型帧(诸如,中央凹型帧204)没有边界伪像或者其它伪像。
图3A和图3B是示例HMD 300(诸如,例如,图2中的用户穿戴的HMD 104)的透视图,并且图3C图示了可与HMD 300一起使用的示例手持电子设备302。
手持电子设备302可以包括容纳手持电子设备302的内部部件的外壳303以及在外壳303的外部的、用户可访问的用户界面304。该用户界面304可以包括配置为接收用户触摸输入的触敏表面306。用户界面304还可以包括用于由用户进行的操纵的其它部件,诸如,例如,致动按钮、旋钮、操纵杆等。在一些实施方式中,用户界面304的至少一部分可以配置为触摸屏,其中,用户界面304的该部分配置为向用户显示用户界面项,并且还配置为接收来自用户的在触敏表面306上的触摸输入。手持电子设备302还可以包括光源308,该光源308被配置为例如,响应于在用户界面304中接收到的用户输入而通过外壳303中的端口来选择性地发射光(例如,光束或者射线)。
HMD 300可以包括联接至框架320的外壳310,其中,包括例如安装在耳机中的扬声器的音频输出设备330也联接至框架320。在图3B中,外壳310的前部310a旋转远离外壳310的基部310b,使得容纳在外壳310中的部件中的一些部件可见。显示器340可以安装在外壳310的前部310a的面向内部的侧面上。在一些实施方式中,显示器340是来自计算设备(诸如,图1所示计算设备102)的被插入并且固定在前部310a与基部310b之间的显示设备。
透镜350可以安装在外壳310中,在前部310a靠着外壳310的基部310b处于关闭位置时在用户的眼睛与显示器340之间。在一些实施方式中,HMD 300可以包括感测系统360和控制系统370,该感测系统360包括各种传感器,该控制系统370包括处理器390和用于促进HMD 300的操作的各种控制系统设备。
在一些实施方式中,HMD 300可以包括用于捕获静止图像和移动图像的相机380。由相机380捕获到的图像可以用于帮助追踪用户和/或手持电子设备802在现实世界中的物理位置或者相对于沉浸式环境的物理环境,和/或可以在通过模式下在显示器340上向用户显示该图像,从而允许生成增强现实环境,该增强现实环境包括来自现实世界的图像和计算机生成的影像的组合。在一些实施方式中,通过模式用于允许用户暂时离开沉浸式环境并且返回物理环境,而无需去除HMD 300或者以其它方式改变HMD 300的配置以将外壳310移出用户的视线。
在一些实施方式中,感测系统360可以包括惯性测量单元(IMU)362,该惯性测量单元(IMU)362包括各种不同类型的传感器,诸如,例如,加速度计、陀螺仪、磁力计以及其它这种传感器。可以基于由IMU 362中包括的传感器提供的数据来检测并且追踪HMD 300的位置和定向。HMD 300的检测到的位置和定向可以允许系统转而检测并且追踪用户的头部凝视方向和移动。
在一些实施方式中,HMD 300可以包括用于检测并且追踪用户的眼睛凝视的凝视追踪设备365。凝视追踪设备365可以包括:例如一个或多个图像传感器365A以捕获用户的眼睛或者用户的眼睛的特定部分(诸如,瞳孔)的图像以检测并且追踪用户的凝视的方向和移动。在一些实施方式中,HMD 300可以被配置为将检测到的凝视处理为待被转换成AR体验或者沉浸式VR体验中的对应交互的用户输入。在一些实施方式中,HMD 300被配置为使用用户的检测到的凝视来确定用于对AR或者VR环境进行中央凹型渲染的注视点。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该至少一个可编程处理器可以是专用的或者通用的,可以被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及向存储系统、至少一个输入设备和至少一个输出设备传输数据和指令。
这些计算程序(也称为程序、软件、软件应用或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、设备和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示设备(例如,LCD(液晶显示器)、OLED(有机发光二极管)显示器或者另一类型的显示器)以及键盘和指向设备(例如,鼠标或者轨迹球),用户可以通过该键盘和指向设备来向计算机提供输入。其它种类的设备还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(“LAN”)、广域网(“WAN”)和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
在图4中示出了根据如本文描述的实施方式的渲染平稳变化的中央凹型图像的方法400。可以通过实施中央凹型渲染引擎122来执行方法400。
在操作402中,检索3D场景。如上所述,3D场景可以包括多个对象,包括网格和光源。网格可以由顶点限定的多边形面(诸如,三角形)形成。例如,顶点中的每个顶点可以在三维空间中具有X坐标、Y坐标和Z坐标。面可以由三个或者在一些实施方式中更多个共面顶点限定。网格可以由多个面限定,该多个面中的至少一些面可以共享顶点。
可以从本地存储器检索3D场景,或者可以从另一计算设备(诸如,AR/VR内容源106)检索3D场景。在检索到3D场景之后,可以细化网格的至少一些表面中的表面。例如,可以细化较大的网格表面(例如,网格中具有大于预定阈值的表面面积的表面)以将该表面划分为多个较小的表面。细化将在面上引起另外的顶点和较短的边缘。由于翘曲操作会使直线弯曲成曲线,因此,如果边缘太长,则会引起视觉伪影。通过细化任何较大的表面,边缘的弯曲变得无关紧要。此外,在一些实施方式中,由GPU通过使用细分曲面着色器或者几何着色器来执行细化。
在一些实施方式中,可以向由使三角形边缘翘曲引起的地址失真应用每像素误差校正。例如,可以在中央凹型渲染期间计算误差值,并且将其存储在输出的像素值的alpha通道中。可以通过将向量的内插位置与通过每像素计算而生成的值相比较来计算误差值。然后,在生成最终图像期间,可以应用误差校正。
在操作404中,确定注视点。在一些实施方式中,通过使用凝视追踪技术(诸如,眼睛追踪器124)来确定注视点。当用户的眼睛绕着视场移动时,注视点将相应地移动。在一些实施方式中,基于HMD 104的透镜来确定注视点。例如,注视点可以是透镜提供最高锐度的点。在一些实施方式中,注视点与透镜的比透镜的其它部分具有更高锐度的一部分对应。例如,可以将注视点选择为透镜的比透镜的90%、透镜的95%或者透镜的99%具有更高锐度的部分的中点。在一些实施方式中,针对用户的每只眼睛识别单独的注视点。
在操作406中,从屏幕空间到中间压缩空间使3D场景中的顶点翘曲。在一些实施方式中,使顶点翘曲包括:通过使用非线性函数来将顶点的坐标从屏幕空间变换到压缩空间。在一些实施方式中,这种翘曲具有与应用鱼眼透镜相似的效果。在至少一些实施方式中,翘曲函数由GPU顶点着色器应用。
在至少一些实施方式中,通过将每个顶点投影到屏幕坐标来执行翘曲,该屏幕坐标可以由在-1与1之间的X屏幕坐标值和Y屏幕坐标值限定。然后,相对于以注视点为原点的屏幕坐标系来重新计算投影坐标。对投影坐标进行缩放,使得其继续具有在-1与1之间的坐标值。然后,根据非线性翘曲(变换)函数变换投影坐标。然后,根据屏幕的中心(即,与注视点相对)来重新计算变换的坐标值,并且对变换的坐标值进行重新缩放以具有在-1与1之间的值。然后,将顶点重新投影到3D场景中。
作为非限制性示例,考虑通过齐次坐标顶点(0,0.6,1,2)、(-0.6,0,1,2)、(0.6,0,1,2)描述(在查看变换之后)的三角形。2D屏幕坐标为(0,0.3)、(-0.3,0)、(0.3,0)。让注视点为(0.1,0)。(为了简单起见,将注视点放置在x轴上,所以,在该示例中,不需要对y坐标进行重新映射。)将x间隔[-1,0.1]重新映射为[-1,0],并且将[0.1,1]重新映射为[0,1]。因此,重新映射的顶点为((0-0.1)/1.1,(-0.3-0.0)/1)、((-0.3-0.1)/0.9,(0-0)/1)、((0.3-0.1)/0.9,(0-0)/1)。简化的这些顶点为:(-0.09,0.3)、(-0.36,0)、(0.22,0)。例如,通过将
Figure BDA0002235425820000171
用于t(d)(变换函数),这些顶点变为(-0.3,0.55)、(-0.6,0)、(0.47,0)。再次将这些顶点重新映射到其原点在图像中心的坐标系中:((-0.30+0.1)*1.1,(0.55+0)*1)、((-0.6+0.1)*1.1,(0+0)*1)、((0.47+0.1)*0.9,(0+0)*1)或者(-0.22,0.55)、(-0.55,0)、(0.51,0)。最后,然后将这些顶点投影回3D齐次坐标,为(-0.44,1.1,1,2)、(-1.11,0,1,2)、(1.03,0,1,2)。
图5A和图5B是图示了示例翘曲函数如何对图像进行采样的示意图。在图5A中,覆盖物500包括多个圆圈。每个圆圈代表基础图像空间(未示出)中将对其进行采样以生成翘曲图像的区域。覆盖物500将在场景中的注视点上方居中。如在图5A中可以看到的,靠近覆盖物500的中心,圆圈较小,因此,基础图像空间中用于生成像素的区域也较小。覆盖物500中距离中心(注视点)更远的圆变得更大,所以,对来自基础图像的更多像素进行采样以在翘曲图像中生成单个像素。除了覆盖物500包括像正方形的区域而不是圆圈之外,图5B所示覆盖物502与覆盖物500相似。再次,进一步远离注视点的区域较大,并且因此,对更多的像素进行采样以在这些更远的区域中生成单个像素。
在一些实施方式中,将顶点投影到屏幕空间上,并且确定从投影的顶点的X坐标和Y坐标到注视点的X坐标和Y坐标的差值。在本文中的示例中,将顶点的投影X坐标与注视点的X坐标之间的差值称为X’。同样,将顶点的投影Y坐标与注视点的Y坐标之间的差值称为Y’。在一些实施方式中使用的非线性翘曲函数的一个示例是对数极坐标映射。对于给定的X增量、Y增量,其坐标为翘曲表示—(ρ,θ),其中:
Figure BDA0002235425820000181
并且
θ=atan(Y′/X′)
在该示例中,对数极坐标映射是连续的,并且不包括任何数据减少。数据减少是对中间(翘曲)表示进行有限采样的结果。也可以使用其它翘曲函数。在一些实施方式中,翘曲函数是非线性变换,该非线性变换是投影的顶点与注视点之间的径向距离的函数。图6示出了曲线图600,该曲线图600示出了针对若干示例翘曲函数的绘图。这些绘图说明了由每个示例翘曲函数执行的映射。曲线图600中的X轴是在未压缩空间中距注视点的距离,而曲线图600中的Y轴是在压缩(翘曲)空间中距注视点的距离。曲线图600包括绘图602a、绘图604a、绘图606a、绘图608a和绘图610a。绘图602a表示函数602b。绘图604a表示函数604b。绘图606a表示函数606b。绘图608a表示函数608b。绘图610a表示函数610b。
每个绘图表示有关距注视点的距离的函数,其被表示为r。对于特定顶点,可以通过使用以下等式来计算r:
Figure BDA0002235425820000191
在一些实施方式中,距离r是顶点在投影到屏幕空间中之后的位置与(在屏幕空间中的)注视点之间的投影距离。
当绘图的斜率大于45度时,未压缩的屏幕空间在压缩空间中被扩展。将在最终图像中以更高的分辨率来渲染这些区域。在绘图的斜率小于45度时,未压缩的屏幕空间在压缩空间中被减少。将在最终图像中以更低的分辨率来渲染这些区域。在图6中示出的绘图和翘曲函数是示例。在一些实施方式中,可以使用其它翘曲函数。例如,一些实施方式使用距注视点的距离(r)的各种二次多项式或者三次多项式作为翘曲函数。此外,一些实施方式使用对数翘曲函数(诸如,log(r+1))或者平方根翘曲函数(诸如,
Figure BDA0002235425820000192
)。
此外,一些实施方式包括X(X’)中距注视点的距离和Y(Y’)中距注视点的距离而不是距离(r)的翘曲函数。在这些示例中,可以在垂直维度上与在水平维度上不同地执行翘曲。此外,一些实施方式包括不对称的翘曲函数。例如,不对称的翘曲函数可以用于使与在注视点下方的顶点不同地在注视点上方的顶点翘曲。此外,不对称的翘曲函数可以用于使与在注视点右边的顶点不同地在注视点左边的顶点翘曲(例如,使更可能被用户的鼻子遮住的区域更大程度地翘曲,并且因此,对于视场的其它区域保留了更高的分辨率)。
现在返回到图4,在操作408中,基于翘曲的顶点来渲染中间图像。在一些实施方式中,以低于期望的最终图像的分辨率的分辨率来渲染中间图像。在一些实施方式中,GPU的像素着色器在压缩(翘曲)空间中渲染网格的表面(例如,三角形)。取决于3D场景,渲染图像可以包括:将图像作为纹理贴图应用于表面中的至少一些表面。可以通过使用多样本抗锯齿(MSAA)来渲染图像。例如,一些实施方式通过使用4x MSAA或者8x MSAA来渲染图像。由于对压缩(翘曲)图像执行MSAA,因此,执行MSAA所需的处理器周期少于对来自最终图像的每个像素执行MSAA所需的处理器周期。在一些实施方式中,MSAA由GPU执行。
在一些实施方式中,中间(翘曲)图像具有期望的最终图像的大约四分之一数量的像素。例如,中间图像在垂直维度上可以具有期望的最终图像的一半像素,并且在水平维度上可以具有期望的最终图像的一半像素,从而引起像素为期望的最终图像的四分之一。由于减少了被渲染的像素的数量,因此,渲染中间图像将需要更少的时间和/或处理器周期。在该示例中,渲染中间图像将需要大约四分之一的渲染完整大小的最终图像所需的时间和/或处理器周期。
在一些实施方式中,使用中间图像中的像素数量与完整大小的最终图像中的像素数量的其它比率。例如,当完整大小的最终图像具有较宽的纵横比时,像素数量更大程度地减少会是可能的,因为完整大小的最终图像的较大部分将在用户的外围视觉中,并且可以按照较低的质量水平来渲染该较大部分。在一些实施方式中,各种因素用于选择中间图像的分辨率,包括:最终图像的期望分辨率、最终图像的纵横比、眼睛追踪器是否可用于确定注视点、HMD中的透镜的锐度分布以及在操作406中使用的翘曲函数。
图7A示出了中间(翘曲)图像700的示例。图7B示出了在图像702中没有发生翘曲的对应场景。图7B中还包括使中间图像700翘曲的注视点704。如在图7A中可以看到的,使场景中靠近注视点的部分(例如,狮子头)翘曲以占据中间图像700的较大部分(即,以更多的像素/更高的分辨率来渲染这些部分),并且使场景中的更远离注视点的部分(例如,窗帘)翘曲以占据图像的小部分(即,以更少的像素/更低的分辨率来渲染这些部分)。
现在参照图4,在操作410中,使中间图像解除翘曲以生成最终的中央凹型图像。在一些实施方式中,可以在中间图像中的对应位置处识别最终的中央凹型图像中的每个像素的像素值。例如,可以将在操作406中使用的相同翘曲函数应用于最终的中央凹型图像中的像素位置以识别该像素值在中间图像中的对应位置。在一些实施方式中,GPU的像素着色器执行该翘曲函数以在渲染最终的中央凹型图像时从中间图像检索像素值。在一些实施方式中,在解除翘曲期间,在中央凹区域内使用双线性滤波。
方法400的实施方式可以用于通过使用膝上型计算机上的标准GPU来实时地执行中央凹型视频渲染。这种实时执行允许生成响应AR和/或VR环境。
在一些实施方式中,当渲染视频时,在最终图像的至少外围区域(例如,距注视点更远的区域)中使用时间抗锯齿。例如,时间抗锯齿的一种方法是使用与前一帧的alpha混合。在一些实施方式中,当前帧与前一帧之间的透明级别根据相机的移动量而变化以在没有移动时,具有更平稳的抗锯齿,并且在相机移动时,具有更短的时间褪色。
图8是根据一些实施方式的示例中央凹型渲染过程800的示意图。过程800可以由例如中心凹型渲染引擎122执行以生成用于AR或者VR环境的图像或者视频。针对该过程的输入中的一个输入是输入的3D场景802。在一些实施方式中,GPU的着色器(诸如,顶点着色器、几何着色器或者片段着色器)向输入的3D场景802的顶点应用非线性翘曲函数以生成绕着注视点(在该示例中,示出在图像的中心处)翘曲的翘曲3D场景804。在一些实施方式中,像素着色器以降低的分辨率来渲染翘曲3D场景804以生成中间(翘曲)图像806。在一些实施方式中,非中央凹着色器(例如,配置为执行本文描述的映射的GPU的像素着色器)读取中间图像806并且使其解除翘曲以按照全分辨率来生成最终图像808。在一些实施方式中,当生成视频时,使用时间混合来将距注视点更远的区域与先前的帧混合。此外,在一些实施方案中,使用双线性滤波来生成最终图像808的更靠近注视点的部分。
图9是根据一些实施方式的示例中央凹型渲染过程900的示意图。过程900可以由例如中心凹型渲染引擎122执行以生成用于AR或者VR环境的图像或者视频。针对该过程的输入中的一个输入是输入的3D网格902。网格902可以是由应用(诸如,AR/VR应用120)生成的3D场景的部件。变换网格902的顶点以使网格翘曲并且生成翘曲的网格904。例如,可以通过应用非线性翘曲函数来使网格902的顶点翘曲,该非线性翘曲函数基于顶点与注视点的距离,该注视点是基于用户的凝视而确定的。然后,渲染翘曲的网格904以生成较低分辨率的中间图像906。然后,使中间图像反向翘曲(使中间图像解除翘曲)以生成渲染的网格的最终图像908。
虽然上述示例中的许多示例涉及从三维场景渲染计算机生成的图像/视频,但是在一些实施方式中,本文所描述的技术和系统用于渲染真实场景中的标准照片和视频的中央凹型版本。可以通过使用像素着色器来渲染图像,如果图像/视频将覆盖整个屏幕,则该像素着色器将为中央凹型图像的每个像素计算在源图像中的原始位置;或者,如果图像/视频将被整合到3D场景中,则可以对用作网格的纹理的图像/视频使用网格翘曲过程。为了渲染动态图像或者动态视频,一些实施方式使用缓冲器来缓存图像/视频数据(例如,来自远程源或者硬盘驱动器)。缓冲器允许平稳的渲染,因为可以从缓冲器快速检索图像/视频数据,而没有与访问硬盘驱动器或者从远程源接收数据相关联的延迟。
图10示出了可以与此处描述的技术一起使用的计算设备1000和移动计算机设备1050的示例。计算设备1000包括:处理器1002、存储器1004、存储设备1006、连接至存储器1004和高速扩展端口1010的高速接口1008以及连接至低速总线1014和存储设备1006的低速接口1012。各个部件1002、1004、1006、1008、1010和1012利用不同的总线互相连接,并且可以安装在公共主板上或者根据需要以其它的方式安装。处理器1002可以对在计算设备1000内执行的指令进行处理,包括存储在存储器1004中或者存储设备1006上以在外部输入/输出设备(诸如,耦合至高速接口1008的显示器1016)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多种存储器一起使用。同样,可以连接多个计算设备1000,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器或者多处理器系统)。
存储器604存储在计算设备600内的信息。在一种实施方式中,存储器604是一个或者多个易失性存储器单元。在另一实施方式中,存储器1004是一个或者多个非易失性存储器单元。存储器1004还可以是另一种形式的计算机可读介质,诸如,磁盘或者光盘。
存储设备1006能够为计算设备1000提供大容量存储。在一种实施方式中,存储设备1006可以是或者可以包括计算机可读介质,诸如,软盘设备、硬盘设备、光盘设备或者磁带设备、闪速存储器或者其它相似的固态存储器设备或者设备的阵列(包括存储区域网络或者其它配置的设备)。计算机程序产品可以有形地体现为信息载体。计算机程序产品还可以包括指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的那些方法。信息载体是计算机或者机器可读介质,诸如,存储器604、存储设备606或者在处理器602上的存储器。
高速控制器1008管理计算设备1000的带宽密集型操作,而低速控制器1012管理较低的带宽密集型操作。这种功能分配仅仅是示例性的。在一种实施方式中,高速控制器1008耦合至存储器1004、显示器1016(例如,通过图形处理器或者加速器)和高速扩展端口1010,该高速扩展端口1010可以容纳各种扩展卡(未示出)。在实施方式中,低速控制器1012耦合至存储设备1006和低速扩展端口1014。可以例如,通过网络适配器来将可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口耦合至一个或者多个输入/输出设备,诸如,键盘、指向设备、扫描器或者网络设备(诸如,交换机或者路由器)。
如图所示,可以利用多种不同的形式来实施计算设备1000。例如,可以将计算设备1000实施为标准服务器1020或者多次实施在一组这种服务器中。还可以将计算设备1000实施为机架服务器系统1024的一部分。另外,计算设备1000可以实施在个人计算机(诸如,膝上型计算机1022)中。可替代地,来自计算设备1000的部件可以与移动设备(未示出)(诸如,设备1050)中的其它部件结合。各个这种设备可以包括一个或者多个计算设备1000、1050,并且整个系统可以由彼此通信的多个计算设备1000、1050组成。
除了其它部件之外,计算设备1020包括处理器1052、存储器1064、输入/输出设备(诸如,显示器1054)、通信接口1066和收发器1068。设备1050还可以设置有用于提供额外的存储的存储设备,诸如,微型硬盘或者其它设备。各个部件1050、1052、1064、1054、1066和1068利用各种总线相互连接,并且一些部件可以安装在公共主板上或者根据需要以其它方式安装。
处理器1052可以执行在计算设备1020内的指令,包括存储在存储器1064中的指令。可以将处理器实施为包括单独的和多个模拟和数字处理器的芯片的芯片集。例如,处理器可以提供对设备1050的其它部件的协调,诸如,用户界面的控制、由设备1050运行的应用和通过设备1050进行的无线通信。
处理器1052可以通过耦合至显示器1054的控制接口1058和显示接口1056来与用户进行通信。例如,显示器1054可以是TFT LCD(薄膜晶体管液晶显示屏)或者OLED(有机发光二极管)显示器,或者其它合适的显示技术。显示接口1056可以包括用于驱动显示器1054向用户呈现图形和其它信息的合适的电路系统。控制接口1058可以接收来自用户的命令并且对该命令进行转换以提交至处理器1052。另外,外部接口1062可以提供与处理器1052的通信,以便使设备1050能够与其它设备进行邻近区域通信。例如,在一些实施方式中,外部接口1062可以提供有线通信,或者在其它实施方式中,可以提供无线通信,并且还可以使用多个接口。
存储器1064存储在计算设备1020内的信息。可以将存储器1064实施为一个或者多个计算机可读介质、一个或者多个易失性存储器单元或者一个或者多个非易失性存储器单元。还可以提供扩展存储器1074并且通过扩展接口1072来将扩展存储器1074连接至设备1050,该扩展接口1072可以包括:例如,SIMM(单线存储器模块)卡接口。这种扩展存储器1074可以为设备1050提供附加存储空间,或者还可以存储设备1050的应用或者其它信息。具体地,扩展存储器1074可以包括用于执行或者补充上文描述的过程的指令,并且还可以包括安全信息。因此,例如,可以将扩展存储器1074提供为设备1050的安全模块,并且可以用允许安全使用设备1050的指令来对其进行编程。另外,可以经由SIMM卡与附加信息(诸如,将识别信息通过不可侵入的方式放在SIMM卡上)一起来提供安全应用。
如下面讨论的,存储器可以包括:例如,闪速存储器和/或NVRAM存储器。在一种实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包括指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的那些方法。信息载体是计算机或者机器可读介质,诸如,存储器1064、扩展存储器1074或者在处理器1052上的存储器,例如,可以通过收发器1068或者外部接口1062来接收该信息载体。
设备1050可以通过通信接口1066来无线地进行通信,若需要,该通信接口1066可以包括数字信号处理电路系统。通信接口1066可以提供在各种模式或者协议下的通信,诸如,GSM语音通话、SMS、EMS或者MMS短信发送、CDMA、TDMA、PDC、WCDMA、CDMA2000或者GPRS等。这种通信可以例如,通过无线电频率收发器1068发生。另外,短程通信可以通过使用,诸如,蓝牙、WiFi或者其它这种收发器(未示出)而发生。另外,全球定位系统(GPS)接收器模块1070可以向设备1050提供附加的与导航或者位置有关的无线数据,若合适,该无线数据可以供在设备1050上运行的应用使用。
设备1050还可以通过使用音频编解码器1060来进行可听地通信,该音频编解码器1060可以接收来自用户的口头信息,并且将口头信息转换为可用的数字信息。音频编解码器1060还可以为用户生成可听见的声音,诸如,通过扬声器,例如,在设备1050的听筒中的扬声器。这种声音可以包括来自语音电话的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括通过在设备1050上操作的应用生成的声音。
如图所示,可以利用多种不同的形式来实施计算设备1020。例如,可以将计算设备1020实施为蜂窝电话1080。还可以将计算设备1020实施为智能电话1082、个人数字助理或者其它相似的移动设备的一部分。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该至少一个可编程处理器可以是专用的或者通用的,可以被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及向存储系统、至少一个输入设备和至少一个输出设备传输数据和指令。
这些计算程序(也称为程序、软件、软件应用或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、设备和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示设备(例如,LCD(液晶显示器)屏幕、OLED(有机发光二极管))以及键盘和指向设备(例如,鼠标或者轨迹球),用户可以通过该键盘和指向设备来向计算机提供输入。其它种类的设备还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(“LAN”)、广域网(“WAN”)和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
在一些实施方式中,在图1中描绘的计算设备可以包括传感器,这些传感器与虚拟现实(VR听筒/HMD设备1090)接口连接以生成具有中央凹型帧的AR或者VR环境以提高帧速率和/或减少进行渲染所需的处理器周期。例如,包括在计算设备1020或者在图1中描绘的其它计算设备上的一个或者多个传感器可以向VR耳机1090提供输入或者通常向VR空间提供输入。传感器可以包括但不限于:触摸屏、加速度计、陀螺仪、压力传感器、生物传感器、温度传感器、湿度传感器和环境光传感器。计算设备1020可以使用传感器来确定计算设备在VR空间中的绝对位置和/或检测到的旋转,该绝对位置和/或检测到的旋转然后可以用作VR空间的输入。例如,计算设备1020可以作为虚拟对象(诸如,控制器、激光指示器、键盘、武器等)并入VR空间。用户在计算设备/虚拟对象并入VR空间时对计算设备/虚拟对象进行定位可以允许用户将计算设备定位成在VR空间中按照某些方式查看虚拟对象。例如,如果虚拟对象表示激光指示器,则用户可以操纵计算设备,好像计算设备是实际的激光指示器。用户可以左右、上下、绕圈等移动计算设备,并且按照相似的方式使设备使用激光指示器。
在一些实施方式中,可以使用包括在计算设备1020上或者连接至计算设备1020的一个或者多个输入设备作为VR空间的输入。输入设备可以包括但不限于:触摸屏、键盘、一个或者多个按钮、触控板、触摸板、指向设备、鼠标、轨迹球、操纵杆、相机、麦克风、具有输入功能的耳机或者buds、游戏机或者其它可连接的输入设备。用户在计算设备并入VR空间时与包括在计算设备1020上的输入设备进行交互可以使特定动作在VR空间中发生。
在一些实施方式中,可以将计算设备1020的触摸屏渲染为VR空间中的触摸板。用户可以与计算设备1020的触摸屏进行交互。例如,在VR耳机1090中将交互渲染为在VR空间中渲染的触摸板上的移动。渲染的移动可以控制VR空间中的虚拟对象。
在一些实施方式中,包括在计算设备1020上的一个或者多个输出设备可以向VR空间中的VR耳机1090的用户提供输出和/或反馈。输出和反馈可以是视觉输出和反馈、策略输出和反馈或者音频输出和反馈。输出和/或反馈可以包括但不限于:振动、打开和关闭一个或者多个灯或者闪光灯或者使一个或者多个灯或者闪光灯闪烁和/或使一个或者多个灯或者闪光灯闪光、发出警报、播放铃声、播放歌曲以及播放音频文件。输出设备可以包括但不限于:振动马达、振动线圈、压电设备、静电设备、发光二极管(LED)、闪光灯和扬声器。
在一些实施方式中,计算设备1020可以作为计算机生成的3D环境中的另一对象出现。用户与计算设备1020的交互(例如,旋转、摇动、触摸触摸屏、手指在触摸屏上滑动)可以被解释为与VR空间中的对象的交互。在VR空间中的激光指示器的示例中,计算设备1020作为计算机生成的3D环境中的虚拟激光指示器出现。当用户操纵计算设备1020时,VR空间中的用户看到激光指示器的移动。用户在计算设备1020上或者VR耳机1090上接收来自与VR环境中的计算设备1020的交互的反馈。
在一些实施方式中,计算设备1020可以包括触摸屏。例如,用户可以按照可以模拟在VR空间中发生的事情的情况下在触摸屏上发生的情况的特定方式来与触摸屏进行交互。例如,用户可以使用捏合式运动来对显示在触摸屏上的内容进行缩放。在触摸屏上的这种捏合式运动可以使VR空间中提供的信息被缩放。在另一示例中,可以将计算设备渲染为计算机生成的3D环境中的虚拟书。在VR空间中,书籍的页面可以显示在VR空间中,并且用户的手指在触摸屏上的滑动可以被解释为翻动/翻转虚拟书的页面。随着每个页面被翻动/翻转,除了看到页面内容改变之外,还可以向用户提供音频反馈,诸如,翻动书籍中的页面的声音。
在一些实施方式中,可以将除了计算设备之外的一个或者多个输入设备(例如,鼠标、键盘)渲染在计算机生成的3D环境中。渲染的输入设备(例如,渲染的鼠标、渲染的键盘)可以在VR空间中被渲染时使用来控制VR空间中的对象。
计算设备1000旨在表示各种形式的数字计算机和设备,包括但不限于:膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机以及其它合适的计算机。计算设备1020旨在表示各种形式的移动设备,诸如,个人数字助理、蜂窝电话、智能电话以及其它相似的计算设备。此处所示出的部件、其连接和关系以及其功能旨在仅是示例性的,而不旨在限制本文中描述的和/或要求保护的本发明的实施方式。
根据一些实施方式,图11A至图11C包括场景的示例中央凹型图像。例如,可以通过中央凹型渲染引擎122的实施方式来渲染图像。图11A包括中央凹型图像1100,在图像的中心附近具有注视点1102。图11B包括中央凹型图像1104,在图像的左侧附近具有注视点1106。图11C包括中央凹型图像1108,在图像的右侧附近具有注视点1110。
根据一些实施方式,图12A至图12D包括场景的示例中央凹型图像。例如,可以通过中央凹型渲染引擎122的实施方式来渲染图像。图12A包括中央凹型图像1200,在图像的中心附近具有注视点1202。图12B包括中央凹型图像1204,在图像的左侧附近具有注视点1206。图12C包括中央凹型图像1208,在图像的左下侧附近具有注视点1210。图12D包括中央凹型图像1212,在图像的左下侧附近具有注视点1214。
在图11A至图11C以及图12A至图12D中示出的图像可以从静态图像、动态生成的图像、视频中的帧生成,或者作为在VR环境内生成的一系列图像的一部分。
已经描述了若干实施例。然而,要理解,在不脱离本说明书的精神和范围的情况下,可以做出各种修改。
另外,附图中所描绘的逻辑流程不需要特定示出或者相继的顺序以实现期望的结果。另外,可以提供其它步骤,或者可以从所描述的流程删除步骤,并且可以向所描述的系统添加其它部件,或者从所描述的系统去除其它部件。因此,其它实施例在以下权利要求书的范围内。
虽然已经如本文描述的那样图示了所描述的实施方式的某些特征,但是本领域的技术人员现在将想到许多修改、代替、更改以及等效物。因此,要明白,随附权利要求书旨在涵盖所有这种修改和更改,落入实施方式的范围内。应该理解,已经仅仅作为示例而非限制呈现了这些修改和更改,并且可以进行形式和细节上的各种改变。本文所描述的设备和/或方法的任何部分可以按照任何组合来组合,除了相互排斥的组合。本文所描述的实施方式可以包括所描述的不同实施方式的功能、部件和/或特征的各种组合和/或子组合。
在下文中,给出了一些示例。
示例1:一种方法包括:基于注视点来使3D场景翘曲;渲染翘曲的3D场景以生成第一图像;以及使第一图像解除翘曲以生成第二图像。
示例2:根据示例1的方法,其中,第一图像比第二图像具有更少的像素。
示例3:根据示例2的方法,其中,第一图像具有第二图像的不超过四分之一的像素。
示例4:根据任一前述示例的方法,其中,使3D场景翘曲包括:通过使用距注视点的距离的非线性函数来使场景翘曲。
示例5:根据任一前述示例的方法,其中,第二图像是来自视频的帧。
示例6:根据任一前述示例的方法,其中,使3D场景翘曲包括:按照非均匀的方式来改变3D场景。
示例7:根据示例6的方法,其中,按照非均匀的方式来改变3D场景包括:以不同的量改变3D场景的不同部分。
示例8:根据示例6的方法,其中,按照非均匀的方式来改变3D场景包括:在不同的方向上改变3D场景的不同部分。
示例9:根据任一前述示例的方法,其中,使3D场景翘曲包括:将3D场景中的顶点变换到中间压缩空间。
示例10:根据示例9的方法,其中,将顶点变换到中间压缩空间包括:向定点的位置应用非线性函数。
示例11:根据示例10的方法,其中,向顶点的位置应用非线性函数包括:基于从每个顶点到注视点的距离的平方根来修改顶点中的每个顶点的位置。
示例12:根据示例10的方法,其中,向顶点的位置应用非线性函数包括:向顶点应用对数映射或者对数极坐标映射。
示例13:根据示例10的方法,其中,变换顶点包括:将顶点中的每个顶点投影到视口;将注视点投影到视口;基于投影的顶点与投影的注视点之间的距离来变换投影的顶点的坐标;并且将变换的顶点重新投影到3D场景中。
示例14:根据任一前述示例的方法,其中,基于注视点来使3D场景翘曲包括:基于距注视点的垂直距离和距注视点的水平距离来使用翘曲函数,使得使3D场景在水平维度与垂直维度翘曲到不同的程度。
示例15。根据任一前述示例的方法,其中,基于注视点来使3D场景翘曲包括:使用不对称的翘曲函数,该不对称的翘曲函数在注视点的一侧与在注视点的另一侧以不同的量使3D场景翘曲。
示例16:根据任一前述示例的方法,其中,渲染翘曲的3D场景包括:基于估计三角形边缘在翘曲期间的失真来计算第一图像的像素的误差校正值。
示例17:根据示例16的方法,其中,使第一图像解除翘曲包括:在生成第二图像的像素时应用误差校正值。
示例18:根据任一前述示例的方法,其中,使第一图像解除翘曲以生成第二图像包括:在第二图像的中央凹区域中使用双线性滤波。
示例19:根据任一前述示例的方法,进一步包括:确定注视点。
示例20:根据示例19的方法,其中,确定注视点包括:基于追踪用户的眼睛的位置来确定注视点。
示例21:根据示例19或者20的方法,其中,确定注视点包括:基于HMD的透镜的属性来确定注视点。
示例22:一种系统包括:至少一个处理器;以及存储指令的存储器,这些指令在由该至少一个处理器执行时使该系统:基于注视点来使3D场景翘曲;渲染翘曲的3D场景以生成第一图像;并且使第一图像解除翘曲以生成第二图像。
示例23:根据示例22的系统,进一步包括图形处理单元(GPU),其中,使系统基于注视点来使3D场景翘曲的指令包括使系统通过使用GPU来将3D场景变换到中间压缩空间中的指令。
示例24:根据示例23的系统,其中,使系统基于注视点来使3D场景翘曲的指令包括使GPU细化3D场景的至少一部分的指令。
示例25:根据示例23的系统,其中,使系统渲染翘曲的3D场景以生成第一图像的指令包括使GPU应用多样本抗锯齿的指令。
示例26:根据示例22至25中任一项的系统,进一步包括包括至少一个透镜的头戴式显示设备,其中,注视点与透镜的比透镜的其它部分具有更高锐度的一部分对应。
示例27:根据示例22至26中任一项的系统,进一步包括头戴式显示设备和相机,其中,存储器进一步存储指令,这些指令在由该至少一个处理器执行时使系统:基于由相机捕获到的图像来确定头戴式显示设备的穿戴者的瞳孔的位置;并且基于瞳孔的位置来确定注视点。
示例28:一种非暂时性计算机可读存储介质包括存储在其上的指令,这些指令在由至少一个处理器执行时使计算系统至少:确定头戴式显示设备的穿戴者的瞳孔位置;基于瞳孔位置来确定注视点;基于注视点来使3D场景翘曲;渲染翘曲的3D场景以生成第一图像;使第一图像解除翘曲以生成第二图像;并且使头戴式显示设备显示第二图像。
示例29:根据示例28的非暂时性计算机可读存储介质,其中,被配置成使计算系统基于注视点来使3D场景翘曲的指令包括使计算系统进行以下的指令:将3D场景中的顶点投影到屏幕坐标;将注视点投影到屏幕坐标;基于投影的顶点与投影的注视点之间的距离来变换投影的顶点的坐标;并且将变换的顶点重新投影到3D场景中。
示例30:根据示例29的非暂时性计算机可读存储介质,其中,指令被配置成使计算系统向投影的顶点应用对数映射或者对数极坐标映射。
示例31:根据示例28至30中任一项的非暂时性计算机可读存储介质,其中,3D场景来自一系列3D场景,并且指令进一步使计算系统:基于与注视点的距离来使第二图像的部分暂时发生锯齿。

Claims (31)

1.一种方法,包括:
基于注视点来使3D场景翘曲;
渲染翘曲的3D场景以生成第一图像;以及
使所述第一图像解除翘曲以生成第二图像。
2.根据权利要求1所述的方法,其中,所述第一图像比所述第二图像具有更少的像素。
3.根据权利要求2所述的方法,其中,所述第一图像具有所述第二图像的不超过四分之一的像素。
4.根据任一前述权利要求所述的方法,其中,使所述3D场景翘曲包括:通过使用距所述注视点的距离的非线性函数来使所述场景翘曲。
5.根据任一前述权利要求所述的方法,其中,所述第二图像是来自视频的帧。
6.根据任一前述权利要求所述的方法,其中,使所述3D场景翘曲包括:按照非均匀的方式来改变所述3D场景。
7.根据权利要求6所述的方法,其中,按照所述非均匀的方式来改变所述3D场景包括:以不同的量改变所述3D场景的不同部分。
8.根据权利要求6所述的方法,其中,按照所述非均匀的方式来改变所述3D场景包括:在不同的方向上改变所述3D场景的不同部分。
9.根据任一前述权利要求所述的方法,其中,使所述3D场景翘曲包括:将所述3D场景的顶点变换到中间压缩空间。
10.根据权利要求9所述的方法,其中,将所述顶点变换到中间压缩空间包括:向所述顶点的位置应用非线性函数。
11.根据权利要求10所述的方法,其中,向所述顶点的所述位置应用非线性函数包括:基于从每个顶点到注视点的距离的平方根来修改所述顶点中的每个顶点的位置。
12.根据权利要求10所述的方法,其中,向所述顶点的所述位置应用非线性函数包括:向所述顶点应用对数映射或者对数极坐标映射。
13.根据权利要求10所述的方法,其中,变换所述顶点包括:
将所述顶点中的每个顶点投影到视口;
将所述注视点投影到所述视口;
基于所投影的顶点与所投影的注视点之间的距离来变换所投影的顶点的坐标;以及
将所变换的顶点重新投影到所述3D场景中。
14.根据任一前述权利要求所述的方法,其中,基于所述注视点来使所述3D场景翘曲包括:基于距所述注视点的垂直距离和距所述注视点的水平距离来使用翘曲函数,使得所述3D场景在所述水平维度与所述垂直维度中被翘曲到不同的程度。
15.根据任一前述权利要求所述的方法,其中,基于所述注视点来使所述3D场景翘曲包括:使用不对称的翘曲函数,所述不对称的翘曲函数在所述注视点的一侧与在所述注视点的另一侧以不同的量使所述3D场景翘曲。
16.根据任一前述权利要求所述的方法,其中,渲染翘曲的3D场景包括:基于估计三角形边缘在翘曲期间的失真来计算所述第一图像的像素的误差校正值。
17.根据权利要求16所述的方法,其中,使所述第一图像解除翘曲包括:在生成所述第二图像的像素时应用所述误差校正值。
18.根据任一前述权利要求所述的方法,其中,使所述第一图像解除翘曲以生成第二图像包括:在所述第二图像的中央凹区域中使用双线性滤波。
19.根据任一前述权利要求所述的方法,进一步包括:确定所述注视点。
20.根据权利要求19所述的方法,其中,确定所述注视点包括:基于追踪用户的眼睛的位置来确定所述注视点。
21.根据权利要求19或者20所述的方法,其中,确定所述注视点包括:基于HMD的透镜的属性来确定所述注视点。
22.一种系统,包括:
至少一个处理器;以及
存储指令的存储器,所述指令在由所述至少一个处理器执行时使所述系统:
基于注视点来使3D场景翘曲;
渲染翘曲的3D场景以生成第一图像;以及
使所述第一图像解除翘曲以生成第二图像。
23.根据权利要求22所述的系统,进一步包括图形处理单元GPU,其中,用于使所述系统基于所述注视点来使所述3D场景翘曲的所述指令包括用于使所述系统通过使用所述GPU来将所述3D场景变换到中间压缩空间中的指令。
24.根据权利要求23所述的系统,其中,用于使所述系统基于所述注视点来使所述3D场景翘曲的所述指令包括用于使所述GPU细化所述3D场景的至少一部分的指令。
25.根据权利要求23所述的系统,其中,用于使所述系统渲染翘曲的3D场景以生成第一图像的所述指令包括用于使所述GPU应用多样本抗锯齿的指令。
26.根据权利要求22至25中任一项所述的系统,进一步包括头戴式显示设备,所述头戴式显示设备包括至少一个透镜,其中,所述注视点与所述透镜的比所述透镜的其它部分具有更高锐度的部分对应。
27.根据权利要求22至26中任一项所述的系统,进一步包括头戴式显示设备和相机,其中,所述存储器进一步存储指令,所述指令在由所述至少一个处理器执行时使所述系统:
基于由所述相机捕获到的图像来确定所述头戴式显示设备的穿戴者的瞳孔的位置;以及
基于所述瞳孔的所述位置来确定所述注视点。
28.一种包括存储在其上的指令的非暂时性计算机可读存储介质,所述指令在由至少一个处理器执行时使计算系统至少:
确定头戴式显示设备的穿戴者的瞳孔位置;
基于所述瞳孔位置来确定注视点;
基于所述注视点来使3D场景翘曲;
渲染翘曲的3D场景以生成第一图像;
使所述第一图像解除翘曲以生成第二图像;以及
使所述头戴式显示设备显示所述第二图像。
29.根据权利要求28所述的非暂时性计算机可读存储介质,其中,被配置成使所述计算系统基于所述注视点来使所述3D场景翘曲的所述指令包括用于使所述计算系统进行以下操作的指令:
将所述3D场景中的顶点投影到屏幕坐标;
将所述注视点投影到屏幕坐标;
基于所投影的顶点与所投影的注视点之间的距离来变换所投影的顶点的所述坐标;以及
将所变换的顶点重新投影到所述3D场景中。
30.根据权利要求29所述的非暂时性计算机可读存储介质,其中,所述指令被配置成使所述计算系统向所投影的顶点应用对数映射或者对数极坐标映射。
31.根据权利要求28至30中任一项所述的非暂时性计算机可读存储介质,其中,所述3D场景来自3D场景的序列,并且所述指令进一步使所述计算系统:
基于距所述注视点的距离来使所述第二图像的部分暂时发生锯齿。
CN201880025339.3A 2017-06-05 2018-06-05 平稳变化的中央凹型渲染 Active CN110770796B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762515124P 2017-06-05 2017-06-05
US62/515,124 2017-06-05
PCT/US2018/036033 WO2018226676A1 (en) 2017-06-05 2018-06-05 Smoothly varying foveated rendering

Publications (2)

Publication Number Publication Date
CN110770796A true CN110770796A (zh) 2020-02-07
CN110770796B CN110770796B (zh) 2024-03-15

Family

ID=62713120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880025339.3A Active CN110770796B (zh) 2017-06-05 2018-06-05 平稳变化的中央凹型渲染

Country Status (6)

Country Link
US (1) US10546364B2 (zh)
EP (1) EP3635686A1 (zh)
JP (1) JP7042286B2 (zh)
KR (1) KR102256706B1 (zh)
CN (1) CN110770796B (zh)
WO (1) WO2018226676A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222397B2 (en) 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
US10885607B2 (en) * 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering
US10521881B1 (en) 2017-09-28 2019-12-31 Apple Inc. Error concealment for a head-mountable device
US10922878B2 (en) * 2017-10-04 2021-02-16 Google Llc Lighting for inserted content
CN115842907A (zh) * 2018-03-27 2023-03-24 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
US11836885B2 (en) * 2018-05-07 2023-12-05 Apple Inc. Dynamic foveated pipeline
US10867164B2 (en) * 2018-06-29 2020-12-15 Intel Corporation Methods and apparatus for real-time interactive anamorphosis projection via face detection and tracking
CN110809149B (zh) 2018-08-06 2022-02-25 苹果公司 用于计算机生成现实的媒体合成器
WO2020152754A1 (ja) 2019-01-21 2020-07-30 株式会社ソニー・インタラクティブエンタテインメント 画像生成装置および画像生成方法
US10771774B1 (en) * 2019-03-22 2020-09-08 Varjo Technologies Oy Display apparatus and method of producing images having spatially-variable angular resolutions
BR112022001434A2 (pt) * 2019-07-28 2022-06-07 Google Llc Métodos, sistemas e mídia para renderizar conteúdo de vídeo imersivo com malhas otimizadas
US10970811B1 (en) * 2019-09-23 2021-04-06 Facebook Technologies, Llc Axis based compression for remote rendering
US11270409B1 (en) * 2019-11-14 2022-03-08 Apple Inc. Variable-granularity based image warping
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
KR20210096449A (ko) 2020-01-28 2021-08-05 삼성전자주식회사 Hud 시스템에서 영상을 재생하는 방법 및 그 hud 시스템
WO2021182126A1 (ja) * 2020-03-09 2021-09-16 ソニーグループ株式会社 情報処理装置、情報処理方法、および記録媒体
WO2021242008A1 (en) 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Electronic device and operating method thereof
EP4189527A1 (en) * 2020-08-03 2023-06-07 Apple Inc. Adjusting image content to improve user experience
WO2022066341A1 (en) * 2020-09-22 2022-03-31 Sterling Labs Llc Attention-driven rendering for computer-generated objects
WO2022259632A1 (ja) * 2021-06-10 2022-12-15 ソニーグループ株式会社 情報処理装置及び情報処理方法
CN115793841A (zh) * 2021-09-09 2023-03-14 华为技术有限公司 一种显示方法与电子设备
US20230168736A1 (en) * 2021-11-29 2023-06-01 Sony Interactive Entertainment LLC Input prediction for pre-loading of rendering data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080101711A1 (en) * 2006-10-26 2008-05-01 Antonius Kalker Rendering engine for forming an unwarped reproduction of stored content from warped content
US20140247277A1 (en) * 2013-03-01 2014-09-04 Microsoft Corporation Foveated image rendering
CN106068645A (zh) * 2014-01-10 2016-11-02 奥斯坦多科技公司 用于全视差压缩光场3d成像系统的方法
US20170004648A1 (en) * 2015-06-30 2017-01-05 Ariadne's Thread (Usa), Inc. (Dba Immerex) Variable resolution virtual reality display system
CN106462370A (zh) * 2014-04-29 2017-02-22 微软技术许可有限责任公司 基于注视位置的稳定性平面确定

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530086A (ja) * 2006-12-19 2010-09-02 創太 清水 イメージングモデル及び画像処理装置
US9993335B2 (en) * 2014-01-08 2018-06-12 Spy Eye, Llc Variable resolution eye mounted displays
US9836816B2 (en) * 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US10438312B2 (en) 2014-04-05 2019-10-08 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US10726619B2 (en) * 2015-10-29 2020-07-28 Sony Interactive Entertainment Inc. Foveated geometry tessellation
US10192528B2 (en) * 2016-03-31 2019-01-29 Sony Interactive Entertainment Inc. Real-time user adaptive foveated rendering
US10169846B2 (en) * 2016-03-31 2019-01-01 Sony Interactive Entertainment Inc. Selective peripheral vision filtering in a foveated rendering system
US10379611B2 (en) * 2016-09-16 2019-08-13 Intel Corporation Virtual reality/augmented reality apparatus and method
US10885607B2 (en) * 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080101711A1 (en) * 2006-10-26 2008-05-01 Antonius Kalker Rendering engine for forming an unwarped reproduction of stored content from warped content
US20140247277A1 (en) * 2013-03-01 2014-09-04 Microsoft Corporation Foveated image rendering
CN106068645A (zh) * 2014-01-10 2016-11-02 奥斯坦多科技公司 用于全视差压缩光场3d成像系统的方法
CN106462370A (zh) * 2014-04-29 2017-02-22 微软技术许可有限责任公司 基于注视位置的稳定性平面确定
US20170004648A1 (en) * 2015-06-30 2017-01-05 Ariadne's Thread (Usa), Inc. (Dba Immerex) Variable resolution virtual reality display system

Also Published As

Publication number Publication date
US10546364B2 (en) 2020-01-28
EP3635686A1 (en) 2020-04-15
WO2018226676A1 (en) 2018-12-13
US20180350032A1 (en) 2018-12-06
KR20190141768A (ko) 2019-12-24
KR102256706B1 (ko) 2021-05-26
JP2020522815A (ja) 2020-07-30
JP7042286B2 (ja) 2022-03-25
CN110770796B (zh) 2024-03-15

Similar Documents

Publication Publication Date Title
CN110770796B (zh) 平稳变化的中央凹型渲染
CN108604391B (zh) 基于虚拟/增强现实系统中的深度信息的时间扭曲调整
CN107636534B (zh) 用于图像处理的方法和系统
US10762694B1 (en) Shadows for inserted content
US11765335B2 (en) Synthetic stereoscopic content capture
US10949956B2 (en) Enhanced specular reflections for inserted content
US11792531B2 (en) Gaze-based exposure
US10922878B2 (en) Lighting for inserted content
US11379952B1 (en) Foveated image capture for power efficient video see-through
CN111696190B (zh) 来自发光的插入内容的照明效果
US20230421914A1 (en) Gaze-Based Exposure
US20230396750A1 (en) Dynamic resolution of depth conflicts in telepresence
US20230077410A1 (en) Multi-View Video Codec
CN115543073A (zh) 眼睛跟踪数据过滤
WO2024020258A1 (en) Late stage occlusion based rendering for extended reality (xr)
CN115802143A (zh) 基于设备位置调整图像的显示

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