CN112843683B - 虚拟角色的控制方法、装置、电子设备及存储介质 - Google Patents

虚拟角色的控制方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112843683B
CN112843683B CN202110257263.0A CN202110257263A CN112843683B CN 112843683 B CN112843683 B CN 112843683B CN 202110257263 A CN202110257263 A CN 202110257263A CN 112843683 B CN112843683 B CN 112843683B
Authority
CN
China
Prior art keywords
virtual
virtual character
gesture
skeleton
character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110257263.0A
Other languages
English (en)
Other versions
CN112843683A (zh
Inventor
章文涵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110257263.0A priority Critical patent/CN112843683B/zh
Publication of CN112843683A publication Critical patent/CN112843683A/zh
Application granted granted Critical
Publication of CN112843683B publication Critical patent/CN112843683B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请提供了一种虚拟角色的控制方法、装置、电子设备及计算机可读存储介质;方法包括:在虚拟场景中显示虚拟角色以及虚拟载具;响应于所述虚拟角色移动至所述虚拟载具中,获取所述虚拟角色发生的位置偏移;获取所述虚拟角色的与所述位置偏移对应的姿势;将所述姿势与所述虚拟载具移动的动画进行动画融合,并根据得到的融合动画显示所述虚拟载具承载所述虚拟角色移动时所述虚拟角色具有的所述姿势。通过本申请,能够使虚拟角色在跟随虚拟载具移动时的动画表现具有真实环境的效果,以提升用户的视觉体验。

Description

虚拟角色的控制方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机图形图像的技术领域,尤其涉及一种虚拟角色的控制方法、装置、电子设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,计算机动画在游戏制作、动漫制作等各方面得到了广泛应用。例如,当前的动画制作主要依赖于三维动画渲染和制作软件(例如3D Studio Max软件),将虚拟模型导入3D Studio Max软件后,即可以得到角色工作室(Character Studio,CS)骨骼,进而使用CS骨骼对虚拟模型进行蒙皮处理,得到虚拟模型对应的虚拟角色,以制作虚拟角色的动画。
然而,相关技术在显示虚拟角色跟随虚拟载具移动的动画时,例如在表现骑乘动画时,通常是使用一段固定的动画,并将虚拟角色直接挂载于被骑乘的虚拟载具上,在整个骑乘过程中,虚拟角色不会跟随虚拟载具的移动而产生晃动的物理效果。也就是说,相关技术提供的方案在表现骑乘动画时的真实性不够,影响了用户的视觉体验。
发明内容
本申请实施例提供一种虚拟角色的控制方法、装置、电子设备及计算机可读存储介质,能够使虚拟角色在跟随虚拟载具移动时的动画表现具有真实环境的效果,以提升用户的视觉体验。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种虚拟角色的控制方法,包括:
在虚拟场景中显示虚拟角色以及虚拟载具;
响应于所述虚拟角色移动至所述虚拟载具中,获取所述虚拟角色发生的位置偏移;
获取所述虚拟角色的与所述位置偏移对应的姿势;
将所述姿势与所述虚拟载具移动的动画进行动画融合,并
根据得到的融合动画显示所述虚拟载具承载所述虚拟角色移动时所述虚拟角色具有的所述姿势。
本申请实施例提供一种虚拟角色的控制装置,包括:
显示模块,用于在虚拟场景中显示虚拟角色以及虚拟载具;
获取模块,用于响应于所述虚拟角色移动至所述虚拟载具中,获取所述虚拟角色发生的位置偏移;
所述获取模块,还用于获取所述虚拟角色的与所述位置偏移对应的姿势;
融合模块,用于将所述姿势与所述虚拟载具移动的动画进行动画融合;
所述显示模块,还用于根据得到的融合动画显示所述虚拟载具承载所述虚拟角色移动时所述虚拟角色具有的所述姿势。
上述方案中,所述显示模块,还用于根据得到的融合动画,显示所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色在起始位置未与所述虚拟载具同步移动的姿势。
上述方案中,所述显示模块,还用于根据得到的融合动画,显示所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色在所述虚拟载具移动至终点位置时继续沿参考方向移动、并在越过所述终点位置后开始沿所述参考方向的反方向返回的姿势。
上述方案中,所述显示模块,还用于根据得到的融合动画,显示所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色沿参考方向的反方向返回至起始位置后继续反向移动、并越过所述起始位置的姿势。
上述方案中,所述显示模块,还用于根据得到的融合动画,显示所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色沿参考方向与所述虚拟载具同步移动的姿势。
上述方案中,所述显示模块,还用于响应于针对虚拟场景中显示的虚拟角色的移动操作,控制所述虚拟角色移动至在所述虚拟场景中显示的虚拟载具中;或者,用于响应于跟踪虚拟场景中的目标对象的指令,确定所述虚拟场景中与虚拟角色适配的虚拟载具,控制所述虚拟角色移动至所述虚拟载具中。
上述方案中,所述装置还包括创建模块,用于在所述虚拟角色的骨架中创建骨骼,基于设定的弹力阻尼和弹力刚度对所述骨骼进行物理模拟;所述创建模块,还用于在所述骨骼上创建骨骼插槽;所述获取模块,还用于通过所述骨骼插槽获取经过所述物理模拟的所述骨骼跟随所述骨架移动时发生的位置偏移。
上述方案中,所述创建模块,还用于确定所述虚拟角色中用于与所述虚拟载具接触的部位;在所述虚拟角色的骨架中与所述部位对应的层级或下一层级创建骨骼。
上述方案中,所述获取模块,还用于基于所述骨骼插槽,分别确定经过所述物理模拟的所述骨骼在跟随所述骨架移动前对应的初始位置、以及在跟随所述骨架移动后对应的目标位置;基于所述初始位置以及所述目标位置,确定经过所述物理模拟的所述骨骼跟随所述骨架移动时发生的位置偏移。
上述方案中,所述获取模块,还用于根据所述位置偏移的方向和幅度,确定混合空间中与所述位置偏移对应的第一姿势样本和第二姿势样本;生成所述第一姿势样本和所述第二姿势样本之间的过渡姿势,并作为所述混合空间输出的姿势。
上述方案中,所述获取模块,还用于将所述位置偏移的方向分解为与所述混合空间包括的多个参考方向一一对应的位置偏移分量;在每个所述位置偏移分量对应的参考方向分布的多个姿势样本中,确定位于所述位置偏移分量对应的位置之前的第一姿势样本、以及位于所述位置偏移分量对应的位置之后的第二姿势样本;以及用于针对将所述位置偏移的方向分解后得到的与所述混合空间包括的多个参考方向一一对应的位置偏移分量:将针对每个所述位置偏移分量确定的所述第一姿势样本和所述第二姿势样本进行融合,得到对应的参考方向的分量过渡姿势;将多个所述参考方向分别对应的分量过渡姿势进行融合,得到过渡姿势。
上述方案中,所述获取模块,还用于基于所述第一姿势样本对应的位置以及所述第二姿势样本对应的位置,确定所述第一姿势样本与所述第二姿势样本之间的第一距离;基于所述第一姿势样本对应的位置以及所述位置偏移分量对应的位置,确定所述第一姿势样本与所述位置偏移分量之间的第二距离;确定所述第二距离与所述第一距离之间的比值;基于所述比值对所述虚拟角色的符合所述第二姿势样本的骨架中的至少部分骨骼进行调整,得到对应的参考方向的分量过渡姿势。
上述方案中,所述获取模块,还用于当所述虚拟角色在所述虚拟载具的姿势的类型是固定的时,获取所述虚拟角色的第一帧动画以作为初始姿势样本;以及用于对所述虚拟角色的符合所述初始姿势样本的骨架中的至少部分骨骼进行调整,得到所述虚拟角色在每个参考方向上分别对应的多个姿势样本;所述创建模块,还用于基于获取的姿势样本,创建所述虚拟角色对应的混合空间。
上述方案中,所述创建模块,还用于针对所述虚拟场景的每个参考方向,创建以下姿势样本至少之一:初始姿势样本,用于表征所述虚拟角色在所述虚拟载具静止的姿势;第一缓冲姿势样本,用于表征所述虚拟角色在起始位置未与所述虚拟载具同步移动的姿势;第二缓冲姿势样本,用于表征所述虚拟角色在所述虚拟载具移动到终点位置时继续沿所述参考方向移动、并在越过所述终点位置后开始沿所述参考方向的反方向返回的姿势;第三缓冲姿势样本,用于表征所述虚拟角色沿所述参考方向的反方向返回到起始位置后继续反向移动、并越过所述起始位置的姿势;跟随姿势样本,用于表征所述虚拟角色沿所述参考方向与所述虚拟载具同步移动的姿势。
上述方案中,所述创建模块,还用于针对所述虚拟角色每个关键帧动画对应的初始姿势样本,执行以下处理:基于所述关键帧动画对应的初始姿势样本,创建所述虚拟角色在不同参考方向上分别对应的多个姿势样本;基于每个所述关键帧动画分别对应的多个姿势样本,创建所述虚拟角色对应的混合空间;其中,在不同所述关键帧动画中所述虚拟角色的姿势不同。
上述方案中,所述融合模块,还用于将所述姿势与所述虚拟角色的初始姿势样本进行比较,得到所述虚拟角色发生变形的骨骼以及每根所述发生变形的骨骼对应的骨骼变形信息;基于设定的权重值对所述骨骼变形信息进行加权处理;将经过所述加权处理的所述骨骼变形信息叠加在所述虚拟载具移动的动画上。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的虚拟角色的控制方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的虚拟角色的控制方法。
本申请实施例具有以下有益效果:
通过获取虚拟角色发生的位置偏移获取对应的姿势,并与虚拟载具移动的动画进行动画融合,由于位置偏移能够准确反映虚拟角色在虚拟载具中的运动特性,使得融合动画显示虚拟角色在虚拟载具中的姿势能够逼真地还原在真实环境中的视觉效果,以提升用户在虚拟场景中的视觉体验。
附图说明
图1A是本申请实施例提供的虚拟角色的控制方法的应用模式示意图;
图1B是本申请实施例提供的虚拟角色的控制方法的应用模式示意图;
图2是本申请实施例提供的终端400的结构示意图;
图3是本申请实施例提供的虚拟角色的控制方法的流程示意图;
图4A是本申请实施例提供的虚拟角色的控制方法的应用场景示意图;
图4B是本申请实施例提供的虚拟角色的控制方法的应用场景示意图;
图4C是本申请实施例提供的虚拟角色的控制方法的应用场景示意图;
图4D是本申请实施例提供的虚拟角色的控制方法的应用场景示意图;
图4E是本申请实施例提供的虚拟角色的控制方法的应用场景示意图;
图5是本申请实施例提供的创建骨骼的示意图;
图6是本申请实施例提供的虚拟角色向不同参考方向偏移的姿势示意图;
图7A是本申请实施例提供的虚拟角色处于初始姿势的示意图;
图7B是本申请实施例提供的虚拟角色处于刚起跳姿势的示意图;
图7C是本申请实施例提供的虚拟角色处于开始下落姿势的示意图;
图7D是本申请实施例提供的虚拟角色处于落地缓冲姿势的示意图;
图7E是本申请实施例提供的虚拟角色回到初始姿势的示意图;
图8A是本申请实施例提供的虚拟角色处于移动跳跃姿势的示意图;
图8B是本申请实施例提供的虚拟角色处于落地缓冲姿势的示意图;
图8C是本申请实施例提供的虚拟角色回到初始姿势的示意图;
图9是本申请实施例提供的虚拟角色的控制方法的流程示意图;
图10是本申请实施例提供的虚拟角色的控制方法的流程示意图;
图11是本申请实施例提供的在新创建的骨骼上创建骨骼插槽的示意图;
图12是本申请实施例提供的针对新创建的骨骼进行物理模拟的示意图;
图13是本申请实施例提供的基于虚拟角色向不同参考方向偏移的姿势配置混合空间的示意图;
图14是本申请实施例提供的获取骨骼位置偏移的示意图;
图15是本申请实施例提供的最终动画蓝图节点示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)客户端,终端设备中运行的用于提供各种服务的应用程序,例如视频播放客户端、游戏客户端等。
2)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
3)虚拟场景,是应用程序在终端设备上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟角色在该虚拟场景中进行移动。
4)虚拟角色,虚拟场景中可以进行交互的各种人和物的形象,或在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,比如:在虚拟场景中显示的人物、动物。该虚拟角色可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟角色,每个虚拟角色在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
例如,该虚拟角色可以是通过客户端上的操作进行控制的用户角色,也可以是通过训练设置在虚拟场景对战中的人工智能(Artificial Intelligence,AI)还可以是设置在虚拟场景互动中的非用户角色(Non-Player Character,NPC)。例如,该虚拟角色可以是在虚拟场景中进行对抗式交互的虚拟人物。例如,该虚拟场景中参与互动的虚拟角色的数量可以是预先设置的,也可以是根据加入互动的客户端的数量动态确定的。
5)虚拟载具,指虚拟场景中用于运送虚拟角色的虚拟工具,例如可以是虚拟场景中显示的车、飞机、动物等。在某些特定情况下,虚拟载具也可以是虚拟角色,例如当虚拟角色A背负虚拟角色B在虚拟场景中移动时,虚拟角色A被作为用于运送虚拟角色B的虚拟载具。
6)场景数据,表示虚拟场景中的虚拟角色在交互过程中受所表现的各种特征,例如,可以包括虚拟角色在虚拟场景中的位置。当然,根据虚拟场景的类型可以包括不同类型的特征;例如,在游戏的虚拟场景中,场景数据可以包括虚拟场景中配置的各种功能时需要等待的时间(取决于在特定时间内能够使用同一功能的次数),还可以表示游戏角色的各种状态的属性值,例如包括生命值(也称为红量)和魔法值(也称为蓝量)等。
7)骨骼动画(Skeleton Animation),又称骨架动画,它是将三维模型分为两部分:用于绘制虚拟角色的蒙皮(Skin),以及用于控制虚拟角色动作的骨架(Skeleton)。对于虚拟模型来说,每个虚拟模型都有基本的骨架,包括骨骼和关节,而骨骼就相当于是坐标空间,骨骼层次就是嵌套的坐标空间。关节只是描述骨骼的位置,即骨骼自己的坐标空间原点在其父空间中的位置,绕关节旋转就是指骨骼坐标空间(包括所有子空间)自身的旋转。而蒙皮则是指将网格(Mesh)中的顶点附着(绑定)在骨骼之上,而且每个顶点可以被多个骨骼所控制,这样在关节处的顶点由于同时受到父子骨骼的拉扯而改变位置就消除了裂缝。
8)集成开发环境(Integrated Development Environment,IDE),是指用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。其集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
9)蓝图(Blueprint),是虚幻引擎(Unreal Engine)中特殊类型的资源,提供了一种直观的、基于节点的界面,以用于创建新类型的动作(Actor)及关卡脚本事件;它为关卡设计师和游戏开发人员提供了一种在虚幻编辑器中快速创建及迭代游戏可玩性的工具,而且一行代码都不需要书写。
10)动画蓝图,用于执行动画混合,直接控制骨架的骨骼,或设置最终将定义每一帧要使用的骨架网格物体的最终动画姿势的逻辑。
11)混合空间(Blend Space),是指可以在动画图(Anim Graph)中采样的特殊资源,允许根据输入的值(例如骨骼的位置偏移)进行动画混合。要根据一个输入在两个动画(例如虚拟角色跟随虚拟载具移动的动画和虚拟角色实现惯性效果的晃动动画)之间实现简单混合,可以使用动画蓝图提供的一个标准混合例程。
相关技术中,在显示虚拟角色跟随虚拟载具移动的动画时,例如在表现骑乘动画时,通常是使用一段固定的动画,并将虚拟角色直接挂载于被骑乘的虚拟载具上,在整个骑乘过程中,虚拟角色不会跟随虚拟载具的移动而产生晃动的物理效果。也就是说,相关技术提供的方案在表现骑乘动画时表现生硬,动画表现不够真实,降低了用户的视觉体验。
鉴于此,本申请实施例提供了一种虚拟角色的控制方法、装置、电子设备以及计算机可读存储介质,能够使虚拟角色在跟随虚拟载具移动时的动画表现具有真实环境的效果,以提升用户的视觉体验。
为便于更容易理解本申请实施例提供的虚拟角色的控制方法,首先说明本申请实施例提供的虚拟角色的控制方法的示例性实施场景,本申请实施例提供的虚拟角色的控制方法中虚拟场景可以完全基于终端设备输出,或者基于终端设备和服务器协同输出。
在另一些实施例中,虚拟场景可以是供游戏角色交互的环境,例如可以是供游戏角色在虚拟场景中进行对战,通过控制虚拟角色的行动可以在虚拟场景中进行双方互动,从而使用户能够在游戏的过程中舒缓生活压力。
在一个实施场景中,参见图1A,图1A是本申请实施例提供的虚拟角色的控制方法的应用模式示意图,适用于一些完全依赖终端设备400的图形处理硬件计算能力即可完成虚拟场景100的相关数据计算的应用模式,例如单机版/离线模式的游戏,通过智能手机、平板电脑和虚拟现实/增强现实设备等终端设备400完成虚拟场景的输出。
作为示例,图像处理硬件的类型包括中央处理器(CPU,Central ProcessingUnit)和图形处理器(GPU,Graphics Processing Unit)。
当形成虚拟场景100的视觉感知时,终端设备400通过图形计算硬件计算显示所需要的数据,并完成显示数据的加载、解析和渲染,在图形输出硬件输出能够对虚拟场景形成视觉感知的视频帧,例如,在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;此外,为了丰富感知效果,终端设备400还可以借助不同的硬件来形成听觉感知、触觉感知、运动感知和味觉感知的一种或多种。
作为示例,终端设备400上运行有客户端410(例如单机版的游戏应用),在客户端410的运行过程中输出包括有角色扮演的虚拟场景,虚拟场景是供游戏角色交互的环境,例如可以是用于供游戏角色进行对战的平原、街道、山谷等等;虚拟场景中显示有虚拟角色110和虚拟载具120。其中,虚拟角色110可以是受用户(或称玩家)控制的游戏角色,即虚拟角色110受控于真实用户,将响应于真实用户针对控制器(包括触控屏、声控开关、键盘、鼠标和摇杆等)的操作而在虚拟场景中运动,例如当真实用户向左移动摇杆时,虚拟角色将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具)。
举例来说,客户端410响应于虚拟角色110移动至虚拟载具120中,获取虚拟角色110发生的位置偏移(例如当虚拟角色110移动至虚拟载具120中后,由于虚拟载具120向左移动,导致虚拟角色110发生的向右的位置偏移),接着,客户端410获取虚拟角色110的与位置偏移对应的姿势(例如虚拟角色110由于惯性向右晃动的姿势),并将所获取的姿势与虚拟载具120移动的动画进行动画融合,从而根据得到的融合动画显示虚拟载具120承载虚拟角色110移动时虚拟角色110所具有的姿势(例如显示在虚拟载具120承载虚拟角色110移动的过程中,当虚拟角色120突然向左移动时,虚拟角色110由于惯性向右晃动的姿势)。
在另一个实施场景中,参见图1B,图1B是本申请实施例提供的虚拟角色的控制方法的应用模式示意图,应用于终端设备400和服务器200,适用于依赖服务器200的计算能力完成虚拟场景计算、并在终端设备400输出虚拟场景的应用模式。
以形成虚拟场景100的视觉感知为例,服务器200进行虚拟场景相关显示数据的计算并通过网络300发送到终端设备400,终端设备400依赖于图形计算硬件完成计算显示数据的加载、解析和渲染,依赖于图形输出硬件输出虚拟场景以形成视觉感知,例如可以在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;对于虚拟场景的形式的感知而言,可以理解,可以借助于终端的相应硬件输出,例如使用麦克风输出形成听觉感知,使用振动器输出形成触觉感知等等。
作为示例,终端设备400上运行有客户端410(例如游戏客户端),通过连接游戏服务器(即服务器200)与其他用户进行游戏互动,终端设备400输出客户端410的虚拟场景100,在虚拟场景100中包括虚拟角色110和虚拟载具120。其中,虚拟角色110可以是受用户控制的游戏角色,即虚拟角色110受控于真实用户,将响应于真实用户针对控制器(包括触控屏、声控开关、键盘、鼠标和摇杆等)的操作而在虚拟场景中运动,例如当真实用户向左移动摇杆时,虚拟角色将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具)。
在一些实施例中,终端设备400可以通过运行计算机程序来实现本申请实施例提供的虚拟角色的控制方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,例如游戏APP(即上述的客户端410);也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的游戏小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
本申请实施例还可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
示例的,图1B中的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备400以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
下面对本申请实施例提供的电子设备的结构进行说明,电子设备可以是图1A和图1B中示出的终端设备400。参见图2,图2是本申请实施例提供的终端设备400的结构示意图,图2所示的终端设备400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端设备400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器450中的虚拟角色的控制装置455,其可以是程序和插件等形式的软件,包括以下软件模块:显示模块4551、获取模块4552、融合模块4553和创建模块4554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。需要指出,在图2中为了方便表达,一次性示出了上述所有模块,但是不应视为在虚拟角色的控制装置455排除了可以只包括显示模块4551、获取模块4552和融合模块4553的实施,将在下文中说明各个模块的功能。
下面将结合附图对本申请实施例提供的虚拟角色的控制方法进行说明。本申请实施例提供的虚拟角色的控制方法可以由图1A中的终端设备400单独执行,也可以由图1B中的终端设备400和服务器200协同执行。
下面,以由图1A中的终端设备400单独执行本申请实施例提供的虚拟角色的控制方法为例进行说明。参见图3,图3是本申请实施例提供的虚拟角色的控制方法的流程示意图,将结合图3示出的步骤进行说明。
需要说明的是,图3示出的虚拟角色的控制方法可以由终端设备400运行的各种形式计算机程序执行,并不局限于上述的客户端410,例如上文所述的操作系统451、软件模块和脚本,因此下文中以客户端为执行主体为例的说明,不应视为对本申请实施例的限定。
在步骤S101中,在虚拟场景中显示虚拟角色以及虚拟载具。
在一些实施例中,在用户的终端设备上安装有支持虚拟场景的客户端。该客户端可以是大型多人在线角色扮演游戏、第一人称射击游戏、第三人称射击游戏、多人在线战术竞技游戏、虚拟现实应用程序、三维地图程序或者多人枪战类生存游戏中的任意一种。用户可以使用终端设备运行的客户端操作位于虚拟场景中的虚拟角色进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。示意性的,该虚拟角色可以是虚拟人物,比如仿真人物角色或动漫人物角色。
当用户打开终端设备上的客户端,且终端设备运行该客户端时,在客户端提供的人机交互界面呈现虚拟场景的画面,这里,虚拟场景的画面可以是以第一人称视角对虚拟场景观察得到,或者也可以是以第三人称视角对虚拟场景观察得到,虚拟场景的画面中包括交互对象及对象交互环境,如当前用户控制的虚拟角色以及用于承载虚拟角色移动的虚拟载具。
需要说明的是,这里的虚拟载具可以是虚拟场景中显示的交通工具,如车辆、船只、飞机等,也可以是在虚拟场景中显示的动物,包括真实的动物和虚构的神话中的动物,如马、龙等,还可以是在虚拟场景中显示的其他虚拟角色,例如当虚拟角色A背负虚拟角色B在虚拟场景中移动时,虚拟角色A可以看做用于承载虚拟角色B移动的虚拟载具,本申请实施例对虚拟载具的种类不作具体限定。
在一些实施例中,客户端可以通过以下方式实现上述的在虚拟场景中显示虚拟角色以及虚拟载具:响应于针对虚拟场景中显示的虚拟角色的移动操作,控制虚拟角色移动至在虚拟场景中显示的虚拟载具中。
示例的,以用户当前控制的虚拟角色为虚拟场景中显示的虚拟角色A为例,当用户想控制虚拟角色A移动至虚拟载具B(当虚拟场景中存在多个虚拟载具时,客户端还可以首先响应于用户针对虚拟场景中显示的多个虚拟载具的选取操作,将用户选中的虚拟载具确定为后续用于承载虚拟角色A移动的目标虚拟载具,例如当客户端接收到用户针对虚拟载具B的点击操作时,将虚拟载具B确定为后续用于承载虚拟角色A移动的目标虚拟载具)中时,客户端可以响应于用户触发的针对虚拟角色A的移动操作,控制虚拟角色A移动至虚拟载具B的附近,且当虚拟角色A与虚拟载具B之间的距离小于预设距离(例如小于0.5米)时,客户端控制虚拟角色A自动进入虚拟载具B中。当然,客户端也可以在接收到用户触发的进入指令后,再控制虚拟角色A进入虚拟载具B中的,例如当客户端检测到虚拟角色A与虚拟载具B之间的距离小于预设距离、且接收到用户触发的进入指令(例如用户通过点击键盘上特定的按键来触发进入指令)时,控制虚拟角色A进入虚拟载具B中。
在另一些实施例中,客户端还可以通过以下方式实现上述的在虚拟场景中显示虚拟角色以及虚拟载具:响应于跟踪虚拟场景中的目标对象(例如与当前用户控制的虚拟角色处于敌对阵营的虚拟角色、或者处于敌对阵营的虚拟对象乘坐的虚拟载具)的指令,确定虚拟场景中与虚拟角色适配的虚拟载具,并控制虚拟角色移动至虚拟载具中。
示例的,虚拟角色移动至虚拟载具中的操作也可以是虚拟角色在被赋予指令后通过人工智能分析而做出的行为,例如当接收到用户在人机交互界面中下达的如下指令:通过虚拟载具跟踪前方的目标对象(目标对象可以是虚拟场景中与用户当前控制的虚拟角色处于敌对阵营或者处于同一阵营的其他虚拟角色,目标对象还可以是虚拟场景中显示的其他虚拟载具,例如由其他虚拟角色控制的虚拟载具。举例来说,假设用户当前控制的虚拟角色为虚拟角色A,则目标对象可以是虚拟场景中显示的与虚拟角色A处于敌对阵营的虚拟角色B或者虚拟载具C,其中,虚拟载具C可以是由人工智能模型控制的,或者由其他用户控制的)。则虚拟角色会在客户端的人工智能模型的控制下自动进入适配的虚拟载具中,并控制虚拟载具移动,以跟踪前方的目标对象。其中,适配的条件包括以下至少之一:虚拟角色与虚拟载具之间的距离、虚拟载具的操作难度、虚拟载具的移动速度以及续航能力(即判断虚拟载具能否追赶上前方的目标对象)。例如以用户当前控制的虚拟角色为虚拟角色A为例,当接收到用户在人机交互界面中针对虚拟角色A下达了跟踪前方的虚拟角色B的指令时,虚拟角色A会在虚拟场景中寻找适配的虚拟载具(例如离虚拟角色A最近的虚拟载具C),并自动进入虚拟载具C中以及控制虚拟载具C移动,以跟踪前方的虚拟角色B。
在步骤S102中,响应于虚拟角色移动至虚拟载具中,获取虚拟角色发生的位置偏移。
在一些实施例中,客户端可以通过以下方式获取虚拟角色发生的位置偏移:在虚拟角色的骨架中创建骨骼(例如客户端可以首先确定出虚拟角色中用于与虚拟载具接触的部位,接着,在虚拟角色的骨架中与所确定出的部位对应的层级或者下一层级创建骨骼),基于设定的弹力阻尼和弹力刚度对所创建的骨骼进行物理模拟;在骨骼上创建骨骼插槽,并通过所创建的骨骼插槽获取经过物理模拟的骨骼跟随虚拟角色的骨骼移动时发生的位置偏移(例如客户端可以首先基于所创建的骨骼插槽,分别确定经过物理模拟的骨骼在跟随骨架移动前对应的初始位置以及在跟随骨架移动后对应的目标位置;接着,基于所确定出的初始位置和目标位置,确定经过物理模拟的骨骼在跟随骨架移动时发生的位置偏移)。
示例的,以骑乘动画为例,由于虚拟角色A在骑乘虚拟载具B时,虚拟角色A与虚拟载具B之间接触的部位为虚拟角色A的腰部,因此,为了后续在表现骑乘动画时更加接近真实情况,客户端可以首先在虚拟角色A的腰部层级或腰部层级下创建一根骨骼(例如骨骼C),接着,调用预设的动画编辑引擎(例如虚幻引擎(Unreal Engine))提供的“弹簧控制器”节点,以基于用户在“弹簧控制器”节点中设定的弹力阻尼(弹力阻尼用于表征骨骼的晃动频率,不同的弹力阻尼对应的骨骼晃动频率不同,即可以使用弹力阻尼去限制骨骼晃动的频率)和弹力刚度(弹力刚度用于表征骨骼发生弹性变形的难易程度,弹力刚度越大表征骨骼发生弹性变形越难,即骨骼越不容易发生弹性变形)对骨骼C进行物理模拟,随后,在骨骼C上创建骨骼插槽(骨骼插槽类似于安装在骨骼C上的定位系统,用于获取骨骼C的位置),并基于骨骼插槽分别确定经过物理模拟的骨骼C在跟随虚拟角色A的骨架移动前对应的初始位置(例如X1、Y1、Z1)、以及在跟随虚拟角色A的骨架移动后对应的终点位置(例如X2、Y2、Z2),最后,客户端针对骨骼C移动后对应的终点位置(X2、Y2、Z2)与移动前对应的初始位置(X1、Y1、Z1)进行差值计算,从而确定出经过物理模拟的骨骼C在跟随虚拟角色A的骨架移动时发生的位置偏移(即X2-X1、Y2-Y1、Z2-Z1)。
需要说明的是,骨架发生移动的因素可以包括:骨架在虚拟载具中具有的惯性,例如虚拟角色被虚拟载具带动而同步移动;或者是虚拟角色被人机交互控制而在虚拟载具中移动,例如用户可以主动控制虚拟角色在虚拟载具中移动(举例来说,当虚拟载具为轮船时,用户可以控制虚拟角色在轮船中移动)。总而言之,骨架的移动是虚拟场景的人机交互逻辑决定的。
本申请实施例通过在虚拟角色的骨架中创建骨骼,并对所创建的骨骼进行物理模拟,如此,可以通过被物理模拟的骨骼来获取虚拟角色发生的位置偏移,由于虚拟角色的位置偏移是基于被物理模拟的骨骼确定出的,因此能够准确反映出虚拟角色在虚拟载具中的运动特征(例如当虚拟载具突然移动时,被物理模拟的骨骼由于惯性产生的晃动姿势),使得后续融合动画显示虚拟角色在虚拟载具中的姿势能够逼真地还原在真实环境中的视觉效果,提升了用户的视觉体验。
在步骤S103中,获取虚拟角色的与位置偏移对应的姿势。
在一些实施例中,客户端可以通过以下方式获取虚拟角色的与位置偏移对应的姿势:根据位置偏移的方向和幅度,确定混合空间中与位置偏移对应的第一姿势样本和第二姿势样本;生成第一姿势样本和第二姿势样本之间的过渡姿势,并作为混合空间输出的姿势。
示例的,客户端可以通过以下方式确定混合空间中与位置偏移对应的第一姿势样本和第二姿势样本:首先,将位置偏移的方向分解为与混合空间包括的多个参考方向一一对应的位置偏移分量(不考虑非零的分量);接着,在每个位置偏移分量对应的参考方向分布的多个姿势样本中,确定位于位置偏移分量对应的位置之前的第一姿势样本、以及位于位置偏移分量对应的位置之后的第二姿势样本;其中,混合空间包括的参考方向的数量取决于虚拟场景的维度。
举例来说,当虚拟场景为二维虚拟场景时,其对应的参考方向包括前、后、左、右4个方向,因此,可以将二维虚拟场景的左右方向作为平面坐标系的X轴,其中,X轴的正方向可以对应于向右的方向(例如当X大于0时,对应的姿势样本可以是向右偏移的姿势样本,且X的值越大,其对应的偏移幅度也越大,例如在X=10处对应的姿势样本向右偏移1厘米,而在X=20处对应的姿势样本向右偏移2厘米),X轴的负方向可以对应于向左的方向(即当X小于0时,对应的姿势样本是向左偏移的姿势样本);同理,可以将二维虚拟场景的前后方向作为平面坐标系的Y轴,其中,Y轴的正方向可以对应于向前的方向(即当Y大于0时,对应于向前偏移的姿势样本),Y轴的负方向可以对应于向后的方向(即当Y小于0时,对应于向前偏移的姿势样本)。
需要说明的是,当虚拟场景为三维虚拟场景时,还可以将三维虚拟场景的上下方向作为三维坐标系的Z轴,其中,Z轴的正方向可以对应于向上的方向(即当Z大于0时,对应于向上偏移的姿势样本),Z轴的负方向可以对应于向下的方向(即当Z小于0时,对应于向下偏移的姿势样本)。
示例的,客户端可以通过以下方式生成第一姿势样本与第二姿势样本之间的过渡姿势:针对将位置偏移的方向分解后得到的与混合空间包括的多个参考方向一一对应的位置偏移分量,首先将针对每个位置偏移分量确定的第一姿势样本和第二姿势样本进行融合,得到对应的参考方向的分量过渡姿势;接着,将多个参考方向分别对应的分量过渡姿势进行融合,得到过渡姿势。
举例来说,以虚拟场景为三维虚拟场景为例,客户端在获取到被物理模拟的骨骼在跟随骨架移动时发生的位置偏移后,首先将位置偏移的方向分解为与混合空间包括的多个参考方向(三维虚拟场景包括前、后、左、右、上、下6个方向,其中,可以将三维虚拟场景的前/后方向是三维坐标系的Y轴的正/负方向,左/右方向是三维坐标系的X轴的正/负方向,上/下方向是三维坐标系的Z轴的正/负方向)一一对应的位置偏移分量,假设针对位置偏移的方向进行分解后得到的位置偏移分量为X=10,Y=20,Z=5,即客户端将位置偏移的方向分解为向右、向前和向上的3个方向,且在向右方向上对应的分量值为10,在向前方向上对应的分量值为20,在向上方向上对应的分量值为5。
下面以三维虚拟场景的左右方向为例进行说明。
示例的,参见图4A,图4A是本申请实施例提供的虚拟角色的控制方法的应用场景示意图,如图4A所示,在混合空间的X轴上分布有多个姿势样本,包括X=-50(即X轴的负方向)处对应的虚拟角色向左偏移的姿势样本(例如虚拟角色向左偏移5厘米的姿势样本)、X=0处对应的初始姿势样本、以及X=50(即X轴的正方向)处对应的虚拟角色向右偏移的姿势样本(例如虚拟角色向右偏移5厘米的姿势样本)。假设针对位置偏移的方向进行分解后得到的X值为10时,则客户端可以将X=0处的初始姿势样本作为第一姿势样本,将X=50处的姿势样本作为第二姿势样本。
接着,客户端基于第一姿势样本对应的位置(X=0)以及第二姿势样本对应的位置(X=50),确定第一姿势样本与第二姿势样本之间的第一距离(50);随后,基于第一姿势样本对应的位置(X=0)以及位置偏移分量对应的位置(X=10),确定第一姿势样本与位置偏移分量之间的第二距离(10),并确定第二距离与第一距离之间的比值(10/50=20%);最后,客户端基于所确定出的比值对虚拟角色的符合第二姿势样本的骨架中的至少部分骨骼进行调整,得到向X轴的正方向对应的分量过渡姿势(即虚拟角色向右偏移1厘米的姿势)。
需要说明的是,对于向前的方向(即对应于Y轴的正方向)和向上的方向(即对应于Z轴的正方形)来说,客户端可以使用与X轴类似的方式分别确定出向前的方向对应的分量过渡姿势(例如虚拟角色向前偏移2厘米的姿势)和向上的方向对应的分量过渡姿势(例如虚拟角色向上偏移0.5厘米的姿势),本申请实施例在此不再赘述。在确定出向右、向前、以及向上三个方向分别对应的分量过渡姿势后,终端设备将这三个方向分别对应的分量过渡姿势进行融合,得到混合空间输出的最终姿势(即虚拟角色既向右偏移1厘米、又向前偏移2厘米,同时又向上偏移0.5厘米的姿势)。
在一些实施例中,终端设备在执行步骤S103之前,还可以通过以下处理来创建混合空间:当虚拟角色在虚拟载具的姿势的类型是固定的(例如虚拟角色以固定的姿势骑乘在虚拟载具上,或者虚拟角色以固定的姿势站立或躺在虚拟载具上)时,获取虚拟角色的第一帧动画以作为初始姿势样本;对虚拟角色的符合初始姿势样本的骨架中的至少部分骨骼进行调整,得到虚拟角色在每个参考方向上分别对应的多个姿势样本;基于获取的姿势样本,创建虚拟角色对应的混合空间。
示例的,以虚拟角色的姿势类型为固定的骑乘姿势为例,终端设备首先获取虚拟角色的骑乘动画中的第一帧动画以作为虚拟角色的初始姿势样本;接着,对虚拟角色的符合初始姿势样本的骨架中的至少部分骨骼(例如腰部层级的骨骼)进行调整,得到虚拟角色在每个参考方向(参考方向的数量取决于虚拟场景的维度,当虚拟场景为三维虚拟场景时,则需要创建虚拟角色在前、后、左、右、上、下六个方向分别对应的多个姿势样本,其中,可以将三维虚拟场景的前/后方向作为三维坐标系的Y轴的正/负方向,将左/右方向作为三维坐标系的X轴的正/负方向,将上/下方向作为三维坐标系的Z轴的正/负方向;当虚拟场景为二维虚拟场景时,则只需创建虚拟角色在前、后、左、右四个方向上分别对应的多个姿势样本,其中,可以将二维虚拟场景的前/后方向作为平面坐标系的Y轴的正/负方向,将左/右方向作为平面坐标系的X轴的正/负方向)上分别对应的多个姿势样本;最后,终端设备可以基于所获取的多个姿势样本,创建虚拟角色对应的混合空间。
举例来说,以参考方向为Z轴的正方向(即向上的方向)为例,终端设备可以针对向上的方向创建以下姿势样本至少之一:初始姿势样本,用于表征虚拟角色在虚拟载具中处于静止的姿势;第一缓冲姿势样本,用于表征虚拟角色在起始位置由于惯性未与虚拟载具同步移动的姿势;第二缓冲样本,用于表征虚拟角色在虚拟载具移动到终点位置时由于惯性继续向上移动、并在至少部分越过终点位置后开始向下返回的姿势;第三缓冲姿势样本,用于表征虚拟角色向下返回至起始位置后由于惯性继续向下移动、并至少部分越过起始位置的姿势;跟随姿势样本,用于表征虚拟角色与虚拟载具同步向上移动的姿势。如此,终端设备后续可以根据向上的位置偏移分量对应的位置,从上述多个姿势样本中确定出第一姿势样本和第二姿势样本,例如可以将初始姿势样本确定为第一姿势样本,将第三缓冲姿势样本确定为第二姿势样本;其中,选择哪个姿势样本作为第二姿势样本取决于终端设备后续需要播放的动画,当终端设备后续需要播放虚拟角色跟随虚拟载具同步向上移动的动画时,则可以将跟随姿势样本确定为第二姿势样本。
需要说明的是,当客户端创建了上述所有的姿势样本时,虚拟角色在X轴的正方向(即向上的方向)上对应的位置偏移幅度的变化趋势是:从0开始(即从初始姿势样本开始,其对应的位置偏移幅度为0)逐渐增大(即从初始姿势样本切换至第一缓冲姿势样本,再从第一缓冲姿势样本切换至第二缓冲姿势样本时,虚拟角色的位置偏移幅度逐渐增大),然后又逐渐减小(即从第二缓冲姿势样本切换至第三缓冲姿势样本时,虚拟角色的位置偏移幅度又逐渐减小)。
在另一些实施例中,当虚拟角色在虚拟载具的姿势的类型是变化的(例如用户可以控制虚拟角色在虚拟载具中进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。也就是说,虚拟角色在虚拟载具的姿势的类型是多样的)时,客户端可以执行以下处理:针对虚拟角色每个关键帧动画(每个关键帧动画对应一个类型的姿势,其数量取决于虚拟角色的姿势的类型数量)对应的初始姿势样本,执行以下处理:基于关键帧动画对应的初始姿势样本,创建虚拟角色在每个参考方向上分别对应的多个姿势样本;基于每个关键帧动画对应的多个姿势样本,创建虚拟角色对应的混合空间;其中,在不同关键帧动画中虚拟角色的姿势不同。
示例的,以虚拟载具为虚拟场景中显示的轮船为例,用户可以控制虚拟角色在轮船中进行爬行、步行、奔跑等活动,也就是说,虚拟角色在轮船中的姿势的类型是变化的,则客户端可以针对虚拟角色每个关键帧动画(例如虚拟角色的爬行动画、步行动画和奔跑动画)对应的初始姿势样本,执行以下处理:基于虚拟角色的爬行动画、步行动画和奔跑动画,分别创建虚拟角色在不同参考方向上对应的多个姿势样本;接着,基于爬行动画、步行动画和奔跑动画分别对应的多个姿势样本,创建虚拟角色对应的混合空间。如此,针对虚拟角色在虚拟载具中不同的姿势类型,分别创建了对应的姿势样本,后续在进行动画播放时,能够使虚拟载具在承载虚拟角色移动时虚拟角色的动画表现更加丰富和生动,且提高了不同姿势类型之间的连贯性,提升了用户的视觉体验。
在步骤S104中,将姿势与虚拟载具移动的动画进行动画融合,并根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势。
在一些实施例中,客户端可以通过以下方式将所获取的姿势与虚拟载具移动的动画进行动画融合:将所获取的姿势与虚拟角色的初始姿势样本进行比较,得到虚拟角色发生变形的骨骼以及每根发生变形的骨骼对应的骨骼变形信息;基于设定的权重值对骨骼变形信息进行加权处理;将经过加权处理的骨骼变形信息叠加在虚拟载具移动的动画上。
示例的,客户端在获取到混合空间输出的姿势后,将混合空间输出的姿势与虚拟角色的初始姿势样本进行比较,以确定出虚拟角色发生变形的骨骼以及每根发生变形的骨骼对应的骨骼变形信息(假设客户端通过比较混合空间输出的姿势和虚拟角色的初始姿势样本确定出虚拟角色发生变形的骨骼为骨骼A、骨骼B和骨骼C,其中,骨骼A扭动了50°、骨骼B扭动了40°、骨骼C扭动了50°),接着,客户端基于用户设定的权重值对骨骼变形信息进行加权处理(假设用户设定的权重值为0.8,则经过加权处理后骨骼A的扭动角度为40°、骨骼B的扭动角度为32°、骨骼C的扭动角度为40°);最后,客户端将经过加权处理后的骨骼变形信息叠加在虚拟载具承载虚拟角色移动的动画上,从而使得虚拟角色具有相应的姿势,例如虚拟角色跟随虚拟载具同步移动的姿势,或者虚拟角色在虚拟载具突然移动或者停止移动时由于惯性进行缓冲的姿势,如此,在表现虚拟角色跟随虚拟载具移动时,虚拟角色具有跟随或者缓冲的效果,更加符合真实情况,提升了用户的视觉体验。
需要说明的是,客户端在获取虚拟角色跟随虚拟载具移动时发生的位置偏移是每帧都会进行的,即当虚拟角色处于静止状态时,获取虚拟角色在下一帧发生的位置偏移;以此类推,基于每帧分别对应的姿势与虚拟载具移动的动画进行动画融合,并且将每一帧的融合动画依次衔接,从而显示出虚拟角色跟随虚拟载具移动时虚拟角色具有的不断移动的姿势画面。
在一些实施例中,客户端可以通过以下方式实现上述的根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势:当与位置偏移对应的姿势为缓冲姿势时,根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色在起始位置未与虚拟载具同步移动的姿势。
示例的,参见图4B,图4B是本申请实施例提供的虚拟角色的控制方法的应用场景示意图,如图4B所示,以参考方向为Z轴的正方向(即向上的方向)为例,当虚拟载具401和虚拟角色402均处于静止状态时,虚拟载具401与虚拟角色402之间的距离为a;当虚拟载具401向Z轴的正方向移动(即向上移动)时,虚拟角色402由于惯性没有跟虚拟载具401同步向上移动,此时虚拟载具401与虚拟角色402之间的距离变成b,且b小于a,从而显示了虚拟角色402在起始位置未与虚拟载具401同步向上移动的姿势。
在另一些实施例中,客户端还可以通过以下方式实现上述的根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势:当与位置偏移对应的姿势为缓冲姿势时,根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色在虚拟载具移动至终点位置后继续沿参考方向移动、并在越过终点位置后开始沿参考方向的反方向返回的姿势。
示例的,参见图4C,图4C是本申请实施例提供的虚拟角色的控制方法的应用场景示意图,如图4C所示,以参考方向为Z轴的正方向(即向上的方向)为例,虚拟载具401承载着虚拟角色402向Z轴的正方向移动(即向上移动),此时虚拟载具401与虚拟角色402之间的距离为c,当虚拟载具401到达终点位置停止运动后,虚拟角色402由于惯性会继续向上移动,此时虚拟载具401与虚拟角色402之间的距离变成d,其中,d是大于c的;随后,虚拟角色402由于重力的作用会向下移动,此时,虚拟载具401与虚拟角色402之间的距离变成e,其中,e是小于d的,且当虚拟角色402停止运动后,e的值与c相同。
在一些实施例中,客户端可以通过以下方式实现上述的根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势:当与位置偏移对应的姿势为缓冲姿势时,根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色沿参考方向的反方向返回至起始位置后继续反向移动、并越过起始位置的姿势。
示例的,参见图4D,图4D是本申请实施例提供的虚拟角色的控制方法的应用场景示意图,如图4D所示,以参考方向为Z轴的正方向(即向上的方向)为例,当虚拟载具401承载虚拟角色402向下(即向Z轴的负方向)移动时,在虚拟载具401停止运动后(此时虚拟载具401与虚拟角色402之间的距离为f),虚拟角色402由于惯性继续沿Z轴的负方向移动(即虚拟角色402继续向下移动)、并越过虚拟角色402初始位置的姿势(此时虚拟载具401与虚拟角色402之间的距离为g,且g是小于f的),从而实现了在虚拟载具401停止运动后,虚拟角色402由于惯性继续向下移动的效果。
在另一些实施例中,客户端可以通过以下方式实现上述的根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势:当与位置偏移对应的姿势为跟随姿势时,根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色沿参考方向与虚拟载具同步移动的姿势。
示例的,参见图4E,图4E是本申请实施例提供的虚拟角色的控制方法的应用场景示意图,如图4E所示,以参考方向为X轴的正方向(即向右的方向)为例,当虚拟载具401承载虚拟角色402向右移动(即沿X轴的正方向移动)时,虚拟角色402沿X轴的正方向(即向右)与虚拟载具401同步移动。
本申请实施例提供的虚拟角色的控制方法,通过基于被物理模拟的骨骼获取虚拟角色发生的位置偏移,并获取虚拟角色的与位置偏移对应的姿势(例如跟随姿势或者缓冲姿势),接着,将所获取的姿势与虚拟载具移动的动画进行动画融合,并根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势,如此,能够使虚拟角色在跟随虚拟载具移动时的动画表现更加丰富,并接近真实环境的效果,以提升用户的视觉体验。
下面以骑乘动画为例,说明本申请实施例在一个实际的应用场景中的示例性应用。
相关技术在显示骑乘动画时通常只使用一段固定的动画,并将虚拟角色直接挂载于虚拟载具(例如虚拟宠物)上,在整个骑乘过程中,虚拟角色不会随着虚拟载具的移动而产生晃动的效果。也就是说,相关技术提供的方案在表现骑乘动画时不够真实,降低了用户的视觉体验。
针对上述技术问题,本申请实施例提供了一种虚拟角色的控制方法,首先,在虚拟角色的特定部位(例如虚拟角色的腰部层级)创建一根骨骼,接着,对所创建的骨骼进行物理模拟,并将被物理模拟的骨骼由于虚拟载具的移动而跟着晃动产生的位置偏移输入至混合空间(混合空间包括虚拟角色向不同参考方向偏移的多个姿势样本)中,以使混合空间输出相应的姿势,最后将混合空间输出的姿势与虚拟载具移动的动画通过加法动画的方式进行合成,从而形成的动画能够实现在骑乘于虚拟载具上的虚拟角色会随着虚拟载具的移动而产生晃动的效果。
下面对本申请实施例提供的虚拟角色的控制方法进行具体说明。
示例的,参见图5,图5是本申请实施例提供的创建骨骼的示意图,如图5所示,使用预设的动画引擎提供的IDE在虚拟角色的腰部层级501下创建一根骨骼,并保存为新文件。接着,使用新文件制作骑乘动画,并基于骑乘动画的第一帧姿势(即初始姿势样本)分别制作虚拟角色向前、后、左、右、上、下各个参考方向偏移的姿势样本,并导出FBX(3D通用模型文件格式)文件。
示例的,参见图6,图6是本申请实施例提供的虚拟角色向不同参考方向偏移的姿势示意图,如图6所示,基于骑乘动画的第一帧姿势(即图6中示出的虚拟角色的初始姿势样本601)分别制作了虚拟角色向前偏移的姿势样本602、向后偏移的姿势样本607、向左偏移的姿势样本604、向右偏移的姿势样本603、向上偏移的姿势样本606和向下偏移的姿势样本605。
可以看出,在每个参考方向上都有不同的姿势样本,且不同姿势样本文件对应于不同的姿势,包括默认姿势样本(对应于上述的初始姿势样本)、缓冲姿势样本(包括上述的第一缓冲姿势样本、第二缓冲姿势样本和第三缓冲姿势样本,即当虚拟载具的运动趋势发生变化(例如到达最高点、或者返回至最低点)时,虚拟角色由于惯性的作用保持原有的运动趋势而与虚拟载具之间的距离发生变化)、跟随姿势样本(即虚拟角色跟随虚拟载具同步移动的姿势)。也就是说,每个参考方向上至少有2个不同的姿势样本,在两个缓冲姿势样本之间还可以插入跟随姿势样本(非必要),因为后者属于过渡姿势,混合空间可以在两个缓冲姿势样本之间通过对虚拟角色的相关骨骼进行调整,以生成对应的过渡姿势。
下面结合附图对本申请实施例提供的虚拟角色的控制方法实现的骑乘缓冲跟随效果进行说明。
示例的,图7A至图7E展示了虚拟角色原地跳跃的示例效果,其中,图7A是虚拟角色处于初始姿势的示意图(即虚拟载具和虚拟角色均处于静止的状态,此时虚拟角色与虚拟载具之间的距离为a);图7B是虚拟角色处于刚起跳姿势的示意图(属于缓冲姿势,即当虚拟载具向上移动时,虚拟角色由于惯性仍保持静止的状态,因此虚拟载具与虚拟角色之间的距离变小,即图7B中示出的虚拟角色与虚拟载具之间的距离b是小于a的);图7C是虚拟角色处于开始下落姿势的示意图(属于缓冲姿势,即当虚拟载具到达最高点后,虚拟角色由于惯性会继续向上运动,因此虚拟角色与虚拟载具之间的距离相较于上升过程的距离变大,即图7C中示出的虚拟载具与虚拟角色之间的距离c是大于a的);图7D是虚拟角色处于落地缓冲姿势的示意图(属于缓冲姿势,即当虚拟载具落地后,虚拟角色由于惯性会继续向下运动,因此虚拟角色与虚拟载具之间的距离相较于初始姿势的距离变小,即7D示出的虚拟角色与虚拟载具之间的距离d是小于a的);图7E是虚拟角色回到初始姿势的示意图(此时虚拟载具与虚拟角色之间的距离重新变成a)。
此外,结合图7A至图7E可以看出,在表现虚拟角色跟随虚拟载具原地跳跃的过程中包括的起跳姿势、跟随姿势、开始下落姿势、下落姿势以及落地缓冲姿势,其对应的位置偏移(从Z轴方向上看)先增大、再减小、再增大。因此,可以根据位置偏移与姿势之间的规律,将位置偏移表示为矢量,混合空间可以计算并输出与任意位置偏移对应的姿势。
示例的,图8A至图8C展示了虚拟角色移动时转向跳跃的示例效果,其中,图8A是虚拟角色处于移动跳跃姿势的示意图(属于缓冲姿势,即当虚拟载具突然向左移动时,虚拟角色由于惯性身体会相对于虚拟载具向右晃动);图8B是虚拟角色处于落地缓冲姿势的示意图(属于缓冲姿势,即当虚拟载具落地后,虚拟角色由于惯性会继续下将,虚拟载具与虚拟角色之间的距离相较于下降过程中的距离变小);图8C是虚拟角色回到初始姿势的示意图。
结合图8B和图8C可以看出,当虚拟载具落地后,虚拟角色由于惯性的作用会继续下降,此时,虚拟角色的上半身与虚拟载具之间的距离(即图8B中示出的距离g)是小于虚拟角色处于初始姿势时,虚拟角色的上半身与虚拟载具之间的距离(即图8C中示出的距离k)的,即k是大于g的。也就是说,本申请实施例提供的虚拟角色的控制方法实现了虚拟角色在跟随骑乘物移动时缓冲跟随的效果。
下面从技术侧对本申请实施例提供的虚拟角色的控制方法进行说明。
示例的,参见图9,图9是本申请实施例提供的虚拟角色的控制方法的流程示意图,如图9所示,首先使用三维动画制作软件(例如3D Studio Max)提供的IDE在虚拟角色的骨架上创建一根骨骼,并保存为新文件。接着,使用新文件制作骑乘动画,并基于骑乘动画的第一帧姿势(即初始姿势样本)分别制作虚拟角色向前、后、左、右、上、下各个参考方向偏移的姿势样本,并导出FBX文件。随后,如图10所示,在预设动画编辑引擎(例如虚幻引擎(Unreal Engine))中使用向各个参考方向偏移的姿势样本文件创建混合空间,以及调用“弹簧控制器”节点对新创建的骨骼进行物理模拟,并获取被物理模拟的骨骼由于虚拟载具的移动而随着晃动产生的位置偏移(即图10中示出的差值),将骨骼的位置偏移输入混合空间中,以使混合空间输出相应的姿势(即图10中示出的需要叠加动画姿势),最后将混合空间输出的姿势与虚拟载具移动的动画通过加法动画的方式进行合成,从而实现虚拟角色在跟随虚拟载具移动时产生晃动的效果。
下面以测试环境为Unreal Engine 4.25和3D Studio Max 2019为例,对本申请实施例提供的虚拟角色的控制方法进行说明。
本申请实施例提供的虚拟角色的控制方法包括以下几个步骤:
一、创建骨骼
示例的,参见图5,图5是本申请实施例提供的创建骨骼的示意图。如图5所示,使用IDE在虚拟角色的腰部层级501下创建一根骨骼,这一步操作创建的骨骼在虚幻引擎(例如Unreal Engine 4.25)内用于骨骼的物理模拟。
二、创建骨骼插槽
使用IDE在虚拟角色的骨架上创建骨骼后,将其保存为新文件,并使用新文件制作骑乘动画,接着,将所制作的骑乘动画导入到虚拟引擎内,然后创建角色蓝图和角色动画蓝图。接着,在新创建的骨骼上创建骨骼插槽。
示例的,参见图11,图11是本申请实施例提供的在新创建的骨骼上创建骨骼插槽的示意图,如图11所示,使用IDE在虚拟角色的腰部层级下创建一根骨骼后,在所创建的骨骼上继续创建一个骨骼插槽(即图11中示出的socket2),这一步操作创建的骨骼插槽是为了后续用于获取骨骼的位置信息。
三、骨骼物理模拟
示例的,参见图12,图12是本申请实施例提供的针对新创建的骨骼进行物理模拟的示意图,如图12所示,使用“弹簧控制器”节点对新创建的骨骼(即图12中示出的编号为“Bone01_BM_Hair”的骨骼)进行物理模拟,其中,针对新创建的骨骼进行物理模拟的物理参数至少包括:弹力刚度(弹力刚度用于表征骨骼弹性变形的难易程度,弹力刚度的数值越大表征骨骼弹性变形越难,即骨骼越不容易发生弹性变形)和弹力阻尼(弹力阻尼是骨骼模拟的延迟程度,不同的弹力阻尼值对应的骨骼的晃动频率不同,可以使用弹力阻尼值去限制骨骼晃动的频率)。在使用“弹簧控制器”节点对新创建的骨骼进行物理模拟后,该骨骼就会根据虚拟角色的实际移动产生跟随的效果。
四、制作前、后、左、右、上、下各个参考方向偏移的姿势样本
在使用新文件制作骑乘动画后,可以在三维动画制作软件(例如3D Studio Max软件)中基于骑乘动画的第一帧姿势分别制作虚拟角色向前、后、左、右、上、下各个参考方向偏移的姿势样本,并导出FBX文件,其中,基于骑乘动画的第一帧姿势分别制作的前、后、左、右、上、下各个方向偏移的姿势样本的效果如图6所示。
需要说明的是,这些FBX文件都只包含一帧的动画信息。这一操作导出的FBX文件是为了在虚拟引擎(例如Unreal Engine 4.25)内配置混合空间使用。
示例的,参见图13,图13是本申请实施例提供的基于虚拟角色向不同参考方向偏移的姿势配置混合空间的示意图。如图13所示,FBX文件1301是基于虚拟角色向右偏移的姿势导出的,其对应于虚拟角色向右偏移的姿势样本1302;FBX文件1303是基于虚拟角色向左偏移的姿势导出的,其对应于虚拟角色向左偏移的姿势样本1304;FBX文件1305是基于虚拟角色向下偏移的姿势导出的,其对应于虚拟角色向下偏移的姿势样本1306;FBX文件1307是基于虚拟角色向前偏移的姿势导出的,其对应于虚拟角色向前偏移的姿势样本1308;FBX文件1309是基于虚拟角色向后偏移的姿势导出的,其对应于虚拟角色向后偏移的姿势样本1310;FBX文件1311是基于虚拟角色向上偏移的姿势导出的,其对应于虚拟角色向上偏移的姿势样本1312。
五、获取骨骼位置偏移
示例的,参见图14,图14是本申请实施例提供的获取骨骼位置偏移信息的示意图,如图14所示,当虚拟载具发生移动时,被物理模拟的骨骼也会随之产生晃动(例如当虚拟载具突然向左移动时,由于惯性的作用,被物理模拟的骨骼相对于虚拟载具会向右晃动),此时骨骼的位置就会发生变化。那么针对该骨骼,可以首先保存骨骼在晃动前对应的初始位置(例如假设初始位置为X1、Y1、Z1),接着,基于骨骼插槽获取该骨骼在晃动后对应的终止位置(例如假设终止位置为X2、Y2、Z2),随后,将该骨骼在晃动后的终止位置与晃动前的初始位置进行差值计算(即分别计算得到X2-X1、Y2-Y1和Z2-Z1的值),即可获取到该骨骼由于虚拟载具的移动而随着晃动产生的位置偏移(例如假设获取到的骨骼位置偏移为X=0.003、Y=31.975、Z=101.193001)。这一步操作是为了得到当虚拟载具移动时骨骼跟着晃动而产生的位置偏移,并将所得到的位置偏移输入至混合空间内进行计算。
六、输出最终动画
将计算后的差值(即在步骤五中计算出的被物理模拟的骨骼由于晃动产生的位置偏移,包括XYZ三个维度的值)输入至混合空间中,以使混合空间输出相应的姿势,并将混合空间输出的姿势叠加在状态机确定播放的动画(例如虚拟载具移动的动画)上,以输出最终的动画。
示例的,参见图15,图15是本申请实施例提供的最终动画蓝图节点示意图,如图15所示,在步骤四中制作的虚拟角色向前、后、左、右、上、下各个参考方向偏移的姿势样本用于确定虚拟角色可移动的最大范围。例如,可以将虚拟角色左右移动方向作为平面坐标系的X轴,其中,假设最左姿势(即虚拟角色能够向左偏移的最大范围)对应的X值可以设定为-20,最右姿势对应的X值可以设定为20(例如,当虚拟载具移动到最右如X=19的位置时,虚拟角色由于惯性会继续向右移动到X=20处才不再继续向右移动);同理,可以将虚拟角色前后移动方向作为平面坐标系的Y轴,其中,假设最前姿势对应的Y值可以设定为100,最后姿势对应的Y值可以设定为-100;类似的,当虚拟场景为三维虚拟场景时,还可以将虚拟角色上下移动方向作为三维坐标系的Z轴,其中,最上姿势对应的Z值可以设定为100,最下姿势对应的Z值可以设定为-100。
假设当虚拟载具仅向左移动时,由于惯性,被物理模拟的骨骼相对于虚拟载具会向右晃动,假设获取到的骨骼位置偏移为[X=20,Y=0,Z=0],其中,0代表没有变化,则混合空间输出的姿势可以为虚拟角色向右晃动距离为X=20的姿势(即相较于在步骤四中制作的最右姿势,仅向右偏移20%的幅度,例如当最右姿势对应的虚拟角色向右偏移5厘米时,则混合空间输出的姿势为虚拟角色向右偏移1厘米),也就是说,混合空间输出的姿势是从虚拟角色的初始姿势过渡到最右姿势生成,即将虚拟角色的骨架中相关骨骼根据相应方向移动一定的幅度(其中,幅度为骨骼的最大幅度的20%,最大幅度是初始姿势和最右姿势之间的移动幅度)。接着,将混合空间输出的姿势输入到“应用additive动画”节点,此时该节点将往右仅晃动20%的这个姿势对比虚拟角色的初始姿势(例如图6中示出的姿势样本601),以计算出虚拟角色的哪些骨骼发生了变形(transform),以及每根发生变形的骨骼对应的变形信息,例如假设计算出的骨骼变形信息为:虚拟角色的10根骨骼发生了transform,且每根骨骼旋转了50°,且当用户设定的权重值(Alpha)为1时,就把这个50°的旋转叠加在idle11上播放的动画上(包括虚拟载具移动的动画,idle11播放的动画可以是通过状态机实现,这个状态机里可以有很多动画,会根据虚拟载具的状态(例如速度、外部环境如路况)触发播放在相应状态下移动的动画,也可能是只有一个动画,总之就是把混合空间输出的骨骼变形信息叠加在idle11播放的虚拟载具移动的动画上)。此外,当用户设定的权重值(Alpha)为0.5,则在idle11播放的动画上只叠加25°的骨骼旋转。
本申请实施例提供的虚拟角色的控制方法,首先,在虚拟角色的特定部位(例如虚拟角色的腰部层级)创建一根骨骼,接着,对所创建的骨骼进行物理模拟,并将被物理模拟的骨骼由于虚拟载具的移动而跟着晃动产生的位置偏移输入至混合空间(混合空间包括虚拟角色向不同参考方向偏移的多个姿势样本)中,以使混合空间输出相应的姿势,最后将混合空间输出的姿势与虚拟载具移动的动画通过加法动画的方式进行合成,从而形成的动画能够实现在虚拟载具中的虚拟角色会随着虚拟载具的移动而产生晃动的效果,提升了美术表现以及用户的视觉体验。
下面继续说明本申请实施例提供的虚拟角色的控制装置455实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器450的虚拟角色的控制装置455中的软件模块可以包括:显示模块4551、获取模块4552、融合模块4553和创建模块4554。
显示模块4551,用于在虚拟场景中显示虚拟角色以及虚拟载具;获取模块4552,用于响应于虚拟角色移动至虚拟载具中,获取虚拟角色发生的位置偏移;获取模块4552,还用于获取虚拟角色的与位置偏移对应的姿势;融合模块4553,用于将姿势与虚拟载具移动的动画进行动画融合;显示模块4551,还用于根据得到的融合动画显示虚拟载具承载虚拟角色移动时虚拟角色具有的姿势。
在一些实施例中,显示模块4551,还用于根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色在起始位置未与虚拟载具同步移动的姿势。
在一些实施例中,显示模块4551,还用于根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色在虚拟载具移动至终点位置时继续沿参考方向移动、并在越过终点位置后开始沿参考方向的反方向返回的姿势。
在一些实施例中,显示模块4551,还用于根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色沿参考方向的反方向返回至起始位置后继续反向移动、并越过起始位置的姿势。
在一些实施例中,显示模块4551,还用于根据得到的融合动画,显示虚拟载具承载虚拟角色移动、以及虚拟角色沿参考方向与虚拟载具同步移动的姿势。
在一些实施例中,显示模块4551,还用于响应于针对虚拟场景中显示的虚拟角色的移动操作,控制虚拟角色移动至在虚拟场景中显示的虚拟载具中;或者,用于响应于跟踪虚拟场景中的目标对象的指令,确定虚拟场景中与虚拟角色适配的虚拟载具,控制虚拟角色移动至虚拟载具中。
在一些实施例中,虚拟角色的控制装置455还包括创建模块4554,用于在虚拟角色的骨架中创建骨骼,基于设定的弹力阻尼和弹力刚度对骨骼进行物理模拟;创建模块4554,还用于在骨骼上创建骨骼插槽;获取模块4552,还用于通过骨骼插槽获取经过物理模拟的骨骼跟随骨架移动时发生的位置偏移。
在一些实施例中,创建模块4554,还用于确定虚拟角色中用于与虚拟载具接触的部位;在虚拟角色的骨架中与部位对应的层级或下一层级创建骨骼。
在一些实施例中,获取模块4552,还用于基于骨骼插槽,分别确定经过物理模拟的骨骼在跟随骨架移动前对应的初始位置、以及在跟随骨架移动后对应的目标位置;基于初始位置以及目标位置,确定经过物理模拟的骨骼跟随骨架移动时发生的位置偏移。
在一些实施例中,获取模块4552,还用于根据位置偏移的方向和幅度,确定混合空间中与位置偏移对应的第一姿势样本和第二姿势样本;生成第一姿势样本和第二姿势样本之间的过渡姿势,并作为混合空间输出的姿势。
在一些实施例中,获取模块4552,还用于将位置偏移的方向分解为与混合空间包括的多个参考方向一一对应的位置偏移分量;在每个位置偏移分量对应的参考方向分布的多个姿势样本中,确定位于位置偏移分量对应的位置之前的第一姿势样本、以及位于位置偏移分量对应的位置之后的第二姿势样本;以及用于针对将位置偏移的方向分解后得到的与混合空间包括的多个参考方向一一对应的位置偏移分量:将针对每个位置偏移分量确定的第一姿势样本和第二姿势样本进行融合,得到对应的参考方向的分量过渡姿势;将多个参考方向分别对应的分量过渡姿势进行融合,得到过渡姿势。
在一些实施例中,获取模块4552,还用于基于第一姿势样本对应的位置以及第二姿势样本对应的位置,确定第一姿势样本与第二姿势样本之间的第一距离;基于第一姿势样本对应的位置以及位置偏移分量对应的位置,确定第一姿势样本与位置偏移分量之间的第二距离;确定第二距离与第一距离之间的比值;基于比值对虚拟角色的符合第二姿势样本的骨架中的至少部分骨骼进行调整,得到对应的参考方向的分量过渡姿势。
在一些实施例中,获取模块4552,还用于当虚拟角色在虚拟载具的姿势的类型是固定的时,获取虚拟角色的第一帧动画以作为初始姿势样本;以及用于对虚拟角色的符合初始姿势样本的骨架中的至少部分骨骼进行调整,得到虚拟角色在每个参考方向上分别对应的多个姿势样本;创建模块4554,还用于基于获取的姿势样本,创建虚拟角色对应的混合空间。
在一些实施例中,创建模块4554,还用于针对虚拟场景的每个参考方向,创建以下姿势样本至少之一:初始姿势样本,用于表征虚拟角色在虚拟载具静止的姿势;第一缓冲姿势样本,用于表征虚拟角色在起始位置未与虚拟载具同步移动的姿势;第二缓冲姿势样本,用于表征虚拟角色在虚拟载具移动到终点位置时继续沿参考方向移动、并在越过终点位置后开始沿参考方向的反方向返回的姿势;第三缓冲姿势样本,用于表征虚拟角色沿参考方向的反方向返回到起始位置后继续反向移动、并越过起始位置的姿势;跟随姿势样本,用于表征虚拟角色沿参考方向与虚拟载具同步移动的姿势。
在一些实施例中,创建模块4554,还用于针对虚拟角色每个关键帧动画对应的初始姿势样本,执行以下处理:基于关键帧动画对应的初始姿势样本,创建虚拟角色在不同参考方向上分别对应的多个姿势样本;基于每个关键帧动画分别对应的多个姿势样本,创建虚拟角色对应的混合空间;其中,在不同关键帧动画中虚拟角色的姿势不同。
在一些实施例中,融合模块4553,还用于将姿势与虚拟角色的初始姿势样本进行比较,得到虚拟角色发生变形的骨骼以及每根发生变形的骨骼对应的骨骼变形信息;基于设定的权重值对骨骼变形信息进行加权处理;将经过加权处理的骨骼变形信息叠加在虚拟载具移动的动画上。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的虚拟角色的控制装置中未尽的技术细节,可以根据图3、图9、或图10任一附图的说明而理解。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的虚拟角色的控制方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3、图9、或图10示出的虚拟角色的控制方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,本申请实施例通过获取虚拟角色发生的位置偏移,并获取虚拟角色的与位置偏移对应的姿势,接着,将所获取的姿势与虚拟载具移动的动画进行动画融合,从而能够根据得到的融合动画显示虚拟载具移动时虚拟角色具有的姿势,如此,通过动画融合的方式能够使虚拟角色在跟随虚拟载具移动时的动画表现更加丰富,并接近真实环境的效果,以提升用户的视觉体验。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (15)

1.一种虚拟角色的控制方法,其特征在于,所述方法包括:
在虚拟场景中显示虚拟角色以及虚拟载具;
响应于所述虚拟角色移动至所述虚拟载具中,在所述虚拟角色的骨架中创建骨骼,基于设定的弹力阻尼和弹力刚度对所述骨骼进行物理模拟,在所述骨骼上创建骨骼插槽,基于所述骨骼插槽,分别确定经过所述物理模拟的所述骨骼在跟随所述骨架移动前对应的初始位置、以及在跟随所述骨架移动后对应的目标位置,其中,所述骨骼插槽用于定位所述骨骼的位置;
基于所述初始位置以及所述目标位置,确定经过所述物理模拟的所述骨骼跟随所述骨架移动时发生的位置偏移,其中,所述虚拟角色的位置偏移是基于被物理模拟的骨骼确定出的,所述位置偏移是通过所述初始位置与所述目标位置之间的差值计算得到的;
获取所述虚拟角色的与所述位置偏移对应的姿势;
将所述姿势与所述虚拟角色的初始姿势样本进行比较,得到所述虚拟角色发生变形的骨骼以及每根所述发生变形的骨骼对应的骨骼变形信息;
基于设定的权重值对所述骨骼变形信息进行加权处理;
将经过所述加权处理的所述骨骼变形信息叠加在所述虚拟载具移动的动画上,得到融合动画;
根据得到的融合动画显示以下内容:
当与所述位置偏移对应的姿势为缓冲姿势时,所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色在所述虚拟载具移动至终点位置时继续沿参考方向移动、并在越过所述终点位置后开始沿所述参考方向的反方向返回;
其中,所述缓冲姿势是当所述虚拟载具的运动趋势发生变化时,所述虚拟角色由于惯性的作用保持原有的运动趋势而与所述虚拟载具之间的距离发生变化的姿势。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当与所述位置偏移对应的姿势为缓冲姿势时,根据得到的融合动画,显示以下内容:所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色在起始位置未与所述虚拟载具同步移动。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当与所述位置偏移对应的姿势为缓冲姿势时,根据得到的融合动画,显示以下内容:所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色沿参考方向的反方向返回至起始位置后继续反向移动、并越过所述起始位置。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当与所述位置偏移对应的姿势为跟随姿势时,根据得到的融合动画,显示以下内容:所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色沿参考方向与所述虚拟载具同步移动。
5.根据权利要求1所述的方法,其特征在于,所述在虚拟场景中显示虚拟角色以及虚拟载具,包括:
响应于针对虚拟场景中显示的虚拟角色的移动操作,控制所述虚拟角色移动至在所述虚拟场景中显示的虚拟载具中;或者,
响应于跟踪虚拟场景中的目标对象的指令,确定所述虚拟场景中与虚拟角色适配的虚拟载具,控制所述虚拟角色移动至所述虚拟载具中。
6.根据权利要求1所述的方法,其特征在于,所述在所述虚拟角色的骨架中创建骨骼,包括:
确定所述虚拟角色中用于与所述虚拟载具接触的部位;
在所述虚拟角色的骨架中与所述部位对应的层级或下一层级创建骨骼。
7.根据权利要求1所述的方法,其特征在于,所述获取所述虚拟角色的与所述位置偏移对应的姿势,包括:
根据所述位置偏移的方向和幅度,确定混合空间中与所述位置偏移对应的第一姿势样本和第二姿势样本;
生成所述第一姿势样本和所述第二姿势样本之间的过渡姿势,并作为所述混合空间输出的姿势。
8.根据权利要求7所述的方法,其特征在于,
所述根据所述位置偏移的方向和幅度,确定混合空间中与所述位置偏移对应的第一姿势样本和第二姿势样本,包括:
将所述位置偏移的方向分解为与所述混合空间包括的多个参考方向一一对应的位置偏移分量;
在每个所述位置偏移分量对应的参考方向分布的多个姿势样本中,确定位于所述位置偏移分量对应的位置之前的第一姿势样本、以及位于所述位置偏移分量对应的位置之后的第二姿势样本;
所述生成所述第一姿势样本和所述第二姿势样本之间的过渡姿势,包括:
针对将所述位置偏移的方向分解后得到的与所述混合空间包括的多个参考方向一一对应的位置偏移分量:
将针对每个所述位置偏移分量确定的所述第一姿势样本和所述第二姿势样本进行融合,得到对应的参考方向的分量过渡姿势;
将多个所述参考方向分别对应的分量过渡姿势进行融合,得到过渡姿势。
9.根据权利要求8所述的方法,其特征在于,所述将针对每个所述位置偏移分量确定的所述第一姿势样本和所述第二姿势样本进行融合,得到对应的参考方向的分量过渡姿势,包括:
基于所述第一姿势样本对应的位置以及所述第二姿势样本对应的位置,确定所述第一姿势样本与所述第二姿势样本之间的第一距离;
基于所述第一姿势样本对应的位置以及所述位置偏移分量对应的位置,确定所述第一姿势样本与所述位置偏移分量之间的第二距离;
确定所述第二距离与所述第一距离之间的比值;
基于所述比值对所述虚拟角色的符合所述第二姿势样本的骨架中的至少部分骨骼进行调整,得到对应的参考方向的分量过渡姿势。
10.根据权利要求1所述的方法,其特征在于,在获取所述虚拟角色的与所述位置偏移对应的姿势之前,所述方法还包括:
当所述虚拟角色在所述虚拟载具的姿势的类型是固定的时,获取所述虚拟角色的第一帧动画以作为初始姿势样本;
对所述虚拟角色的符合所述初始姿势样本的骨架中的至少部分骨骼进行调整,得到所述虚拟角色在每个参考方向上分别对应的多个姿势样本;
基于获取的姿势样本,创建所述虚拟角色对应的混合空间。
11.根据权利要求8所述的方法,其特征在于,所述获取所述虚拟角色在每个参考方向上分别对应的多个姿势样本,包括:
针对所述虚拟场景的每个参考方向,创建以下姿势样本至少之一:
初始姿势样本,用于表征所述虚拟角色在所述虚拟载具静止的姿势;
第一缓冲姿势样本,用于表征所述虚拟角色在起始位置未与所述虚拟载具同步移动的姿势;
第二缓冲姿势样本,用于表征所述虚拟角色在所述虚拟载具移动到终点位置时继续沿所述参考方向移动、并在越过所述终点位置后开始沿所述参考方向的反方向返回的姿势;
第三缓冲姿势样本,用于表征所述虚拟角色沿所述参考方向的反方向返回到起始位置后继续反向移动、并越过所述起始位置的姿势;
跟随姿势样本,用于表征所述虚拟角色沿所述参考方向与所述虚拟载具同步移动的姿势。
12.根据权利要求1所述的方法,其特征在于,当所述虚拟角色在所述虚拟载具的姿势的类型是变化的时,所述方法还包括:
针对所述虚拟角色每个关键帧动画对应的初始姿势样本,执行以下处理:
基于所述关键帧动画对应的初始姿势样本,创建所述虚拟角色在不同参考方向上分别对应的多个姿势样本;
基于每个所述关键帧动画分别对应的多个姿势样本,创建所述虚拟角色对应的混合空间;
其中,在不同所述关键帧动画中所述虚拟角色的姿势不同。
13.一种虚拟角色的控制装置,其特征在于,所述装置包括:
显示模块,用于在虚拟场景中显示虚拟角色以及虚拟载具;
获取模块,用于响应于所述虚拟角色移动至所述虚拟载具中,在所述虚拟角色的骨架中创建骨骼,基于设定的弹力阻尼和弹力刚度对所述骨骼进行物理模拟,在所述骨骼上创建骨骼插槽,基于所述骨骼插槽,分别确定经过所述物理模拟的所述骨骼在跟随所述骨架移动前对应的初始位置、以及在跟随所述骨架移动后对应的目标位置,其中,所述骨骼插槽用于定位所述骨骼的位置;
基于所述初始位置以及所述目标位置,确定经过所述物理模拟的所述骨骼跟随所述骨架移动时发生的位置偏移,其中,所述虚拟角色的位置偏移是基于被物理模拟的骨骼确定出的,所述位置偏移是通过所述初始位置与所述目标位置之间的差值计算得到的;
所述获取模块,还用于获取所述虚拟角色的与所述位置偏移对应的姿势;
融合模块,用于将所述姿势与所述虚拟角色的初始姿势样本进行比较,得到所述虚拟角色发生变形的骨骼以及每根所述发生变形的骨骼对应的骨骼变形信息;
基于设定的权重值对所述骨骼变形信息进行加权处理;
将经过所述加权处理的所述骨骼变形信息叠加在所述虚拟载具移动的动画上,得到融合动画;
所述显示模块,还用于根据得到的融合动画显示以下内容:
当与所述位置偏移对应的姿势为缓冲姿势时,所述虚拟载具承载所述虚拟角色移动、以及所述虚拟角色在所述虚拟载具移动至终点位置时继续沿参考方向移动、并在越过所述终点位置后开始沿所述参考方向的反方向返回;
其中,所述缓冲姿势是当所述虚拟载具的运动趋势发生变化时,所述虚拟角色由于惯性的作用保持原有的运动趋势而与所述虚拟载具之间的距离发生变化的姿势。
14.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至12任一项所述的虚拟角色的控制方法。
15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至12任一项所述的虚拟角色的控制方法。
CN202110257263.0A 2021-03-09 2021-03-09 虚拟角色的控制方法、装置、电子设备及存储介质 Active CN112843683B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110257263.0A CN112843683B (zh) 2021-03-09 2021-03-09 虚拟角色的控制方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110257263.0A CN112843683B (zh) 2021-03-09 2021-03-09 虚拟角色的控制方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112843683A CN112843683A (zh) 2021-05-28
CN112843683B true CN112843683B (zh) 2023-11-10

Family

ID=75995009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110257263.0A Active CN112843683B (zh) 2021-03-09 2021-03-09 虚拟角色的控制方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112843683B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113827959B (zh) * 2021-08-27 2024-06-21 网易(杭州)网络有限公司 游戏动画的处理方法、装置及电子装置
CN113769405A (zh) * 2021-09-15 2021-12-10 网易(杭州)网络有限公司 对象控制方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7403202B1 (en) * 2005-07-12 2008-07-22 Electronic Arts, Inc. Computer animation of simulated characters using combinations of motion-capture data and external force modelling or other physics models

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7403202B1 (en) * 2005-07-12 2008-07-22 Electronic Arts, Inc. Computer animation of simulated characters using combinations of motion-capture data and external force modelling or other physics models

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Genki摩托.看MotoGp冠军玩摩托车游戏 MotoGP2018.《bilibili》.2018, *
看MotoGp冠军玩摩托车游戏 MotoGP2018;Genki摩托;《bilibili》;20180622;视频全长 *

Also Published As

Publication number Publication date
CN112843683A (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
CN112076473B (zh) 虚拟道具的控制方法、装置、电子设备及存储介质
Linowes Unity 2020 virtual reality projects: Learn VR development by building immersive applications and games with Unity 2019.4 and later versions
Linowes Unity virtual reality projects: Learn virtual reality by developing more than 10 engaging projects with unity 2018
CN112843683B (zh) 虚拟角色的控制方法、装置、电子设备及存储介质
EP4004630A1 (en) Systems and methods for augmented reality
CN112711458B (zh) 虚拟场景中道具资源的展示方法及装置
CN112669194B (zh) 虚拟场景中的动画处理方法、装置、设备及存储介质
Glover et al. Complete Virtual Reality and Augmented Reality Development with Unity: Leverage the power of Unity and become a pro at creating mixed reality applications
Mack et al. Unreal Engine 4 virtual reality projects: build immersive, real-world VR applications using UE4, C++, and unreal blueprints
CN112843704B (zh) 动画模型处理方法、装置、设备及存储介质
Sankar Design Architecture in Virtual Reality
CN116385605A (zh) 目标对象的飞行动画生成方法、装置及电子设备
Keene Google Daydream VR Cookbook: Building Games and Apps with Google Daydream and Unity
CN114130006A (zh) 虚拟道具的控制方法、装置、设备、存储介质及程序产品
De Paolis et al. The simulation of a billiard game using a haptic interface
Anoffo et al. Virtual reality experience for interior design engineering applications
Belmonte et al. Federate resource management in a distributed virtual environment
Garcia et al. Modifying a game interface to take advantage of advanced I/O devices
Yang et al. Design of Zoo 3D Roaming System Based on Unity3D Virtual Reality Technology
CN114219924B (zh) 虚拟场景的适配显示方法、装置、设备、介质及程序产品
Donga et al. SpaceX: The Unreal Reality
Valder Comparison between Vizard VR Toolkit and Unreal Engine 4 as platforms for virtual experiments in pedestrian dynamics using the Oculus Rift
BOLAJI INTERACTING WITH VIRTUAL REALITY MODELS ON MOBILE DEVICES
Ausland Anno Pipervika: A situated simulation
Aziz et al. Adapting computer game technology to support engineering laboratories

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40044187

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant