合成立体视觉图像内容捕获的制作方法

文档序号:28449854发布日期:2022-01-12 04:47阅读:69来源:国知局
合成立体视觉图像内容捕获的制作方法
合成立体视觉图像内容捕获
1.分案说明
2.本技术属于申请日为2018年4月27日的中国发明专利申请201880025565.1的分案申请。
3.相关申请的交叉引用
4.本技术要求于2017年4月27日提交的美国申请no.62/491,201的优先权,并通过引用将其全部内容合并于此。
技术领域
5.本公开涉及合成立体视觉图像内容捕获。


背景技术:

6.全向立体(ods)是360度立体视觉视频的投射模型。ods可以与头戴式显示器(hmd)一起使用,以显示立体视觉影像。通过ods,可以使用常规视频格式和工具存储、编辑和传输360度立体视觉视频。在ods中,将帧在水平方向上分为顶部的左眼图像和底部的右眼图像。左眼和右眼的图像都是360度图像,其包括使用等矩形(equirectangular)投射映射到二维(2d)表面的整个视场。
7.360度立体视觉视频内容有各种来源。例如,360度立体视觉视频内容的一个来源是物理360度相机设施。360度立体视觉视频内容的另一个来源是可生成合成世界的三维(3d)渲染引擎,包括游戏引擎。在一些实施例中,将360度立体视觉视频实时流送,例如在视频游戏期间让其他人共享虚拟现实(vr)体验或一道跟随。
8.用于从诸如游戏引擎的合成来源捕获360度立体视觉视频的传统技术对于内容开发者而言可能是复杂、耗时且容易出错的,并且对于常规用户而言可能是完全做不到的。


技术实现要素:

9.本文献大体涉及用于捕获合成立体视觉内容的技术。例如,合成立体视觉内容可通过视频游戏引擎生成并流送给观看者。
10.一个方案是一种包括至少一个处理器和存储器的计算设备。存储器存储指令,所述指令在被至少一个处理器执行时使得计算设备接收三维场景。指令还可以使得计算系统重新定位三维场景的顶点,以补偿定向立体视觉投射中相机位置的变化,并基于所重新定位的顶点来生成立体视觉图像。
11.另一个方案是一种方法,所述方法包括:将三维场景投射到左眼图像立方体和右眼图像立方体上,以及重新定位三维场景的顶点以针对从单个相机位置进行渲染来调整。所述方法还包括:通过基于左眼图像立方体和右眼图像立方体确定立体视觉图像的像素的值来生成立体视觉图像。
12.另一个方案是一种方法,所述方法包括:将三维场景投射到等矩形圆柱体上以及确定所投射的三维场景的顶点的左偏移矢量和右偏移矢量。所述方法还包括:复制所投射
的三维场景以生成复制场景,以及以统一偏移量偏移复制场景的顶点。所述方法还包括:将左偏移矢量应用于所投射的三维场景和复制场景中的至少一个的顶点;生成所投射的三维场景和复制场景的顶点的齐次坐标;以及投射所投射的三维场景和复制场景的顶点以生成立体视觉图像。
附图说明
13.图1是示出根据示例实施方式的系统的框图。
14.图2a至图2d是具有处于各种旋转的虚拟相机组件的场景的示例俯视图的示意图。
15.图3是示出根据本文所述实施方式的示例ods格式图像文件的构成的示意图。
16.图4是根据本文所述实施方式的示例vr180格式图像文件的构成的示意图。
17.图5a和图5b是根据本文所述实施方式,向3d场景的顶点应用偏移的示意图。
18.图6是根据本文所述实施方式,捕获合成立体视觉内容的示例方法的示意图。
19.图7是根据本文所述实施方式,将3d场景投射到左眼图像立方体和右眼图像立方体的表面上的示例的示意图。
20.图8是根据本文所述实施方式,从图像立方图读取像素的值以生成立体视觉图像的过程的示意图。
21.图9是根据本文所述实施方式,捕获合成立体视觉内容的示例方法的示意图。
22.图10是图9的方法的示例实施方式的示意图,以生成立体视觉图像。
23.图11示出可用于实现本文所述技术的计算机设备和移动计算机设备的示例。
具体实施方式
24.本公开提供用于提高在三维渲染引擎(例如游戏引擎)中捕获立体视觉宽视场视频捕获的效率的技术。例如,本文所述技术可以用于捕获180度立体视觉视频或360度立体视觉视频。例如,本文所述技术可以减少处理器周期的数目和捕获宽视场立体视觉内容所需的时间量。这些技术例如可用于实时流送来自视频游戏和/或其他来源的宽视场合成立体视觉内容。
25.例如,立体视觉内容可以使用定向立体视觉投射。在定向立体视觉投射中,基于瞳孔间距(ipd)生成左眼图像和右眼图像(例如,左眼图像是从自虚拟相机位置在第一方向上偏移半个ipd的位置生成的,而右眼图像是从在与第一方向相反的第二方向上偏移的位置生成的)。从相机位置偏移的方向与相机瞄准的方向正交。在定向立体视觉投射中,图像中的每个垂直像素列都被渲染为好像相机直接瞄准该列(即,相机水平旋转以瞄准该列)。随着相机旋转,用于捕获右眼图像和左眼图像的位置改变,很像头部旋转导致眼睛的位置移动一样。实际上,用于捕获右眼图像和左眼图像的位置沿着直径等于ipd的圆旋转。定向立体投射的示例是具有360度视场的全向立体视觉投射。但是,定向立体视觉投射也可以具有更窄的视场。例如,vr180文件格式使用具有180度视场的定向立体视觉投射。其他实施方式也包括其他视场。
26.常规的三维场景渲染技术使用固定的相机位置,因此在不进行很多单独的渲染(例如,每个相机位置一次渲染)的情况下,就无法利用定向立体视觉投射来产生内容。本文所述实施方式通过在定向立体视觉投射中偏移顶点的位置来补偿相机位置的改变,以更少
的渲染利用定向立体视觉投射来生成立体视觉内容,从而允许从单个相机位置以定向立体视觉投射来渲染图像。在一些实施方式中,确定将用于捕获定向立体视觉投射中的每个顶点的相机位置,并将其用于计算顶点的偏移。例如,场景中的每个顶点可以稍微偏移到这样的位置,所述位置与中心相机位置的位置关系和所述顶点与在定向立体视觉投射中捕获所述顶点的相机所原本具有的位置关系相同。使用图形处理器单元(gpu)的顶点着色器和几何着色器中的一个或多个,可以有效率地计算和应用顶点偏移。与常规的渲染技术相比,实施方式可以允许在少得多的时间内并使用更少的处理器周期来渲染定向立体内容。例如,一些实施方式允许定向立体视觉内容的实时捕获,从而允许视频游戏和虚拟现实内容的实时流送。
27.vr系统和ar系统的至少一些实施方式包括头戴式显示设备(hmd),其可由用户佩戴的以为用户生成沉浸式环境。沉浸式环境的示例包括vr系统生成的vr环境和ar系统生成的ar环境。在至少一部分实施方式中,hmd包括立体视觉显示器,其中向用户的每只眼睛显示不同的图像和/或视频以传达深度。hmd可以显示覆盖用户视场的一部分(ar)或全部(vr)的图像。hmd还可以追踪用户头部和/或瞳孔位置的移动。随着用户头部的移动,hmd可以显示与用户在ar或vr环境中取向和/或位置的变化相对应的更新图像。
28.可以从各种来源接收在hmd上显示的内容。例如,内容可以来自诸如360度立体视觉视频文件或180度立体视觉视频文件的宽视场立体视觉视频文件。360度立体视觉文件格式的一个示例是ods文件格式。180度立体视觉文件格式的一个示例是vr180文件格式。立体视觉视频文件可以从物理立体视觉相机设施或从合成立体视觉捕获引擎生成。
29.图1是示出根据示例实施方式的系统100的框图。系统100捕获立体视觉内容,诸如立体视觉图像和视频内容。在一些实施方式中,系统100还基于系统100的用户的立体视觉内容来生成沉浸式环境,诸如ar环境或vr环境。在一些实施方式中,系统100包括立体视觉内容捕获计算设备102、计算设备104和头戴式显示设备(hmd)106。此外还示出网络108,立体视觉内容捕获计算设备102可通过网络108与计算设备104通信来例如传输立体视觉内容110。
30.立体视觉内容捕获计算设备102可以是任何类型的计算设备,包括服务器、诸如台式或膝上型计算机的个人计算机、游戏控制台、平板电脑、移动设备(例如,智能电话)、或基于云的计算设备。立体视觉内容捕获计算设备102被配置为捕获合成立体视觉内容,诸如宽视场立体视觉图像和视频。计算设备104可包括存储器112、处理器组件114和通信模块116。存储器112可包括3d场景生成引擎118和立体视觉渲染引擎120。计算设备104还可包括各种用户输入部件(未示出),诸如键盘、鼠标、操纵杆、手持控制器、方向盘、脚踏板和麦克风。
31.3d场景生成引擎118生成可以由立体视觉渲染引擎120渲染的3d场景。例如,3d场景可包括多个多边形网格,多边形网格由表示平面的角的3d坐标的顶点所限定的平面(例如,三角形)形成。3d场景的多边形网格还可以限定与平面或顶点相关联的颜色、纹理和透明度信息。3d场景还可以包括光信息,诸如环境光源和点光源。3d场景还可以限定相机位置以及与场景的取向。在一些实施方式中,3d场景生成引擎118是游戏引擎。例如,多边形网格可以限定虚拟世界,游戏引擎的用户控制的角色可以在该虚拟世界中移动。在一些实施方式中,随着角色在虚拟世界内移动,相机的位置和取向被更改,使得相机表示角色对虚拟世界的观看。3d场景生成引擎118的其他示例包括计算机辅助绘图系统和虚拟绘画或雕刻系
统。
32.立体视觉渲染引擎120从3d场景捕获立体视觉内容。例如,立体视觉渲染引擎120可以使用ods投射将3d场景渲染为立体视觉图像。在ods投射中,基于瞳孔间距(ipd)生成左眼图像和右眼图像(例如,左眼图像是从自虚拟相机位置在第一方向上偏移半个ipd的位置生成的,而右眼图像是从在与第一方向相反的第二方向上偏移的位置生成的)。从相机位置偏移的方向与相机瞄准的方向正交。在ods投射中,图像中的每个垂直像素列都被渲染为好像相机直接瞄准该列(即,相机水平旋转以瞄准该列)。这意味着用于生成左眼图像和右眼图像的偏移的方向以及相应的位置针对像素的每个垂直列而变化。
33.图2a-2d示出具有在不同方向上旋转的虚拟相机组件202的场景200的示例俯视图的示意图。在图2a中,虚拟相机组件202旋转至θ=0。虚拟相机组件202包括用于在θ=0生成立体视觉图像的左眼相机204l和右眼相机204r。左眼相机204l和右眼相机204r二者取向于相同的方向(即旋转到θ=0)。左眼相机204l在与相机的取向正交的方向上从虚拟相机组件202的中心偏移ipd的一半。类似地,右眼相机204r在相反方向上从虚拟相机组件202的中心偏移ipd的一半。可以看出,从左眼相机204l和右眼相机204r投射出的射线可以与场景200的不同部分相交。
34.图2b示出场景200,其中虚拟相机组件202被旋转至θ=1/4π。图2c示出场景200,其中虚拟相机组件202被旋转至θ=-1/2π。图2d示出场景200,其中虚拟相机组件202被旋转至θ=3/4π。从这些附图可以看出,左眼相机204l和右眼相机204r沿着虚拟瞳孔圆206移动,虚拟瞳孔圆206以中心点208为中心,半径为ipd的一半。在每个位置,左眼相机204l和右眼相机204r都取向于与虚拟瞳孔圆相切的角度。
35.图3是由本文实施例生成的示例ods格式图像文件300的构成的示意图。图像文件300包括左眼图像部分302l和右眼图像部分302r。左眼图像部分302l垂直堆叠在右眼图像部分302r的顶部。例如,ods格式图像文件300可以具有4096
×
4096像素的分辨率。左眼图像部分302l可以是图像文件300的上部4096
×
2048个像素,而右眼图像部分302r可以是图像文件300的下部4096
×
2048个像素。例如,每个图像部分包括3d场景的等矩形投射。例如,任一图像部分中的像素的底行对应于虚拟相机组件202正下方的3d场景部分,任一图像部分中的像素的中间行对应于3d场景在虚拟相机组件202正前方的部分(即与相机处于相同的垂直位置处),且任一图像部分中的像素的顶行对应于虚拟相机组件202正上方的3d场景部分。在每个图像部分中,像素的水平位置被映射到虚拟相机组件202的旋转角。
36.在一些实施方式中,虚拟相机组件202的完整旋转(例如,旋转2π(360度))跨像素的列而被映射。例如,每个图像部分的第一列中的像素可以对应于当虚拟相机组件202取向为

π角度时捕获的场景部分,每个图像部分的中间列的像素可以对应于当虚拟相机组件202取向为0度角时捕获的场景部分,而每个图像部分的最后一列像素可以对应于当虚拟相机组件202取向为π角度时捕获的场景部分。
37.为了说明该映射,示出左眼图像部分302l的左像素列304l、左像素列306l和左像素列308l。此外,示出右眼图像部分302r的右像素列304r、右像素列306r和右像素列308r。当虚拟相机组件202取向为角度θ=-1/2π时(即,如图2c所示),左眼相机204l和右眼相机204r分别捕获左像素列304l和右像素列304r。当虚拟相机组件202取向为角度θ=0时(即,如图2a所示),左眼相机204l和右眼相机204r分别捕获左像素列306l和右像素列306r。当虚
拟相机组件202取向为角度θ=3/4π时(即,如图2d所示),左眼相机204l和右眼相机204r分别捕获左像素列308l和右像素列308r。当然,这些示例之间有很多像素列,在附图中未示出。如附图所示,左眼相机204l和右眼相机204r的位置和取向二者都针对每个像素列而改变。
38.图4是示例vr180格式图像文件400的构成的示意图。图像文件400包括左眼图像部分402l和右眼图像部分402r。左眼图像部分402l和右眼图像部分402r并排放置。例如,vr180格式的图像文件400可以具有3840
×
2160像素的分辨率。左眼图像部分402l可以是图像文件400的左1920
×
2160像素,而右眼图像部分402r可以是图像文件400的右1920
×
2160像素。例如,每个图像部分包括3d场景的等矩形投射。与图像文件300相似,图像部分中的任一者中的底部像素行对应于3d场景在虚拟相机组件202正下方的部分,图像部分中的任一者中的中部像素行对应于3d场景在虚拟相机组件202正前方的部分(即与相机处于相同的垂直位置处),并且图像部分中的任一者中的上部像素行对应于3d场景在虚拟相机组件202正上方的部分。
39.在每个图像部分内,像素的水平位置被映射到虚拟相机组件202的旋转角。在一些实施方式中,虚拟相机组件202的半旋转(例如,旋转π(180度))跨每个图像部分中的像素列而被映射。例如,每个图像部分的第一列的像素可以对应于当虚拟相机组件202取向为

1/2π角度时捕获的场景部分,每个图像部分的中间列的像素可以对应于当虚拟相机组件202取向为0度角时捕获的场景部分,并且每个图像部分的最后一列像素可以对应于当虚拟相机组件202取向为1/2π角度时捕获的场景部分。
40.为了说明该映射,示出左眼图像部分402l的左像素列404l、左像素列406l和左像素列408l。此外,示出右眼图像部分402r的右像素列404r、右像素列406r和右像素列408r。当虚拟相机组件202取向为角度θ=-1/2π时(即,如图2c所示),左眼相机204l和右眼相机204r分别捕获左像素列404l和右像素列404r。当虚拟相机组件202取向为角度θ=0时(即,如图2a所示),左眼相机204l和右眼相机204r分别捕获左像素列406l和右像素列406r。当虚拟相机组件202取向为角度θ=1/4π时(即,如图2b所示),左眼相机204l和右眼相机204r分别捕获左像素列408l和右像素列408r。当然,这些示例之间有很多像素列,在附图中未示出。
41.如图3和4所示,左眼相机204l和右眼相机204r的位置和取向二者针对示例图像300和400中的每个像素列而改变。这种在改变的相机位置在渲染3d场景时不是典型的。用于从3d场景渲染ods格式或vr180格式的立体视觉图像的一种技术是对每个像素列进行狭缝渲染。换言之,为每只眼睛和图像中的每个像素列渲染单个的一像素宽的窄视场图像。因为使用此技术必须进行的渲染数目,所以性能可能不足,并且可能会妨碍实时流送应用程序(例如,使用狭缝渲染来渲染ods或vr180格式图像会花费很长时间,并且要使用大量处理器循环)。
42.现在回到图1,立体视觉渲染引擎120可包括顶点偏移引擎122和场景构建引擎124。顶点偏移引擎122可以调整3d场景生成引擎118所生成的3d场景的顶点的位置,使得渲染的场景表现为如同相机位置对于图像像素的每个垂直列都已改变。在一些实施方式中,顶点偏移引擎122是通过gpu的一个或多个着色器(诸如顶点着色器或几何着色器)执行的指令来实现的。指令例如可使得顶点着色器计算虚拟相机组件的虚拟瞳孔圆上的点,切线
在该点与特定的顶点相交。然后,基于所识别的点或切线,可以计算顶点的偏移量。在一些实施方式中,gpu的顶点着色器将偏移应用于顶点的位置。例如,该偏移可以对应于所识别的点与虚拟相机组件202的中心(即,瞳孔圆的中心)之间的矢量。
43.在一些实施方式中,所识别的点、切线或偏移中的一个或多个与顶点一起存储,并在之后的渲染阶段应用。例如,顶点的位置可以由几何着色器基于顶点着色器之前计算出的偏移(或者所识别的点或切线)进行调整。在一些实施方式中,为每只眼睛识别不同的点和切线。然后,可以为每个瞳孔计算不同的偏移,并在为每只眼睛渲染图像期间由几何着色器应用不同的偏移。
44.图5a和5b是向3d场景的顶点500应用偏移的示意图。这些偏移可由gpu中的顶点着色器应用以渲染立体视觉图像的左眼和右眼部分。
45.如图5a所示,顶点500被偏移以用于渲染左眼图像部分,顶点500在偏移位置中被示为左顶点508l。在该示例中,沿着虚拟瞳孔圆206识别左点502l,左切线504l在此与顶点500的位置相交。左切线504l是顺时针取向的射线,其在左点502l处与圆相切。在虚拟瞳孔圆206的左点502l和中心点208之间确定左偏移矢量506l。然后,可将左偏移矢量506l应用于顶点500,以确定应该将左顶点508l置于何处。可以看出,左顶点508l是沿着从中心点208开始的左偏移射线510l设置的。左偏移射线510l相对于中心208具有与左切线504l相对于左点502l所具有的相同的角度。因此,从设置在中心点208的相机对左顶点508l的渲染将与从设置在左点502l的相机对顶点500的渲染相同或几乎相同。
46.如图5b所示,顶点500被偏移以用于渲染右眼图像部分,顶点500在偏移位置中被示为右顶点508r。在该示例中,沿着虚拟瞳孔圆206识别右点502r,右切线504r在此与顶点500的位置相交。右切线504r是逆时针取向的射线,其在右点502r处与圆相切。在虚拟瞳孔圆206的右点502r和中心点208之间确定右偏移矢量506r。然后,可将右偏移矢量506r应用于顶点500,以确定应该将右顶点508r置于何处。可以看出,右顶点508r是沿着从中心点208开始的右偏移射线510r设置的。右偏移射线510r相对于中心208具有与右切线504r相对于右点502r所具有的相同的角度。因此,从设置在中心点208的相机对右顶点508r的渲染将与从设置在右点502r的相机对顶点500的渲染相同或几乎相同。
47.通过应用图5a和图5b所示的偏移,可以从单个相机位置生成ods投射图像,诸如ods格式文件或vr180格式文件。通过偏移重新定位顶点可从单个相机位置调整3d场景以用于渲染,并补偿产生立体视觉定向投射所通常需要的相机位置变化。例如,进行偏移以允许通过从单个相机位置开始的立体视觉定向投射来渲染图像。这些偏移可以减少捕获立体视觉内容所需的渲染数目,从而减少捕获立体视觉内容所需的处理周期和时间。
48.现在回到图1,场景构建引擎124可以基于3d场景生成引擎118所生成的3d场景来构建修改的场景。例如,场景构建引擎124可以从3d场景复制和定位几何实体,使得可以在单个渲染中生成左眼图像部分和右眼图像部分。
49.在一些实施方式中,可通过在不同的垂直位置复制来自3d场景的几何实体来生成ods格式文件,使得将第一组几何实体定位用于生成左眼图像部分,将第二组几何实体定位用于生成右眼图像部分。第一组几何实体可以在第二组几何实体上方垂直偏移。此外,场景构建引擎124可以剪切来自向下延伸到右眼图像部分中的第一组几何实体的任何三角形。类似地,场景构建引擎124可以剪切来自向上延伸到左眼图像部分中的第二组几何实体的
任何三角形。在复制并剪切三角形之后,可以基于顶点偏移引擎122所计算的值来重新定位三角形的顶点。
50.因为顶点偏移引擎122可用于调整顶点的位置,所以可以渲染3d场景(或3d场景的一部分)而无需为像素的每个垂直列调整相机的位置。相反,重新定位的顶点具有与不断重新定位相机相同的效果。一旦重新定位顶点,就可以使用每只眼睛单个渲染或少量渲染来捕获立体视觉图像。渲染数目的这种减少可以显著改善性能。例如,使用顶点偏移引擎122可将捕获合成3d内容所需的时间量减少1000倍以上。立体视觉渲染引擎120的一些实施方式允许实时渲染宽视场立体视觉内容,包括360度立体视觉内容,诸如ods格式文件。
51.场景构建引擎124还可将沿垂直边缘的三角形复制到图像部分的相对垂直边缘上,使得在渲染时跨360度视场的边缘来延伸这些三角形。场景构建引擎124还可剪切沿图像部分的垂直边缘的三角形。
52.在一些实施方式中,可通过在不同的水平位置复制来自3d场景的几何实体来生成vr180格式文件,使得将第一组几何实体定位用于生成左眼图像部分,将第二几何实体集合定位用于生成右眼图像部分。第一组几何实体可以水平偏移到第二组几何实体左方。此外,场景构建引擎124可以剪切来自延伸进入右眼图像部分中的第一组几何实体的任何三角形。类似地,场景构建引擎124可以剪切来自延伸进入左眼图像部分中的第二组几何实体的任何三角形。类似于ods格式文件,在复制并剪切三角形之后,可以基于顶点偏移引擎122所计算的值来重新定位三角形的顶点。
53.立体视觉内容捕获计算设备102可以生成并输出立体视觉内容110,其可以经由网络108分发或发送到一个或多个计算设备(例如计算设备104)。在一个示例实施方式中,ar/vr内容包括三维场景和/或图像。此外,ar/vr内容可包括流送或分发到一个或多个计算设备的音频/视频信号。根据一个说明性示例实施方式,虚拟现实(vr)至少在某些情况下可通过在现实世界或想象世界或环境中的地方以不同程度复制或模拟环境或物理存在来生成沉浸式环境。增强现实(ar)至少在某些情况下可通过将计算机生成的图像覆盖在用户对现实世界的视场上来生成沉浸式环境。
54.存储器112可包括一个或多个非暂时性计算机可读存储介质。存储器112可以存储可用于为用户生成沉浸式环境的指令和数据。
55.处理器组件114包括能够执行指令(诸如存储器112所存储的指令)以进行各种任务(诸如生成3d场景并渲染立体视觉图像)的一个或多个设备。例如,处理器组件114可包括中央处理单元(cpu)和/或图形处理器单元(gpu)。例如,如果有gpu,则与生成立体视觉内容相关联的某些图像或视频渲染任务可通过gpu而不是cpu来进行。
56.通信模块116包括用于与诸如计算设备104的其他计算设备通信的一个或多个设备。通信模块116可经由无线或有线网络进行通信。
57.在一些实施方式中,计算设备104是可以被配置为提供或输出立体视觉内容来为用户生成沉浸式ar/vr环境的移动设备(例如,智能电话)。计算设备104可包括存储器130、处理器组件132、通信模块134、显示设备136和传感器系统138。存储器130可包括ar/vr应用140。存储器130还可以存储从立体视觉内容捕获计算设备102接收的立体视觉内容110。计算设备104还可包括各种用户输入部件(未示出),诸如使用无线通信协议与计算设备104进行通信的手持电子设备。
58.存储器130可以类似于存储器112,例如可以存储可用于在沉浸式环境中为用户显示立体视觉内容110的指令和数据。处理器组件132可以类似于处理器组件114,且通信模块134可以类似于通信模块116。
59.显示设备136例如可包括lcd(液晶显示器)屏幕、oled(有机发光二极管)屏幕、触摸屏、或用于向用户显示图像或信息的任何其他屏幕或显示器。在一些实施方式中,显示设备136包括被布置为将光投射到用户眼睛一部分上的光投射器。
60.传感器系统138可包括各种传感器,包括惯性运动单元(imu)142。传感器系统138的实施方式还可包括不同类型的传感器,例如包括光传感器、音频传感器、图像传感器、距离和/或接近度传感器、接触传感器(诸如电容传感器)、定时器、和/或其他传感器和/或传感器的不同组合。
61.imu 142检测计算设备104和/或hmd 106的运动、移动和/或加速度。imu142可包括各种类型的传感器,诸如加速度计、陀螺仪、磁力计、以及其他这样的传感器。可以基于imu 142中包括的传感器提供的数据来检测和追踪hmd 106的位置和取向。所检测的hmd 106的位置和取向可以允许系统进而检测和追踪用户的注视方向和/或头部移动。
62.ar/vr应用程序140可以经由计算设备104的一个或多个输出设备(诸如显示设备136、扬声器(未示出)、或其他输出设备)生成并向用户呈现沉浸式环境。在一些实施方式中,ar/vr应用140包括存储在存储器130中的指令,在通过处理器组件132执行时所述指令使得处理器组件132进行本文所述的操作。例如,ar/vr应用140例如可以例如基于ar/vr内容(诸如立体视觉内容110)来生成沉浸式环境并将其呈现给用户。
63.立体视觉内容110可包括3d场景,3d场景可以渲染为图像或视频以显示在显示设备136上。例如,3d场景可包括表示为多边形网格的一个或多个对象。多边形网格可以与各种表面纹理(诸如颜色和图像)相关联。3d场景还可包括其他信息,诸如用于渲染3d场景的光源。
64.ar/vr应用程序140可以基于从imu 142和/或传感器系统138的其他部件接收的输入来更新ar/vr环境。例如,imu 142可以检测计算设备104或hmd 106的运动、移动或加速度。imu 142可包括各种不同类型的传感器,诸如加速度计、陀螺仪、磁力计、以及其他这样的传感器。可以基于imu 142中包括的传感器提供的数据来检测和追踪hmd 106的位置和取向。所检测的hmd 106的位置和取向可以允许系统进而检测和追踪用户的注视方向和/或头部移动。基于所检测的注视方向和头部移动,ar/vr应用140可以更新ar/vr环境,以反映环境内用户的取向和/或位置的改变。例如,ar/vr应用140可以基于所检测的用户的头部方向来选择并使得立体视觉内容110的一部分被显示。
65.虽然图1中将计算设备104和hmd 106示为单独的设备,但是在一些实施方式中,计算设备104可包括hmd 106。在一些实施方式中,计算设备104经由电缆与hmd 106通信,如图1所示。例如,计算设备104可将视频信号传输到hmd 106以供为用户显示,并且hmd 106可将运动、位置和取向信息中的一个或多个传输到计算设备104。在一些实施方式中,hmd 106包括可以放置计算设备104的腔室。在一些实施方式中,用户能够在佩戴hmd 106的同时观看计算设备104的显示设备136(例如,通过hmd 106内的透镜或孔)。例如,通过将显示设备136的屏幕划分为当通过hmd观看时仅用户的左眼可以观看的第一图像以及当通过hmd观看时仅用户的右眼可以观看的第二图像,计算设备104和hmd 106可以共同充当立体视觉观看
器。
66.虽然图1示出立体视觉内容捕获计算设备102与计算设备104分离,但是在一些实施方式中,是同一个计算设备进行立体视觉内容捕获计算设备102和计算设备104的操作。
67.网络108可以是互联网、局域网(lan)、无线局域网(wlan)、和/或任何其他网络。
68.图6是捕获合成立体视觉内容的示例方法600的示意图。该方法600例如可通过立体视觉渲染引擎120来进行。图7是用于生成立体视觉图像706的方法600的实施方式的示意图。
69.在操作602中,接收3d场景。例如,可以从3d场景生成引擎118接收3d场景。3d场景例如可包括多个几何实体,诸如包括由顶点限定的多个三角形面的多边形网格。
70.在操作604中,将3d场景投射到每只眼睛的立方体表面上。在投射期间,可以重新定位3d场景的顶点以针对从单个相机位置进行投射来调整。作为示例,顶点可以如先前所述的那样偏移。在一些实施方式中,在投射或渲染期间通过gpu的顶点着色器来重新定位顶点。
71.图7示出将3d场景700投射到左眼图像立方体704l和右眼图像立方体704r的表面上的示例。左眼图像立方体704l和右眼图像立方体704r二者都包括六个表面,它们根据与表面正交的矢量的坐标在图7中被分别标记。在场景的投射之后,在图像立方体的每个表面上形成包括3d场景的内容的图像,3d场景的内容是在相关联的图像立方体的中心处的相机透过所述表面所可见的。
72.来自3d场景700的投射到左眼图像立方体704l上的图像可以基于左眼偏移3d场景702l。可通过向3d场景中的每个顶点应用顶点偏移来生成左眼偏移3d场景702l。在一些实施方式中,当顶点被投射(或渲染)在左眼图像立方体704l上时,由gpu的顶点着色器应用偏移。类似地,来自3d场景700的投射到右眼图像立方体704r上的图像可以基于右眼偏移3d场景702r。
73.在操作606中,基于与像素相关联的垂直角(θ)和水平角(φ),通过将从适当的立方体的中心投射的射线与其中一个表面相交来确定立体视觉图像的像素值。在一些实施方式中,像素值由gpu的片段着色器确定。片段着色器可以基于像素是在左眼图像部分内还是在右眼图像部分内来选择适当的立方体映射,计算方向矢量(例如,基于与像素相关联的垂直角(θ)和水平角(φ)),以及从所选立方体映射的表面读取像素值。
74.在图7中,通过基于立体视觉图像706的像素位置读取像素值来生成立体视觉图像706。图8是分别从左眼图像立方体映射704l和右眼图像立方体704r读取像素800l和像素800r的值以生成立体视觉图像706的过程的示意图。像素800l来自立体视觉图像706的左眼图像部分,并位于与垂直角0和水平角3/4π相关联的位置。因为像素800l在左眼图像部分中,所以选择左眼图像立方体704l。然后,左切线802l从虚拟瞳孔圆206上的点804l投射。点804l的位置和左切线802l的方向是基于与像素800l相关联的垂直角和水平角来确定的。然后,找到与左眼图像立方体704l的表面的交点806l。然后,可以根据在相交点806l处识别的、投射在左眼图像立方体704l的表面上的图像的像素来确定像素800l的值。
75.可通过类似的方式确定像素800r的值。在该示例中,像素800r来自立体视觉图像706的右眼图像部分,并位于与垂直角0和水平角3/4π相关联的位置。因为像素800r在右眼图像部分中,所以选择右眼图像立方体704r。然后,右切线802r从虚拟瞳孔圆206上的点
804r投射。点804r的位置和右切线802r的方向是基于与像素800r相关联的垂直角和水平角来确定的。然后,找到与右眼图像立方体704r的表面的交点806r。然后,可以根据在相交点806r处识别的、投射在右眼图像立方体704r的表面上的图像的像素来确定像素800r的值。
76.在一些实施方式中,通过以基于立体视觉图像中的像素的位置确定的角度从虚拟相机组件的中心点208投射射线来读取立体视觉图像的像素的值。例如,通过以下操作来读取像素800l:将来自中心点208的射线以垂直角度0和水平角度3/4π投射到左眼图像立方体704l中以识别交点。类似地,通过以下操作来读取像素800r:将来自中心点208的射线以垂直角度0和水平角度3/4π投射到右眼图像立方体704l中以识别交点。
77.图9是捕获合成立体视觉内容的示例方法900的示意图。该方法900例如可通过立体视觉渲染引擎120来进行。图10是用于生成立体视觉图像1030的方法900的实施方式的示意图。
78.在操作902中,接收3d场景。操作902可以类似于先前所述的操作602。
79.在操作904中,将3d场景投射到等矩形圆柱体表面,其生成曲面三角形。在一些实施方式中,通过确定从相机位置开始并经过3d场景的每个顶点的射线的垂直角和水平角来进行投射。然后可以将顶点映射到圆柱体表面上的坐标,该圆柱体具有以相机位置为中心的垂直轴。对于顶点还可以确定深度坐标。深度坐标例如可以基于从圆柱体的中心轴到顶点的距离来确定。在一些实施方式中,所有剔除(culling)(包括截锥体剔除)都被禁用,使得投射场景的整个360度。一些实施方式禁用除深度剔除之外的所有剔除。
80.图10示出将3d场景1000投射到等矩形投射1002上的示例。在该示例中,3d场景1000包括曲面三角形1004,其显示在等矩形投射1002的圆柱体表面上。
81.现在回到图9,在操作906,确定每个投射的顶点的左偏移矢量和右偏移矢量。确定左偏移矢量和右偏移矢量可以基于ipd参数。例如,可将等于ipd一半的值用于确定左偏移矢量和右偏移矢量。左偏移矢量和右偏移矢量可以如先前参考至少图5a和图5b所述的那样确定。在一些实施方式中,使用gpu的顶点着色器来确定左偏移矢量和右偏移矢量。在一些实施方式中,将着色器指令提供给顶点着色器,以实现左偏移矢量和右偏移矢量的确定。在确定之后,可将左偏移矢量和右偏移矢量与矢量一起存储。
82.在操作908,基于边长和垂直位置来对投射的曲面三角形进行细分(tessellate)以减少变形。3d场景的三角形通过投射弯曲到等矩形圆柱体上,因为在投射之后,三角形的边缘沿着圆柱体的曲面延伸。这些曲面三角形在渲染过程中可能会变平和变形,这会导致其边缘不遵循圆柱体曲面表面的平面三角形。为了将变形最小化,可以对曲面三角形进行细分,以生成具有可以映射到圆柱体的曲面表面的更多顶点的附加的更小三角形。在一些实施方式中,基于三角形的边长和三角形的垂直位置来细分曲面三角形。因为在等矩形投射的顶部和底部附近可能有更多的变形,所以等矩形投射的顶部和底部附近的曲面三角形可能要比等矩形投射的垂直中部附近的曲面三角形更加细分。在图10中,等矩形投射1006示出基于曲面三角形1004的细分三角形1008的示例。
83.在一些实施方式中,通过gpu的外壳着色器和域着色器来细分投射的曲面三角形。三角形在等矩形圆柱体上的投射可能会产生非线性z/w值。在一些实施方式中,向三角形赋予细分因子,细分因子将非线性z/w值的内插误差最小化,并提供边缘的良好线性近似。一些实施方式包括质量水平参数,其用于指定可接受的变形水平。
84.在操作910中,对每只眼睛复制细分三角形并使其垂直偏移。例如,可以复制细分三角形,使得存在针对左眼的第一组三角形和针对右眼的第二组三角形。第一组三角形可以与第二组三角形垂直偏移,从而使得第一组三角形与等矩形圆柱体投射的左眼图像部分对准,而第二组三角形与等矩形圆柱体投射的右眼图像部分对准。在至少一些实施方式中,细分三角形被gpu的几何着色器复制并垂直偏移。
85.在操作912中,使用相关联的左偏移矢量来重新定位细分三角形的顶点,并使用相关联的右眼偏移射线来重新定位复制的三角形的顶点。此外,可以根据相关联的左偏移矢量来偏移第一组三角形的顶点,并且可以根据相关联的右偏移矢量来偏移第二组三角形。在至少一些实施方式中,通过gpu的几何着色器将顶点重新定位。
86.在图10中,示出示例的等矩形投射1010。等矩形投射1010包括左眼图像部分1012和右眼图像部分1014。在该示例中,第一组三角形1016设置在左眼图像部分1012内,第二组三角形1018设置在右眼图像部分1014内。可以看出,第一组三角形1016从第二组三角形1018垂直偏移。此外,第一组三角形1016的顶点基于操作906中计算的左偏移矢量而偏移,且第二组三角形1016基于操作906中计算的右偏移矢量而偏移。在该示例中,将偏移进行了夸大,使得差异更加显而易见。
87.现在回到图9,在操作914中,复制并剪切设置在投射的左眼图像部分或投射的右眼图像部分的边界处的三角形。例如,跨边界延伸的三角形变成两个三角形,并且顶点被变换以使得硬件可以在图像边界适当地剪切它们。
88.在操作916,生成投射到最终ods位置的齐次坐标。例如,可通过将圆柱体上的投射位置映射到立体视觉图像内的对应位置来生成齐次坐标。此外,基于从圆柱体的中心轴到顶点的距离来为每个顶点确定z和w坐标值。例如可将深度值确定为使得深度是平坦的,并使得gpu z缓存(z-buffering)起作用。
89.在图10中,示出在投射到最终ods位置之后的立体视觉图像1030。立体视觉图像1030是通过基本上沿着垂直线展开等矩形投射的圆柱体而形成的。如关于914所讨论的,跨越形成ods投射的边缘的垂直线的任何三角形都被复制,使得它们出现在ods图像的两端。
90.上述方法900用单个渲染捕获360度合成ods格式的内容,从而提供了以数量级幅度优于常规技术的性能改进。在存在其他系统工作负载的情况下,一些实施例能够以不到每帧30毫秒的速度运行。
91.虽然示例方法900捕获ods格式的内容,但是其他实施方式可以捕获其他格式的其他合成内容。例如,在一些实施方式中,可以使用与方法900相似的方法来创建vr180格式内容。在渲染vr180内容的一些实施方式中,截锥体剔除用于剔除vr180内容的180度区域之外的三角形。此外,复制的顶点并排偏移,而不是垂直偏移。此外,因为vr180内容不环绕,所以不跨图像的垂直边缘复制三角形。
92.虽然本公开主要讨论了以ods格式生成立体视觉360度内容,但是一些实施例也以其他格式渲染立体视觉360度内容,诸如立体浮雕(stereo anaglyph)。如本文所述捕获的立体视觉内容可以没有接合痕迹,因为是在单个扫描中渲染整个场景。在一些实施例中,在渲染过程之后应用后处理滤镜,以提高合成内容的视觉保真度。
93.图11示出可以与本文所述技术一起使用的计算机设备1100和移动计算机设备1150的示例。计算设备1100包括处理器1102、存储器1104、存储设备1106、连接到存储器
1104和高速扩展端口1110的高速接口1108、以及连接到低速总线1114和存储设备1106的低速接口1112。部件1102、1104、1106、1108、1110和1112中的每一个都使用各种总线互连,并且可以安装在公共主板上,或者视情况采用其他方式安装。处理器1102可以处理在计算设备1100内执行的指令,包括存储在存储器1104中或存储在存储设备1106中的指令,以在外部输入/输出设备——诸如耦接到高速接口1108的显示器1116上显示gui的图形信息。在其他实施方式中,可以视情况连同多个存储器和多个类型的存储器一起使用多个处理器和/或多个总线。此外,可以连接多个计算设备1100,其中每个设备提供必要操作的一部分(例如,作为服务器组、刀片服务器群组、或多处理器系统)。
94.存储器1104在计算设备1100内存储信息。在一个实施方式中,存储器1104是一个或多个易失性存储单元。在另一个实施方式中,存储器1104是一个或多个非易失性存储单元。存储器1104可以也可以是其他形式的计算机可读介质,例如磁盘或光盘。
95.存储设备1106能够为计算设备1100提供大容量存储。在一种实施方式中,存储设备1106可以是或包含计算机可读介质,例如软盘设备、硬盘设备、光盘设备、磁带设备、闪存或其他类似的固态存储设备或设备阵列,包括在存储局域网或其他配置中的设备。计算机程序产品可以在信息载体中有形地具体实施。计算机程序产品还可以包含在执行时进行一种或多种方法的指令,例如上述方法。信息载体是计算机或机器可读介质,诸如存储器1104、存储设备1106、或处理器1102上的存储器。
96.高速控制器1108管理计算设备1100的带宽密集型操作,而低速控制器1112管理较低带宽密集型操作。这种功能分配仅是示例性的。在一个实施方式中,高速控制器1108耦接到存储器1104、显示器1116(例如,通过图形处理器或加速器),并耦接到高速扩展端口1110,高速扩展端口1110可以接受各种扩展卡(未示出)。在实施方式中,低速控制器1112耦接到存储设备1106和低速扩展端口1114。可包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可以耦接到一个或多个输入/输出设备,例如键盘、指示设备、扫描仪、或连网设备(诸如交换机或路由器),例如通过网络适配器来耦接。
97.计算设备1100可通过多种不同形式实现,如附图所示。例如,可将其实现为标准服务器1120,或者在这样的服务器的群组中实现多次。此外,可将其实现为机架式服务器系统的一部分。此外,它可以在诸如膝上型计算机1122的个人计算机中实现。替选地,来自计算设备1100的部件可以与诸如设备1150的移动设备(未示出)中的其他部件组合。这样的设备中的每一个可以包含计算设备1100、1150中的一个或多个,并且整个系统可以由相互通信的多个计算设备1100、1150组成。
98.计算设备1150包括处理器1152、存储器1164、诸如显示器1154的输入/输出设备、通信接口1166、以及收发器1168等部件等。设备1150还可以设置有存储设备,诸如微型驱动器或其他设备,以提供额外的存储。部件1150、1152、1164、1154、1166和1168中的每一个使用各种总线互连,并且可将若干部件安装在公共主板,或者视情况采用其他方式。
99.处理器1152可以执行计算设备1150内的指令,包括存储在存储器1164中的指令。可将处理器实现为包括分离的和多个模拟和数字处理器的芯片的芯片组。处理器例如可以提供设备1150的其他部件的协调,诸如对通过设备1150运行的用户界面、应用程序、以及通过设备1150的无线通信的控制。
100.处理器1152可通过耦接到显示器1154的控制接口1158和显示器接口1156与用户
通信。显示器1154例如可以是tft lcd(薄膜晶体管液晶显示器)或oled(有机发光二极管显示器)或其他合适的显示技术。显示接口1156可包括用于驱动显示器1154向用户呈现图形和其他信息的合适电路。控制接口1158可以从用户接收命令并将其转换用于提交给处理器1152。此外,可以提供与处理器1152通信的外部接口1162,从而实现设备1150与其他设备的近距离通信。外部接口1162例如可以提供一些实施方式中的有线通信,或其他实施方式中的无线通信,并且可以使用多个接口。
101.存储器1164在计算设备1150中存储信息。可将存储器1164实现为计算机可读介质、一个或多个易失性存储单元、一个或多个非易失性存储单元中的一个或多个。此外,可提供扩展存储器1174并通过扩展接口1172将其连接到设备1150,扩展接口1172例如可包括simm(单行存储模块)卡接口。这种扩展存储器1174可以为设备1150提供额外的存储空间,或者还可以存储用于设备1150的应用程序或其他信息。具体而言,扩展存储器1174可包括用于执行或补充上述过程的指令,并且可包括安全信息。因此,例如,可以提供扩展存储器1174作为设备1150的安全模块,并且可以使用允许安全使用设备1150的指令进行编程。此外,可经由simm卡连同附加信息一起提供安全应用程序,例如将识别信息以不可破解的方式放置在simm卡上。
102.存储器例如可包括闪存和/或nvram存储器,如下所述。在一个实施方式中,计算机程序产品在信息载体中有形地具体实施。计算机程序产品包含在执行时进行一种或多种方法(例如上述方法)的指令。信息载体是计算机或机器可读介质,例如存储器1164、扩展存储器1174、或处理器1152上的存储器,其例如可通过收发器1168或外部接口1162来接收。
103.设备1150可通过通信接口1166进行无线通信,通信接口1166可以在必要时包括数字信号处理电路。通信接口1166可以提供各种模式或协议下的通信,例如gsm语音呼叫、sms、ems或mms消息收发、cdma、tdma、pdc、wcdma、cdma2000或gprs等。此类通信例如可通过射频收发器1168发生。此外,短距离通信例如可使用蓝牙、wi-fi、或其他这样的收发器(未示出)发生。此外,gps(全球定位系统)接收器模块1170可以向设备1150提供附加的导航和位置相关的无线数据,这些数据可以视情况由设备1150上运行的应用使用。
104.设备1150还可以使用音频编解码器1160可听地通信,音频编解码器1160可以从用户接收语音信息并将其转换为可用的数字信息。音频编解码器1160可以类似地为用户生成可听的声音,诸如通过扬声器——例如在设备1150的头戴装置中来生成。这种声音可包括来自语音电话呼叫的声音,可包括记录的声音(例如,语音消息、音乐文件等),并且还可包括由在设备1150上运行的应用生成的声音。
105.如图所示,计算设备1150可通过多种不同的形式来实现。例如,可将其实现为蜂窝电话1180。此外,可将其实现为智能电话1182、个人数字助理、或其他类似的移动设备的一部分。
106.本文所述系统和技术的各种实施方式可通过数字电子电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现。这些不同的实施方式可包括一个或多个计算机程序中的实施方式,计算机程序可以在包括至少一个可编程处理器的可编程系统上执行的和/或解释,可编程处理器可以是专用或通用的,耦接为从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向其传输数据和指令。
107.这些计算机程序(也称为程序、软件、软件应用程序、或代码)包括用于可编程处理
器的机器指令,并且可通过高级过程和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所用,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如磁盘、光盘、存储器、可编程逻辑设备(pld)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于将机器指令和/或数据提供给可编程处理器的任何信号。
108.为了提供与用户的交互,可以在具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可由其向计算机提供输入的键盘和点击设备(例如鼠标或轨迹球)的计算机上实现本文所述的系统和技术。也可以使用其他种类的设备与用户进行交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。
109.本文所述系统和技术可以在包括后端部件(例如,作为数据服务器),或者包括中间件部件(例如,应用服务器),或者包括前端部件(例如,具有图形用户界面的客户端计算机或web浏览器,用户可由其与本文所述系统和技术的实施方式进行交互),或在包括这些后端、中间件或前端部件的任意组合的计算系统中实现。系统的部件可通过任何形式或媒介的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(lan)、广域网(wan)和互联网。
110.计算系统可包括客户端和服务器。客户端和服务器通常相互远离,并通过通信网络进行交互。客户端和服务器的关系是由于在各自计算机上运行、相互具有客户端-服务器关系的计算机程序而发生。
111.在一些实施方式中,图1所示的计算设备可包括与虚拟现实(vr头戴装置/hmd设备1190)对接的传感器,以产生用于观看立体视觉内容的沉浸式环境。例如,图1所示的计算设备1150或其他计算设备上包括的一个或多个传感器可以向vr头戴装置1190提供输入,或者总体上向vr空间提供输入。传感器可包括但不限于触摸屏、加速度计、陀螺仪、压力传感器、生物传感器、温度传感器、湿度传感器以及环境光传感器。计算设备1150可以使用传感器来确定vr空间中计算设备的绝对位置和/或检测到的旋转,然后将其用作对vr空间的输入。例如,计算设备1150可以合并到vr空间中作为虚拟对象,诸如控制器、激光指示器、键盘、武器等。当计算设备/虚拟对象被合并到vr空间时,用户对计算设备/虚拟对象的定位可以允许用户将计算设备定位,从而在vr空间中以某种方式观看虚拟对象。例如,如果虚拟对象代表激光指示器,则用户可以像实际的激光指示器一样操纵计算设备。用户可以上下、左右、画圆圈等方式移动计算设备,并以与使用激光指示器类似的方式使用该设备。
112.在一些实施方式中,可将计算设备1150上包括的或连接到计算设备1150的一个或多个输入设备用作vr空间的输入。输入设备可包括但不限于触摸屏、键盘、一个或多个按钮、触控板、触摸板、指示设备、鼠标、轨迹球、操纵杆、相机、麦克风、具有输入功能的耳机或耳塞、游戏控制器、或其他可连接的输入设备。在将计算设备合并到vr空间中时,用户与包括在计算设备1150上的输入设备进行交互会导致在vr空间中发生特定动作。
113.在一些实施方式中,计算设备1150的触摸屏可以渲染为vr空间中的触摸板。用户可以与计算设备1150的触摸屏进行交互。例如,在vr头戴装置1190中,交互被渲染为vr空间中渲染的触摸板上的动作。所渲染的动作可以控制vr空间中的虚拟对象。
114.在一些实施方式中,计算设备1150上包括的一个或多个输出设备可以向vr空间中的vr头戴装置1190的用户提供输出和/或反馈。输出和反馈可以是视觉的、听觉的、或音频的。输出和/或反馈可包括但不限于振动、一个或多个灯或闪光器的开、关、闪烁和/或闪耀、发出警示、播放铃声、播放歌曲以及播放音频文件。输出设备可包括但不限于振动电机、振动线圈、压电设备、静电设备、发光二极管(led)、闪光器和扬声器。
115.在一些实施方式中,计算设备1150可以作为计算机生成的3d环境中的另一个对象出现。可将用户与计算设备1150的交互(例如,旋转、摇动、对触摸屏的触摸、跨触摸屏上轻扫手指)解释为与vr空间中的对象进行交互。在vr空间中的激光指示器的示例中,计算设备1150在计算机生成的3d环境中表现为虚拟激光指示器。随着用户操纵计算设备1150,vr空间中的用户看见激光指示器的移动。在计算设备1150或vr头戴装置1190上的vr环境中,用户从与计算设备1150的交互中接收反馈。
116.在一些实施方式中,计算设备1150可包括触摸屏。例如,用户可通过特定方式来与触摸屏进行交互,该特定方式可以通过vr空间中发生的事情来模仿触摸屏上发生的事情。例如,用户可以使用捏放式动作来缩放在触摸屏上显示的内容。触摸屏上的这种捏放式动作可以使得在vr空间中提供的信息被缩放。在另一个示例中,可将计算设备渲染为计算机生成的3d环境中的虚拟书本。在vr空间中,可以在vr空间中显示书本的页面,并且可将用户手指跨触摸屏的轻扫解释为翻动/翻转虚拟书本的页面。在翻动/翻转每个页面时,除了看到页面内容变化之外,还可以向用户提供音频反馈,例如书本中页面翻动的声音。
117.在一些实施方式中,除了计算设备之外,还可以在计算机生成的3d环境中渲染一个或多个输入设备(例如,鼠标、键盘)。当在vr空间中渲染时,所渲染的输入设备(例如,所渲染的鼠标、所渲染键盘)可以用于控制vr空间中的对象。
118.计算设备1100意图代表各种形式的数字计算机和设备,包括但不限于膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算设备1150意图代表各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能手机和其他类似的计算设备。本文所示的部件、它们的连接和关系以及它们的功能仅是示例性的,而不是要限制本文所述和/或要求保护的本发明的实施方式。
119.非限制性示例实施例包括:
120.示例1:一种方法,包括:将三维场景投射到左眼图像立方体和右眼图像立方体上;重新定位三维场景的顶点以针对从单个相机位置进行渲染来调整;将立体视觉图像的像素映射到所述左眼图像立方体和所述右眼图像立方体上的点;以及使用所映射的像素的值来生成所述立体视觉图像。
121.示例2:根据示例1所述的方法,其中,重新定位所述三维场景的所述顶点包括:使用gpu的顶点着色器来重新定位所述顶点。
122.示例3:根据示例1至2中的任一项所述的方法,其中,重新定位所述三维场景的所述顶点包括对于每个顶点进行以下操作:识别虚拟瞳孔圆的、与该顶点相交的切线;基于所识别的切线来确定偏移矢量;以及基于所述偏移矢量来重新定位该顶点。
123.示例4:根据示例3所述的方法,其中,基于所识别的切线确定偏移矢量包括:基于所识别的切线,在所述虚拟瞳孔圆上识别切点;以及通过从所述虚拟瞳孔圆的中心减去所述切点来确定所述偏移矢量。
124.示例5:根据示例1至4中的任一项所述的方法,其中,将立体视觉图像的像素映射到所述左眼图像立方体和所述右眼图像立方体上的点包括对于每个像素进行以下操作:基于该像素在所述立体视觉图像内的位置,从所述左眼图像立方体和所述右眼图像立方体中选择图像立方体;基于该像素在所述立体视觉图像内的位置,针对该像素确定射线;以及向所选择的图像立方体投射所述射线以识别交点。
125.示例6:根据示例1至5中的任一项所述的方法,还包括:使用视频游戏引擎生成所述三维场景;以及在视频游戏会话期间将所述立体视觉图像流送到另一个计算设备。
126.示例7:一种计算设备,包括:至少一个处理器;以及存储指令的存储器,所述指令在被所述至少一个处理器执行时使得所述计算设备:接收三维场景;重新定位所述三维场景的顶点,以补偿定向立体视觉投射中相机位置的变化;以及基于所重新定位的顶点来生成立体视觉图像。
127.示例8:根据示例7所述的计算设备,其中,所述至少一个处理器包括图形处理单元,且所述指令还使得所述计算设备使用所述图形处理单元的顶点着色器来重新定位所述顶点。
128.示例9:根据示例1至5中的任一项所述的计算设备,其中,其中,所述指令还使得所述计算设备使用所述图形处理单元的外壳着色器和域着色器来细分所述三维场景。
129.示例10:根据示例9所述的计算设备,其中,所述指令还使得所述计算设备基于所述三维场景的三角形的边长来确定细分因子。
130.示例11:根据示例9至10中的任一项所述的计算设备,其中,所述指令还使得所述计算设备基于所述三维场景的三角形的垂直位置来确定细分因子。
131.示例12:根据示例7至11中的任一项所述的计算设备,其中,使得所述计算设备基于所重新定位的顶点来生成立体视觉图像的指令使得所述计算设备:将所重新定位的顶点中的至少一部分顶点投射到图像立方体上;以及使用所投射的顶点来生成所述立体视觉图像。
132.示例13:根据示例7至12中的任一项所述的计算设备,其中,所述指令进一步使得所述计算设备:将所述三维场景的至少一部分投射到等矩形圆柱体投射上;确定所述三维场景的顶点的左偏移矢量和右偏移矢量;以及复制所投射的三维场景以形成左场景和右场景;其中,使得所述计算设备重新定位所述三维场景的顶点的指令包括:使得所述计算设备使用所述左偏移矢量偏移所述左场景的顶点以及使用所述右偏移矢量偏移所述右场景的指令;以及其中,使得所述计算设备基于所重新定位的顶点来生成立体视觉图像的指令包括:使得所述计算设备基于所述左场景和所述右场景来生成所述立体视觉图像的指令。
133.示例14:一种方法,包括:将三维场景投射到等矩形圆柱体上;确定所投射的三维场景的顶点的左偏移矢量和右偏移矢量;复制所投射的三维场景以生成复制场景;以统一偏移量偏移所述复制场景的顶点;将所述左偏移矢量应用于所投射的三维场景和所述复制场景中的至少一个的顶点;生成所投射的三维场景和所述复制场景的顶点的齐次坐标;以及投射所投射的三维场景和所述复制场景的顶点以生成立体视觉图像。
134.示例15:根据示例14所述的方法,还包括:在投射所述三维场景之前禁用剔除。
135.示例16:根据示例14至15中的任一项所述的方法,其中,所述统一偏移量是将所述复制场景定位到所述三维场景下方的垂直偏移。
136.示例17:根据示例14至15中的任一项所述的方法,其中,所述统一偏移量是将所述复制场景定位到所述三维场景一侧的水平偏移。
137.示例18:根据示例14至17中的任一项所述的方法,其中,确定所投射的三维场景的顶点的左偏移矢量和右偏移矢量包括:使用图形处理单元的顶点着色器来确定所述左偏移矢量和所述右偏移矢量。
138.示例19:根据示例14至18中的任一项所述的方法,其中,将所述左偏移矢量应用于所投射的三维场景和所述复制场景中的至少一个的顶点包括:使用图形处理单元的几何着色器来应用所述左偏移矢量。
139.示例20:根据示例14至19中的任一项所述的方法,其中,所述立体视觉图像具有360度视场,并且所述方法进一步包括:复制所投射的三维场景的、跨越所述立体视觉图像的垂直边界的三角形;以及剪切所复制的三角形,使得所剪切的三角形不跨越所述垂直边界。
140.已经描述多个实施例。但是应当理解,在不脱离本说明书的精神和范围的情况下,可以进行各种修改。
141.此外,附图中描绘的逻辑流程不需要所示的特定顺序或连续顺序来实现期望结果。此外,可以向所描述的流程提供其他步骤,或从中去除步骤,并且可以向所描述的系统添加其他部件,或从中移除其他部件。因此,其他实施例落入所附权利要求书的范围。
142.虽然已经如本文所述的那样说明了所述实施方式的某些特征,但是本领域技术人员现在能够想到很多修改、替换、改变和等同物。因此应当理解,所附权利要求书旨在覆盖落入实施方式范围的所有此类修改和改变。应当理解,它们仅以示例而非限制的方式给出,并且可以对形式和细节进行各种改变。除了相互排斥的组合之外,本文所述的装置和/或方法的任何部分可通过任何组合进行组合。本文所述实施方式可包括所述不同实施方式的功能、部件和/或特征的各种组合和/或子组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1