发明内容
有鉴于此,本说明书实施例提供了一种虚拟场景的镜头切换方法。本说明书同时涉及一种虚拟场景的镜头切换装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种虚拟场景的镜头切换方法,包括:
将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;
响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;
基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;
基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
可选地,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面,包括:
获取所述第i虚拟相机的第一姿态信息和第一视角信息;
通过所述主相机在所述第一位置处,以所述第一姿态信息对应的姿态采集在所述第一视角信息对应的视角下的虚拟场景画面并展示。
可选地,所述目标位置为所述目标对象在所述虚拟场景的世界坐标系下的位置,所述节点参考位置为骨骼节点在所述目标对象的局部坐标系下的位置,所述虚拟相机的位置为所述虚拟相机在所述虚拟场景的世界坐标系下的位置,所述基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,包括:
基于所述目标位置和所述节点参考位置,确定所述骨骼节点在所述虚拟场景的世界坐标下的位置,得到节点目标位置;
基于所述节点目标位置和所述相对位置,确定所述第二位置。
可选地,所述确定第i+1虚拟相机所在的第二位置之后,还包括:
确定所述第二位置对应的节点参考位置,获取所述节点参考位置对应的骨骼节点的姿态信息;
将所述获取的骨骼节点的姿态信息确定为所述第i+1虚拟相机的第二姿态信息。
可选地,所述第i+1虚拟相机中封装有第二姿态信息和第二视角信息,所述基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面,包括:
基于所述线性插值函数,确定所述主相机移动至所述第二位置处的移动轨迹,所述移动轨迹中包括至少两个轨迹点的位置;
将所述主相机的位置依次调整为所述移动轨迹中包括的位置,直到所述主相机的位置调整为所述第二位置;
将所述主相机的姿态信息调整为所述第二姿态信息,以及将所述主相机的视角信息调整为所述第二视角信息;
通过所述主相机在所述第二位置处,以所述第二姿态信息对应的姿态采集在所述第二视角信息对应的视角下的虚拟场景画面并展示。
可选地,所述在将所述主相机的位置依次调整为所述移动轨迹中包括的位置的过程中,展示每一个位置处的虚拟场景画面。
可选地,所述响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,包括:
检测到对镜头切换选项的触发操作,确定接收到所述镜头切换指令;
响应于所述镜头切换指令,获取所述目标对象的当前位置,并以所述当前位置为所述目标对象的目标位置。
可选地,所述虚拟场景中配置有至少两个虚拟相机,所述将主相机移动至第i虚拟相机所在的第一位置处之前,还包括:
将所述第i虚拟相机的优先级设置为所述至少两个虚拟相机的优先级中的最高优先级。
可选地,所述基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面之后,还包括:
若接收到镜头切换指令,执行响应于镜头切换指令,确定所述目标对象的目标位置的步骤,直到未接收到镜头切换指令。
根据本说明书实施例的第二方面,提供了一种虚拟场景的镜头切换装置,包括:
第一展示模块,被配置为将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;
第一确定模块,被配置为响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;
第二确定模块,被配置为基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;
第二展示模块,被配置为基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
可选地,所述第一展示模块被配置为:
获取所述第i虚拟相机的第一姿态信息和第一视角信息;
通过所述主相机在所述第一位置处,以所述第一姿态信息对应的姿态采集在所述第一视角信息对应的视角下的虚拟场景画面并展示。
可选地,所述第二确定模块被配置为:
所述目标位置为所述目标对象在所述虚拟场景的世界坐标系下的位置,所述节点参考位置为骨骼节点在所述目标对象的局部坐标系下的位置,所述虚拟相机的位置为所述虚拟相机在所述虚拟场景的世界坐标系下的位置,基于所述目标位置和所述节点参考位置,确定所述骨骼节点在所述虚拟场景的世界坐标下的位置,得到节点目标位置;
基于所述节点目标位置和所述相对位置,确定所述第二位置。
可选地,所述第二确定模块还被配置为:
确定所述第二位置对应的节点参考位置,获取所述节点参考位置对应的骨骼节点的姿态信息;
将所述获取的骨骼节点的姿态信息确定为所述第i+1虚拟相机的第二姿态信息。
可选地,所述第二展示模块被配置为:
所述第i+1虚拟相机中封装有第二姿态信息和第二视角信息,基于所述线性插值函数,确定所述主相机移动至所述第二位置处的移动轨迹,所述移动轨迹中包括至少两个轨迹点的位置;
将所述主相机的位置依次调整为所述移动轨迹中包括的位置,直到所述主相机的位置调整为所述第二位置;
将所述主相机的姿态信息调整为所述第二姿态信息,以及将所述主相机的视角信息调整为所述第二视角信息;
通过所述主相机在所述第二位置处,以所述第二姿态信息对应的姿态采集在所述第二视角信息对应的视角下的虚拟场景画面并展示。
可选地,所述在将所述主相机的位置依次调整为所述移动轨迹中包括的位置的过程中,展示每一个位置处的虚拟场景画面。
可选地,所述第一确定模块被配置为:
检测到对镜头切换选项的触发操作,确定接收到所述镜头切换指令;
响应于所述镜头切换指令,获取所述目标对象的当前位置,并以所述当前位置为所述目标对象的目标位置。
可选地,所述第一展示模块还被配置为:
所述虚拟场景中配置有至少两个虚拟相机,将所述第i虚拟相机的优先级设置为所述至少两个虚拟相机的优先级中的最高优先级。
可选地,所述第二展示模块还被配置为:
若接收到镜头切换指令,执行响应于镜头切换指令,确定所述目标对象的目标位置的步骤,直到未接收到镜头切换指令。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;
响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;
基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;
基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述虚拟场景的镜头切换方法的步骤。
本说明书提供的虚拟场景的镜头切换方法,将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。通过上述方法,可以将主相机切换至任意位置,进而通过主相机显示不同视野下的场景画面,使得镜头切换更加灵活,可以显示不同视野下的场景画面,并且虚拟相机中封装有实现画面平滑切换的线性插值函数,能够实现镜头切换过程中场景画面的平滑切换,提高显示场景画面的流畅性,进而提高用户的体验。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
主相机:游戏引擎(Unity)中用于展示虚拟场景画面的镜头,该主相机可以挂载有Cinemachine插件中的Cinemachine Brain组件。
虚拟相机:可以挂载有Cinemachine插件中的Cinemachine Virtual Camera组件。虚拟相机不用于展示虚拟场景画面,而是在其优先级最高时,主相机可以获取其位置信息、姿态信息和视角信息,展示其视野范围内的虚拟场景画面。
目标对象:虚拟场景中的虚拟对象。例如,若虚拟场景为游戏场景,目标对象可以为游戏角色或游戏玩家。
在本说明书中,提供了一种虚拟场景的镜头切换方法,本说明书同时涉及一种虚拟场景的镜头切换装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一实施例提供的一种虚拟场景的镜头切换方法的流程图,具体包括以下步骤:
步骤102,将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面。
其中,i为大于0的正整数。
在实施中,虚拟场景可以设置有多个虚拟相机和一个主相机。该多个虚拟相机包括展示近景的虚拟场景画面的虚拟相机和展示远景的虚拟场景画面的虚拟相机。
在一些实施例中,通过主相机展示第i虚拟相机视野范围内的虚拟场景画面的具体实现可以包括:获取所述第i虚拟相机的第一姿态信息和第一视角信息;通过所述主相机在所述第一位置处,以所述第一姿态信息对应的姿态采集在所述第一视角信息对应的视角下的虚拟场景画面并展示。
也就是说,通过主相机展示第i虚拟相机视野范围内的虚拟场景画面实际是将主相机移动至第i虚拟相机的第一位置处,并将主相机的姿态信息调整为第i虚拟相机的第一姿态信息,将主相机的视角信息调整为第i虚拟相机的第一视角信息,通过调整姿态信息和视角信息的主相机采集虚拟场景画面并展示。
作为一种示例,可以将主相机的位置修改为第一位置,将主相机的姿态信息调整为第一姿态信息,将主相机的视角信息调整为第一视角信息,则主相机可以在第一位置处以第一姿态信息对应的姿态采集第一视角信息对应的视角下的虚拟场景画面并展示,即主相机展示第一虚拟相机的视野范围内的虚拟场景画面。例如,假设虚拟场景中包括小屋,且小屋中包括目标对象,若第一位置在小屋的门口,则主相机移动至第一位置处后,展示的是整个小屋的场景画面,即是目标对象的远景,在视觉上,玩家会觉得是自己在门口观察目标对象,给玩家更加真实的游戏体验。
进一步地,所述虚拟场景中配置有至少两个虚拟相机,所述将主相机移动至第i虚拟相机所在的第一位置处之前,还包括:将所述第i虚拟相机的优先级设置为所述至少两个虚拟相机的优先级中的最高优先级。
也就是说,虚拟场景中配置有至少两个虚拟相机,计算设备通常会默认将主相机移送至优先级最高的虚拟相机所在位置处,通过主相机展示该优先级最高的虚拟相机视野范围内的虚拟场景画面。因此,在将主相机移动至第i虚拟相机所在的第一位置处之前,需要将第i虚拟相机的优先级设置为该至少两个虚拟相机的优先级中的最高优先级。
在本申请实施例中,要将主相机移动至某位置之前,需要将该位置处的虚拟相机的优先级调整至最高,如此,主相机则可以移动至该位置处,并在该位置处获取并展示虚拟场景画面。
步骤104,响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置。
其中,目标对象为虚拟场景中的虚拟对象。示例性地,若虚拟场景为游戏场景,则目标对象可以为游戏场景中的游戏角色。例如,目标对象可以为宠物猫。
其中,节点参考位置可以为目标对象的骨骼节点在目标对象的局部坐标系下的位置。
在实施中,响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置的具体实现可以包括:检测到对镜头切换选项的触发操作,确定接收到所述镜头切换指令;响应于所述镜头切换指令,获取所述目标对象的当前位置,并以所述当前位置为所述目标对象的目标位置。
在一些实施例中,终端可以展示有镜头切换选项,若用户想要切换场景画面,可以点击或触摸该镜头切换选项,则终端检测到对镜头切换选项的触发操作,可以认为接收到镜头切换指令,则可以获取目标对象的当前位置,并将该当前位置确定为目标对象的目标位置。
在本申请实施例中,在确定接收到镜头切换指令后,说明需要进行场景画面切换,场景画面切换则需要主相机展示不同于当前场景画面的虚拟场景画面,由于主相机是通过对虚拟相机的视野范围内的场景画面进行采集并渲染展示虚拟场景画面的,因此要进行镜头切换,需要确定虚拟相机的位置,由于虚拟相机与目标对象之间的相对位置是不变的,因此可以通过确定目标对象当前的位置进而确定虚拟相机的目标位置。
步骤106,基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数。
作为一种示例,所述目标位置为所述目标对象在所述虚拟场景的世界坐标系下的位置,所述节点参考位置为骨骼节点在所述目标对象的局部坐标系下的位置,所述虚拟相机的位置为所述虚拟相机在所述虚拟场景的世界坐标系下的位置。
在一些实施例中,可以预先配置所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置。
在实施中,基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置的具体实现可以包括:基于所述目标位置和所述节点参考位置,确定所述骨骼节点在所述虚拟场景的世界坐标系下的位置,得到节点目标位置;基于所述节点目标位置和所述相对位置,确定所述第二位置。
作为一种示例,可以预先配置目标对象的局部坐标系与虚拟场景的世界坐标系之间的转换矩阵,基于目标对象在世界坐标系下的目标位置、骨骼节点在局部坐标系下的节点参考位置和转换矩阵,可以确定骨骼节点在虚拟场景的世界坐标系下的位置,即节点目标位置。根据节点目标位置和相对位置,可以确定第二位置。
在本申请实施例中,虚拟相机与目标对象的骨骼节点之间的相对位置是不变的,因此虚拟相机位置的位置可以随着目标对象的移动而移动,只需确定目标对象的位置,便可以确定虚拟相机的第二位置,且虚拟相机的位置与目标对象的骨骼节点的位置相关,则虚拟相机可以位于任意位置,进而主相机可以处于任意位置,不必局限于特定的位置,能够更加灵活地对场景画面进行展示。
在实施中,计算设备会默认将主相机移动至优先级最高的虚拟相机所在的位置处,在接收到镜头切换指令之前,第i虚拟相机的优先级最高,若此时需要将镜头切换至第i+1虚拟相机的位置,则需要将第i+1虚拟相机的优先级调整至大于第i虚拟相机的优先级,则当前第i+1虚拟相机的优先级为所有虚拟相机的优先级中最高的。
进一步地,确定第i+1虚拟相机所在的第二位置之后,还包括:确定所述第二位置对应的节点参考位置,获取所述节点参考位置对应的骨骼节点的姿态信息;将所述获取的骨骼节点的姿态信息确定为所述第i+1虚拟相机的第二姿态信息。
其中,姿态信息可以包括水平视角和俯仰角。
在实施中,虚拟相机的位置与目标对象的骨骼节点的位置对应,且虚拟场景的姿态信息与目标对象的骨骼节点的姿态信息相同,因此,可以获取节点参考位置对应的骨骼节点的姿态信息,并将该姿态信息确定为第i+1虚拟相机的第二姿态信息。
步骤108,基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
在实施中,所述第i+1虚拟相机中封装有第二姿态信息和第二视角信息,所述基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面地具体实现可以包括:基于所述线性插值函数,确定所述主相机移动至所述第二位置处的移动轨迹,所述移动轨迹中包括至少两个轨迹点的位置;将所述主相机的位置依次调整为所述移动轨迹中包括的位置,直到所述主相机的位置调整为所述第二位置;将所述主相机的姿态信息调整为所述第二姿态信息,以及将所述主相机的视角信息调整为所述第二视角信息;通过所述主相机在所述第二位置处,以所述第二姿态信息对应的姿态采集在所述第二视角信息对应的视角下的虚拟场景画面并展示。
也就是说,可以确定主相机从第一位置移动至第二位置的移动轨迹,该移动轨迹中包括至少两个轨迹点的位置,主相机依次移动至至少两个轨迹点的位置,直到移动至第二位置处,可以将主相机的姿态信息调整为第i+1虚拟相机的第二姿态信息,并将主相机的视角信息调整为第i+1虚拟相机的第二视角信息
作为一种示例,线性插值函数可以为Lerp函数。线性插值是在两个给定值之间按预设的百分比找到另一个值。
在一些实施例中,可以先确定第一位置的第一姿态信息和第二位置的第二姿态信息,并确定第一位置和第二位置之间的位移偏移量和姿态信息偏移量,以预设的百分比,确定一个介于第一位置和第二位置之间的第三位置和第三姿态信息,则第三位置和第三姿态信息为下一帧该虚拟相机的位置和姿态,再基于预设的百分比,确定第三位置和第二位置之间的第四位置和第四姿态信息,以此类推,直到确定的位置与第二位置比较接近,则将确定的多个位置对应的轨迹点相连,得到主相机移动至第二位置处的移动轨迹。
例如,以第一位置对应的轨迹点为起始点,以第二位置对应的轨迹点为目标点,以姿态信息包括水平视角,即朝向为例。假设起始点的坐标为(0,0,0),朝向为0°,目标点的坐标为(8,8,8),朝向为180°,百分比为0.5,则位移偏量为(8,8,8),角度差为180°。可以确定第三位置为(4,4,4),第三朝向为90°,第四位置为(6,6,6),第四朝向为135°,第五位置为(7,7,7),第五朝向为157.5°,第六位置为(7.5,7.5,7.5),第六朝向为168.75°。则主相机的初始移动轨迹中包括6个轨迹点,第一个轨迹点的坐标为(0,0,0),第二个轨迹点的坐标为(4,4,4),第三个轨迹点的坐标为(6,6,6),第四个轨迹点的坐标为(7,7,7),第五个轨迹点的坐标为(7.5,7.5,7.5)。如此,主相机可以以先快后慢的方式沿着移动轨迹移动至第二位置处。
需要说明的是,还可以通过上述方法,根据主相机当前的视角信息和第二视角信息确定每个轨迹点的视角信息。并且,主相机在沿着轨迹点移动的过程中,每移动至一个轨迹点处,需要同时调整主相机的姿态信息和视角信息,使得主相机可以以该轨迹点处的姿态信息对应的姿态采集该轨迹点处的视角信息对应的视角下的虚拟场景画面。
作为一种示例,在将所述主相机的位置依次调整为所述移动轨迹中包括的位置的过程中,可以展示每一个位置处的虚拟场景画面。如此,能够实现场景画面的连续切换。
继续上述举例,可以依次展示主相机在第一个轨迹点、第二个轨迹点、第三个轨迹点、第四个轨迹点和第五个轨迹点采集到的虚拟场景画面,直到主相机移动至第二位置处,展示主相机在第二位置处采集到的虚拟场景画面。
示例性地,主相机在第一个轨迹点处,以第一个轨迹点的姿态信息对应的姿态,采集第一个轨迹点的视角信息对应的视角下的虚拟场景画面并展示;在第二个轨迹点处,以第二个轨迹点的姿态信息对应的姿态,采集第二个轨迹点的视角信息对应的视角下的虚拟场景画面并展示;以此类推,主相机可以采集每个轨迹点处的虚拟场景画面并展示。
进一步地,所述基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面之后,还包括:若接收到镜头切换指令,执行响应于镜头切换指令,确定所述目标对象的目标位置的步骤,直到未接收到镜头切换指令。
也就是说,若用户还想进行场景画面切换,触发镜头切换选项,进而终还可以接收到镜头切换指令,并执行基于镜头切换指令确定目标对象地目标位置的步骤,重复执行后续步骤,直到未接收到镜头切换指令,继续展示当前展示的虚拟场景画面即可。
本说明书提供的虚拟场景的镜头切换方法,将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。通过上述方法,可以将主相机切换至任意位置,进而通过主相机显示不同视野下的场景画面,使得镜头切换更加灵活,可以显示不同视野下的场景画面,并且虚拟相机中封装有实现画面平滑切换的插值组件,能够实现镜头切换过程中场景画面的平滑切换,提高显示场景画面的流畅性,进而提高用户的体验。
下述结合附图2,以本说明书提供的虚拟场景的镜头切换方法在宠物养成游戏中的应用为例,对所述虚拟场景的镜头切换方法进行进一步说明。其中,图2示出了本说明书一实施例提供的一种应用于宠物养成游戏中的虚拟场景的镜头切换方法的处理流程图,具体包括以下步骤:
步骤202,将第一虚拟相机的优先级设置为三个虚拟相机的优先级中的最高优先级。
在本申请实施例中,对虚拟相机的数量不作限定,在此仅是以游戏场景中设置有三个虚拟相机和一个主相机为例对虚拟场景的镜头切换方法进行说明。
在本实施例中,该三个虚拟相机分别为第一虚拟相机、第二虚拟相机和第三虚拟相机,并且,第一虚拟相机对应远景的场景画面,第二虚拟相机和第三虚拟相机对应近景的场景画面。
由于在游戏场景中,计算设备会默认将主相机移动至优先级最高的虚拟相机所在的位置处,因此,需要将第一虚拟相机的优先级设置为三个虚拟相机的优先级中最高的。
例如,当用户进入宠物养成游戏时,假设预设的三个虚拟相机的优先级相同,且均为10,计算设备可以将第一虚拟相机的优先级设置为20,如此,第一虚拟相机的优先级为三个虚拟相机的优先级中最高的。
步骤204,将主相机移动至第一虚拟相机所在的第一位置处,通过主相机展示第一虚拟相机视野范围内的虚拟场景画面。
在一些实施例中,可以获取第一虚拟相机的第一姿态信息和第一视角信息,将主相机的位置修改为第一位置,将主相机的姿态信息调整为第一姿态信息,将主相机的视角信息调整为第一视角信息,则主相机可以在第一位置处以第一姿态信息对应的姿态采集第一视角信息对应的视角下的虚拟场景画面并显示。例如,假设第一位置在门口,主相机移动至第一位置处后,展示的是整个小屋的场景画面,即是宠物的远景,在视觉上,玩家会觉得是自己在门口观察自己的宠物,给玩家更加真实的游戏体验。
步骤206,响应于镜头切换指令,确定游戏场景中宠物的目标位置。
其中,该镜头切换指令中包括节点参考位置。该节点参考位置可以为宠物的骨骼节点在宠物的局部坐标系下的位置。
例如,在展示小屋的场景画面的过程中,若用户想要与宠物互动,可以触发镜头切换选项进入一级互动小游戏,假设进入一级互动小游戏需要展示近景展示宠物的整体形态,可以设置节点参考位置为头部节点的位置。相应地,计算设备检测到对镜头切换选项的触发操作,可以认为接收到镜头切换指令,且该切换指令中包括头部节点的位置,响应于该镜头切换指令,计算设备可以获取宠物的当前位置,并以该当前位置为该宠物的目标位置。
步骤208,基于目标位置、节点参考位置、宠物的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第二虚拟相机所在的第二位置。
作为一种示例,可以预先配置宠物的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置。
其中,虚拟相机的位置为虚拟相机在虚拟场景的世界坐标系下的位置。
作为一种示例,可以预先配置目标对象的局部坐标系与虚拟场景的世界坐标系之间的转换矩阵。
在一些实施例中,目标位置是宠物在游戏场景的世界坐标系下的位置,节点参考位置为骨骼节点在宠物的局部坐标系下的位置,可以基于目标位置、节点参考位置和转换矩阵,确定宠物的骨骼节点在虚拟场景的世界坐标下的位置,得到节点目标位置。基于节点目标位置和相对位置,可以确定第二虚拟相机的第二位置。
如此,虚拟相机的位置可以随着宠物的移动而移动,只需要确定宠物的位置,便可以确定出虚拟相机的位置,且虚拟场景的位置是与宠物的骨骼节点的位置相关,则虚拟相机可以位于任意位置,进而主相机可以处于任意位置,不必局限于特定的位置,更加灵活。
步骤210,将第二虚拟相机的优先级调整至大于该第一虚拟相机的优先级,其中,虚拟相机中封装有实现画面平滑切换的线性插值函数。
在游戏场景中,计算设备会默认将主相机移动至优先级最高的虚拟相机所在的位置处,在接收到镜头切换指令之前,第一虚拟相机的优先级最高,此时需要将镜头切换至第二虚拟相机的位置,因此,需要将第二虚拟相机的优先级调整至大于第一虚拟相机的优先级,则当前第二虚拟相机的优先级为三个虚拟相机的优先级中最高的。
例如,第二虚拟相机和第三虚拟相机的优先级均为10,第一虚拟相机的优先级为20,可以将第二虚拟相机的优先级调整为30。
步骤212,确定第二位置对应的节点参考位置,获取节点参考位置对应的骨骼节点的姿态信息,将获取的骨骼节点的姿态信息确定为第二虚拟相机的第二姿态信息。
其中,姿态信息可以包括水平视角和俯仰角。
在一些实施例中,虚拟相机的位置与宠物的骨骼节点的位置对应,且虚拟场景的姿态信息与宠物的骨骼节点的姿态信息相同,因此,可以获取节点参考位置对应的骨骼节点的姿态信息,并将该姿态信息确定为第二虚拟相机的第二姿态信息。
步骤214,基于线性插值函数,确定主相机移动至第二位置处的移动轨迹,该移动轨迹中包括至少两个轨迹点的位置。
作为一种示例,线性插值函数可以为Lerp函数。线性插值是在两个给定值之间按预设的百分比找到另一个值。
在一些实施例中,可以先确定第一位置的第一姿态信息和第二位置的第二姿态信息,并确定第一位置和第二位置之间的位移偏移量和姿态信息偏移量,以预设的百分比,确定一个介于第一位置和第二位置之间的第三位置和第三姿态信息,则第三位置和第三姿态信息为下一帧该虚拟相机的位置和朝向,再基于预设的百分比,确定第三位置和第二位置之间的第四位置和第四姿态信息,以此类推,直到确定的位置与第二位置比较接近,则将确定的多个位置对应的轨迹点相连,得到主相机移动至第二位置处的移动轨迹。
例如,以第一位置对应的轨迹点为起始点,以第二位置对应的轨迹点为目标点,以姿态信息包括水平角,即朝向为例。假设起始点的坐标为(0,0,0),朝向为0°,目标点的坐标为(8,8,8),朝向为180°,百分比为0.5,则位移偏量为(8,8,8),角度差为180°。可以确定第三位置为(4,4,4),第三朝向为90°,第四位置为(6,6,6),第四朝向为135°,第五位置为(7,7,7),第五朝向为157.5°,第六位置为(7.5,7.5,7.5),第六朝向为168.75°。则主相机的初始移动轨迹中包括6个轨迹点,第一个轨迹点的坐标为(0,0,0),第二个轨迹点的坐标为(4,4,4),第三个轨迹点的坐标为(6,6,6),第四个轨迹点的坐标为(7,7,7),第五个轨迹点的坐标为(7.5,7.5,7.5)。如此,主相机可以以先快后慢的方式沿着移动轨迹移动至第二位置处。
需要说明的是,还可以通过上述方法,根据主相机当前的视角信息和第二视角信息确定每个轨迹点的视角信息。并且,主相机在沿着轨迹点移动的过程中,每移动至一个轨迹点处,需要同时调整主相机的姿态信息和视角信息,使得主相机可以以该轨迹点处的姿态信息对应的姿态采集该轨迹点处的视角信息对应的视角下的虚拟场景画面。
步骤216,将主相机的位置依次调整为移动轨迹中包括的位置,直到主相机的位置调整为第二位置。
也就是说,主相机不是直接从第一位置移动至第二位置,而是从第一位置按照移动轨迹一步一步移动至第二位置处。如此,可以避免出现场景画面闪切的情况,能够实现场景画面的平滑切换。
并且,在将主相机的位置依次调整为移动轨迹中包括的位置的过程中,可以同步调整主相机的姿态信息和视角信息,以便于可以展示在每一个位置处采集的虚拟场景画面,进而实现场景画面的平滑切换。
步骤218,将主相机的姿态信息调整为第二姿态信息,以及将主相机的视角信息调整为第二视角信息。
步骤212中确定第二虚拟相机的第二姿态信息后,可以将第二姿态信息封装至虚拟相机中,并且,第二虚拟相机中封装有第二视角信息,将镜头从第一虚拟相机切换至第二虚拟相机,不仅要将主相机的位置切换至第二位置,还需要将主相机的姿态信息调整为第二姿态信息,以及将主相机的视角信息调整为第二视角信息。如此,主相机才可以采集并展示第二虚拟相机视野下的虚拟场景画面。
步骤220,通过主相机在第二位置处,以第二姿态信息对应的姿态采集在第二视角信息对应的视角下的虚拟场景画面并展示。
例如,可以在一级互动小游戏中展示宠物的近景。
步骤222,若接收到镜头切换指令,执行响应于镜头切换指令,确定目标对象的目标位置的步骤,直到未接收到镜头切换指令。
在实施中,若在一级互动小游戏中,用户想要与宠物进行拍手游戏,可以触发镜头切换选项进入二级互动小游戏中,假设进入二级互动小游戏主要展示宠物的上半身,可以设置节点参考位置为胸部节点的位置。相应地,计算设备检测到对镜头切换选项的触发操作,可以认为接收到镜头切换指令,且该切换指令中包括胸部节点的位置,响应于该镜头切换指令,计算设备可以获取宠物的当前位置,并以该当前位置为该宠物的目标位置。继而按照步骤208向下执行,可以将主相机切换至第三虚拟相机的第三位置处,通过主相机展示第三虚拟相机的视野范围内的场景画面。若再次接收到镜头切换指令,可以继续从执行步骤206向后执行,直到不再接收到镜头切换指令。
本说明书提供的虚拟场景的镜头切换方法,将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。通过上述方法,可以将主相机切换至任意位置,进而通过主相机显示不同视野下的场景画面,使得镜头切换更加灵活,可以显示不同视野下的场景画面,并且虚拟相机中封装有实现画面平滑切换的插值组件,能够实现镜头切换过程中场景画面的平滑切换,提高显示场景画面的流畅性,进而提高用户的体验。
与上述方法实施例相对应,本说明书还提供了虚拟场景的镜头切换装置实施例,图3示出了本说明书一实施例提供的一种虚拟场景的镜头切换装置的结构示意图。如图3所示,该装置包括:
第一展示模块302,被配置为将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;
第一确定模块304,被配置为响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;
第二确定模块306,被配置为基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;
第二展示模块308,被配置为基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
可选地,所述第一展示模块302被配置为:
获取所述第i虚拟相机的第一姿态信息和第一视角信息;
通过所述主相机在所述第一位置处,以所述第一姿态信息对应的姿态采集在所述第一视角信息对应的视角下的虚拟场景画面并展示。
可选地,所述第二确定模块306被配置为:
所述目标位置为所述目标对象在所述虚拟场景的世界坐标系下的位置,所述节点参考位置为骨骼节点在所述目标对象的局部坐标系下的位置,所述虚拟相机的位置为所述虚拟相机在所述虚拟场景的世界坐标系下的位置,基于所述目标位置和所述节点参考位置,确定所述骨骼节点在所述虚拟场景的世界坐标下的位置,得到节点目标位置;
基于所述节点目标位置和所述相对位置,确定所述第二位置。
可选地,所述第二确定模块306还被配置为:
确定所述第二位置对应的节点参考位置,获取所述节点参考位置对应的骨骼节点的姿态信息;
将所述获取的骨骼节点的姿态信息确定为所述第i+1虚拟相机的第二姿态信息。
可选地,所述第二展示模块308被配置为:
所述第i+1虚拟相机中封装有第二姿态信息和第二视角信息,基于所述线性插值函数,确定所述主相机移动至所述第二位置处的移动轨迹,所述移动轨迹中包括至少两个轨迹点的位置;
将所述主相机的位置依次调整为所述移动轨迹中包括的位置,直到所述主相机的位置调整为所述第二位置;
将所述主相机的姿态信息调整为所述第二姿态信息,以及将所述主相机的视角信息调整为所述第二视角信息;
通过所述主相机在所述第二位置处,以所述第二姿态信息对应的姿态采集在所述第二视角信息对应的视角下的虚拟场景画面并展示。
可选地,所述在将所述主相机的位置依次调整为所述移动轨迹中包括的位置的过程中,展示每一个位置处的虚拟场景画面。
可选地,所述第一确定模块304被配置为:
检测到对镜头切换选项的触发操作,确定接收到所述镜头切换指令;
响应于所述镜头切换指令,获取所述目标对象的当前位置,并以所述当前位置为所述目标对象的目标位置。
可选地,所述第一展示模块302还被配置为:
所述虚拟场景中配置有至少两个虚拟相机,将所述第i虚拟相机的优先级设置为所述至少两个虚拟相机的优先级中的最高优先级。
可选地,所述第二展示模块308还被配置为:
若接收到镜头切换指令,执行响应于镜头切换指令,确定所述目标对象的目标位置的步骤,直到未接收到镜头切换指令。
本说明书提供的虚拟场景的镜头切换方法,将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。通过上述方法,可以将主相机切换至任意位置,进而通过主相机显示不同视野下的场景画面,使得镜头切换更加灵活,可以显示不同视野下的场景画面,并且虚拟相机中封装有实现画面平滑切换的插值组件,能够实现镜头切换过程中场景画面的平滑切换,提高显示场景画面的流畅性,进而提高用户的体验。
上述为本实施例的一种虚拟场景的镜头切换装置的示意性方案。需要说明的是,该虚拟场景的镜头切换装置的技术方案与上述的虚拟场景的镜头切换方法的技术方案属于同一构思,虚拟场景的镜头切换装置的技术方案未详细描述的细节内容,均可以参见上述虚拟场景的镜头切换方法的技术方案的描述。
图4示出了根据本说明书一实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
其中,处理器420用于执行如下计算机可执行指令:
将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;
响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;
基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;
基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的虚拟场景的镜头切换方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述虚拟场景的镜头切换方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
将主相机移动至第i虚拟相机所在的第一位置处,通过所述主相机展示所述第i虚拟相机视野范围内的虚拟场景画面;
响应于镜头切换指令,确定所述虚拟场景中目标对象的目标位置,其中,所述镜头切换指令中包括节点参考位置;
基于所述目标位置、所述节点参考位置、所述目标对象的骨骼节点的节点目标位置与虚拟相机的位置之间的相对位置,确定第i+1虚拟相机所在的第二位置,并将所述第i+1虚拟相机的优先级调整至大于所述第i虚拟相机的优先级,其中,所述虚拟相机中封装有实现画面平滑切换的线性插值函数;
基于所述线性插值函数,将所述主相机移动至所述第二位置处,通过所述主相机展示所述第i+1虚拟相机视野范围内的虚拟场景画面。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的虚拟场景的镜头切换方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述虚拟场景的镜头切换方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。