发明内容
本发明实施例的一个目的是提供一种用于虚拟现实运动场景的显示方法的新的技术方案,以进一步降低运动过程中产生的眩晕感。
根据本发明的第一方面,提供了一种用于虚拟现实运动场景的显示方法,其包括:
获取当前时刻的运动姿态;
根据所述运动姿态渲染生成图像帧;
预测在屏幕逐行扫描所述图像帧的每一像素行的扫描时刻的运动姿态,并生成对应扫描时刻的调整矩阵;
根据生成的调整矩阵,得到对应每一像素行的调整后的纹理坐标;
根据每一像素行与对应像素行的调整后的纹理坐标之间的对应关系,调整所述图像帧;
将调整后的图像帧送到屏幕上进行显示。
可选的是,所述预测在屏幕逐行扫描所述图像帧的每一像素行的扫描时刻的运动姿态,并生成对应扫描时刻的调整矩阵包括:
预测在屏幕扫描所述图像帧的开始时刻的运动姿态,并生成对应所述图像帧的开始节点调整矩阵;
预测在屏幕扫描所述图像帧的结束时刻的运动姿态,并生成对应所述图像帧的结束节点调整矩阵;
以所述图像帧的每一像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例为权重,对所述开始节点调整矩阵和所述结束节点调整矩阵进行加权求和,得到对应扫描时刻的调整矩阵。
可选的是,所述以所述图像帧的每一像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例为权重具体为:
通过每一像素行的行坐标在所述图像帧的开始节点行坐标与所述图像帧的结束节点行坐标之间的比例,表征对应像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例。
可选的是,所述将调整后的图像帧送到屏幕上进行显示具体为:
以与屏幕刷新率相同的频率将调整后的图像帧送到屏幕上进行显示。
可选的是,所述根据所述运动姿态渲染生成图像帧由渲染线程完成,所述调整所述图像帧、及将调整后的图像帧送到屏幕上进行显示由送屏线程完成。
根据本发明的第二方面,提供了一种用于虚拟现实运动场景的显示装置,其包括渲染装置和送屏装置,所述渲染装置用于获取当前时刻的运动姿态,并根据所述运动姿态渲染生成图像帧;
所述送屏装置进一步包括:
预测模块,用于预测在屏幕逐行扫描所述图像帧的每一像素行的扫描时刻的运动姿态,并生成对应扫描时刻的调整矩阵;
调整模块,用于根据生成的调整矩阵,得到对应每一像素行的调整后的纹理坐标,并根据每一像素行与对应像素行的调整后的纹理坐标之间的对应关系,调整所述图像帧;以及,
读写模块,用于将调整后的图像帧送到屏幕上进行显示。
可选的是,所述预测模块包括:
开始时刻预测单元,用于预测在屏幕扫描所述图像帧的开始时刻的运动姿态,并生成对应所述图像帧的开始节点调整矩阵;
结束时刻预测单元,用于预测在屏幕扫描所述图像帧的结束时刻的运动姿态,并生成对应所述图像帧的结束节点调整矩阵;以及,
计算单元,用于以所述图像帧的每一像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例为权重,对所述开始节点调整矩阵和所述结束节点调整矩阵进行加权求和,得到对应扫描时刻的调整矩阵。
可选的是,所述计算单元具体通过每一像素行的行坐标在所述图像帧的开始节点行坐标与所述图像帧的结束节点行坐标之间的比例,表征对应像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例。
可选的是,所述读写单元具体用于以与屏幕刷新率相同的频率将调整后的图像帧送到屏幕上进行显示。
可选的是,所述渲染装置与所述送屏装置各占用一个线程。
根据本发明的第三方面,提供了一种用于虚拟现实运动场景的显示装置,包括存储器和处理器,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行根据本发明第一方面所述的显示方法。
本发明的一个有益效果在于,本发明显示方法及装置按照屏幕逐行扫描的方式,对屏幕逐行扫描图像帧的每一像素行的扫描时刻的运动姿态进行预测,并根据该运动姿态相对生成图像帧的运动姿态的变化生成对应每一像素行的扫描时刻的调整矩阵,进而实现对图像帧的每一像素行的调整,这样,在屏幕进行逐行扫描显示的过程中,能够使得任意显示时刻的画面内容均能够与用户的当前姿态一致,进而相对现有技术进一步减小了延迟,降低了用户在运动过程中的眩晕感。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是根据本发明一种实施例的用于虚拟现实运动场景的显示方法的流程图。该流程图为针对单眼的图像显示的方法步骤,双眼的图像显示可以分别按照单眼的图像显示步骤进行各自的处理,而且双眼的图像显示处理可以共用一个图像处理器,也可以各自对应单独的图像处理器。
根据图1所示,该显示方法包括如下步骤:
步骤S101,获取当前时刻的运动姿态。
虚拟现实设备可以包括一个或者多个传感器,以测量并提供三维空间中物体的运动姿态,该运动姿态例如可以包括位置信息、朝向信息、速度信息等任何期望的方面。
这些传感器根据期望获得的运动姿态,可以包括但不限于下面中的至少一种,加速度传感器、陀螺仪、GPS追踪器、超声波测距仪、压力传感器、高度计、摄像头、磁力计、倾斜传感器等等。
步骤S102,根据运动姿态渲染生成图像帧。
该步骤即为根据获取到的运动姿态进行显示画面的绘制,生成待显示的图像帧。
由于该步骤生成的图像帧的显示存在延时,因此,该图像帧在显示时的运动姿态将相对生成该图像帧对应的运动姿态发生变化,这会导致显示画面与用户的身体感知不一致,进而产生眩晕。
为此,本发明显示方法将通过以下步骤S103至步骤S106对步骤S102生成的图像帧进行调整,以使得调整后的图像帧在被屏幕逐行扫描显示时呈现的显示画面能够与显示时刻的运动姿态一致,进而相对现有技术更大限度地减少显示延时,进一步降低用户在运动过程中产生的眩晕感。
步骤S103,预测在屏幕逐行扫描所述图像帧的每一像素行的扫描时刻的运动姿态,并生成对应扫描时刻的调整矩阵。
该步骤中,图像帧的像素行中“行”的定义与屏幕逐行扫描中“行”的定义一致,即图像帧的同一像素行上的各像素对应相同的扫描时刻。对于从左至右逐行扫描的屏幕,该“行”即为屏幕及图像帧的纵行,而对于从上至下逐行扫描的屏幕,该“行”则为屏幕及图像帧的横行。
本发明显示方法与现有技术中仅预测生成图像帧至该图像帧在屏幕上开始显示的时间点之间的时间段的姿态变化不同,其根据图像帧的每一像素行具有不同的扫描时刻,预测在屏幕逐行扫描该图像帧的每一像素行的扫描时刻的运动姿态,并基于每一像素行的扫描时刻的运动姿态相对生成图像帧对应的运动姿态的变化,生成对应扫描时刻的调整矩阵。
以图像帧具有560个像素行为例,在该步骤中需要计算各像素行的扫描时刻,一共有560个扫描时刻,并分别预测560个扫描时刻的运动姿态,以生成对应各扫描时刻的调整矩阵。
对于双眼图像通过同一显示屏分左、右部分进行显示的实施例,可针对该显示屏分别确定对应左眼显示的每一像素行的扫描时刻及对应右眼显示的每一像素行的扫描时刻。
由此可见,该步骤的计算工作量将随着图像帧的像素行的增加而增加,为了减少该步骤的计算量,进而提高计算速度,使得本发明方法能够更好地应用在高分辨率、高刷新率等应用场合,图2示出了一种实现该步骤的方法。
根据图2所示,该步骤S103中预测在屏幕逐行扫描所述图像帧的每一像素行的扫描时刻的运动姿态,并生成对应扫描时刻的调整矩阵可进一步包括:
步骤S201,预测在屏幕扫描该图像帧的开始时刻的运动姿态,并生成对应该图像帧的开始节点调整矩阵。
步骤S202,预测在屏幕扫描该图像帧的结束时刻的运动姿态,并生成对应图像帧的结束节点调整矩阵。
步骤S203,以所图像帧的每一像素行的扫描时刻在该开始时刻与该结束时刻之间的比例为权重,对开始节点调整矩阵和结束节点调整矩阵进行加权求和,得到对应扫描时刻的调整矩阵。
在该实施例中,本发明显示方法仅需要预测图像帧在被屏幕扫描的开始时刻和结束时刻两个节点的调整矩阵,并通过对此两个节点的调整矩阵进行不同权重的加权求和,得到对应每一像素行的扫描时刻的调整矩阵,这将大大减少预测各调整矩阵的计算量。
该实施例的原理为:运动姿态是在图像帧被逐行扫描显示的开始时刻与结束时刻之间连续变化的,因此,扫描时刻越接近开始时刻,其运动姿态越接近开始节点调整矩阵,即受到开始节点调整矩阵的影响越大,扫描时刻越接近结束时刻,其运动姿态越接近结束节点调整矩阵,即受到结束节点调整矩阵的影响越大,因此,利用每一像素行的扫描时刻在该开始时刻与该结束时刻之间的比例为权重,对两个节点的调整矩阵进行加权求和,便可得到对应每一像素行的扫描时刻的调整矩阵。
这例如可以通过调用Shader函数Mix实现:
Mix(M1,M2,Tx)=(Tx)×(M1)+(1-Tx)×(M2)
其中,Tx代表对应每一像素行的扫描时刻的权重,M1代表开始节点调整矩阵,M2代表结束节点调整矩阵。
以图像帧具有560个像素行为例,对应第200个像素行的扫描时刻的权重即为5/9,根据该权重即可计算得到对应第200个像素行的扫描时刻的调整矩阵。
由于每一像素行的扫描时刻在该开始时刻与该结束时刻之间的比例与对应像素行的行坐标在图像帧的开始节点行坐标与结束节点行坐标之间的比例一致,因此,可以在该实施例中,可以进一步将每一像素行的行坐标在图像帧的开始节点行坐标与结束节点行坐标之间的比例作为对应的权重。
而且在行坐标的范围被设置为是0~1的情况下,该权重即可为每一像素行的行坐标本身。
对于双眼图像通过同一显示屏分左、右部分进行显示的实施例,可针对该显示屏分别确定对应左眼显示的开始节点调整矩阵和结束节点调整矩阵,及对应右眼显示的开始节点调整矩阵和结束节点调整矩阵。
步骤S104,根据生成的调整矩阵,得到对应每一像素行的调整后的纹理坐标。
在该步骤中实现图像帧各纹理坐标的像素值至调整后的图像帧的像素行的映射,具体为:
Proj(Wx,Wy)=(Tx,Ty)×Mix(M1,M2,Tx)
其中,Ty为对应行坐标Tx的纵坐标,Proj(Wx,Wy)即为像素行(Tx,Ty)的调整后的纹理坐标。
以通过该映射关系进行图像帧的调整,进而使得调整后的图像帧在被屏幕逐行扫描显示时,保持扫描时刻的画面内容与扫描时刻的运动姿态一致,进而有效解决眩晕问题。
步骤S105,根据每一像素行与对应像素行的调整后的纹理坐标之间的对应关系,调整图像帧。
经过步骤S105的调整将使得调整后的图像帧的每一像素行的像素值与图像帧的对应像素行的调整后的纹理坐标的像素值一致。
例如,在第二像素行(T2,Ty)的调整后的纹理坐标为(W2,Wy)的情况下,则将图像帧的纹理坐标为(W2,Wy)的像素值作为调整后的图像帧的第二像素行进行显示。
步骤S106,将调整后的图像帧送到屏幕上进行显示。
该步骤可以以与屏幕刷新率相同的频率将调整后的图像帧送到屏幕上进行显示,这说明图像帧的调整操作需要在屏幕刷新当前图像帧的刷屏周期内完成。
以上各步骤S101至步骤S106可由两个不同的线程完成,分别为渲染(Render)线程和送屏(Warp)线程,其中,步骤S101和步骤S102的根据运动姿态渲染生成图像帧由渲染线程完成,步骤S103至步骤S106的调整所述图像帧、及将调整后的图像帧送到屏幕上进行显示由送屏线程完成。
本发明还提供了一种用于虚拟现实运动场景的显示装置,图3示出了该显示装置的一种实施方式的方框原理图。
根据图3所示,该显示装置包括渲染装置310和送屏装置320。
该渲染装置310用于获取当前时刻的运动姿态,并根据所述运动姿态渲染生成图像帧。
该送屏装置320进一步包括预测模块321、调整模块322和读写模块323。
该预测模块321用于预测在屏幕逐行扫描所述图像帧的每一像素行的扫描时刻的运动姿态,并生成对应扫描时刻的调整矩阵。
该调整模块322用于根据生成的调整矩阵,得到对应每一像素行的调整后的纹理坐标,并根据每一像素行与对应像素行的调整后的纹理坐标之间的对应关系,调整所述图像帧。
该读写模块323用于将调整后的图像帧送到屏幕上进行显示。
图4示出了上述预测模块321的一种可供选择的实施例的结构示意图。
根据图4所示,上述预测模块321可以进一步包括开始时刻预测单元3211、结束时刻预测单元3212和计算单元3213。
该开始时刻预测单元3211用于预测在屏幕扫描所述图像帧的开始时刻的运动姿态,并生成对应所述图像帧的开始节点调整矩阵。
该结束时刻预测单元3212用于预测在屏幕扫描所述图像帧的结束时刻的运动姿态,并生成对应所述图像帧的结束节点调整矩阵。
该计算单元3213用于以所述图像帧的每一像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例为权重,对所述开始节点调整矩阵和所述结束节点调整矩阵进行加权求和,得到对应扫描时刻的调整矩阵。
上述计算单元3213可以进一步通过每一像素行的行坐标在所述图像帧的开始节点行坐标与所述图像帧的结束节点行坐标之间的比例,表征对应像素行的扫描时刻在所述开始时刻与所述结束时刻之间的比例。
上述读写单元323可以进一步用于以与屏幕刷新率相同的频率将调整后的图像帧送到屏幕上进行显示。
上述渲染装置310与送屏装置320可以各占用一个线程。
本发明还提供了一种显示装置的硬件结构。图5示出了根据本发明一种实施例的硬件结构。
该显示装置可以整体设置在虚拟现实设备的头戴部分上。
该显示装置也可以整体设置在与头戴部分通信连接的手持设备或者固定PC机上。
该显示装置还可以部分设置头戴部分上,部分设置在于头戴部分通信连接的手持设备或者固定PC机上,例如渲染装置设置在手持设备或者固定PC机上,而送屏装置设置在头戴部分上。
根据图5所示,该显示装置500包括至少一个存储器501和至少一个处理器502,各存储器501用于存储指令,该指令用于控制各处理器502进行操作以执行根据本发明的显示方法。
除此之外,根据图5所示,该显示装置500还可以包括接口装置503、输入装置504、通信装置506、传感器装置505等等。
上述通信装置506例如能够进行有有线或无线通信。
上述接口装置503例如包括USB接口等。
上述输入装置504例如可以包括触摸屏、按键等。
上述传感器装置505根据期望获得的运动姿态,可以包括但不限于下面中的至少一种,加速度传感器、陀螺仪、GPS追踪器、超声波测距仪、压力传感器、高度计、摄像头、磁力计、倾斜传感器等等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分相互参见即可,每个实施例重点说明的都是与其他实施例的不同之处,但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。另外,对于装置实施例而言,由于其是与方法实施例相对应,所以描述得比较简单,相关之处参见方法实施例的对应部分的说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的。
本发明可以是装置、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。