虚拟镜头控制方法、装置、存储介质和电子设备与流程

文档序号:31025514发布日期:2022-08-06 00:16阅读:136来源:国知局
虚拟镜头控制方法、装置、存储介质和电子设备与流程

1.本公开涉及游戏技术领域,尤其涉及一种虚拟镜头控制方法、装置、存储介质和电子设备。


背景技术:

2.力臂式游戏视觉是指一种应用于cg(computer graphics,计算机图形)电影拍摄与游戏中的虚拟镜头实现方式,可以有效解决虚拟角色等主体对象的视觉或者注视问题,以使得虚拟镜头角度改变时主体对象依然保持在虚拟镜头对应位置上。
3.为了保持保障整体画面的构图效果,目前主要通过如图1中调整虚拟镜头与虚拟角色之间的力臂长度,或者如图2中让力臂直接离开虚拟角色或虚拟镜头的方式来调节虚拟镜头与虚拟角色之间的位置相对关系。
4.目前虚拟镜头的控制方式较为单一。


技术实现要素:

5.本公开提供了一种虚拟镜头控制方法、装置、存储介质和电子设备,进而提高虚拟镜头控制方式的多元化与丰富性的技术效果。
6.第一方面,本公开一个实施例提供了一种虚拟镜头控制方法,包括:
7.确定当前虚拟对象的对象移动速度与对象位置信息;
8.根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离;其中,对象移动速度与相对距离呈正相关;
9.根据相对距离与对象位置信息确定虚拟镜头的目标位置;
10.控制虚拟镜头移动至目标位置。
11.在本公开一个可选实施例中,根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离,包括:
12.确定虚拟镜头的虚拟力臂的力臂移动速度;
13.根据对象移动速度与力臂移动速度的相对大小确定虚拟镜头与虚拟对象之间的相对距离。
14.在本公开一个可选实施例中,根据对象移动速度与力臂移动速度的相对大小确定虚拟镜头与虚拟对象之间的相对距离,包括:
15.若对象移动速度大于力臂移动速度,则增大虚拟镜头与虚拟对象之间的距离,得到相对距离。
16.在本公开一个可选实施例中,根据对象移动速度与力臂移动速度的相对大小确定虚拟镜头与虚拟对象之间的相对距离,包括:
17.若对象移动速度小于力臂移动速度,则缩短虚拟镜头与虚拟对象之间的距离,得到相对距离。
18.在本公开一个可选实施例中,对象移动速度与相对距离进行无量纲化处理后的数
值相等。
19.在本公开一个可选实施例中,根据相对距离与对象位置信息确定虚拟镜头的目标位置,包括:
20.确定当前虚拟镜头的镜头位置信息;
21.根据镜头位置信息与对象移动速度确定虚拟对象相对于虚拟镜头的相对移动方向;
22.根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置。
23.在本公开一个可选实施例中,根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置,包括:
24.若虚拟对象相对于虚拟镜头的相对移动方向为靠近虚拟镜头,则将距离虚拟对象所在位置具有相对距离的位置,确定为虚拟镜头的目标位置。
25.在本公开一个可选实施例中,根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置,包括:
26.若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的力臂控点的控点位置信息;其中,力臂控点是指虚拟力臂远离虚拟镜头的端点;
27.根据控点位置信息、相对距离与对象位置信息确定虚拟镜头的目标位置。
28.在本公开一个可选实施例中,根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的力臂控点的控点位置信息,包括:
29.根据镜头位置信息确定虚拟镜头的第一方向向量与第二方向向量;其中,第一方向与第二方向所在平面与虚拟镜头所在平面平行,且第一方向与第二方向垂直;
30.根据第一方向向量、第二方向向量、对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离;
31.根据目标调整距离与对象位置信息确定虚拟力臂的控点位置。
32.在本公开一个可选实施例中,根据第一方向向量、第二方向向量、对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离,包括:
33.计算对象移动速度的速度标向量与第一方向向量的第一内积;
34.计算第一内积与预设限制距离的乘积;
35.计算对象移动速度的速度标向量与第二方向向量的第二内积;
36.计算乘积与第二内积的加和,得到虚拟力臂的目标调整距离。
37.在本公开一个可选实施例中,若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息,包括:
38.若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,则根据对象位置信息确定虚拟对象当前的位置是否超出预设触发范围;
39.若虚拟对象当前的位置超出预设触发范围,则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息。
40.第二方面,本公开一个实施例提供了一种虚拟镜头控制装置,该装置包括:
41.第一确定模块,用于确定当前虚拟对象的对象移动速度与对象位置信息;
42.第二确定模块,用于根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离;其中,对象移动速度与相对距离呈正相关;
43.第三确定模块,用于根据相对距离与对象位置信息确定虚拟镜头的目标位置;
44.控制模块,用于控制虚拟镜头移动至目标位置。
45.第三方面,本公开一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上的方法。
46.第四方面,本公开一个实施例提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行如上的方法。
47.本公开的技术方案具有以下有益效果:
48.本公开实施例提供的虚拟镜头控制方法先确定当前虚拟对象的对象移动速度与对象位置信息,根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离,然后根据相对距离与对象位置信息确定虚拟镜头的目标位置,最后将虚拟镜头调整至该目标位置即可完成对虚拟镜头的控制。第一方面,本公开实施例根据虚拟对象的对象移动速度实时调整虚拟镜头与虚拟对象之间的相对距离,使得虚拟镜头与虚拟对象之间的相对距离可以根据虚拟对象在例如行走、跳跃、奔跑、飞翔等不同移动状态下实时调整,以构建与当前移动状态对应的画面构图,大大增强游戏画面的速度感,从而解决目前虚拟镜头的控制方式较为单一的技术问题,达到了提高虚拟镜头控制方式的多元化与丰富性的技术效果;
49.第二方面,由于虚拟镜头与虚拟对象之间的相对距离与虚拟镜头的移动速度呈正相关,那也就是说,虚拟力臂距离虚拟对象越远,虚拟力臂的移动速度越快,虚拟力臂越靠近虚拟对象,虚拟力臂的移动速度越慢,从而使得虚拟镜头在开始移动与停止移动时更为平缓,卡顿感大大降低,大大提高虚拟镜头移动的流畅性。
50.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
51.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
52.图1示出本示例性实施方式中终端设备在运行时提供的图形用户界面示意图;
53.图2示出本示例性实施方式中终端设备在运行时提供的图形用户界面示意图;
54.图3示出本示例性实施方式中终端设备在运行时提供的图形用户界面示意图;
55.图4示出本示例性实施方式中一种虚拟镜头控制方法的流程图;
56.图5示出本示例性实施方式中终端设备在运行时提供的图形用户界面示意图;
57.图6示出本示例性实施方式中一种虚拟镜头控制方法的流程图;
58.图7示出本示例性实施方式中一种虚拟镜头控制方法的流程图;
59.图8示出本示例性实施方式中终端设备在运行时提供的图形用户界面示意图;
60.图9示出本示例性实施方式中一种虚拟镜头控制方法的流程图;
61.图10示出本示例性实施方式中一种虚拟镜头控制方法的流程图;
62.图11示出本示例性实施方式中一种虚拟镜头控制方法的流程图;
63.图12示出本示例性实施方式中终端设备在运行时提供的图形用户界面示意图;
64.图13示出本示例性实施方式中一种虚拟镜头控制装置结构示意图;
65.图14示出本示例性实施方式中一种电子设备的结构示意图。
具体实施方式
66.现在将参考附图更全面地描述示例性实施方式。然而,示例性实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例性实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
67.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
68.附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
69.相关技术中,力臂式游戏视觉是指一种应用于cg(computer graphics,计算机图形)电影拍摄与游戏中的虚拟镜头实现方式,可以有效解决虚拟角色等主体对象的视觉或者注视问题,以使得虚拟镜头角度改变时主体对象依然保持在虚拟镜头对应位置上。为了保持保障整体画面的构图效果,目前主要通过如图1中调整虚拟镜头110与虚拟对象120之间的力臂长度,或者如图2中让力臂直接离开虚拟对象120或虚拟镜头110的方式来调节虚拟镜头110与虚拟对象120之间的位置相对关系。目前虚拟镜头的控制方式较为单一。
70.鉴于上述问题,本公开实施例提供了一种虚拟镜头控制方法,以提高虚拟镜头控制方式的多元化、丰富性与流畅性。以下对本公开实施例提供的虚拟镜头控制方法的应用环境作简单介绍:
71.本公开实施例应用于终端设备,该终端设备可以是本地终端设备,例如手机、平板、计算机等任意具有人机交互界面的电子设备,也可以是云交互系统中的客户端设备,例如服务器等,本公开实施例不作具体限定。请继续参见图1与图2,该终端设备在运行时可以提供一图形用户界面10,该图形用户界面10中包括至少一个虚拟对象120与虚拟镜头110,该虚拟对象120为特定的对象主体,例如玩家在游戏世界中的虚拟角色,也就是玩家需要控制的对象,该虚拟对象120可以为人物、动物、机械等任意虚拟形象,本公开实施例不作具体限定。该虚拟对象120在图形用户界面10中可以基于玩家的控制而移动,例如行走、奔跑、跳跃、飞翔等。虚拟镜头110随着虚拟对象120的移动而移动,不断采集虚拟对象120视野中的
图像,并将采集到的画面显示于图形用户界面10中,以供玩家实时观察到在游戏世界中虚拟对象120当前的视野内容。需要解释的是,该虚拟镜头110一般隐藏于该图形用户界面10,当然也可以实时显示于或者在某一触发指令下显示于该图形用户界面10,本公开实施例不作具体限定,可根据实际情况具体设定。
72.在虚拟对象120移动过程中,为了保障图形用户界面10中整体画面的构图效果,虚拟镜头110也会随着虚拟对象120不断移动,请参见图3,当虚拟对象120逐渐靠近参考物,图3(a)为虚拟对象120移动前的画面,图3(b)为虚拟对象120移动后的画面,若虚拟镜头110与虚拟对象120之间的力臂长度固定不变,则虚拟对象120在图像用户界面中的大小占比不变,但是随着虚拟镜头110逐渐靠近虚拟参照物130,虚拟参照物130在图3(b)中的占比相较于图3(a)变大。
73.以下对本公开实施例中的部分名词作简要解释:
74.虚拟镜头,是指游戏世界中虚拟摄像机的图像采集镜头,用于采集主体对象视野范围内或者所处虚拟场景中的环境信息。
75.虚拟力臂,本公开实施例中所指虚拟力臂与现实生活中摄像机的调节力臂不同,本公开实施例中所公开的虚拟力臂均是指在游戏世界中用于连接虚拟镜头与虚拟对象之间的力臂,该虚拟力臂一端连接虚拟镜头,另一端连接虚拟对象或者与虚拟对象相对。若虚拟力臂不离开虚拟对象,那么该虚拟力臂即为虚拟镜头与虚拟对象之间的一条线段;若虚拟力臂离开虚拟对象,那么该虚拟力臂则为一条长度固定,一端连接虚拟镜头,一端自由的线段。
76.下面以上述终端设备为执行主体,将该虚拟镜头控制方法应用于上述的终端设备对虚拟镜头的位置进行调控为例进行举例说明。请参见图4,本公开实施例提供的虚拟镜头控制方法包括如下步骤401-步骤404:
77.步骤401、终端设备确定当前虚拟对象的对象移动速度与对象位置信息。
78.其中,对象移动速度是指虚拟对象在移动过程中带有方向与速率大小的速度,而非单纯表征大小的速率;对象位置信息用于指示在游戏世界中虚拟对象当前所处的位置,可以通过坐标等任意方式进行表示。该对象移动速度可以通过如下几种方式确定得到:第一种方式,终端设备通过相邻两帧画面中虚拟对象的位置坐标之间的距离与两帧画面之间的间隔时间计算得到该对象移动速度;第二种方式,服务器终端通过虚拟对象在游戏世界中由上一位置坐标移动到当前位置坐标所消耗的时间,与上一位置坐标与当前位置坐标之间的距离计算得到该对象移动速度并发送至终端设备;第三种方式,该对象移动速度由游戏开发者根据不同游戏场景预先配置,例如,在山谷场景中移动速度为1m/s,在草坪场景上的移动速度为3m/s,在空中场景移动速度为200m/s等,若当前虚拟对象在山谷场景中移动,则对应的对象移动速度为1m/s。当然确定该对象移动速度的方式包括但不限制上述三种方式,在此不再穷举。
79.步骤402、终端设备根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离。
80.其中,对象移动速度与该相对距离呈正相关,也就是说该对象移动速度越快,该相对距离越长,相反,对象移动速度越慢,该相对距离越短。终端设备可以通过定性的方式确定该相对距离,也就是对象移动速度增大对应拉长两者之间的距离,速度越小对应缩短两者之间的距离;或者通过定量的方式确定该相对距离,例如设定一个比例系数,计算对象移
动速度的数值与该比例系数的乘积,将得到的数值作为相对距离的数值。当然根据对象移动速度确定虚拟镜头的相对距离的方式包但不限于如上两种,本实施例在此不再穷举,可根据实际情况进行选择,只需要使得当前对象移动速度与虚拟镜头的力臂长度呈正相关即可。
81.步骤403、终端设备根据相对距离与对象位置信息确定虚拟镜头的目标位置。
82.终端设备以虚拟对象当前对象位置信息对应的位置为源点,沿虚拟镜头光轴的方向构建一条长度为相对距离的线段,该线段远离虚拟镜头的那个端点所处位置即为虚拟镜头的目标位置。
83.步骤404、终端设备控制虚拟镜头移动至目标位置。
84.在基于上述步骤403得到虚拟镜头的目标位置后,将虚拟镜头移动至目标位置即可使得虚拟镜头当前采集的图像信息所构成的画面构图与当前虚拟对象的速度相匹配。
85.本公开实施例提供的虚拟镜头控制方法先确定当前虚拟对象的对象移动速度与对象位置信息,根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离,然后根据相对距离与对象位置信息确定虚拟镜头的目标位置,最后将虚拟镜头调整至该目标位置即可完成对虚拟镜头的控制。第一方面,本公开实施例根据虚拟对象的对象移动速度实时调整虚拟镜头与虚拟对象之间的相对距离,使得虚拟镜头与虚拟对象之间的相对距离可以根据虚拟对象在例如行走、跳跃、奔跑、飞翔等不同移动状态下实时调整,以构建与当前移动状态对应的画面构图,大大增强游戏画面的速度感,从而解决目前虚拟镜头的控制方式较为单一的技术问题,达到了提高虚拟镜头控制方式的多元化与丰富性的技术效果;
86.第二方面,由于虚拟镜头与虚拟对象之间的相对距离与虚拟镜头的移动速度呈正相关,那也就是说,虚拟力臂距离虚拟对象越远,虚拟力臂的移动速度越快,虚拟力臂越靠近虚拟对象,虚拟力臂的移动速度越慢,从而使得虚拟镜头在开始移动与停止移动时更为平缓,卡顿感大大降低,大大提高虚拟镜头移动的流畅性。
87.针对上述通过调整力臂增强游戏画面的速度感本公开实施例作如下解释:
88.虚拟对象当前的对象移动速度与虚拟镜头与虚拟对象之间的相对距离呈正相关,速度感是由虚拟对象周围的其他元素的位移所产生的。虚拟对象移动越快,那么虚拟力臂越长,则虚拟对象与虚拟镜头之间的相对距离越远,虚拟镜头采集到的场景元素更多,可以通过单位时间内场景元素变换的数量或种类来表征虚拟对象当前的速度感,同时也可以为玩家提供更多的信息来方便玩家判断当前的场景状态。对应的,虚拟对象移动越慢,那么虚拟力臂越短,则虚拟对象距离虚拟镜头之间的相对距离越近,虚拟对象周围的场景元素距离虚拟镜头越近,在当前界面显示的位移差便会增大,从而使得虚拟对象的速度感被增强。
89.针对上述虚拟对象当前的对象移动速度与虚拟镜头的力臂长度呈正相关,本公开实施例作如下解释:
90.请参见图5,以点a来表征上述虚拟对象120的位置,以点b来表征虚拟镜头110力臂上靠近虚拟对象120的端点。假设当前帧游戏画面与上一帧游戏画面之间的时间间隔为t,虚拟对象a在当前帧的坐标为anew,在上一帧的坐标为aold,虚拟镜头的力臂端点b在当前帧的坐标为bnew,在上一帧的坐标为bold,力臂混合系数为t,则,
91.虚拟镜头的力臂速度bv=(bnew-bold)/t
ꢀꢀꢀꢀꢀꢀꢀ
(1)
92.虚拟镜头在当前帧的坐标bnew=[anew
×
clamp(t/t,0,1)]+{bold
×
[1-clamp(t/
t,0,1)]}
ꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0093]
clamp(a,b,c)表示响应式布局函数,用于限定a的值不小于b、且不大于c。若力臂混合系数t=1,且0《t《1,上述公式(2)可以转换为如下公式(3):
[0094]
bnew=(anew
×
t)+[bold
×
(1-t)]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0095]
将上述公式(3)作如下化简处理:
[0096]
bnew =(anew
×
t)+[bold
×
(1-t)]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0097]
bnew=(anew
×
t)+bold

(bold
×
t)
[0098]
bnew-bold=(anew
×
t)

(bold
×
t)
[0099]
(bnew-bold)/t=anew

bold
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0100]
结合公式(1)与公式(4),可以得到如下:
[0101]
力臂速度bv=anew

bold
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0102]
虚拟对象的对象移动速度av=(anew-aold)/t
ꢀꢀꢀꢀꢀꢀꢀ
(6)
[0103]
当虚拟镜头的力臂速度bv与虚拟对象的对象移动速度av一致的时候,虚拟对象与虚拟镜头的力臂之间的距离保持不变,也就是与虚拟镜头之间的距离固定不变:
[0104]
av=bv
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0105]
则将该公式(5)(6)代入如上公式(7)即可得到如下公式(8):
[0106]
(anew-aold)/t=anew

bold
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0107]
同时,虚拟力臂单位时间内移动距离与虚拟对象的单位时间内移动距离一致,即anew-aold=bnew-bold,代入公式(8)即可获得如下公式(9):
[0108]
(bnew-bold)/t=anew

bold
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0109]
由公式(8)与(9)可以清楚的看到,公式(2)能让虚拟力臂起始点与虚拟对象之间的距离无限接近虚拟对象的移动速度值。虽然两者的物理单位不同,但是其进行无量纲化处理后的大小数值可以无限接近。也就是说虚拟镜头的移动速度及与虚拟对象之间的距离会随虚拟对象的对象移动速度变化而自动调整。调整过程中当虚拟力臂与虚拟对象之间的距离被拉至与虚拟对象的对象移动速度的数值一致(或一个比值)的时候,虚拟镜头与虚拟对象之间的距离保持在一个恒定值上。
[0110]
针对上述提高虚拟镜头移动的流畅性,本公开实施例作如下解释:
[0111]
假设:a
x
为虚拟对象a在第x帧时的坐标,c
x
为虚拟镜头的虚拟力臂远离虚拟对象a一侧的端点c在第x帧时的坐标;a
x+1
为虚拟对象a在第x+1帧时的坐标,c
x+1
为虚拟力臂的端点c在第x+1帧时的坐标;a
x+2
为虚拟对象a在第x+2帧时的坐标,c
x+2
为虚拟力臂的端点c在第x+2帧时的坐标,
[0112]
当两帧间的时间间隔为t,且0《t《1,根据如上公式(3),第1帧时虚拟力臂端点c的坐标为:
[0113]cx+1
=(a
x+1
×
t)+[c
x
×
(1-t)]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0114]
第2帧时虚拟力臂端点c的坐标为:
[0115]cx+2
=(a
x+2
×
t)+[c
x+1
×
(1-t)]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(11)
[0116]
假设对象a在两帧间静止不动,那么也就是a
x+1
=a
x+2
,代入公式(11)获得:
[0117]cx+2
=(a
x+1
×
t)+[c
x+1
×
(1-t)]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0118]
公式(12)和(10)相减获得:
[0119]cx+2-c
x+1
=(a
x+1
×
t)+[c
x+1
×
(1-t)]-(a
x+1
×
t)-[c
x
×
(1-t)]
[0120]cx+2-c
x+1
=(1-t)
×
(c
x+1-c
x
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(13)
[0121]
从公式(13)可以看出:
[0122]
当虚拟力臂不断接近虚拟对象a时,速度越来越小且无穷趋近0,并且虚拟力臂当前的移动距离是基于前一帧的移动距离的(1-t)倍,在帧间隔时间相等的情况下,虚拟力臂拥有缓减速能力。反之,当虚拟力臂不断远离虚拟对象a时,虚拟力臂的速度越来越大且无穷趋近虚拟对象a的速度。并且虚拟力臂作缓加速运动,直至虚拟力臂与虚拟对象a的距离被拉至与虚拟a的速度的数值一致(或一个比值)的时候,虚拟镜头与虚拟角色a的距离保持在一个恒定值上。
[0123]
公式(3)让虚拟力臂的运动规律表现为按距离控制加速度,这种规律与像虚拟力臂起始点和虚拟对象a之间绑了一根弹簧的运动规律一致。
[0124]
请参见图6,在本公开一个可选实施例中,上述步骤402、根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离,包括如下步骤601-步骤602:
[0125]
步骤601、终端设备确定虚拟镜头的虚拟力臂的力臂移动速度。
[0126]
该力臂移动速度可以为力臂靠近虚拟对象一端的移动速度,当然也可以为该虚拟力臂上其他任意位置的移动速度,本实施例不作具体限定。
[0127]
步骤602、终端设备根据对象移动速度与力臂移动速度的相对大小确定虚拟镜头与虚拟对象之间的相对距离。
[0128]
如上步骤中阐述,对象移动速度与虚拟力臂的移动速度呈正相关,终端设备可以基于预设移动速度来判断该对象移动速度的大小,在本实施例中终端设备通过力臂移动速度来判断对象移动速度的相对大小,得到的虚拟镜头与虚拟对象之间的相对距离与实际游戏场景中虚拟对象的状态更为匹配,可靠性更高。
[0129]
在本公开一个可选实施例中,上述步骤602、终端设备根据对象移动速度与力臂移动速度的相对大小确定虚拟镜头与虚拟对象之间的相对距离,包括如下两种情况:
[0130]
第一种情况,若对象移动速度大于力臂移动速度,则增大虚拟镜头与虚拟对象之间的距离,得到相对距离。
[0131]
第二种情况,若对象移动速度小于力臂移动速度,则缩短虚拟镜头与虚拟对象之间的距离,得到相对距离。
[0132]
终端设备可以先判断对象移动速度与力臂移动速度的相对大小,若对象移动速度大于力臂移动速度,则意味着当前虚拟对象移动较快,对应增大虚拟镜头与虚拟对象之间的距离;相反,若对象移动速度小于力臂移动速度,则意味着虚拟对象当前移动较慢,对应缩短虚拟镜头与虚拟对象之间的距离。通过与力臂移动速度的相对大小来判断虚拟对象的移动快慢,使得得到的虚拟镜头的相对距离与实际游戏场景中虚拟对象的状态更为匹配,可靠性更高。
[0133]
在本公开一个可选实施例中,对象移动速度与相对距离进行无量纲化处理后的数值相等。
[0134]
如上公式(9):
[0135]
av=bv
[0136]
=(bnew-bold)/t=anew

bold
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0137]
其中,av为对象移动速度,anew

bold即为相对距离,将两者数值调节至相等数值,便可以使得虚拟对象的对象移动速度与虚拟镜头的力臂移动速度保持相等,也就意味着虚拟对象与虚拟镜头之间的相对距离达到了最大值,在保持画面构图的前提下可以采集到更多的信息,以供玩家判断虚拟对象当前所处环境,进一步提高玩家的游戏体验。
[0138]
请参见图7,在本公开一个可选实施例中,上述步骤403、终端设备根据相对距离与对象位置信息确定虚拟镜头的目标位置,包括如下步骤701-步骤703:
[0139]
步骤701、终端设备确定当前虚拟镜头的镜头位置信息。
[0140]
终端设备实施例确定虚拟镜头当前所处的位置,该镜头位置信息可以通过坐标等任意方式进行表征。
[0141]
步骤702、终端设备根据镜头位置信息与对象移动速度确定虚拟对象相对于虚拟镜头的相对移动方向。
[0142]
速度是具有方向性的,本实施例正是利用速度的方向性与镜头位置来判断虚拟对象相对于虚拟镜头的相对移动方向,该相对移动方向可以为向左移动、向右移动、向前移动或向后移动等;当然终端设备还可以根据速度的具体方向标量确定虚拟对象相对于虚拟镜头的相对移动方向的具体角度,本实施例不作具体限定。
[0143]
步骤703、终端设备根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置。
[0144]
例如图8中,相对移动方向为向前移动,相对距离为10m,虚拟对象120的对象位置信息为点a(x0,y0,z0),终端设备则以点a(x0,y0,z0)为源点向虚拟镜头110发射一条射线,该射线上与虚拟对象120距离为10m的点对应的位置(图8中的点c)即为该虚拟镜头对应的目标位置。
[0145]
本公开实施例先根据镜头位置信息与对象移动速度确定虚拟对象相对于虚拟镜头的相对移动方向,然后根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置,可以最大程度上考虑到虚拟对象在不同移动方向的不同镜头需求,以根据实际移动方向确定对应的虚拟镜头的目标位置,进一步提高本公开实施例虚拟镜头控制方式的灵活性、全面性与可靠性。
[0146]
在本公开一个可选实施例中,上述步骤703、终端设备根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置,包括如下两种情况:
[0147]
第一种情况,若虚拟对象相对于虚拟镜头的相对移动,其方向为靠近虚拟镜头,终端设备则将距离虚拟对象所在位置且具有相对距离的位置,确定为虚拟镜头的目标位置。
[0148]
虚拟对象相对于虚拟镜头的相对移动方向为靠近虚拟镜头,也就是说,虚拟对象相对于虚拟镜头在向前移动,这种情况下虚拟镜头可以采集到虚拟对象所在环境的大部分场景元素,因此,终端设备可以基于如上步骤703中记载的方式直接将距离虚拟对象所在位置,具有相对距离的位置确定为虚拟镜头的目标位置。
[0149]
第二种情况,若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,终端设备则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息。
[0150]
其中,力臂控点是指虚拟镜头的力臂远离虚拟镜头的一个端点。虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,也就是虚拟对象相对于虚拟镜头在向左移动、
向右移动或向后移动。在虚拟对象相对于虚拟镜头在向左移动、向右移动或向后移动的情况下,虚拟镜头滞留于虚拟对象后方,采集到的场景元素更少,因此,终端设备在该种情况下,根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息,然后再基于该力臂控点信息确定虚拟镜头的目标位置,可以保障虚拟镜头最大程度上采集到更多的信息,以增强虚拟对象在移动过程中的速度感,进一步提高玩家的游戏体验。
[0151]
请参见图9,在本公开一个可选实施例中,上述第二种情况,终端设备根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息,包括如下步骤901-步骤903:
[0152]
步骤901、终端设备根据镜头位置信息确定虚拟镜头的第一方向向量与第二方向向量。
[0153]
其中,镜头位置信息是指虚拟镜头所处的位置,然后在该位置的基础上确定虚拟镜头的第一方向与第二方向,第一方向与第二方向所在平面与虚拟镜头所在平面平行,且第一方向与第二方向垂直。例如虚拟镜头所处的平面为空间坐标系的yz平面,则第一方向可以为+x,则第二方向为-y或者+y。或者换句话说,第一方向为相对于镜头的前方,第二方向为相对于镜头的左方或者右方。
[0154]
步骤902、终端设备根据第一方向向量、第二方向向量、对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离。
[0155]
速度标向量是指虚拟对象移动速度的单位向量,预设限制距离是指虚拟对象可移动的最大范围或者最大距离,目标调整距离是指虚拟力臂端点与虚拟对象之间的距离。在虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头的情况下,终端设备根据虚拟镜头的第一方向向量与第二方向向量、以及对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离,使得虚拟镜头的力臂可以根据虚拟对象的实际移动状态自动调整该距离,以得到最适合当前状态的目标调整距离。
[0156]
步骤903、终端设备根据目标调整距离与对象位置信息确定虚拟力臂的控点位置。
[0157]
例如虚拟对象的对象位置信息为(x1,y1,z1),终端设备则以(x1,y1,z1)为圆心,以该目标调整距离为半径水平画一个圆,该圆与虚拟力臂的交点的位置即为力臂控制点位置。
[0158]
本公开实施例在虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头的情况下,终端设备根据虚拟镜头的第一方向向量与第二方向向量、以及对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离,并根据目标调整距离确定虚拟力臂的控点位置,使得虚拟力臂的力臂控制点位置可以根据虚拟对象的实际移动状态自动调整该距离,以得到最适合当前状态的目标位置,大大提高了虚拟镜头控制的灵活性与可靠性。
[0159]
请参见图10,在本公开一个可选实施例中,步骤902、终端设备根据第一方向向量、第二方向向量、对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离,包括如下步骤1001-步骤1004:
[0160]
步骤1001、计算对象移动速度的速度标向量与第一方向向量的第一内积;
[0161]
步骤1002、计算第一内积与预设限制距离的乘积;
[0162]
步骤1003、计算对象移动速度的速度标向量与第二方向向量的第二内积;
[0163]
步骤1004、计算乘积与第二内积的加和,得到虚拟力臂的目标调整距离。
[0164]
例如,终端设备可以通过如下公式(14)计算该目标调整距离:
[0165]
d=s
×
[clamp(c
rv
dotpv,-1,1)+clamp(c
fv
dotpv,-1,0)](14)
[0166]
公式(14)中,d表示目标调整距离,s表示预设限制距离,c
rv
表示虚拟镜头的第一方向向量,c
fv
表示虚拟镜头的第二方向向量,pv表示当前帧中虚拟对象的速度标向量,clamp(a,b,c)表示响应式布局函数,用于限定a的值不小于b、且不大于c,本技术实施例中是指c
rv
dotpv的值不小于-1、且不大于1,dot表示点积,也就是两个向量的乘积。
[0167]
在本公开一个可选实施例中,终端设备在得到该目标调整距离后,可以通过如下公式(15)计算得到虚拟力臂的端点位置:
[0168]
pd=p
l
+d
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(15)
[0169]
公式(15)中,pd表示虚拟力臂的靠近虚拟对象的端点的位置坐标,p
l
表示虚拟对象当前的位置坐标,d表示目标调整距离。
[0170]
本公开实施例先根据第一方向向量、第二方向向量、对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离,最后通过该目标调整距离即可计算得到虚拟力臂的端点位置,计算方式简单快捷,可适应于任意需要实时计算的场景中,大大提高虚拟镜头控制的效率。
[0171]
本公开实施例还可以配置一用于检测预设触发范围当前位置移动的范围触发控点,终端设备实时检测该范围触发控点的位置信息,并计算该范围触发控点与预设触发范围中心点之间的距离,以判断虚拟对象当前的移动幅度是否超出该预设触发范围,若超出该预设触发范围,则根据如上步骤1001-步骤1004重新确定虚拟力臂的目标调整距离,并根据该目标调整距离调整虚拟力臂的端点位置;若未超出该预设触发范围,则无需对虚拟力臂的端点位置进行调整。
[0172]
请参见图11,在本公开一个可选实施例中,在上述第二种情况若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,终端设备则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息,包括如下步骤1101-步骤1002:
[0173]
步骤1101、若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,终端设备则根据对象位置信息确定虚拟对象当前的位置是否超出预设触发范围。
[0174]
步骤1102、若虚拟对象当前的位置超出预设触发范围,终端设备则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息。
[0175]
请参见图12,该预设触发范围1200是指触发虚拟镜头110力臂长度调整的阈值,只有虚拟对象120触碰到该预设触发范围1200的边缘或者移动至该预设触发范围之外,终端设备才启动对虚拟镜头110的调控,也就是根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟镜头110力臂的控点位置信息。而且虚拟对象120处于该预设触发范围1200内,虚拟镜头110固定不变,不作任何调控。通过这种方式可以避免虚拟镜头110位置频繁调整而大大增大终端设备的计算量,进而节省终端设备的计算资源。
[0176]
请参见图13,为了实现上述虚拟镜头控制方法,本公开的一个实施例中提供一种虚拟镜头控制装置1300,图13示出了虚拟镜头控制装置1300的示意性架构图,包括:第一确定模块1310、第二确定模块1320、第三确定模块1330与控制模块1340,其中:
[0177]
该第一确定模块1310,用于确定当前虚拟对象的对象移动速度与对象位置信息;
[0178]
该第二确定模块1320,用于根据对象移动速度确定虚拟镜头与虚拟对象之间的相对距离;其中,对象移动速度与相对距离呈正相关;
[0179]
该第三确定模块1330,用于根据相对距离与对象位置信息确定虚拟镜头的目标位置;
[0180]
该控制模块1340,用于控制虚拟镜头移动至目标位置。
[0181]
在本公开一个可选实施例中,该第二确定模块1320具体用于,确定虚拟镜头的虚拟力臂的力臂移动速度;根据对象移动速度与力臂移动速度的相对大小确定虚拟镜头与虚拟对象之间的相对距离。
[0182]
在本公开一个可选实施例中,该第二确定模块1320具体用于,若对象移动速度大于力臂移动速度,则增大虚拟镜头与虚拟对象之间的距离,得到相对距离。
[0183]
在本公开一个可选实施例中,该第二确定模块1320具体用于,若对象移动速度小于力臂移动速度,则缩短虚拟镜头与虚拟对象之间的距离,得到相对距离。
[0184]
在本公开一个可选实施例中,对象移动速度与相对距离进行无量纲化处理后的数值相等。
[0185]
在本公开一个可选实施例中,该第三确定模块1330具体用于,确定当前虚拟镜头的镜头位置信息;根据镜头位置信息与对象移动速度确定虚拟对象相对于虚拟镜头的相对移动方向;根据相对移动方向、相对距离与对象位置信息确定虚拟镜头的目标位置。
[0186]
在本公开一个可选实施例中,该第三确定模块1330具体用于,若虚拟对象相对于虚拟镜头的相对移动方向为靠近虚拟镜头,则将距离虚拟对象所在位置具有相对距离的位置,确定为虚拟镜头的目标位置。
[0187]
在本公开一个可选实施例中,该第三确定模块1330具体用于,若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的力臂控点的控点位置信息;其中,力臂控点是指虚拟力臂远离虚拟镜头的端点;根据控点位置信息、相对距离与对象位置信息确定虚拟镜头的目标位置。
[0188]
在本公开一个可选实施例中,该第三确定模块1330具体用于,根据镜头位置信息确定虚拟镜头的第一方向向量与第二方向向量;其中,第一方向与第二方向所在平面与虚拟镜头所在平面平行,且第一方向与第二方向垂直;根据第一方向向量、第二方向向量、对象移动速度的速度标向量与预设限制距离确定虚拟力臂的目标调整距离;根据目标调整距离与对象位置信息确定虚拟力臂的控点位置。
[0189]
在本公开一个可选实施例中,该第三确定模块1330具体用于,计算对象移动速度的速度标向量与第一方向向量的第一内积;计算第一内积与预设限制距离的乘积;计算对象移动速度的速度标向量与第二方向向量的第二内积;计算乘积与第二内积的加和,得到虚拟力臂的目标调整距离。
[0190]
在本公开一个可选实施例中,该第三确定模块1330具体用于,若虚拟对象相对于虚拟镜头的相对移动方向为远离虚拟镜头,则根据对象位置信息确定虚拟对象当前的位置是否超出预设触发范围;若虚拟对象当前的位置超出预设触发范围,则根据对象位置信息、对象移动速度、镜头位置信息与预设限制距离确定虚拟力臂的控点位置信息。
[0191]
本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0192]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0193]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0194]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0195]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。在本公开实施例中,计算机可读存储介质中存储的程序代码被执行时可以实现如上虚拟镜头控制方法中的任一步骤。
[0196]
请参见图14,本公开的示例性实施方式还提供了一种电子设备1400,可以是信息平台的后台服务器。下面参考图14对该电子设备1400进行说明。应当理解,图14显示的电子设备1400仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
[0197]
如图14所示,电子设备1400以通用计算设备的形式表现。电子设备1400的组件可以包括但不限于:至少一个处理单元1410、至少一个存储单元1420、连接不同系统组件(包括存储单元1420和处理单元1410)的总线1430。
[0198]
其中,存储单元存储有程序代码,程序代码可以被处理单元1410执行,使得处理单元1410执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1410可以执行如图4所示的方法步骤等。
[0199]
存储单元1420可以包括易失性存储单元,例如随机存取存储单元(ram)1421和/或
高速缓存存储单元1422,还可以进一步包括只读存储单元(rom)1423。
[0200]
存储单元1420还可以包括具有一组(至少一个)程序模块1425的程序/实用工具1424,这样的程序模块1425包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0201]
总线1430可以包括数据总线、地址总线和控制总线。
[0202]
电子设备1400也可以与一个或多个外部设备2000(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/o)接口1440进行。电子设备1400还可以通过网络适配器1450与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1450通过总线1430与电子设备141400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0203]
在本公开实施例中,电子设备中存储的程序代码被执行时可以实现如上虚拟镜头控制方法中的任一步骤。
[0204]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0205]
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
[0206]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1