虚拟相机的控制方法、系统、存储介质与终端设备与流程
本公开涉及游戏技术领域,尤其涉及一种虚拟相机的控制方法、虚拟相机的控制系统、计算机可读存储介质与终端设备。
背景技术:
随着计算机技术的不断发展,电子游戏的类型和内容不断丰富,例如,2.5维或3维游戏由于其场景的真实性可以为玩家带来沉浸式的游戏体验,因而已成为游戏制作商的主要开发方向。
在上述游戏中,游戏画面往往是基于虚拟相机姿态进行显示的,且虚拟相机可以随着虚拟对象在游戏场景中的移动而移动。目前,虚拟相机在游戏场景中的移动主要是由开发人员凭借经验对虚拟相机的移动和显示进行设计和封装的,但随着游戏场景的不断丰富,该方法难以满足虚拟相机的细节表现度要求,例如,当虚拟相机在游戏场景中移动时,游戏画面的切换容易受到网络环境等的影响,游戏画面的切换流畅度不高,且画面切换灵活性较低;再例如,当游戏场景中存在碰撞体时,游戏画面的显示受到碰撞体的遮挡,玩家难以确定虚拟相机的拍摄视角,因而导致误操作的概率较大。
因此,需要提供一种能够满足游戏画面细节表现度、提高画面切换灵活性的虚拟相机控制方法。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本公开提供了一种虚拟相机的控制方法、虚拟相机的控制系统、计算机可读存储介质与终端设备,进而至少在一定程度上改善现有技术中游戏画面切换流畅度不高的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种虚拟相机的控制方法,通过终端设备提供一图形用户界面,所述图形用户界面包括通过虚拟相机在游戏场景中所确定的游戏画面,所述方法包括:响应于针对所述虚拟相机的操作指令,控制所述虚拟相机在所述游戏场景中移动;在控制所述虚拟相机在所述游戏场景中移动时,获取所述游戏场景中与所述虚拟相机产生碰撞的碰撞体,并对所述碰撞体进行透明化处理或调整所述虚拟相机的位置。
在本公开的一种示例性实施方式中,所述响应于针对所述虚拟相机的操作指令,控制所述虚拟相机在所述游戏场景中移动,包括:根据所述游戏画面的帧时间确定所述虚拟相机的移动速度,以按照所述移动速度在所述游戏场景中移动所述虚拟相机。
在本公开的一种示例性实施方式中,所述根据所述游戏画面的帧时间确定所述虚拟相机的移动速度,包括:采用插值函数,并将所述游戏画面在各个时刻的帧时间作为所述插值函数的输入,得到对应时刻所述虚拟相机的移动速度。
在本公开的一种示例性实施方式中,所述获取所述游戏场景中与所述虚拟相机产生碰撞的碰撞体,并对所述碰撞体进行透明化处理或调整所述虚拟相机的位置,包括:获取所述游戏场景中与所述虚拟相机产生碰撞的碰撞体;确定所述碰撞体的透明条件;根据所述透明条件对所述碰撞体进行透明化处理或调整所述虚拟相机的位置。
在本公开的一种示例性实施方式中,所述根据所述透明条件对所述碰撞体进行透明化处理或调整所述虚拟相机的位置,包括:获取所述碰撞体的标签数据,以根据所述标签数据确定所述碰撞体是否满足透明条件;在确定所述碰撞体满足所述透明条件时,将所述碰撞体的透明度设置为预设值;在确定所述碰撞体不满足所述透明条件时,调整所述虚拟相机的位置。
在本公开的一种示例性实施方式中,所述游戏画面包括一虚拟对象,所述在确定所述碰撞体不满足所述透明条件时,调整所述虚拟相机的位置,包括:当检测到所述虚拟对象靠近所述碰撞体时,在所述虚拟对象的预设位置建立平面图形,所述平面图形与所述游戏画面的投影平面平行;在所述平面图形中确定多个顶点,并获取由所述虚拟相机向各顶点发出的多条射线;在所述多条射线中确定与所述碰撞体相交的相交射线,以及所述相交射线与所述碰撞体的相交位置;计算所述相交位置与所述虚拟对象的距离,以在所述距离最短时,将对应的相交位置确定为目标位置;将所述虚拟相机从当前位置移动至所述目标位置。
在本公开的一种示例性实施方式中,在将所述虚拟相机从当前位置移动至所述目标位置后,所述方法还包括:当检测到所述虚拟对象远离所述碰撞体时,将所述虚拟相机的位置还原至所述当前位置。
在本公开的一种示例性实施方式中,在控制所述虚拟相机在所述游戏场景中移动时,所述方法还包括:在所述游戏画面中显示所述虚拟相机的观察信息,所述观察信息包括所述虚拟相机的位置、运动轨迹和所述游戏画面的投影平面中的任意一种或多种。
在本公开的一种示例性实施方式中,所述虚拟相机在所述游戏场景中的移动包括平移和/或旋转。
根据本公开的第二方面,提供一种虚拟相机的控制系统,通过终端设备提供一图形用户界面,所述图形用户界面包括通过虚拟相机在游戏场景中所确定的游戏画面,所述系统包括:接收模块,用于接收所述终端设备针对所述虚拟相机的操作指令;移动模块,用于响应于所述针对所述虚拟相机的操作指令,控制所述虚拟相机在所述游戏场景中移动;碰撞处理模块,用于获取所述游戏场景中与所述虚拟相机产生碰撞的碰撞体,并对所述碰撞体进行透明化处理或调整所述虚拟相机的位置;显示模块,用于显示由所述虚拟相机所确定的游戏画面。
在本公开的一种示例性实施方式中,所述移动模块用于根据所述游戏画面的帧时间确定所述虚拟相机的移动速度,以按照所述移动速度在所述游戏场景中移动所述虚拟相机。
在本公开的一种示例性实施方式中,所述移动模块还用于采用插值函数,并将所述游戏画面在各个时刻的帧时间作为所述插值函数的输入,得到对应时刻所述虚拟相机的移动速度。
在本公开的一种示例性实施方式中,所述碰撞处理模块用于获取所述游戏场景中与所述虚拟相机产生碰撞的碰撞体;确定所述碰撞体的透明条件;根据所述透明条件对所述碰撞体进行透明化处理或调整所述虚拟相机的位置。
在本公开的一种示例性实施方式中,所述碰撞处理模块还用于获取所述碰撞体的标签数据,以根据所述标签数据确定所述碰撞体是否满足透明条件,在确定所述碰撞体满足所述透明条件时,将所述碰撞体的透明度设置为预设值,在确定所述碰撞体不满足所述透明条件时,调整所述虚拟相机的位置。
在本公开的一种示例性实施方式中,所述游戏画面包括一虚拟对象,所述碰撞处理还用于当检测到所述虚拟对象靠近所述碰撞体时,在所述虚拟对象的预设位置建立平面图形,所述平面图形与所述游戏画面的投影平面平行,在所述平面图形中确定多个顶点,并获取由所述虚拟相机向各顶点发出的多条射线,在所述多条射线中确定与所述碰撞体相交的相交射线,以及所述相交射线与所述碰撞体的相交位置,计算所述相交位置与所述虚拟对象的距离,以在所述距离最短时,将对应的相交位置确定为目标位置,将所述虚拟相机从当前位置移动至所述目标位置。
在本公开的一种示例性实施方式中,在将所述虚拟相机从当前位置移动至所述目标位置后,所述碰撞处理模块还用于当检测到所述虚拟对象远离所述碰撞体时,将所述虚拟相机的位置还原至所述当前位置。
在本公开的一种示例性实施方式中,在控制所述虚拟相机在所述游戏场景中移动时,所述显示模块还用于在所述游戏画面中显示所述虚拟相机的观察信息,所述观察信息包括所述虚拟相机的位置、运动轨迹和所述游戏画面的投影平面中的任意一种或多种。
在本公开的一种示例性实施方式中,所述虚拟相机在所述游戏场景中的移动包括平移和/或旋转。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种虚拟相机的控制方法。
根据本公开的第四方面,提供一种终端设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;显示屏幕,用于显示图形用户界面;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种虚拟相机的控制方法。
本公开具有以下有益效果:
根据本示例性实施方式中的虚拟相机的控制方法、虚拟相机的控制系统、计算机可读存储介质和终端设备,可以响应于针对虚拟相机的操作指令,控制虚拟相机在游戏场景中移动,并在控制虚拟相机在游戏场景中移动时,获取游戏场景中与虚拟相机产生碰撞的碰撞体,并对该碰撞体进行透明化处理或调整上述虚拟相机的位置。一方面,本示例性实施方式通过响应于针对虚拟相机的操作指令,控制虚拟相机在游戏场景中移动,可以实时确定虚拟相机的移动方式,从而提高游戏画面的切换流畅度和游戏画面的细节表现度,也增强了虚拟相机的操作灵活性;另一方面,通过获取游戏场景中与虚拟相机产生碰撞的碰撞体,并对碰撞体进行透明化处理或调整虚拟相机的位置,可以进一步实现游戏画面的流畅切换,也提升了玩家的游戏体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本示例性实施方式中一种虚拟相机的控制方法的流程图;
图2示出本示例性实施方式中一种插值函数的示意图;
图3示出本示例性实施方式中一种透明化处理的示意图;
图4示出本示例性实施方式中一种游戏画面的示意图;
图5示出本示例性实施方式中一种虚拟相机的成像示意图;
图6示出本示例性实施方式中一种碰撞处理的示意图;
图7示出本示例性实施方式中另一种游戏画面的示意图;
图8示出本示例性实施方式中另一种虚拟相机的控制方法的流程图;
图9示出本示例性实施方式中一种虚拟相机的控制系统的结构框图;
图10示出本示例性实施方式中一种用于实现上述方法的计算机可读存储介质;
图11示出本示例性实施方式中一种用于实现上述方法的终端设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
本公开的示例性实施方式首先提供了一种虚拟相机的控制方法,该方法可以应用于终端设备,并通过在终端设备的处理器上执行软件并在终端设备的显示屏幕中渲染得到图形用户界面,且该图形用户界面可以显示通过虚拟相机在游戏场景中所确定的游戏画面。
其中,终端设备可以是具有显示屏幕的电子设备,如计算机、平板电脑、智能手机、游戏机、vr(virtualreality,虚拟现实)设备等室内终端设备,包括用于存储数据的存储器和用于数据处理的处理器,通过存储器安装游戏应用软件,以及处理器执行对应的游戏程序,实现游戏程序在终端设备上的运行;虚拟相机可以通过一系列相机参数捕获游戏中的游戏画面,该游戏画面通常可以包括全部或局部的游戏场景,一般地,游戏场景中只有一个虚拟相机,特别的,当需要制作分屏、画中画等效果的时候,游戏场景中的虚拟相机可以有多个;图形用户界面可以用于显示通过虚拟相机在游戏场景中确定的游戏画面和可供玩家操作的游戏控件等;游戏画面是指包含游戏场景及处于该游戏场景中虚拟对象的画面,且游戏画面的显示取决于游戏场景中虚拟相机的位置,例如,当虚拟相机被设置为跟随某虚拟对象移动,则游戏画面可以始终显示为该虚拟对象在游戏场景一定范围内的画面。
参考图1所示,示出了本示例性实施方式中虚拟相机的控制方法的一种流程图,可以包括以下步骤s110~s120:
步骤s110.响应于针对虚拟相机的操作指令,控制上述虚拟相机在游戏场景中移动。
其中,虚拟相机在游戏画面中的移动可以包括平移、旋转等中的任意一种或多种;操作指令可以是玩家通过终端设备输入的控制虚拟相机的指令,例如,可以包括玩家通过终端设备输入的控制虚拟相机移动的指令,以触控终端为例,操作指令可以是玩家在触控终端的滑动、两指聚拢或放开等操作,其分别可以用于控制虚拟相机在游戏场景中沿相应的方向移动;若终端设备是电脑终端,操作指令可以是特定的功能按键,例如,当玩家按下“w”键时,可以控制虚拟相机沿当前方向直线移动。
玩家可以在图形用户界面中输入相应的操作指令,与此同时,终端设备可以通过相应的接口依次接收上述操作指令,并响应于该操作指令,控制虚拟相机在游戏场景中按照上述操作指令的内容进行移动。例如,当接收到玩家在图形用户界面中沿某个方向滑动的操作指令时,终端设备可以控制虚拟相机沿相应方向向前移动,或者当操作指令为图形用户界面中某一位置的坐标时,终端设备可以控制虚拟相机按照直线或曲线的行进方式移动至上述坐标对应的位置。此外,终端设备接收操作指令的接口可以是设备或模块之间通信交流的接口,可以是物理接口或虚拟接口,虚拟接口是指计算机内部的接口,通常不可见,例如计算机中的80端口、21端口、23端口等,物理接口一般是可见接口,例如计算机背板的rj45网口、交换机路由器集线器等的rj45端口等。
在一些情况下,游戏画面的渲染会受到网络环境等因素的影响,因此,为了减少在控制虚拟相机移动过程中,游戏画面的渲染时间不稳定所造成的画面不连贯的问题。因此,在一种可选的实施方式中,步骤s110可以通过以下方式控制虚拟相机在游戏场景中的移动:
根据游戏画面的帧时间确定虚拟相机的移动速度,以按照上述移动速度在游戏场景中移动虚拟相机。
其中,帧时间是指终端设备渲染每个游戏帧所需要的时间,该时间通常与玩家设置的游戏画面显示方式和当前时刻的网络环境等相关,其数值一般可以通过相应的数据接口获取。
根据终端设备在每个时刻渲染游戏画面的帧时间,可以确定对应时刻虚拟相机的移动速度,从而可以按照该移动速度在游戏场景中移动虚拟相机。按照这种方式,虚拟相机的移动速度可以随着游戏画面的渲染时间变化,相比按照恒定速度移动虚拟相机的方法,可以增强虚拟相机的移动灵活性,提高游戏画面的切换体验。
进一步的,为了确定游戏画面的帧时间与虚拟相机的移动速度之间的关系,在一种可选的实施方式中,可以通过以下方式确定虚拟相机的移动速度:
采用插值函数,并将游戏画面在各个时刻的帧时间作为上述插值函数的输入,得到对应时刻虚拟相机的移动速度。
其中,插值函数是根据样本点补插连续函数,以通过连续函数得到其他样本点数据的方法,可以包括线性插值函数、多项式插值函数和牛顿插值函数等。
以二次函数为例,即y=ax2+bx+c,其中,y表示虚拟相机当前位置与目标位置之间的距离,x为当前时刻的帧时间,a和b分别为一确定常数;对y求导,得到y'=2ax+b,则y'为虚拟相机的移动速度,可以看出,b实际上表示了虚拟相机的速度增量。参考图2所示,随着帧时间x的增大,y值,即虚拟相机当前位置和目标位置的距离越远,虚拟相机的移动速度y'也越大,也就是说,当游戏画面的渲染时间增加时,虚拟相机的移动速度加快,游戏画面的在视觉上的切换流畅度增加。
通过采用插值函数,并将每个时刻的帧时间作为插值函数的输入,拟合得到对应时刻虚拟相机的移动速度,可以更好地体现游戏画面的帧时间与虚拟相机的移动速度的关系,便于终端设备实时调整虚拟相机的移动速度,可以增加游戏画面的切换流畅度;同时,对开发人员而言,也有助于其确定对应时刻的游戏画面和虚拟相机的状态,以便进一步调整虚拟相机的移动方式。需要说明的是,上述采用二次函数拟合虚拟相机移动速度的方法仅为示例性说明,依据其他插值函数得到虚拟相机的移动速度的方法也应当属于本示例性实施方式的保护范畴。
步骤s120.在控制虚拟相机在游戏场景中移动时,获取上述游戏场景中与虚拟相机产生碰撞的碰撞体,并对碰撞体进行透明化处理或调整上述虚拟相机的位置。
其中,碰撞体是指游戏场景中的障碍物,可以包括物体、人物、车辆等。
通常,在游戏画面中,可以包括多种虚拟对象,例如物体、环境,如道路、沟壑、树木等,为了在控制虚拟相机在游戏画面中移动时,营造一种真实的游戏场景体验,终端设备可以通过获取游戏场景中与虚拟相机产生碰撞的碰撞体,并对碰撞体进行透明化处理或调整虚拟相机的位置。例如,对于游戏场景中的透明碰撞体,如流水等,可以对该透明碰撞体进行透明化处理;对于游戏场景中的大型建筑物等,可以不进行透明化处理,而通过调整虚拟相机的位置使建筑物等处于便于观察的位置。
考虑到在游戏场景中,碰撞体的类型具有多样性,在一种可选的实施方式中,步骤s120可以通过以下方式实现:
获取游戏场景中与上述虚拟相机产生碰撞的碰撞体;
确定上述碰撞体的透明条件;
根据上述透明条件对上述碰撞体进行透明化处理或调整虚拟相机的位置。
其中,透明条件可以包括碰撞体是否可以设置为半透明或全透明,也可以包括透明度的具体数值等,可以由开发人员预先根据游戏中碰撞体的类型等进行设置,例如,可以将透明条件设置为判断碰撞体是否为透明碰撞体,在碰撞体是透明碰撞体时,进一步设置碰撞体的透明度值等;在碰撞体不是透明碰撞体时,可以进一步判断碰撞体的体积是否大于体积阈值。
在控制虚拟相机在游戏场景中移动时,可以实时或者按照一定时间间隔获取该游戏场景中与虚拟相机产生碰撞的碰撞体,并确定该碰撞体的透明条件。例如,当获取的碰撞体不是透明碰撞体时,可以确定该碰撞体的透明条件为判断碰撞体的体积是否大于体积阈值;当获取的碰撞体是透明碰撞体时,可以确定该碰撞体的透明条件为确定碰撞体的透明度值等。在确定碰撞体的透明条件后,可以根据该透明条件对上述碰撞体进行透明化处理或调整虚拟相机的位置,例如,当确定碰撞体为透明碰撞体或碰撞体不是透明碰撞体且其体积小于或等于体积阈值时,可以进一步确定碰撞体的透明度值,以对碰撞体进行透明化处理;当确定碰撞体不是透明碰撞体且其体积大于体积阈值时,可以调整虚拟相机的位置,以便虚拟相机处于玩家便于观察碰撞体所在游戏场景的位置。
此外,由于虚拟相机在游戏场景中并不真实存在,因此,为了便于确定与虚拟相机产生碰撞的碰撞体,可以设置一定的距离阈值,从而在虚拟相机与碰撞体的距离小于该距离阈值时,确定该碰撞体为与虚拟相机产生碰撞的碰撞体。
在游戏应用中,游戏场景中的各碰撞体均可以具有各自的属性信息,因此,为了便于确定获取的碰撞体是否满足透明条件,在一种可选的实施方式中,可以通过获取预先配置的碰撞体的标签数据来确定碰撞体是否满足透明条件,具体的,可以通过以下方法实现:
获取碰撞体的标签数据,以根据该标签数据确定上述碰撞体是否满足透明条件;
在确定上述碰撞体满足透明条件时,将碰撞体的透明度设置为预设值;
在确定上述碰撞体不满足上述透明条件时,调整虚拟相机的位置。
其中,碰撞体的标签数据可以用于表示碰撞体的透明属性,如碰撞体是否可以进行透明化处理,或者也可以包括透明化处理时该碰撞体的透明度值等;碰撞体是否满足透明条件可以根据碰撞体的标签数据确定,具体的,可以通过获取到的碰撞体的标签数据确定碰撞体是否满足透明条件,以及在确定碰撞体满足透明度条件时,该碰撞体的透明度值;碰撞体透明度的预设值一般可以由开发人员根据经验设置,例如可以设置为0.5、0.7等。需要说明的是,上述透明条件仅是一种示例性说明,本示例性实施方式的保护范畴并不以此为限。
通过获取碰撞体的标签数据,可以确定终端设备获取到的碰撞体是否满足透明条件,例如,碰撞体的标签数据可以是“true”和“false”的布尔值,根据布尔值可以确定标签数据为“true”的碰撞体满足透明条件,而标签数据为“false”的碰撞体不满足透明条件,从而在确定碰撞体满足在上述透明条件时,可以将碰撞体的透明度设置为预设值,在碰撞体不满足透明条件时,调整虚拟相机的位置,以使虚拟相机可以处于便于玩家观察游戏场景的位置。图3示出了一种对碰撞体进行透明化处理的示意图,如图所示,虚拟相机310可以捕获碰撞体320和虚拟对象所在的游戏场景,在确定碰撞体320满足透明条件时,可以将碰撞体320设置为半透明,从而得到如图4所示的游戏画面,可以看出,在经过透明化处理后,游戏画面中可以显示碰撞体和被碰撞体所遮挡的游戏场景。
如前所述,游戏画面中可以存在一个或多个虚拟对象。本示例性实施方式中,虚拟相机可以随着某个虚拟对象的移动而移动,该虚拟对象可以是由玩家控制的游戏角色,如人物、动物、车辆等。在确定碰撞体不满足上述透明条件时,为了使游戏画面可以呈现上述虚拟对象和碰撞体所对应的游戏场景,便于观察虚拟对象所在的位置和区域等,在一种可选的实施方式中,可以通过以下方式调整碰撞体的位置:
当检测到虚拟对象靠近碰撞体时,在虚拟对象的预设位置建立平面图形,该平面图形与游戏画面的投影平面平行;
在上述平面图形中确定多个顶点,并获取由虚拟相机向各顶点发出的多条射线;
在上述多条射线中确定与上述碰撞体相交的相交射线,以及该相交射线与上述碰撞体的相交位置;
计算上述相交位置与上述虚拟对象的距离,以在该距离最短时,将对应的相交位置确定为目标位置;
将虚拟相机从当前位置移动至目标位置。
其中,虚拟对象的预设位置一般可以根据游戏中虚拟对象的观察视角确定,例如,若虚拟对象的观察视角为第一视角,即以虚拟对象观察到的视角为相机视角,则可以将预设位置设置为玩家所控制的虚拟对象的观察位置,如当虚拟对象为人物角色时,其预设位置可以是虚拟对象的眼睛位置;游戏画面的投影平面也可以称为虚拟相机的近裁剪平面(nearclipplane)。具体的,如图5所示,示出了一种虚拟相机的成像结构示意图,510为虚拟相机,520为游戏画面的投影平面;预设图形可以是矩形、圆形、多边形等形状,本示例性实施方式对此不作特殊限定;预设图形的多个顶点可以依据预设图形的形状自行设置,例如当预设图形为矩形时,顶点可以是矩形的四个顶点,或者也可以包括矩形各边的中心点,或者多个顶点也可以根据实际需求设置在预设图形的任意位置。
当碰撞体不满足透明条件时,说明碰撞体存在遮挡玩家视野的情况,因此,可以在检测到虚拟对象靠近碰撞体时,在虚拟对象的预设位置建立一个与游戏画面的投影平面相平行的平面图形,该平面图形的大小一般可以小于或等于虚拟相机在对应位置所能捕获到的最大面积。在上述平面图形中确定多个顶点,并获取由虚拟相机向各顶点发出的射线,判断各射线中是否与碰撞体相交;若存在多条射线与碰撞体相交,则可以通过确定对应射线与碰撞体的相交位置,确定该相交位置与虚拟对象的距离,从而将得到的距离中的最小值所对应的相交位置确定为目标位置,以将虚拟相机的位置从当前位置移动至该目标位置;若仅存在一条射线与碰撞体相交,则可以将该射线与碰撞体的相交位置确定为目标位置,并将虚拟相机移动至该目标位置;若没有射线与碰撞体相交,则在一定程度上说明碰撞体并不影响玩家的视野,因此可以不调整虚拟相机的位置,即保持虚拟相机处于当前位置。
图6示出了一种调整虚拟相机的位置的示意图,在确定碰撞体320不满足透明条件时,可以通过上述方法确定虚拟相机310的目标位置,从而将虚拟相机310的位置从图中左侧所示的位置移动至图中右侧所示的目标位置。图7示出了通过上述方法得到的一个游戏画面的示意图,可以看出,通过将虚拟相机从710位置移动至720,虚拟相机可以显示虚拟对象所在的游戏画面,而不受碰撞体的视觉影响。
在一种可选的实施方式中,在上述通过多条射线确定虚拟相机的目标位置的方法中,也可以通过设置多个射线的数量阈值,以在多条射线中与碰撞体相交的相交射线的数量大于上述数量阈值时,通过确定各相交射线与碰撞体的相交位置,将各相交位置距离虚拟对象最近的位置确定为目标位置。
进一步的,在通过上述方法将虚拟相机移动至目标位置后,为了在虚拟对象移动至远离碰撞体的位置后,保持游戏画面的完整性和连续性,在一种可选的实施方式中,可以在检测到虚拟对象远离碰撞体时,将虚拟相机的位置还原至上述当前位置。
此外,在一些情况下,例如,当游戏场景中在虚拟相机的移动方向上不存在碰撞体时,但玩家通过图形用户界面触发了拉近操作,即将虚拟相机向游戏场景中某一位置靠近的操作,可以将未触发拉近操作时的位置作为当前位置,将上述虚拟相机所要靠近的位置作为目标位置,按照上述拉近操作移动虚拟相机,以使游戏画面呈现出按照一定速度靠近上述目标位置的视觉效果;同时,在完成拉近操作后,也可以将虚拟相机的位置从拉近操作后的目标位置还原至当前位置,也就是未触发拉近操作时所在的位置。需要说明的是,响应于玩家对虚拟相机的拉近操作,终端设备在将虚拟相机从当前位置拉近至目标位置的过程中,也可以采用上述步骤s110中的插值函数计算虚拟相机的移动速度,以按照该移动速度移动虚拟相机。
更进一步的,为了便于开发人员观察虚拟相机的位置和游戏画面的显示等,在控制虚拟相机在游戏场景中移动时,在一种可选的实施方式中,还可以在上述游戏画面中显示上述虚拟相机的观察信息。其中,虚拟相机的观察信息可以包括虚拟相机在当前时刻的位置、运动轨迹和游戏画面的投影平面等中的任意一种或多种。
通过在控制虚拟相机在游戏场景中移动时,在游戏画面中显示虚拟相机的观察信息,可以提高虚拟相机在游戏画面中的可视化程度,有助于开发人员根据虚拟相机的观察信息确定虚拟相机的状态,在一定程度上提高了游戏的开发效率。
本示例性实施方式还提供了另一种虚拟相机的控制方法的流程图,参考图8所示,可以包括以下步骤s801~s810:
步骤s801.接收终端设备针对虚拟相机的操作指令。
步骤s802.响应于上述针对虚拟相机的操作指令,采用插值函数计算虚拟相机的移动速度。
步骤s803.按照上述移动速度控制虚拟相机在游戏场景中移动。
步骤s804.在控制虚拟相机在游戏场景中移动时,获取游戏场景中与上述虚拟相机产生碰撞的碰撞体,以在获取到碰撞体时,执行步骤s805,确定碰撞体的透明条件,并判断该碰撞体是否满足透明条件;在未获取到碰撞体时,执行步骤s808,检测虚拟相机是否触发过拉近操作。
步骤s805.确定碰撞体的透明条件,并判断该碰撞体是否满足透明条件,在确定碰撞体满足透明条件时,执行步骤s806,将碰撞体的透明度设置为预设值;在确定碰撞体不满足透明条件时,执行步骤s807,计算虚拟相机的目标位置。
步骤s806.将碰撞体的透明度设置为预设值。
步骤s807.计算虚拟相机的目标位置。
具体的,可以通过在虚拟对象的预设位置建立平面图形,并在上述平面图形中确定多个顶点,以获取由虚拟相机向各顶点发出的多条射线,在上述多条射线中确定与上述碰撞体相交的相交射线,以及该相交射线与上述碰撞体的相交位置,计算上述相交位置与上述虚拟对象的距离,以在距离最短时,将对应的相交位置确定为目标位置。
步骤s808.检测虚拟相机是否触发过拉近操作,在确定虚拟相机触发过拉近操作后,执行步骤s809,将虚拟相机从当前位置移动至目标位置,即上述拉近操作所对应的位置;在确定虚拟相机未触发过拉近操作时,执行步骤s802,即采用插值函数计算虚拟相机的移动速度,以按照该移动速度控制虚拟相机在游戏场景中移动。
步骤s809.将虚拟相机从当前位置移动至目标位置。
在通过步骤s807计算虚拟相机的目标位置时,可以将虚拟相机从当前位置移动至该目标位置;当通过步骤s808确定终端设备触发虚拟相机的拉近操作,则可以将虚拟相机从当前位置移动至该拉近操作所要移动到的目标位置。通过移动虚拟相机的位置,可以使虚拟相机处于便于观察碰撞体所在游戏场景的位置。
步骤s810.将虚拟相机的位置还原至当前位置。
具体的,在检测到碰撞体并将虚拟相机的位置移动至目标位置后,若检测到虚拟对象远离碰撞体,则可以将虚拟相机从目标位置还原至当前位置;在未获取到碰撞体,且在响应于玩家在终端设备触发虚拟相机的拉近操作后,如在检测到该操作执行结束后,可以自动将虚拟相机的位置还原至当前位置,也就是上述未触发拉近操作时的位置。
综上,根据本示例性实施方式中的虚拟相机的控制方法,可以响应于针对虚拟相机的操作指令,控制虚拟相机在游戏场景中移动,并在控制虚拟相机在游戏场景中移动时,获取游戏场景中与虚拟相机产生碰撞的碰撞体,并对该碰撞体进行透明化处理或调整上述虚拟相机的位置。一方面,本示例性实施方式通过响应于针对虚拟相机的操作指令,控制虚拟相机在游戏场景中移动,可以实时确定虚拟相机的移动方式,从而提高游戏画面的切换流畅度和游戏画面的细节表现度,也增强了虚拟相机的操作灵活性;另一方面,通过获取游戏场景中与虚拟相机产生碰撞的碰撞体,并对碰撞体进行透明化处理或调整虚拟相机的位置,可以进一步实现游戏画面的流畅切换,也提升了玩家的游戏体验。
进一步的,本示例性实施方式还提供了一种虚拟相机的控制系统,该控制系统可以应用于终端设备,且该终端设备的显示屏幕中可以提供一图形用户界面,该图形用户界面可以用于显示通过虚拟相机在游戏场景中所确定的游戏画面。图9示出了本示例性实施方式中虚拟相机的控制系统的结构框图,如图所示,虚拟相机的控制系统900可以包括:接收模块910,可以用于接收终端设备针对虚拟相机的操作指令;移动模块920,可以用于响应于上述针对虚拟相机的操作指令,控制虚拟相机在游戏场景中移动;碰撞处理模块930,可以用于获取游戏场景中与上述虚拟相机产生碰撞的碰撞体,并对该碰撞体进行透明化处理或调整上述虚拟相机的位置;显示模块940,可以用于显示上述由虚拟相机所确定的游戏画面。
在本公开的一种示例性实施方式中,移动模块920可以用于根据游戏画面的帧时间确定虚拟相机的移动速度,以按照移动速度在游戏场景中移动虚拟相机。
在本公开的一种示例性实施方式中,移动模块920还可以用于采用插值函数,并将游戏画面在各个时刻的帧时间作为插值函数的输入,得到对应时刻虚拟相机的移动速度。
在本公开的一种示例性实施方式中,碰撞处理模块930可以用于获取游戏场景中与虚拟相机产生碰撞的碰撞体,确定碰撞体的透明条件,根据该透明条件对上述碰撞体进行透明化处理或调整虚拟相机的位置。
在本公开的一种示例性实施方式中,碰撞处理模块930还可以用于获取碰撞体的标签数据,以根据标签数据确定碰撞体是否满足透明条件,在确定碰撞体满足透明条件时,将碰撞体的透明度设置为预设值,在确定碰撞体不满足透明条件时,调整虚拟相机的位置。
在本公开的一种示例性实施方式中,上述游戏画面可以包括一虚拟对象,碰撞处理模块930还可以用于当检测到虚拟对象靠近碰撞体时,在虚拟对象的预设位置建立平面图形,平面图形与游戏画面的投影平面平行,在平面图形中确定多个顶点,并获取由虚拟相机向各顶点发出的多条射线,在多条射线中确定与碰撞体相交的相交射线,以及相交射线与碰撞体的相交位置,计算相交位置与虚拟对象的距离,以在距离最短时,将对应的相交位置确定为目标位置,将虚拟相机从当前位置移动至目标位置。
在本公开的一种示例性实施方式中,在将虚拟相机从当前位置移动至目标位置后,碰撞处理模块930还可以用于当检测到虚拟对象远离碰撞体时,将虚拟相机的位置还原至当前位置。
在本公开的一种示例性实施方式中,在控制虚拟相机在游戏场景中移动时,显示模块940还可以用于在游戏画面中显示虚拟相机的观察信息,该观察信息包括虚拟相机的位置、运动轨迹和游戏画面的投影平面中的任意一种或多种。
在本公开的一种示例性实施方式中,虚拟相机在游戏场景中的移动包括平移和/或旋转。
根据本示例性实施方式中的虚拟相机的控制系统,可以通过接收模块接收终端设备针对虚拟相机的操作指令,响应于该操作指令,通过移动模块控制虚拟相机在游戏场景中移动,并通过碰撞处理模块获取上述游戏场景中与虚拟相机产生碰撞的碰撞体,以对该碰撞体进行透明化处理或调整虚拟相机的位置,同时,通过显示模块显示游戏画面。一方面,通过上述系统可以实现游戏中对虚拟相机的控制,如可以控制虚拟相机在游戏场景中移动,从而实现游戏画面的流畅切换;另一方面,通过上述各模块,可以将虚拟相机的控制逻辑与游戏各功能模块解耦,使虚拟相机的控制代码可以迁移至其他应用,同时,在开发人员对游戏进行维护时,可以仅针对虚拟相机的控制逻辑进行维护,而不需要对游戏的各个功能模块进行维护,因而可以提高游戏的开发效率。
上述系统中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的方案细节内容可以参见方法部分的实施方式内容,因而不再赘述。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
参考图10所示,描述了根据本公开的示例性实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品1000可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施方式还提供了一种能够实现上述方法的终端设备。下面参照图11来描述根据本公开的这种示例性实施方式的终端设备1100。图11显示的终端设备1100仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图11所示,终端设备1100可以以通用计算设备的形式表现。终端设备1100的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130和显示单元1140。
其中,显示单元1140可以是显示屏幕;存储单元1120存储有程序代码,程序代码可以被处理单元1110执行,使得处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元1110可以执行图1和图8所示的方法步骤等。
存储单元1120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1121和/或高速缓存存储单元1122,还可以进一步包括只读存储单元(rom)1123。
存储单元1120还可以包括具有一组(至少一个)程序模块1125的程序/实用工具1124,这样的程序模块1125包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
终端设备1100也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该终端设备1100交互的设备通信,和/或与使得该终端设备1100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1150进行。并且,终端设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与终端设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合终端设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例性实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开示例性实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除