发明内容
为了至少在一定程度上解决现有技术中存在的上述问题之一,本发明的第一个目的在于提供一种基于外接设备在虚拟空间选取浏览点位的方法。本发明的第二个目的在于还提供一种基于外接设备在虚拟空间选取浏览点位的装置。本发明的其他目的在于提供一种计算机设备、计算机可读存储介质和计算机程序产品。
为达到上述目的,根据本发明一实施例,本发明第一方面提供一种基于外接设备在虚拟空间选取浏览点位的方法,其包括:采集外接设备的控制信号;根据外接设备的控制信号,确认当前浏览点位;构建虚拟摄像机,并根据外接设备的控制信号,更新虚拟场景;获取虚拟空间中预先设定的所有浏览点位;构建虚拟摄像机的视锥,并初选位于所述视锥内的浏览点位作为备选浏览点位;计算备选浏览点位与当前浏览点位的距离以及选取距离最近的备选浏览点位作为下一个浏览点位。
上述初选位于所述视锥内的浏览点位作为备选浏览点位的步骤可以包括:初选符合以下条件的浏览点位作为备选浏览点位:处于虚拟摄像机视锥的近裁剪面和远裁剪面之间;并且浏览点位向量与虚拟摄像机视线方向之间的夹角小于等于视场角的二分之一,其中所述浏览点位向量表征通过所述虚拟摄像机位置与浏览点位所形成的向量。进一步地,可以选取其浏览点位向量与虚拟摄像机视线方向之间的夹角小于等于30度的浏览点位作为备选浏览点位。
上述采集外接设备的控制信号的步骤可以包括:通过轮询持续采集所述外接设备的控制信号。
上述确认当前浏览点位的步骤可以包括:当外接设备特定输入的控制信号值达到预设值时,确认当前浏览点位。
上述根据外接设备的控制信号,更新虚拟场景的步骤可以包括:根据外接设备的控制信号,更新虚拟摄像机在虚拟空间中的变换矩阵;以及根据虚拟摄像机更新的变换矩阵,更新虚拟场景。所述更新虚拟摄像机在虚拟空间中的变换矩阵的步骤可以包括:当轮询外接设备的一个或多个控制信号不为零时,计算轮询间隔时长与该控制信号值的乘积,作为虚拟摄像机的旋转角度值;以及根据虚拟摄像机的旋转角度值,更新虚拟摄像机在虚拟空间中的变换矩阵。
上述构建虚拟摄像机以及更新虚拟场景的步骤可以通过WebGL完成。
为达到上述目的,根据本发明一实施例,本发明第二方面提供一种基于外接设备在虚拟空间选取浏览点位的装置,其包括:信号采集模块,其采集外接设备的控制信号;当前浏览点位确认模块,其根据外接设备的控制信号,确认当前浏览点位;虚拟摄像机模块,其构建虚拟摄像机,并根据外接设备的控制信号,更新虚拟场景;浏览点位获取模块,其获取虚拟空间中预先设定的所有浏览点位;备选浏览点位初选模块,其构建虚拟摄像机的视锥,并初选位于视锥内的浏览点位作为备选浏览点位;距离计算模块,其计算备选浏览点位与当前浏览点位的距离;以及选取模块,其选取距离最近的备选浏览点位作为下一个浏览点位。
上述虚拟摄像机模块可以包括:变换矩阵更新子模块,其根据外接设备的控制信号,更新虚拟摄像机在虚拟空间中的变换矩阵;以及虚拟场景更新子模块,其根据虚拟摄像机更新的变换矩阵,更新虚拟场景。
上述虚拟摄像机模块可以通过WebGL构建虚拟摄像机并更新虚拟场景。
为达到上述目的,根据本发明一实施例,本发明第三方面提供一种计算机设备,包括:处理器;存储装置;以及存储在存储装置上并可在处理器上运行的计算机程序,当处理器执行计算机程序时,实现上述基于外接设备在虚拟空间选取浏览点位的方法的步骤。
为达到上述目的,根据本发明一实施例,本发明第四方面提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述基于外接设备在虚拟空间选取浏览点位的方法的步骤。
为达到上述目的,根据本发明一实施例,本发明第五方面提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述基于外接设备在虚拟空间选取浏览点位的方法的步骤。
本发明所提供的基于外接设备在虚拟空间选取浏览点位的方法及装置能够使用户在合适的观察位置,通过外接设备选取优选浏览点位,在虚拟空间内实现游走,从而提高用户观感和体验。
具体实施方式
以下通过具体实施例对本发明进行详细描述,以使本领域普通技术人员能够容易地根据本说明书公开的内容实施本发明。以下所描述的实施例仅是本发明的一部分实施例,而非全部。基于本说明书所描述的实施例,本领域普通技术人员在不付出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。需要说明的是,在不发生冲突的情况下,本说明书中的实施例及实施例中的特征可以相互组合。
本文所使用的术语仅是为了说明特定实施例的目的,而非意在限制本发明。除非上下文另外特别指明,本文所使用的单数形式“一个”、“一种”和“该”也包括复数形式“多个”、“多种”和“该等”。本文所使用的“第一”、“第二”等词语仅用于区别不同特征、步骤、操作、元件和/或部件等,既不表示任何特定的技术含义,也不表示它们之间的必然逻辑顺序。本文所使用的词语“多个”可以指两个或两个以上,词语“至少一个”可以指一个、两个或两个以上。对于本文中提及的任何特征、步骤、操作、元件和/或部件,在上下文没有另外特别指明的情况下,一般可以理解为一个或多个。还应理解的是,本文使用的词语“包括”和/或“包含”指存在所述特征、步骤、操作、元件和/或部件,但不排除一个或多个其他特征、步骤、操作、元件、部件和/或其集合的存在或增加。本文所使用的词语“和/或”包括一个或多个相关列出项目的任何或全部组合。本文中的元件后缀“模块”和“单元”仅是用于便于描述,因此,其能够交替使用,并且不具有任何有区别的意义或功能。
当与本发明的说明有关的现有技术对于本领域的技术人员而言显而易见时,将省略其详细描述。还应理解的是,本说明书对各个实施例的描述着重于强调各实施例之间的不同之处,实施例间的相同或相似之处可以相互参考,本说明书为了简洁起见,不做一一赘述。
如图1示意性所示,其示出了可以适用于本发明的基于外接设备在虚拟空间选取浏览点位的方法的一个具体实施方式的示例性系统架构100。系统架构100可以包括终端设备101、102、103,以及网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信,其可以包括各种连接类型,例如有线、无线通信或者光纤电缆等。
用户可以使用终端设备101、102、103通过网络104与服务器105实现交互。终端设备101、102、103上可以安装有各种通信客户端应用,例如图像及视频拍摄应用、文本输入应用、网页浏览器应用、专业领域应用软件、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
在具体实施中,终端设备101、102、103可以根据实际需要实现为硬件,也可以实现为软件。当终端设备101、102、103实现为硬件时,可以是具有(触摸)显示屏并且支持语音、文本等各种输入的各种电子设备,包括但不限于个人电脑(包括笔记本计算机和台式计算机)、平板电脑、智能手机、车载终端、电子书阅读器、视频播放器等等。当终端设备101、102、103实现为软件时,可以安装在合适的电子设备中,实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现为单个软件或软件模块。应当理解,图1中及以上描述的终端设备101、102、103实例在此仅作为示例,而不应被理解为具体限定。
服务器105可以是提供各种服务的服务器,例如是对终端设备101、102、103输入的各种信息,例如控制信号、语音或文本信息提供分析、响应和支持等处理的后台服务器。后台服务器可以对接收到的控制信号、语音或目标文本等信息进行分析等处理,并将处理结果通过网络104反馈给终端设备101、102、103。
在具体实施中,服务器105可以根据实际需要实现为硬件,也可以实现为软件。当服务器105实现为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105实现为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。应当理解,图1中及以上描述的服务器105实例在此仅作为示例,而不应被理解为具体限定。
需要说明的是,本申请实施例所提供的基于外接设备在虚拟空间选取浏览点位的方法可以由终端设备101、102、103执行,也可以由服务器105执行,也可以由终端设备101、102、103与服务器105共同配合执行。相应地,基于外接设备在虚拟空间选取浏览点位的装置可以设置于终端设备101、102、103中,也可以设置于服务器105中,也可以设置于终端设备101、102、103和服务器105中。
可以理解的是,当本申请实施例所提供的基于外接设备在虚拟空间选取浏览点位的方法由终端设备101、102、103执行时,上述系统架构100可以不包括网络104和服务器105。
应当理解,图1中的终端设备、网络和服务器的数目及种类仅仅是示意性的。在具体实施中,根据实际需要,可以具有任意数目和种类的终端设备、网络和服务器。
如图2所示,根据本发明一实施例基于外接设备在虚拟空间选取浏览点位的方法包括以下步骤:步骤S201,采集外接设备的控制信号;步骤S202,根据步骤S201中采集的外接设备的控制信号,确认当前浏览点位;步骤S203,构建虚拟摄像机;步骤S204,根据步骤S201中采集的外接设备的控制信号,更新所述虚拟摄像机在虚拟空间中的变换矩阵,即场景投影矩阵(Projection Matrix);步骤S205,根据所述虚拟摄像机在虚拟空间中更新的变换矩阵,更新以当前浏览点位作为虚拟摄像机位置的虚拟场景,本领域技术人员利用现有公知的工具可以很容易地生成并更新虚拟场景,例如可以通过WebGL生成并更新虚拟场景,因此本说明书对此不再做过多赘述;步骤S206,获取虚拟空间中预先设定的浏览点位,同样地,本领域技术人员利用现有公知的工具可以很容易地获取虚拟空间中预先设定的浏览点位,因此本说明书对此也不再做过多赘述;步骤S207,构建上述步骤S203中所构建的虚拟摄像机的视锥;步骤S208,在上述步骤S205及S206的基础上,将位于步骤S207所构建的视锥内的浏览点位初选作为备选浏览点位;步骤S209,分别计算步骤S208中初选出来的各备选浏览点位与当前浏览点位的距离;以及步骤S210,根据步骤S209所计算的结果,选取距离最近的备选浏览点位作为下一个浏览点位。
在上述步骤S201中,可以通过轮询的方式持续采集外接设备的控制信号。本发明所述的外接设备可以是各种常见或不常见的可以输入控制信号的外接设备,例如可通过USB、HDMI等接口有线连接或者可通过蓝牙、红外等无线连接的鼠标、触摸屏、旋转摇杆、游戏手柄、可感知人体肢体运动或面部表情的传感器等。
在上述步骤S202中,可以轮询外接设备的某个特定输入,例如外接设备的某个特定按钮。当轮询到该特定输入所对应的控制信号值有效,例如达到预先设定的某个值时,即视作一次“确认操作”,即可藉此确认当前浏览点位。
在上述步骤S203中,可以通过WebGL构建所述虚拟摄像机,本领域技术人员通过WebGL构建虚拟摄像机属于常规普通操作,因此本说明书对此不再做过多赘述。
参照图3,其示出了上述步骤S204中根据外接设备的控制信号更新虚拟摄像机在虚拟空间中的变换矩阵的具体流程图。如图3所示,在步骤S301中,判断步骤S201中通过轮询方式所采集的外接设备的控制信号是否为零,如果控制信号为零,则接着继续进行下一轮询;如果通过轮询发现外接设备的某个或某几个控制信号不为零,则在步骤S302利用封装的库将不为零的控制信号转换为虚拟摄像机的参数,例如,计算两次轮询的间隔时长与该控制信号变化值的乘积,将其作为虚拟摄像机的旋转角度值,具体举例来说,例如外接设备是摇杆的情况下,摇杆设置成可以在自身轴向上旋转,该旋转具有对应的信号输出端口。这样,根据摇杆旋转的角度大小,端口可输出强度在[0,1]范围内的信号。对端口进行轮询时,可以设置轮询的频率为N(fps),这样,在每个1/N内,都可以求得信号输出强度和时间间隔1/N之间的乘积,因此在任意时刻,按照微积分中积分的概念,都可以求得此刻累积的旋转角度(旋转角度值);随后在步骤S303,根据所述虚拟摄像机的旋转角度值,更新虚拟摄像机在虚拟空间中的变换矩阵。之后虚拟摄像机可以据此更新裁剪出的虚拟空间的画面,从而帮助用户控制想要看到的虚拟空间画面。
以下参照图4~图6,对上述步骤S207~S210进行详细说明。其中图4示出虚拟摄像机视锥的立体示意图,图5示出沿图4中所示虚线组成的平面所得的视锥剖视图,图6示出多个位于虚拟空间中的浏览点位及其与图4所示虚拟摄像机视锥的位置关系示意图。
步骤S207中构建虚拟摄像机的视锥是本领域技术人员的常规操作,因此本说明书对其具体构建方法和过程不再做过多赘述。图4和图5示出了虚拟摄像机视锥的示意图,其中虚拟摄像机所处位置以图中位置O表示,虚拟摄像机视锥的近裁剪面(Near plane,也称为“近裁切面”、“近剪切面”等)以矩形abcd表示,远裁剪面(Far plane,也称为“远裁切面”、“远剪切面”等)以矩形ABCD表示,视场角(Field of View,Fov)在图5中以Fov表示。图4中的点划线箭头OP表示虚拟摄像机的视线方向,其源自虚拟摄像机位置O,穿过近裁剪面abcd和远裁剪面ABCD的中心点。图5中的虚线MN表示水平面,图5中的三角形EOF对应于图4中虚线表示的通过位置O的竖直平面EOF,其与水平面相互垂直。
如图6所示,为了清楚起见,其仅示意性地示出了六个位于虚拟空间中的浏览点位R1、R2、R3、R4、R5、R6,很容易理解,在具体实施中,可以在虚拟空间中预先设定任意数量的浏览位点。在步骤S208中,将位于虚拟摄像机视锥内的浏览点位初选作为备选浏览点位。具体而言,图6中的浏览点位R3和浏览点位R6因为不在近裁剪面和远裁剪面之间,因此被剔除,不作为备选浏览点位。本说明书将通过虚拟摄像机位置O与浏览点位形成的向量称为浏览点位向量,由此每个浏览点位R1、R2、R3、R4、R5、R6各自具有其对应的浏览点位向量(图中仅示例性地以双点划线箭头示出浏览点位R1的浏览点位向量OR1),容易理解地,各个浏览点位向量将分别与虚拟摄像机视线方向OP形成夹角。另外由图6可见,浏览点位R1的浏览点位向量OR1与虚拟摄像机视线方向OP之间的夹角大于视场角Fov的二分之一,因此浏览点位R1也被剔除,不作为备选浏览点位。这样,浏览点位R1、R3、R6被剔除,剩余三个浏览点位R2、R4、R5作为备选浏览点位。
在步骤S209,分别计算步骤S208中初选出来的各备选浏览点位R2、R4、R5与步骤S202中确认的当前浏览点位(也就是虚拟摄像机的位置O)的距离。随后在步骤S210,选取距离最近的浏览点位R4作为下一个浏览点位。
根据本发明一优选实施例,为了在步骤S208中进一步筛选备选浏览点位,还可以优选进一步将浏览点位向量与虚拟摄像机视线方向OP之间的夹角大于某一特定角度值,例如45度、30度或15度等,所对应的浏览点位剔除,不作为备选浏览点位,从而可以得到更优选的备选浏览点位。仍以上述结合图6进行说明的实施例为例,可以进一步剔除浏览点位向量与虚拟摄像机视线方向OP之间的夹角较大的浏览点位R2,而将浏览点位R4和R5作为备选浏览点位,由此减小步骤S209中的计算量。
需要说明的是,附图及以上描述为了便于说明本发明,对各步骤以上述先后顺序进行说明,但本发明基于外接设备在虚拟空间选取浏览点位的方法并不因此限定于上述步骤顺序。具体而言,例如,上述步骤S201、S203和S206及其各自随后进行的步骤可以不分先后同时执行,也可以随机顺序进行。另外还应当理解,上述本发明方法步骤的划分方式仅为清楚说明本发明的目的,因此并不以任何形式限定本发明。换言之,以上描述的方法步骤可以合并或进一步细分,而不本质背离本发明的构思,并且也属于本申请要求保护的范围内。具体而言,例如,步骤S203和S204可以合并表述为一个步骤,步骤S207和S208也可以合并表述为一个步骤。
图7示出根据本发明一实施例基于外接设备在虚拟空间选取浏览点位的装置700的示意框图,该装置700具体可以应用于各种电子设备。如图7所示,根据本发明一实施例基于外接设备在虚拟空间选取浏览点位的装置700包括:信号采集模块701,其采集外接设备的控制信号,优选通过轮询持续采集外接设备的控制信号;当前浏览点位确认模块702,其根据外接设备的控制信号确认当前浏览点位,相应优选地,其在信号采集模块701轮询外接设备特定输入的控制信号值达到预设值时,确认当前浏览点位;虚拟摄像机模块703,其构建虚拟摄像机,并且根据外接设备的控制信号,更新虚拟场景;浏览点位获取模块704,其获取虚拟空间中预先设定的所有浏览点位;备选浏览点位初选模块705,其构建虚拟摄像机的视锥,并初选位于所述视锥内的浏览点位作为备选浏览点位;距离计算模块706,其计算所述备选浏览点位与当前浏览点位的距离;以及选取模块707,其选取距离最近的备选浏览点位作为下一个浏览点位。
如图8所示,上述虚拟摄像机模块703还可以进一步包括变换矩阵更新子模块7031和虚拟场景更新子模块7032,其中,变换矩阵更新子模块7031根据外接设备的控制信号,更新虚拟摄像机在虚拟空间中的变换矩阵,具体地,当信号采集模块701轮询外接设备的一个或多个控制信号不为零时,计算轮询间隔时长与该控制信号值的乘积,作为虚拟摄像机的旋转角度值,根据虚拟摄像机的旋转角度值,更新虚拟摄像机在虚拟空间中的变换矩阵;虚拟场景更新子模块7032根据虚拟摄像机更新的变换矩阵,更新虚拟场景。虚拟摄像机模块703可以通过WebGL构建虚拟摄像机并更新虚拟场景。
参考图9,其示出了可以用来实现本发明实施例的设备的一个计算机系统的结构示意图。需要说明的是,图9示出的设备仅仅是一个示例,不应理解为对本申请的实施例有任何限制作用。图9所示的计算机系统包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储单元908加载到随机访问存储器(RAM)903中的程序,执行各种适当的动作和处理。在RAM 903中,还存储有计算机系统操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标、麦克风、触摸屏幕等的输入单元906;包括诸如液晶显示器、发光二极管显示器等的显示屏幕、扬声器等的输出单元907;包括硬盘存储器等的存储单元908;以及包括诸如WAN/LAN卡、调制解调器等的网络接口卡的通信单元909。通信单元909经由诸如因特网、局域网等的网络执行通信处理。驱动器910也可以根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储单元908。
另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置可以实现本发明上述基于外接设备在虚拟空间选取浏览点位的方法的步骤。
再一方面,本申请还提供了一种计算机程序产品,其包括计算机指令,该计算机指令被处理器执行时实现本发明上述基于外接设备在虚拟空间选取浏览点位的方法的步骤。
特别地,以上参考附图中的流程图描述的实施例可以被实现为计算机软件程序。例如,本申请说明书公开的实施例包括一种计算机程序产品,该计算机程序产品包含用于执行附图中各流程图所示的本发明基于外接设备在虚拟空间选取浏览点位方法的程序指令或代码。在这样的实施例中,该计算机程序可以通过通信单元909从网络上下载和安装,以及/或者从可拆卸介质911安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的方法。
需要说明的是,本申请所描述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、闪存、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等,或者上述的任意合适的组合。
可以通过一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用互联网服务提供商来通过互联网连接)。
附图中的流程图和框图,示例性示出了按照本申请各实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。应当注意,在有些可作为替换的实施方式中,方框中所标注的功能也可以以不同于附图中所示的顺序发生。例如,两个依次表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。还要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。上述单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器,其包括信号采集模块、当前浏览点位确认模块、虚拟摄像机模块、虚拟场景更新模块、浏览点位获取模块、备选浏览点位初选模块、距离计算模块以及选取模块。这些单元或模块的名称在某些情况下并不构成对该单元或模块本身的限定,例如,信号采集模块还可以被描述为“采集信号的模块”。
在本说明书中提及的所有文献都在本申请中引用作为参考,就如同每一篇文献被完整引用至本说明书作为参考。
此外应理解,在阅读了本发明的上述说明内容之后,本领域技术人员可以对本发明做出各种改动或修改,这些等同形式同样落入本发明的保护范围。