发明内容
有鉴于此,本申请提供了一种虚拟现实设备及其显示方法,主要用于解决现有技术中由于感应数据不准确以及ATW处理引起的光标抖动的技术问题。
为了解决上述技术问题,本申请提供了一种虚拟现实设备的显示方法,包括:
确定光标显示层以及虚拟显示层;
加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层;
融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容;
当检测获得感应数据,分别根据所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容。
优选地,所述融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容包括:
确定所述光标对象在所述显示屏幕中对应的第一显示区域,以及所述显示屏幕中除所述第一显示区域之外的第二显示区域;
针对第一显示区域对应所述光标显示层的图层内容进行采样,获得第一显示区域的每一像素位置对应的第一像素值;以及针对第一显示区域对应所述虚拟显示层的图层内容进行采样,得第一显示区域的每一像素位置对应的第二像素值;
将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值;
针对第二显示区域对应所述应所述虚拟显示层的图层内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值;
利用所述融合像素值渲染所述第一显示区域,以及利用所述第三像素值渲染所述第二显示区域。
优选地,所述确定所述光标对象在所述显示屏幕中对应的第一显示区域,以及所述显示屏幕中除所述第一显示区域之外的第二显示区域包括:
确定所述光标对象在所述显示屏幕中的顶点位置;
根据所述顶点位置将所述显示屏幕划分为第一显示区域以及第二显示区域。
优选地,所述将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值包括:
确定所述第一显示区域每一个像素位置对应的第一像素值的透明度以及所述第二像素值的透明度;
融合所述第一像素值在其对应的透明度时的像素值以及所述第二像素值在其对应的透明度时的像素值,获得所述第一显示区域的每一个像素位置对应的融合像素值。
优选地,所述加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层包括:
加载所述光标对象的光标图像以及光标参数至所述光标显示层;
加载所述虚拟内容的虚拟图像以及虚拟内容参数值所述虚拟显示层。
本申请还提供了一种虚拟现实设备,其特征在于,包括:存储器,与所述存储器连接的处理器;
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行;
所述处理器用于:
确定光标显示层以及虚拟显示层;
加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层;
融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容;
当检测获得感应数据,分别根据所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容。
优选地,所述处理器融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容具体是:
确定所述光标对象在所述显示屏幕中对应的第一显示区域,以及所述显示屏幕中除所述第一显示区域之外的第二显示区域;
针对第一显示区域对应所述光标显示层的图层内容进行采样,获得第一显示区域的每一像素位置对应的第一像素值;以及针对第一显示区域对应所述虚拟显示层的图层内容进行采样,得第一显示区域的每一像素位置对应的第二像素值;
将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值;
针对第二显示区域对应所述应所述虚拟显示层的图层内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值;
利用所述融合像素值渲染所述第一显示区域,以及利用所述第三像素值渲染所述第二显示区域。
优选地,所述处理器确定所述光标对象在所述显示屏幕中对应的第一显示区域,以及所述显示屏幕中除所述第一显示区域之外的第二显示区域具体是:
确定所述光标对象在所述显示屏幕中的顶点位置;
根据所述顶点位置将所述显示屏幕划分为第一显示区域以及第二显示区域。
优选地,所述处理器将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值具体是:
确定所述第一显示区域每一个像素位置对应的第一像素值的透明度以及所述第二像素值的透明度;
融合所述第一像素值在其对应的透明度时的像素值以及所述第二像素值在其对应的透明度时的像素值,获得所述第一显示区域的每一个像素位置对应的融合像素值。
优选地,处理器所述加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层具体是:
加载所述光标对象的光标图像以及光标参数至所述光标显示层;
加载所述虚拟内容的虚拟图像以及虚拟内容参数值所述虚拟显示层。
本申请实施例中,通过确定光标显示层以及虚拟显示层,将光标对象在光标显示层加载,虚拟内容在虚拟显示层加载,在融合所述光标显示层以及所述虚拟显示层之后,显示所述光标显示层以及所述虚拟显示层。在检测获得感应数据时,分别根据所述感应数据控制的所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容,所述光标显示层与所述虚拟显示层独立,进而所述光标对象在感应数据控制下的动态显示过程不受虚拟内容的影响,减少了光标的抖动,提高了显示效果。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
本申请一些实施例主要应用于虚拟现实设备中,主要通过采用将待显示的虚拟内容以及光标分层处理,并合成显示以解决光标随虚拟内容改变时容易发生抖动的技术问题。
本申请实施例主要应用于VR设备中,所述VR设备可以营造出虚拟环境的沉浸式体验,所述VR设备可以是VR头盔、VR眼镜等设备。VR设备在提供沉浸式体验时,可以为实现用户头部动作的跟踪。用户佩戴VR设备时,可以通过转动头部、上下左右摆动头部等动作实现对VR设备营造的虚拟场景中的虚拟内容进行互动。VR设备检测到用户头部变化时,可以控制虚拟内容发生相应的转动、或者上下左右移动等变化,实现了与虚拟内容的交互。同时,为了方便用户以精确方式控制虚拟内容,VR设备通常会在虚拟场景中显示光标,该光标可以随着用户头部的动作而发生转动、上下左右的移动等变化。
VR设备中的安装的传感器检测到感应数据时,可以将所述感应数据进行姿态解算以获得用户头部的变化方向以及变化大小,并根据用户头部的变化方向以及变化大小,确定所述虚拟内容以及光标的变化方向以及变化大小。而传感器获得的感应数据可能不够准确,姿态解算后可能导致虚拟内容以及光标的变化大小以及变化方向不够准确。同时,VR设备为了保障营造的虚拟场景的流畅性,通常需要执行异步时间扭曲(AsynchronousTimewarp,ATW)处理。ATW是一种中间帧生成技术,当虚拟场景在VR显示过程中不能保持足够帧率的时候,需要产生中间帧,以减少画面的抖动。但是ATW处理也即虚拟内容的中间帧生成过程又受到不稳定的感应数据的控制,这一过程与光标显示过程并不同步,这就容易导致光标显示过程中容易出现抖动。当光标出现抖动时,显示的效果极大降低,观看体验降低。
本申请一些实施例中,将光标对象加载在构建的光标显示层,将虚拟内容加载在构建的虚拟显示层中,融合所述光标显示层以及所述虚拟显示层,以所述屏幕上显示的所述光标对象以及所述虚拟内容,实现光标以及虚拟内容的展示。当获得感应数据并根据感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容时,即是光标显示层与所述虚拟显示层是分开进行显示处理的,使得光标对象在显示的过程中不受虚拟内容的影响,通过分层进行显示处理可以减少光标抖动,提高显示效果。
下面将结合附图对本申请实施例进行详细描述。
如图1所示,为本申请实施例提供的一种虚拟现实设备的显示方法的一个实施例的流程图,该方法可以包括以下几个步骤:
101:确定光标显示层以及虚拟显示层。
虚拟场景是指构建的一个虚拟的人文环境,用户可以使用VR设备光看到虚拟场景中的虚拟内容。例如,所述虚拟场景可以是一个房间,而虚拟内容可以是房间中的物体或者人物,由于VR设备的显示角度的限制,通常用户只能观看到部分虚拟内容。构建的光标显示层以及虚拟显示层针对的即是待显示的虚拟内容的虚拟显示层以及待显示的光标显示层。
开发人员在搭建虚拟场景时,通过将图像以及光标的显示过程设计为分层显示,在搭建虚拟场景时,即将光标显示层以及虚拟显示层构建完毕,因此,所述虚拟场景中所显示的光标和图像帧设计为分层显示。VR设备加载虚拟场景时,加载所述光标显示层以及虚拟显示层,使光标以及图像在不同的显示层分别显示。VR设备的显示屏幕中分层显示光标和图像时,显示的光标以及图像同时处于显示屏幕中,并不影响用户的观看与使用。
所述确定光标显示层是指,加载待显示光标的图层结构;所述确定虚拟显示层是指加载待显示虚拟内容的图层结构。所述光标显示层可以是指覆盖层(overlayer层),所述虚拟显示层可以是指视觉层(eyelayer层),所述光标显示层可以是位于所述虚拟显示层的上一层,并将两层合成后显示在屏幕上。
VR设备的处理器可以在加载虚拟场景时,显示所述光标显示层以及虚拟显示层的内容,为用户展示虚拟场景中的场景内容,并通过跟踪用户头部、眼部等部位的动作,实现对光标的控制。
所述光标显示层可以指光标图层结构,作为一种可能的实现方式,所述光标显示层可以如下所示:
Struct overlayer{
Int imageHandle;
float LowerLeftPos[4];
float LowerRightPos[4];
float UpperLeftPos[4];
float UpperRightPos[4];}
其中,imageHandle代表所述光标显示层中的图像句柄。LowerLeftPos、LowerRightPos、UpperLeftPos UpperRightPos分别为所述光标显示层中的光标图像在显示屏幕的左下坐标、右下坐标、左上坐标、右上坐标。
102:加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层。
所述光标对象可以是指所述光标显示层承载光标图像。所述光标对象中还可以包括所述光标图像的光标参数,所述光标参数可以是指用于确定所述光标图像的显示位置,显示大小等类型的参数。所述光标图像显示时输出待显示光标。所述光标对象的形状、大小以及颜色可以根据用户需要进行设置。图2a为本申请实施例提供的一种光标示意图,2b为本申请实施例提供的虚拟内容的一个示意图。
可选地,所述加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层包括:
加载所述光标对象的光标图像以及光标参数至所述光标显示层;
加载所述虚拟内容的虚拟图像以及虚拟内容参数值所述虚拟显示层。
所述光标图像的图像句柄赋值给所述光标显示层的图像句柄参数,以使所述光标显示层可以加载所述光标图像。
所述加载光标对象至所述光标显示层是指,将所述光标对象的光标图像、光标图像参数值等数据加载至所述光标显示层,以使所述光标显示层中可以包含有上述光标数据。
所述光标对象在所述光标显示层加载,所述虚拟内容在所述虚拟显示层加载,在不同的显示层加载,可以分别进行光标对象以及虚拟内容的显示处理,使所述光标对象在显示过程中不受所述虚拟内容的显示的影响。
103:融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容。
融合所述光标显示层以及所述虚拟显示层是指,在绘制屏幕时,将显示屏幕中待显示的光标以及虚拟内容按照一定的融合规则进行融合,获得相应的融合图层。获得融合图层之后,在所述显示屏幕中渲染或者绘制所述融合图层,以在所述在显示屏幕显示所述光标以及所述虚拟内容。
可选地,所述融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容可以包括:
融合所述光标显示层以及所述虚拟显示层,以在显示屏幕中显示融合后的所述光标对象以及所述虚拟内容。
所述光标显示层可以位于所述虚拟显示层的上一层,进而所述光标对象可以上浮于所述虚拟内容显示,使所述光标对象能够被准确显示。
104:当检测获得感应数据,分别根据所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容。
VR设备中通常设置有VR传感器,通过所述VR传感器可以感应用户头部动作,并获得相应的感应数据。所述传感器可以是指加速度计、角速度计、重力加速度计、红外感应器等。
VR设备检测到用户头部动作时,可以获得相应的感应数据。可以根据VR设备的传感器获得所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容。
所述感应数据是实时检测获得的,也就是可以实时检测获得感应数据,并分别根据获得的所述感应数据实时控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟对象。
根据所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟对象时,所述光标显示层与所述虚拟显示层可以为不同的结构体,利用感应数据控制光标对象的处理过程不受利用感应数据控制虚拟内容的处理过程的影响,而在显示时可以将光标与虚拟内容显示,也即处理过程与显示过程是独立的过程,所述光标对象与所述虚拟对象的分层显示处理,进而使所述光标在显示过程中不受所述虚拟内容变化的影响。
本申请实施例中,将光标对象加载在构建的光标显示层,将虚拟内容加载在构建的虚拟显示层中,融合所述光标显示层以及所述虚拟显示层,以所述屏幕上显示的所述光标对象以及所述虚拟内容,实现光标以及虚拟内容的展示。当获得感应数据并根据感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容时,光标显示层与所述虚拟显示层分开执行显示处理,使得光标对象在显示的过程中不受虚拟内容的影响,以减少光标抖动,提高显示效果。
作为一个实施例,如图3所示,本申请实施例中的其他步骤与图1所示的实施例中的步骤相同,其中,所述步骤103具体可以包括:
301:确定所述光标对象在所述显示屏幕中对应的第一显示区域,以及所述显示屏幕中除所述第一显示区域之外的第二显示区域。
所述光标对象中包含需要显示的光标图像。所述光标对象在光标显示层中可以包括光标图像以及光标参数。所述光标对象在所述显示屏幕中对应的第一显示区域具体可以是指待显示的光标图像在显示屏幕中的显示位置。
可选地,所述步骤301可以包括:确定所述光标对象在所述显示屏幕中的顶点位置;根据所述顶点位置将所述显示屏幕划分为第一显示区域以及第二显示区域。
所述光标对象在所述显示屏幕中的顶点位置可以从加载的光标对象中获得,所述顶点位置具体可以是指所待显示的光标对象的光标图像构成的光标矩阵在所述显示屏幕中的矩阵顶点坐标。
所述光标对象在显示屏幕中的顶点信息具体可以是指光标对象距离所述显示屏幕的左上顶点的左上角坐标,距离所述显示屏幕的右上顶点的右上角坐标,距离所述显示屏幕的左下顶点的左下角坐标,以及距离所述显示屏幕的右下顶点的右下角坐标。所述光标对象可以是指构建的光标显示层的数据结构体的对象,所述光标对象可以为其在显示屏幕中的顶点位置赋值。
如图4所示,所述显示屏幕400中可以包括所述光标对象在所述显示屏幕400的第一显示区域401,以及所述显示屏幕400中不包括所述第一显示区域401的第二显示区域401。
所述第一显示区域通常为所述显示屏幕的中心,所述第一显示区域的顶点位置可以根据光标的显示需要而确定。VR设备检测到用户头部运动时,所述光标与虚拟内容在随着用户头部发生变化时,光标在显示时不受虚拟内容的变化的影响,其可以自行处理显示的过程,以避免光标抖动。而由于虚拟内容随着用户头部的运动而进行切换,在显示切换后的虚拟场景时,需要将所述光标对象与所述虚拟内容重新融合,以使所述显示屏幕显示更新后的所述光标对象以及所述虚拟内容。
302:针对第一显示区域对应所述光标显示层的图层内容进行采样,获得第一显示区域的每一像素位置对应的第一像素值;以及针对第一显示区域对应所述虚拟显示层的图层内容进行采样,得第一显示区域的每一像素位置对应的第二像素值。
所述显示区域中每一个像素位置对应的像素值可以对所述光标显示层中的图层内容以及所述虚拟显示层中的图层内容进行采样获得,也即分别采样所述光标显示层以及虚拟内容显示层获得所述第一像素值以及第二像素值。
所述光标显示层中的图层内容可以包括光标对对象的光标图像。所述虚拟显示层的图层内容可以包括待显示的虚拟场景的图像帧。
303:将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值。
可选地,所述将所述第一像素值以及所述第二像素值进行融合具体可以是指计算所述第一像素值以及所述第二像素值的和,将求和得到的像素值可以是获得的所述第一显示区域的每一个像素位置对应的融合像素值。
可选地,所述将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值可以包括:
确定所述第一显示区域每一个像素位置对应的第一像素值的透明度以及所述第二像素值的透明度;
融合所述第一像素值在其对应的透明度时的像素值以及所述第二像素值在其对应的透明度时的像素值,获得所述第一显示区域的每一个像素位置对应的融合像素值。
所述像素值的透明度是指所述像素值在渲染时的透明程度,当透明度为0时,为全透明,其在显示屏幕中实际显示的内容为透明;当透明度为1时,则其在显示屏幕中显示的实际内容为完全显示,透明度越高,在显示屏幕中实际显示的内容越清晰。用户或者开发者可以根据观看需要设置所述第一显示区域中的每一个像素点,从而为用户提供更多样的显示方案,以及个性化的显示设置。
第一显示区域中的任一个像素位置假设为P1,在P1点处的第一像素值可以通过overlayer.rgb获得,第二像素值可以通过eyelayer.rgb获得。所述将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值可以包括:将代表所述第一像素值的overlayer.rgb以及代表第二像素值的eyelayer.rgb作为参数输入到图像处理接口采样函数中,也即:
outColor=vec4(mix(eyelayer.rgb,overlayer.rgb,overlayer.a),1.0)。
其中,overlayer.a为透明度,表示第二像素,也即虚拟内容所代表的像素的透明度,通常为了清晰显示,透明度overlayer.a通常设置为0,使虚拟内容的像素值占比为0,光标的像素值占比为1,全部采用光标对象的像素值。
304:针对第二显示区域对应所述应所述虚拟显示层的图层内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值。
所述第二显示区域为所述显示屏幕中不显示光标对象的区域,即可以将所述第二显示区域用所述虚拟内容进行渲染。
第二显示区域中的任一个像素位置假设为P2,在P2点处的第三像素值可以通过eyelayer.rgb获得,针对第二显示区域对应所述应所述虚拟显示层的虚拟内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值可以是指将所述虚拟显示层的图层内容按照以下方式采样:
outColor=vec4(eyelayer.rgb,1.0)。
305:利用所述融合像素值渲染所述第一显示区域,以及利用所述第三像素值渲染所述第二显示区域。
在第一显示区域渲染所述融合像素值,以及在第二显示区域渲染所述第三像素值可以将所要显示的虚拟内容以及光标在显示屏幕中显示。同时,由于融合像素值中还融合了虚拟内容以及光标,进而在第一显示区域中针对虚拟内容以及光标均进行了显示。但是,由于光标对应的第一像素值以及虚拟内容对应的第二像素值透明度的不同,第一显示区域的实际显示时以所述光标为主,也就是用户在显示屏幕的第一显示区域观看到光标,在第二显示区域观看到虚拟内容。
以图2a的光标以及图2b的虚拟内容为例,将其按照图4中的第一显示区域401以及第二显示区域402的区域位置分别用所述图2a的光标以及图2b的虚拟内容渲染后,显示屏幕中实际显示的画面可以如图5中的渲染场景500所示。
本申请实施例中,通过将光标对象所需要显示的第一显示区域中,每一个像素位置对应的融合像素值以光标对象为主以及虚拟内容为辅进行融合,获得融合像素值,使光标以及虚拟内容能够同时显示,为后续以不抖动方式显示光标对象的显示基础,进而提高了显示效果。
如图6所示,为本申请实施例提供的一种基于触控板的坐标校准设备的一个实施例的结构示意图,所述设备可以包括:存储器601,与所述存储器连接的处理器602;
所述存储器601用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行;
所述处理器602用于:
确定光标显示层以及虚拟显示层;
加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层;
融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容;
当检测获得感应数据,分别根据所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容。
虚拟场景是指构建的一个虚拟的人文环境,用户可以使用VR设备光看到虚拟场景中的虚拟内容。例如,所述虚拟场景可以是一个房间,而虚拟内容可以是房间中的物体或者人物,由于VR设备的显示角度的限制,通常用户只能观看到部分虚拟内容。构建的光标显示层以及虚拟显示层针对的即是待显示的虚拟内容的虚拟显示层以及待显示的光标显示层。
开发人员在搭建虚拟场景时,通过将图像以及光标的显示过程设计为分层显示,在搭建虚拟场景时,即将光标显示层以及虚拟显示层构建完毕,因此,所述虚拟场景中所显示的光标和图像帧设计为分层显示。VR设备加载虚拟场景时,加载所述光标显示层以及虚拟显示层,使光标以及图像在不同的显示层分别显示。VR设备的显示屏幕中分层显示光标和图像时,显示的光标以及图像同时处于显示屏幕中,并不影响用户的观看与使用。
所述确定光标显示层是指,加载待显示光标的图层结构;所述确定虚拟显示层是指加载待显示虚拟内容的图层结构。所述光标显示层可以是指覆盖层(overlayer层),所述虚拟显示层可以是指视觉层(eyelayer层),所述光标显示层可以是位于所述虚拟显示层的上一层,并将两层合成后显示在屏幕上。
VR设备的处理器可以在加载虚拟场景时,显示所述光标显示层以及虚拟显示层的内容,为用户展示虚拟场景中的场景内容,并通过跟踪用户头部、眼部等部位的动作,实现对光标的控制。
所述光标显示层可以指光标图层结构,作为一种可能的实现方式,所述光标显示层可以如下所示:
Struct overlayer{
Int imageHandle;
float LowerLeftPos[4];
float LowerRightPos[4];
float UpperLeftPos[4];
float UpperRightPos[4];}
其中,imageHandle代表所述光标显示层中的图像句柄。LowerLeftPos、LowerRightPos、UpperLeftPos UpperRightPos分别为所述光标显示层中的光标图像在显示屏幕的左下坐标、右下坐标、左上坐标、右上坐标。
所述光标对象可以是指所述光标显示层承载光标图像。所述光标对象中还可以包括所述光标图像的光标参数,所述光标参数可以是指用于确定所述光标图像的显示位置,显示大小等类型的参数。所述光标图像显示时输出待显示光标。所述光标对象的形状、大小以及颜色可以根据用户需要进行设置。图2a为本申请实施例提供的一种光标示意图,2b为本申请实施例提供的虚拟内容的一个示意图。
可选地,所述加载光标对象至所述光标显示层以及虚拟内容至所述虚拟显示层包括:
加载所述光标对象的光标图像以及光标参数至所述光标显示层;
加载所述虚拟内容的虚拟图像以及虚拟内容参数值所述虚拟显示层。
所述光标图像的图像句柄赋值给所述光标显示层的图像句柄参数,以使所述光标显示层可以加载所述光标图像。
所述加载光标对象至所述光标显示层是指,将所述光标对象的光标图像、光标图像参数值等数据加载至所述光标显示层,以使所述光标显示层中可以包含有上述光标数据。
所述光标对象在所述光标显示层加载,所述虚拟内容在所述虚拟显示层加载,在不同的显示层加载,可以分别进行光标对象以及虚拟内容的显示处理,使所述光标对象在显示过程中不受所述虚拟内容的显示的影响。
融合所述光标显示层以及所述虚拟显示层是指,在绘制屏幕时,将显示屏幕中待显示的光标以及虚拟内容按照一定的融合规则进行融合,获得相应的融合图层。获得融合图层之后,在所述显示屏幕中渲染或者绘制所述融合图层,以在所述在显示屏幕显示所述光标以及所述虚拟内容。
可选地,所述融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容可以包括:
融合所述光标显示层以及所述虚拟显示层,以在显示屏幕中显示融合后的所述光标对象以及所述虚拟内容。
所述光标显示层可以位于所述虚拟显示层的上一层,进而所述光标对象可以上浮于所述虚拟内容显示,使所述光标对象能够被准确显示。
VR设备中通常设置有VR传感器,通过所述VR传感器可以感应用户头部动作,并获得相应的感应数据。所述传感器可以是指加速度计、角速度计、重力加速度计、红外感应器等。
VR设备检测到用户头部动作时,可以获得相应的感应数据。可以根据VR设备的传感器获得所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容。
所述感应数据是实时检测获得的,也就是可以实时检测获得感应数据,并分别根据获得的所述感应数据实时控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟对象。
根据所述感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟对象时,所述光标显示层与所述虚拟显示层可以为不同的结构体,利用感应数据控制光标对象的处理过程不受利用感应数据控制虚拟内容的处理过程的影响,而在显示时可以将光标与虚拟内容显示,也即处理过程与显示过程是独立的过程,所述光标对象与所述虚拟对象的分层显示处理,进而使所述光标在显示过程中不受所述虚拟内容变化的影响。
本申请实施例中,将光标对象加载在构建的光标显示层,将虚拟内容加载在构建的虚拟显示层中,融合所述光标显示层以及所述虚拟显示层,以所述屏幕上显示的所述光标对象以及所述虚拟内容,实现光标以及虚拟内容的展示。当获得感应数据并根据感应数据控制所述光标显示层的光标对象以及所述虚拟显示层的虚拟内容时,光标显示层与所述虚拟显示层分开执行显示处理,使得光标对象在显示的过程中不受虚拟内容的影响,以减少光标抖动,提高显示效果。
作为一个实施例,所述处理器融合所述光标显示层以及所述虚拟显示层,以在显示屏幕显示所述光标对象以及所述虚拟内容具体是:
确定所述光标对象在所述显示屏幕中对应的第一显示区域,以及所述显示屏幕中除所述第一显示区域之外的第二显示区域;
针对第一显示区域对应所述光标显示层的图层内容进行采样,获得第一显示区域的每一像素位置对应的第一像素值;以及针对第一显示区域对应所述虚拟显示层的图层内容进行采样,得第一显示区域的每一像素位置对应的第二像素值;
将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值;
针对第二显示区域对应所述应所述虚拟显示层的图层内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值;
利用所述融合像素值渲染所述第一显示区域,以及利用所述第三像素值渲染所述第二显示区域。
所述光标对象中包含需要显示的光标图像。所述光标对象在光标显示层中可以包括光标图像以及光标参数。所述光标对象在所述显示屏幕中对应的第一显示区域具体可以是指待显示的光标图像在显示屏幕中的显示位置。
可选地,所述步骤301可以包括:确定所述光标对象在所述显示屏幕中的顶点位置;根据所述顶点位置将所述显示屏幕划分为第一显示区域以及第二显示区域。
所述光标对象在所述显示屏幕中的顶点位置可以从加载的光标对象中获得,所述顶点位置具体可以是指所待显示的光标对象的光标图像构成的光标矩阵在所述显示屏幕中的矩阵顶点坐标。
所述光标对象在显示屏幕中的顶点信息具体可以是指光标对象距离所述显示屏幕的左上顶点的左上角坐标,距离所述显示屏幕的右上顶点的右上角坐标,距离所述显示屏幕的左下顶点的左下角坐标,以及距离所述显示屏幕的右下顶点的右下角坐标。所述光标对象可以是指构建的光标显示层的数据结构体的对象,所述光标对象可以为其在显示屏幕中的顶点位置赋值。
所述第一显示区域通常为所述显示屏幕的中心,所述第一显示区域的顶点位置可以根据光标的显示需要而确定。VR设备检测到用户头部运动时,所述光标与虚拟内容在随着用户头部发生变化时,光标在显示时不受虚拟内容的变化的影响,其可以自行处理显示的过程,以避免光标抖动。而由于虚拟内容随着用户头部的运动而进行切换,在显示切换后的虚拟场景时,需要将所述光标对象与所述虚拟内容重新融合,以使所述显示屏幕显示更新后的所述光标对象以及所述虚拟内容。
所述显示区域中每一个像素位置对应的像素值可以对所述光标显示层中的图层内容以及所述虚拟显示层中的图层内容进行采样获得,也即分别采样所述光标显示层以及虚拟内容显示层获得所述第一像素值以及第二像素值。
所述光标显示层中的图层内容可以包括光标对对象的光标图像。所述虚拟显示层的图层内容可以包括待显示的虚拟场景的图像帧。
可选地,所述将所述第一像素值以及所述第二像素值进行融合具体可以是指计算所述第一像素值以及所述第二像素值的和,将求和得到的像素值可以是获得的所述第一显示区域的每一个像素位置对应的融合像素值。
可选地,所述将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值可以包括:
确定所述第一显示区域每一个像素位置对应的第一像素值的透明度以及所述第二像素值的透明度;
融合所述第一像素值在其对应的透明度时的像素值以及所述第二像素值在其对应的透明度时的像素值,获得所述第一显示区域的每一个像素位置对应的融合像素值。
所述像素值的透明度是指所述像素值在渲染时的透明程度,当透明度为0时,为全透明,其在显示屏幕中实际显示的内容为透明;当透明度为1时,则其在显示屏幕中显示的实际内容为完全显示,透明度越高,在显示屏幕中实际显示的内容越清晰。用户或者开发者可以根据观看需要设置所述第一显示区域中的每一个像素点,从而为用户提供更多样的显示方案,以及个性化的显示设置。
第一显示区域中的任一个像素位置假设为P1,在P1点处的第一像素值可以通过overlayer.rgb获得,第二像素值可以通过eyelayer.rgb获得。所述将所述第一显示区域的每一像素位置对应的第一像素值以及第二像素值进行融合,获得所述第一显示区域的每一像素位置对应的融合像素值可以包括:将代表所述第一像素值的overlayer.rgb以及代表第二像素值的eyelayer.rgb作为参数输入到图像处理接口采样函数中,也即:
outColor=vec4(mix(eyelayer.rgb,overlayer.rgb,overlayer.a),1.0)。
其中,overlayer.a为透明度,表示第二像素,也即虚拟内容所代表的像素的透明度,通常为了清晰显示,透明度overlayer.a通常设置为0,使虚拟内容的像素值占比为0,光标的像素值占比为1,全部采用光标对象的像素值。
304:针对第二显示区域对应所述应所述虚拟显示层的图层内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值。
所述第二显示区域为所述显示屏幕中不显示光标对象的区域,即可以将所述第二显示区域用所述虚拟内容进行渲染。
第二显示区域中的任一个像素位置假设为P2,在P2点处的第三像素值可以通过eyelayer.rgb获得,针对第二显示区域对应所述应所述虚拟显示层的虚拟内容进行采样,获得第二显示区域的每一像素位置对应的第三像素值可以是指将所述虚拟显示层的图层内容按照以下方式采样:
outColor=vec4(eyelayer.rgb,1.0)。
在第一显示区域渲染所述融合像素值,以及在第二显示区域渲染所述第三像素值可以将所要显示的虚拟内容以及光标在显示屏幕中显示。同时,由于融合像素值中还融合了虚拟内容以及光标,进而在第一显示区域中针对虚拟内容以及光标均进行了显示。但是,由于光标对应的第一像素值以及虚拟内容对应的第二像素值透明度的不同,第一显示区域的实际显示时以所述光标为主,也就是用户在显示屏幕的第一显示区域观看到光标,在第二显示区域观看到虚拟内容。
以图2a的光标以及图2b的虚拟内容为例,将其按照图4中的第一显示区域401以及第二显示区域402的区域位置分别用所述图2a的光标以及图2b的虚拟内容渲染后,显示屏幕中实际显示的画面可以如图5中的渲染场景500所示。
本申请实施例中,通过将光标对象所需要显示的第一显示区域中,每一个像素位置对应的融合像素值以光标对象为主以及虚拟内容为辅进行融合,获得融合像素值,使光标以及虚拟内容能够同时显示,为后续以不抖动方式显示光标对象的显示基础,进而提高了显示效果。
如图7所示,为本申请实施例提供的一种头戴显示VR设备700的内部配置结构示意图。
该头戴VR设备可以包括显示单元701、虚拟图像光学单元702、输入操作单元703、状态信息获取单元704、通信单元705。
显示单元701可以包括显示面板,显示面板设置在头戴显示设备700上面向用户面部的侧表面,可以为一整块面板、或者为分别对应用户左眼和右眼的左面板和右面板。显示面板可以为电致发光(EL)元件、液晶显示器或具有类似结构的微型显示器、或者视网膜可直接显示或类似的激光扫描式显示器。
虚拟图像光学单元702以放大方式拍摄显示单701所显示的图像,并允许用户按放大的虚拟图像观察所显示的图像。作为输出到显示单元701上的显示图像,可以是从内容再现设备(蓝光光碟或DVD播放器)或流媒体服务器提供的虚拟场景的图像、或者使用外部相机710拍摄的现实场景的图像。一些实施例中,虚拟图像光学单元702可以包括透镜单元,例如球面透镜、非球面透镜、菲涅尔透镜等。
输入操作单元703包括至少一个用来执行输入操作的操作部件,例如按键、按钮、开关或者其他具有类似功能的部件,通过操作部件接收用户指令,并且向控制单元707输出指令。
状态信息获取单元704用于获取穿戴头戴显示设备700的用户的状态信息。状态信息获取单元704可以包括各种类型的传感器,用于自身检测状态信息,并可以通过通信单元705从外部设备(例如智能手机、腕表和用户穿戴的其它多功能终端)获取状态信息。状态信息获取单元704可以获取用户的头部的位置信息和/或姿态信息。状态信息获取单元704可以包括陀螺仪传感器、加速度传感器、全球定位***(GPS)传感器、地磁传感器、多普勒效应传感器、红外传感器、射频场强度传感器中的一个或者多个。此外,状态信息获取单元704获取穿戴头戴显示设备700的用户的状态信息,例如获取例如用户的操作状态(用户是否穿戴头戴显示设备700)、用户的动作状态(诸如静止、行走、跑动和诸如此类的移动状态,手或指尖的姿势、眼睛的开或闭状态、视线方向、瞳孔尺寸)、精神状态(用户是否沉浸在观察所显示的图像以及诸如此类的),甚至生理状态。
通信单元705执行与外部装置的通信处理、调制和解调处理、以及通信信号的编码和解码处理。另外,控制单元707可以从通信单元705向外部装置发送传输数据。通信方式可以是有线或者无线形式,例如移动高清链接(MHL)或通用串行总线(USB)、高清多媒体接口(HDMI)、无线保真(Wi-Fi)、蓝牙通信或低功耗蓝牙通信,以及IEEE802.11s标准的网状网络等。另外,通信单元705可以是根据宽带码分多址(W-CDMA)、长期演进(LTE)和类似标准操作的蜂窝无线收发器。
一些实施例中,头戴显示设备700还可以包括存储单元,存储单元706是配置为具有固态驱动器(SSD)等的大容量存储设备。一些实施例中,存储单元706可以存储应用程序或各种类型的数据。例如,用户使用头戴显示设备700观看的内容可以存储在存储单元706中。
一些实施例中,头戴显示设备700还可以包括控制单元,控制单元707可以包括计算机处理单元(CPU)或者其他具有类似功能的设备。一些实施例中,控制单元707可以用于执行存储单元706存储的应用程序,或者控制单元707还可以用于执行本申请一些实施例公开的方法、功能和操作的电路。
图像处理单元708用于执行信号处理,比如与从控制单元707输出的图像信号相关的图像质量校正,以及将其分辨率转换为根据显示单元701的屏幕的分辨率。然后,显示驱动单元709依次选择显示单元701的每行像素,并逐行依次扫描显示单元701的每行像素,因而提供基于经信号处理的图像信号的像素信号。
一些实施例中,头戴显示设备700还可以包括外部相机。外部相机710可以设置在头戴显示设备700主体前表面,外部相机710可以为一个或者多个。外部相机710可以获取三维信息,并且也可以用作距离传感器。另外,探测来自物体的反射信号的位置灵敏探测器(PSD)或者其他类型的距离传感器可以与外部相机710一起使用。外部相机710和距离传感器可以用于检测穿戴头戴显示设备700的用户的身***置、姿态和形状。另外,一定条件下用户可以通过外部相机710直接观看或者预览现实场景。
一些实施例中,头戴显示设备700还可以包括声音处理单元,声音处理单元711可以执行从控制单元707输出的声音信号的声音质量校正或声音放大,以及输入声音信号的信号处理等。然后,声音输入/输出单元712在声音处理后向外部输出声音以及输入来自麦克风的声音。
需要说明的是,图7中虚线框示出的结构或部件可以独立于头戴显示设备700之外,例如可以设置在外部处理***(例如计算机***)中与头戴显示设备700配合使用;或者,虚线框示出的结构或部件可以设置在头戴显示设备700内部或者表面上。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。