CN114283229A - 虚拟角色的行走动画生成方法、装置、设备及存储介质 - Google Patents

虚拟角色的行走动画生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114283229A
CN114283229A CN202111628788.7A CN202111628788A CN114283229A CN 114283229 A CN114283229 A CN 114283229A CN 202111628788 A CN202111628788 A CN 202111628788A CN 114283229 A CN114283229 A CN 114283229A
Authority
CN
China
Prior art keywords
leg
virtual character
foot
animation
point
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.)
Pending
Application number
CN202111628788.7A
Other languages
English (en)
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
Publication of CN114283229A publication Critical patent/CN114283229A/zh
Priority to PCT/CN2022/127073 priority Critical patent/WO2023088041A1/zh
Priority to US18/338,330 priority patent/US20230334744A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • 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/55Controlling game characters or game objects based on the game progress
    • A63F13/56Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
    • 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
    • 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/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition

Landscapes

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

Abstract

本申请公开了一种虚拟角色的行走动画生成方法、装置、设备及存储介质,属于动画制作领域。所述方法包括:根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿在所述行走过程中的落脚点;根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置;基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置;基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。

Description

虚拟角色的行走动画生成方法、装置、设备及存储介质
本申请要求于2021年11月19日提交的申请号为202111374361.9、发明名称为“虚拟角色的行走动画生成方法、装置、设备及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及动画制作领域,特别涉及一种虚拟角色的行走动画生成方法、装置、设备及存储介质。
背景技术
在写实对战风格的游戏中,经常会出现多足机甲类的虚拟角色。多足机甲的特点是极具重量感和压迫感,就像一座稳定推进不可阻挡的移动堡垒。
相关技术中使用动画混合技术来生成多足机甲的行走动画。对于多足机甲的每一个需要混合的骨骼,分别获取它在源动画姿态和目标动画姿态下的变换矩阵,以一个随着时间推移从0到1变化的权重值α,通过插值的方式将其混合得到一个新的变换矩阵。例如,多足机甲从行走姿态转变到站立姿态时,会在过渡期间内同时播放行走姿态和站立姿态的动画序列,并根据过渡的进程将播放权重α慢慢从行走姿态转移向站立姿态,从而达到平滑过渡的效果。
但由于虚拟角色的移动速度和移动方向是保持变化的,在某些情况下,比如多足机甲的支撑腿在两个动画序列中的位置相距比较远,用户就会很明显地看到这条支撑腿贴着地面“滑行”了一段距离,这种不会在现实世界中发生的违和现象即为“滑步”现象。
发明内容
本申请提供了一种虚拟角色的行走动画生成方法、装置、设备及存储介质,提供了一种程序化的行走动画生成方案。所述技术方案如下:
根据本申请的一方面,提供了一种虚拟角色的行走动画生成方法,所述虚拟角色的行走动画生成方法,所述虚拟角色的每条腿在行走过程中交替执行摆动阶段和支撑阶段,所述方法包括:
根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿在所述行走过程中的落脚点;
根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置;
基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置;
基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
根据本申请的另一方面,提供了一种虚拟角色的行走动画生成装置,所述虚拟角色的每条腿在行走过程中交替执行摆动阶段和支撑阶段,所述装置包括:
预测模块,用于根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿在所述行走过程中的落脚点;
计算模块,用于根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置;
IK模块,用于基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置;
融合模块,用于基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
根据本申请的一个方面,提供了一种计算机设备,所述计算机设备包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上所述的虚拟角色的行走动画生成方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序由处理器加载并执行以实现如上所述的虚拟角色的行走动画生成方法。
根据本申请的另一方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面提供的虚拟角色的行走动画生成方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过先根据虚拟角色的移动速度和移动方向进行各条腿的脚部运动计算,再进行各条腿的步态融合,能够基于程序化形式来生成虚拟角色的各条腿的行走动画。不论虚拟角色处于何种移动速度和移动方向,总是能适配生成相应的行走动画,不会出现传统的动画混合技术所导致的滑步问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一个实施例提供的计算机系统的结构框图;
图2示出了一个实施例提供的人形虚拟角色的行走运动的分析示意图;
图3示出了一个实施例提供的虚拟角色的行走动画生成方法的流程图;
图4示出了一个实施例提供的不同形态的机甲腿上的骨骼点示意图;
图5示出了一个实施例提供的不同腿在步态融合时的步态进度示意图;
图6示出了一个实施例提供的虚拟角色的行走动画生成方法的示意图;
图7示出了另一个实施例提供的落脚点的预测原理图;
图8示出了一个实施例提供的步态参数的数据结构图;
图9示出了一个实施例提供的虚拟角色的行走动画生成方法的示意图;
图10示出了一个实施例提供的将不同步态参数混合为过渡动画的示意图;
图11示出了一个实施例提供的虚拟角色的行走动画生成方法的示意图;
图12示出了一个实施例提供的具有摆动优化的摆腿曲线的示意图;
图13示出了一个实施例提供的在遇到小型障碍物时的摆腿曲线的示意图;
图14示出了一个实施例提供的虚拟角色的行走动画生成方法的示意图;
图15示出了一个实施例提供的虚拟角色的行走动画生成方法的示意图;
图16示出了一个实施例提供的虚拟角色的骨骼在惯性振动时的振动模型图;
图17示出了一个实施例提供的多级骨骼节点依次振动的振动示意图;
图18示出了一个实施例提供的虚拟角色遇到非平整地面时的落脚点修正图;
图19示出了一个实施例提供的虚拟角色在遇到非平整地面时的身体修正图;
图20示出了一个实施例提供的虚拟角色在遇到非平整地面时的脚部修正图;
图21示出了另一个实施例提供的虚拟角色在遇到凸起地面时的身体调整图;
图22示出了一个实施例提供的虚拟角色的行走动画生成装置的结构框图;
图23示出了一个实施例提供的计算机设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应当理解的是,在本文中提及的“若干个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
首先,对本申请实施例中涉及的名词进行简单介绍:
虚拟环境:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境。虚拟环境可以是二维虚拟环境、2.5维虚拟环境和三维虚拟环境中的任意一种,本申请对此不加以限定。下述实施例以虚拟环境是三维虚拟环境来举例说明。
可选的,该虚拟环境可以提供虚拟角色的对战环境。示例性的,在大逃杀类型游戏中,至少一个虚拟角色在虚拟环境中进行单局对战,虚拟角色通过躲避敌方单位发起的攻击和虚拟环境中存在的危险(比如,毒气圈、沼泽地等)来达到在虚拟环境中存活的目的,当虚拟角色在虚拟环境中的生命值为零时,虚拟角色在虚拟环境中的生命结束,最后顺利通过关卡内的路线的虚拟角色是获胜方。每一个客户端可以控制虚拟环境中的一个或多个虚拟角色。
虚拟角色:是指虚拟环境中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物、虚拟机甲等,比如:在三维虚拟环境中显示的人物、动物、机甲。可选地,虚拟角色是基于动画骨骼技术创建的三维立体模型。每个虚拟角色在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。在一些实施例中,虚拟角色是腿数量为2的人形虚拟角色。在另一些实施例中,虚拟角色可以是腿数量大于2的多足虚拟角色,比如多足虚拟机甲。
图1示出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统100包括:第一终端120、服务器140、第二终端160和第三终端180。
第一终端120安装和运行有支持虚拟环境的应用程序。该应用程序可以是三维地图程序、横版射击、横版冒险、横版过关、横版策略、虚拟现实(Virtual Reality,VR)应用程序、增强现实(Augmented Reality,AR)程序中的任意一种。第一终端120是第一用户使用的终端,第一用户使用第一终端120控制位于虚拟环境中的第一虚拟角色进行活动,该活动包括但不限于:调整身体姿态、行走、奔跑、跳跃、骑行、驾驶、瞄准、拾取、使用投掷类道具、攻击其他虚拟角色中的至少一种。示例性的,第一虚拟角色是第一虚拟人物,比如仿真人物对象或动漫人物对象。示例性的,第一用户通过虚拟环境画面上的UI控件来控制第一虚拟角色进行活动。
第一终端120通过无线网络或有线网络与服务器140相连。
服务器140包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。示例性的,服务器140包括处理器144和存储器142,存储器142又包括接收模块1421、控制模块1422和发送模块1423,接收模块1421用于接收客户端发送的请求,如侦查敌方虚拟角色的位置请求;控制模块1422用于控制虚拟环境画面的渲染;发送模块1423用于向客户端发送响应,如向客户端发送第三虚拟角色的位置。服务器140用于为支持三维虚拟环境的应用程序提供后台服务。可选地,服务器140承担主要计算工作,第一终端120、第二终端160和第三终端180承担次要计算工作;或者,服务器140承担次要计算工作,第一终端120、第二终端160和第三终端180承担主要计算工作;或者,服务器140、第一终端120、第二终端160和第三终端180四者之间采用分布式计算架构进行协同计算。
第二终端160安装和运行有支持虚拟环境的应用程序。第二终端160是第二用户使用的终端,第二用户使用第二终端160控制位于虚拟环境中的第二虚拟角色进行活动。第三终端180安装和运行有支持虚拟环境的应用程序。第三终端180是第三用户使用的终端,第三用户使用第三终端180控制位于虚拟环境中的第三虚拟角色进行活动。
可选地,第一虚拟角色、第二虚拟角色和第三虚拟角色处于同一虚拟环境中。第一虚拟角色和第二虚拟角色属于不同阵营,第二虚拟角色和第三虚拟角色属于同一阵营。
可选地,第一终端120、第二终端160和第三终端180上安装的应用程序是相同的,或三个终端上安装的应用程序是不同操作系统平台(安卓或IOS)上的同一类型应用程序。第一终端120可以泛指多个终端中的一个,第二终端160可以泛指多个终端中的一个,第三终端180可以泛指多个终端中的一个,本实施例仅以第一终端120、第二终端160和第三终端180来举例说明。第一终端120、第二终端160和第三终端180的设备类型相同或不同,该设备类型包括:智能手机、智能手表、智能电视、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机中的至少一种。以下实施例以终端包括智能手机来举例说明。
本领域技术人员可以知晓,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
行走动画是用于模拟使用虚拟角色的n条腿进行行走运动的动画,n为大于1的整数。简单来讲,行走运动就是每条腿交替运动的不断循环,图2示出了人形的虚拟角色在步行循环时的示意图。腿的运动会分为支撑阶段(stance phase)和摆动阶段(swing phase)。在支撑阶段,脚部会贴合地面,借助与地面之间的静摩擦力来推动身体前进;而在摆动阶段,脚部会迈向身体将要前进的方向,寻找合适的落脚点为下一次支撑做准备。在一个行走循环中,每一条腿都会经历一次这两个阶段,并且为了保持身体的平衡,各条腿的支撑阶段会相互错开,本申请将这种各条腿之间的协作称为步态(gait),而完成这个循环所需要的时间,就是步态周期。
本申请提出了一种采用程序化生成虚拟角色的行走动画的技术方案,能够在虚拟角色的不同运动状态下,采用程序化生成与当前运动状态所适配的行走动画,以消除传统动画制作方式中出现的“滑步”问题。
图3示出了本申请一个示意性实施例示出的虚拟角色的行走动画生成方法的流程图。本实施例以该方法由终端执行来举例说明。该方法包括:
步骤302:根据虚拟角色的移动速度和移动方向,预测虚拟角色的每条腿的落脚点;
在不同的运动状态下,虚拟角色的移动速度不同。运动状态包括:行走、跑动、匍匐前进等情况中的至少一种。虚拟角色的移动方向可以由用户(玩家)手动控制。在不同的移动速度和移动方向的情况下,虚拟角色的行走动画也是存在差异的。
现实生活中的人类在行走时,是通过双脚蹬踩地面来推动身体的前进,也即“行走”导致“移动”。而在虚拟世界中恰好相反,虚拟角色的移动通常是由移动系统来直接控制,为了让虚拟角色看起来是在“行走”而非“滑行”,才为虚拟角色加入了行走动画,也即“移动”导致“行走”。在制作行走动画时,通常都会基于虚拟角色在游戏中的移动速度来量身打造,这样才能让虚拟角色的行走动画有“脚踏实地”的感觉。“脚步”匹配“移动”是运动动画的基础目标。
由于脚在支撑阶段的位置是不会发生变化的,因此对脚步运动的计算就主要集中在摆动阶段。摆动阶段本质上就是脚从抬脚点到落脚点的运动过程,只要能知道抬脚点和落脚点的位置,就可以通过插值的方式来不断更新脚部在摆动过程中的位置。
终端根据虚拟角色的移动速度和移动方向,预测虚拟角色的每条腿的多个落脚点或落脚点序列。针对相邻的2个落脚点,在前的落脚点是下一个落脚点对应的抬脚点。
假设虚拟角色有n条腿,n为大于1的整数,则分别预测虚拟角色的每条腿的落脚点序列。其中,至少两条腿的摆动阶段是交替出现的。比如,人形的虚拟角色的2条腿的摆动阶段是交替出现的;又比如,具有8条腿的螃蟹机甲中,奇数腿和偶数腿的摆动阶段是交替出现的。
步骤304:根据每条腿的相邻两个落脚点计算每条腿的脚部在摆动阶段中的位置;
针对一次摆动阶段,在每条腿的相邻两个落脚点确定的情况下,脚部的抬脚点和落脚点已被确定。在摆动阶段的抬脚点和落脚点已知的情况下,基于摆腿曲线能够计算到每条腿的脚部在摆动阶段中的位置。
步骤306:基于每条腿的脚部在摆动阶段中的位置进行反向动力学计算,得到每条腿的骨骼点在摆动阶段的位置;
在虚拟角色的每条腿上存在多个骨骼点。骨骼点通常位于腿部骨骼的关节处,如图4所示,在各种各样的腿部结构中,每条腿可以有3-4个骨骼点。其中,靠近躯干的腿部骨骼为父骨骼,靠近脚部的腿部骨骼为子骨骼。
在正向动力学(Forward Kinematics,FK)中,由父骨骼的方位和子骨骼的相对变换得到子骨骼的方位,也即先确定大腿的位置,再基于大腿的运动确定小腿和脚部的位置。而在反向动力学(Inverse Kinematics,IK)中,则是先确定子骨骼的方位,反向推导出其继承链上n级父骨骼的方位,也即先确定出脚部的位置,再反向推导出小腿和大腿的位置。
步骤308:基于每条腿的骨骼点在摆动阶段的位置进行步态融合,生成虚拟角色的行走动画。
在虚拟角色的n条腿中存在至少两条腿的摆动阶段是交替出现的。设步态周期=摆动阶段的时长+支撑阶段的时长,由于各条腿的步态进度可能不同,因此各个腿的步态进度可能不同。
在计算得到每条腿的骨骼点在摆动阶段的位置后,需要通过步态管理将各条腿的步态进度进行步态融合,使得虚拟角色能够合理调用各条腿进行行走运动。如图5所示,将4条腿的步态循环看做是一条环形的进度条,他们会各自在进度条上安排支撑阶段和摆动阶段所占的段落,而整个步态进度就像一根指针,该指针以统一的角速度来推进各条腿的步态进度的更新。
示意性的,图5所示的步态管理过程可采用一组步态参数来表示,步态参数包括:步态周期、每一条腿的起步时间点、摆动周期、步伐中点、摆动高度中的至少一种。其中,步态参数中的每个参数均可以自定义设置或自定义调节,以使得虚拟角色的行动动画符合设计预期。
基于步态管理对每条腿的骨骼点在摆动阶段的位置进行程序化融合,生成n条腿的行走动画。
综上所述,本实施例提供的方法,通过先根据虚拟角色的移动速度和移动方向进行各条腿的脚部运动计算,再进行各条腿的步态融合,能够基于程序化形式来生成n条腿的行走动画。不论虚拟角色处于何种移动速度和移动方向,总是能适配生成相应的行走动画,不会出现传统的动画混合所导致的滑步问题。
图6示出了本申请一个示意性实施例示出的虚拟角色的行走动画生成方法的流程图。本实施例以该方法由终端执行来举例说明。该方法包括:
步骤602:根据虚拟角色的移动速度和移动方向,预测虚拟角色在地图中的预测移动轨迹;
当虚拟角色处于稳定的步态中时,步态周期就等于任意一条腿的支撑阶段和摆动阶段的时长之和,而支撑阶段和摆动阶段在整个步态周期中所占的时间比例,也是一个常量值k。其中,k可以根据需要自行配置。
T支撑=T·k
T摆动=T·(1-k)
其中,T支撑是一个步态周期中支撑阶段的时长,T摆动是一个步态周期中摆动阶段的时长。而虚拟角色在一个步态循环的起点和终点所呈现的姿势应该是相同的,因此脚部的位移S摆动就等同于虚拟角色本身的位移S身体,由于在支撑阶段中脚部的绝对位置并不发生改变,因此脚部的所有位移都是在摆动阶段所产生的。
S支撑=0
S摆动=S身体
由于摆动阶段的本质就是脚部从抬脚点到落脚点的运动过程,只要能知道抬脚点和落脚点的位置,就可以通过插值的方式(按照每帧的帧间隔时长来周期性插值)来不断更新脚在摆动过程中的位置。抬脚点是已知的,接下来的主要问题就是如何来预测落脚点的位置。
对于虚拟角色的位移,可以直接通过虚拟角色的移动速度进行估算,也可以利用客户端(比如游戏)本身提供的移动系统(如虚幻引擎4中的Movement Component)来进行更精确预测。示意性的,以微小的时间步长(如0.2秒)将虚拟角色以当前的移动速度和移动方向进行数次模拟移动,从而得到一条预测移动轨迹Traj,示意性的,该预测移动轨迹上的多个采样点如图7中的P0-P8
Traj={P0,P1,P2…Pn}
其中,n为整数。Pi为预测移动轨迹上的第i个采样点。两个相邻的采样点之间的时间步长为预设值。
步骤604:以虚拟角色的每条腿的当前姿态为预测起点,在预测移动轨迹上采样出每条腿的落脚点;
结合参考图7,假设虚拟角色包括n条腿,步态周期等于摆动阶段的时长T摆动和支撑阶段的时长T支撑。本步骤可以包括如下子步骤:
1.在虚拟角色的第i条腿的当前姿态为摆动阶段的第t秒状态的情况下,计算摆动阶段的剩余时长和半个支撑阶段的时长之和为预测时长。
其中,摆动阶段的剩余时长为(T摆动-t),半个支撑阶段的时长为1/2*T支撑,则预测时长t′=(T摆动-t)+1/2*T支撑
2.以虚拟角色的当前姿态在预测移动轨迹上的位置为起点,将沿预测移动轨迹上前进预测长度的位置,确定为虚拟角色在落脚时的身体位置,预测长度等于预测时长和移动速度的乘积。
Figure BDA0003440585000000101
P步伐中点=Traj(t′)
F落脚点=P步伐中点+Flocal
3.基于虚拟角色在落脚时的身体位置以及相对位置关系Flocal,推算出虚拟角色的第i条腿在预测移动轨迹上的落脚点。
其中,i为不大于n的正整数,相对位置关系是预配置的虚拟角色的身体与第i条腿之间的相对位置。在上述公式中,P代表躯干的位置,F代表脚部的位置。
也即,假设针对虚拟角色的第i条腿处于摆动阶段开始后的第t秒,如果将剩余的摆动时长(T摆动-t)传入预测移动轨迹进行采样,即可得到在第i条腿的脚部在落地时,虚拟角色所在的位置及朝向信息。只要能知道在脚部落地时,虚拟角色的脚部和本体的相对位置,就可以推算出落脚点。但本实施例并没有掌握此时的相对位置,但有一个类似的信息是可以得知的,就是这条腿的步伐中点P步伐中点。所谓步伐中点,就是指起脚点和落脚点连线的中点,当以虚拟角色本体为参考系时,可以看到整个步态循环就是脚部围绕这个步伐中点进行前后运动的循环。从动画层面看,步伐中点与本体的相对位置会直接影响虚拟角色在行走时的姿态表现,因此本实施例也将步伐中点与本体的相对位置作为一个配置参数Flocal,由动画师预先配置或调整。
因此,本实施例可以将落脚点的采样时间点再往后推半个支撑阶段的时长,在这个推迟后的采样时间点上,脚部正好处于步伐中点的位置上,本实施例采样得到此时的本体信息后就可以推算出脚部的位置。由于整个支撑阶段的脚部的绝对位置都不会发生变化,此时计算得到的脚部位置即为想要预测的落脚点。
步骤606:基于相邻两个落脚点的位置确定摆腿曲线;
摆腿曲线用于指示脚部在摆动阶段的摆动轨迹。在通常情况下,摆腿曲线采用抛物线70来表示,如图7所示。抛物线的两个端点分别为抬脚点和落脚点,抛物线高度h也即脚部在摆动阶段的最高摆动高度,该最高摆动高度也可以由动画师预先配置或调节。
步骤608:基于摆腿曲线对每条腿的脚部进行插值计算,计算得到每条腿的脚部在摆动阶段的位置;
Figure BDA0003440585000000111
其中,Ft是每条腿的脚部在摆动阶段的第t秒时的位于摆腿曲线上的位置。示意性的,时间t的步长可以按照显示帧的帧间隔来确定,比如每秒60帧,则t的步长为1/60秒。
步骤610:基于每条腿的脚部在摆动阶段中的位置进行反向动力学计算,得到每条腿的骨骼点在摆动阶段的位置;
在虚拟角色为多足机甲的情况下,可能为多足机甲设计各种各样的腿部结构,常用于人类角色的两步反向动力学(Inverse Kinematics,IK)并不适合,这里比较推荐循环坐标下降反向动力学(Cyclic Coordinate Decent Inverse Kinematics,CCDIK)或前向和后向到达反向动力学(Forward and Backward Reaching Inverse Kinematics,FABRIK)算法。也即,根据每条腿的脚部在摆动阶段中的位置进行CCDIK计算,得到每条腿的骨骼点在摆动阶段的位置;或,根据每条腿的脚部在摆动阶段中的位置进行FABRIK计算,得到每条腿的骨骼点在摆动阶段的位置。它们都具备以下的优点:
·支持任意多的关节,为腿部结构设计提供了较大的发挥空间。
·支持关节旋转的角度限制,可以实现机甲特定的机械关节结构。
·性能较好,可以满足游戏实时运算的需要。
经过实验对比,在虚拟角色为多足机甲的情况下,FABRIK在仿蹄形的腿部结构上表现会优于CCDIK。
步骤612:获取预配置的步态参数;
步态参数为步态融合中使用的一组参数。针对同一个虚拟角色,步态参数为一组或多组。
示意性的,不同组的步态参数对应不同的运动状态,比如潜行状态对应第一组步态参数,步行状态对应第二组步态参数,奔跑状态对应第三组步态参数。
示意性的,不同组的步态参数对应不同的移动方向,比如向北移动对应第一组步态参数,向南移动对应第二组步态参数,向东移动对应第三组步态参数,向西移动对应第四组步态参数。
本实施例中,步态参数为一组来举例说明。步态参数包括:步态周期和脚部参数列表。可选地,脚部参数列表包括:摆动开始、摆动周期、摆动高度和步伐中点中的至少一种。其中,摆动开始是摆动阶段的起步时间点,也即抬脚时间;摆动周期是一次摆动阶段的时长;摆动高度是指脚部在单次摆动阶段时的摆动最高高度;步伐中点是指一次支撑阶段中的中点位置。
步骤614:基于步态参数对每条腿的骨骼点在摆动阶段的位置进行步态融合,生成虚拟角色的行走动画。
在虚拟角色的n条腿中存在至少两条腿的摆动阶段是交替出现的。设步态周期=摆动阶段的时长+支撑阶段的时长,由于各条腿的步态进度可能不同,因此各个腿的步态进度可能不同。
在计算得到每条腿的骨骼点在摆动阶段的位置后,需要通过步态管理将各条腿的步态进度进行步态融合,使得虚拟角色能够合理调用各条腿进行行走运动。如图5所示,将4条腿的步态循环看做是一条环形的进度条,他们会各自在进度条上安排支撑阶段和摆动阶段所占的段落,而整个步态进度就像一根指针,该指针以统一的角速度来推进各条腿的步态进度的更新。
示意性的,图5所示的步态管理过程可采用一组步态参数来表示,步态参数包括:步态周期(的总时长)、每一条腿的起步时间点、摆动周期、步伐中点、摆动高度中的至少一种。其中,步态参数中的每个参数均可以自定义设置或自定义调节,以使得虚拟角色的行动动画符合设计预期。
示意性的,步态参数包括:步态周期的总时长和每条腿在步态周期内的腿部参数;在步态周期的总时长内,按照每条腿在步态周期内的腿部参数对每条腿的骨骼点在摆动阶段的位置进行步态融合,生成虚拟角色的各条腿的行走动画。
终端显示虚拟角色的各条腿的行走动画。示意性的,上述计算过程可以按照逐帧实时计算,也可以预先计算好多帧的计算结果进行缓存,按照缓存的计算结果进行显示。本实施例对此不加以限定。
综上所述,本实施例提供的方法,通过先根据虚拟角色的移动速度和移动方向进行各条腿的脚部运动计算,再进行各条腿的步态融合,能够基于程序化形式来生成n条腿的行走动画。不论虚拟角色处于何种移动速度和移动方向,总是能适配生成相应的行走动画,不会出现传统的动画混合所导致的滑步问题。
由于不同组的步态参数对应不同的运动状态,比如潜行状态对应第一组步态参数,步行状态对应第二组步态参数,奔跑状态对应第三组步态参数。在一些实施例中,步态参数包括在第一运动形态下的第一步态参数(组)和在第二运动形态下的第二步态参数(组)。如图9所述,上述方法还包括:
步骤616:将第一步态参数和第二步态参数进行插值,得到第一混合步态参数;
假设从第一运动形态切换至第二运动形态的过渡动画的时长为n秒,每秒的帧数为m帧,则可以将第一步态参数A和第二步态参数B进行n*m次插值,得到与每帧对应的第一混合步态参数。
如图10所示,在第i次插值时,第一混合步态参数=(1-α)*第一步态参数A+α*第二步态参数B,α的取值范围为0到1。α分为n*m次,逐渐从0增加到1。也即,第一混合步态参数包括n*m组步态参数,展示了从第一运动形态切换至第二运动形态的渐变过程。
步骤618:基于第一混合步态参数对每条腿的骨骼点在摆动阶段的位置进行步态融合,生成虚拟角色从第一运动形态切换至第二运动形态的过渡动画。
在过渡动画之前,终端显示第一运动形态下的第一行走动画,该第一行走动画是基于第一步态参数(组)生成的;在过渡动画之后,终端显示第二运动形态下的第二行走动画,该第二行走动画是基于第二步态参数(组)生成的。
综上所述,本实施例提供的方法,通过不同组的步态参数之间的一维维度融合,实现了不同运动状态之间的平滑过渡效果,使得终端所显示的虚拟角色在不同运动状态切换时,呈现较为流畅和顺滑的动作变化。
由于不同组的步态参数对应不同的移动方向,比如向北移动对应第一组步态参数,向南移动对应第二组步态参数,向东移动对应第三组步态参数,向西移动对应第四组步态参数。在一些实施例中,步态参数包括在第一移动方向下的第三步态参数(组)和在第二移动方向下的第四步态参数(组);如图11所示,所述方法还包括:
步骤620:将第三步态参数和第四步态参数进行插值,得到第二混合步态参数;
假设从第一运动形态切换至第二运动形态的过渡动画的时长为n秒,每秒的帧数为m帧,则可以将第三步态参数C和第四步态参数D进行二维插值,得到与第三移动方向对应的第二混合步态参数。
其中,第三移动方向是位于第一移动方向和第二移动方向之间的移动方向。
示意性的,设虚拟角色在原地不同时的步态参数为第五步态参数O。第二混合步态参数的计算过程如下:
α=第一移动方向的当前速度/第一移动方向的最大速度;
β=第二移动方向的当前速度/第二移动方向的最大速度;
第一中间步态参数C'=(1-α)*O+α*C;
第二中间步态参数D'=(1-β)*O+β*D;
设γ=β/(α+β),最后得到:
第二混合步态参数=(1-γ)*C'+γ*D'。
也即,第一权重α等于第一移动方向的当前速度除以第一移动方向的最大速度,第二权重β/等于第二移动方向的当前速度除以第二移动方向的最大速度。采用第一权重对第三步态参数和第五步态参数进行融合,得到第一中间步态参数;采用第二权重对第四步态参数和第五步态参数进行融合,得到第二中间步态参数。计算第三权重为β/(α+β);采用第三权重对第一中间步态参数和第二中间步态参数进行混合,得到第二混合步态参数。
步骤622:基于第二混合步态参数对每条腿的骨骼点在摆动阶段的位置进行步态融合,生成n条腿在第三移动方向的行走动画。
在过渡动画之前,终端显示第一移动方向下的行走动画,该第一移动方向下的行走动画是基于第三步态参数(组)生成的;在过渡动画之后,终端显示第二移动方向下的行走动画,该第二移动方向下的行走动画是基于第四步态参数(组)生成的。
综上所述,本实施例提供的方法,通过不同组的步态参数之间的二维维度融合,实现了不同运动状态之间的平滑过渡效果,使得终端所显示的虚拟角色在不同运动状态切换时,呈现较为流畅和顺滑的动作变化。
也即,除了图9所示的这种一维的混合,也可以像动画一样提升混合的维度。例如虚拟角色在不同方向上的移动——前进、平移、后退动作,通常游戏会采用不同的动画表现,动画师会制作4或8个方向的移动动画序列,通过动画混合空间进行二维动画混合。步态混合也可以遵循同样的原理,动画师为各个移动方向配置对应的步态参数集。在客户端的运行过程中,终端会根据虚拟角色的移动方向及速度,对步态参数进行二维维度的混合。
由于直接使用抛物线作为摆腿曲线得到的表现较为呆板。为了解决这个问题,在一些实施例中,对插值的过程进行了改进,对于插值的α系数引入了一条基于时间的曲线进行控制。比如在水平方向上,可以用一条先加速再减速的曲线来确定插值的α系数,如图12的左图(1),也即在摆腿阶段的第t秒,确定脚部在水平方向上的位置为:F抬脚点+α*(F落脚点-F抬脚点);而在垂直方向上的摆动高度,可以在落地前增加一段重新抬升的曲线再迅速落下,如图12的右图(2),也即在摆腿阶段的第t秒,确定脚部在垂直方向上的位置为与时刻t对应的h。这些的变化综合起来会使整个摆腿动作显得更有力量感。
在另一些实施例中,本实施例可以在动画师制作的行走动画中,对脚部骨骼的运动数据进行记录,以生成对应的摆腿曲线。也可以让动画师来直接手动编辑这条摆腿曲线,一些游戏引擎中提供了曲线编辑器,动画师可以很方便地在上面进行操作。
在另一些实施例中,身形庞大的机甲在行进时,会迈过那些比较矮小的障碍物,为了避免摆腿路线中所产生的三维模型穿插,根据障碍物对摆腿曲线也要做一个偏移。在虚拟角色的身体下方存在障碍物的情况下,基于相邻两个落脚点的位置和障碍物的最高点确定样条曲线;将样条曲线与摆腿曲线进行叠加,得到更新后的摆腿曲线。样条曲线是经过一系列给定点的光滑曲线,给定点即为相邻两个落脚点和障碍物的最高点,示意性的,如图13所示,以摆腿距离作为长度,脚部宽度作为半径来构造一个水平方向的胶囊体1320,将这个胶囊体1320从上往下做一次碰撞检测,获得地面上所有的碰撞凸点。因为只需要考虑那些会阻挡摆腿曲线的凸点,所有高度低于摆腿曲线的凸点可以先过滤掉,利用剩下的凸点生成一条样条曲线,并与原本的摆腿曲线进行叠加,就可以得到一条新的路线,让虚拟机甲可以迈过这些障碍物。
上述实施例说明了由纯程序化的方式来生成虚拟角色的行走动画,通过这种方法可以得到基本正确的表现效果。但作为一个优质的游戏而言,仅仅正确是远远不够的。一个虚拟角色的举手投足,都是表现这个虚拟角色的个性特征的载体。以本申请实施例提及的大型多组机甲为例,它是笨重的、还是灵活的,正是要通过它的行走动作来表现出来的。因此在接下来的内容中,本申请实施例主要考虑的事情就是如何让角色的动画显得更加生动。在一些实施例中,如图14所示,上述方法还包括:
步骤624:获取虚拟角色的躯干动画;
如果不考虑“滑步”的问题,预制作的动画序列无疑是最佳的表现手段,动画师可以通过3ds Max或Maya等动画制作工具,将他们所有的想法都表达出来。虽然上述实施例是通过程序化的方式来生成动画序列,但如果能把动画序列结合进来,无疑会对最终的表现效果有巨大提升。
因此,动画师仍然会照常地为虚拟角色制作某一运动形态下的运动动画,该运动动画包括:对应身体部分的躯干动画和对应腿部的行走动画。本实施例中,将动画师制作的运动动画中的行走动画进行移除,剩余得到的动画部分即为虚拟角色的躯干动画。
步骤626:将虚拟角色的躯干动画与每条腿的行走动画进行融合,得到虚拟角色的整体移动动画。
然后,将动画师制作的躯干动画与程序计算的行走动画进行融合。大部分游戏引擎都提供了相应的动画工具链。以虚幻引擎4为例,可以在动画蓝图中,在躯干动画的基础上,传入计算好的行走动画,最后输出虚拟角色的整体移动动画。
躯干动画需要与行走动画的步态周期保持同步。由于游戏中的步态周期可能动态发生变化,本实施例会实时地将躯干动画进行缩放,确保躯干动画的长度与步态周期保持一致,并直接将步态进度作为躯干动画的播放进度。
示意性的,将虚拟角色的躯干动画的动画时长按照步态周期进行缩放,得到缩放后的躯干动画。其中,缩放后的躯干动画的动画时长等于步态周期的时长。将缩放后的躯干动画与每条腿的行走动画进行融合,得到虚拟角色的整体移动动画。
综上所述,本实施例提供的方法,通过将虚拟角色的躯干动画与每条腿的行走动画进行融合,能够使得虚拟角色的躯干和腿部均有与行走过程适配的动画效果,整体的运动视觉表现更为生动和逼真。
除了尽可能地还原动画序列的效果,还可以为虚拟角色添加一些体现惯性的物理模拟来进一步增加表现的真实感,比如虚拟角色在启停或转向的过程中,身体上的一些部位(比如触角、线缆、武器、挂件等)会随着速度变化的方向产生惯性摆动。在一些实施例中,如图15所示,上述方法还包括:
步骤628:在虚拟角色的身体上存在弹性部件的情况下,确定弹性部件在虚拟角色的骨骼树中对应的至少两级骨骼节点;
虚拟角色的骨骼树是基于虚拟角色中的各个骨骼的重要性所建立的树。在一个示例中,在至少两级骨骼节点中,靠近身体中心的骨骼节点的层级高于靠近身体末端的骨骼节点的层级。
步骤630:从至少两级的骨骼节点中的根节点开始,以上一级骨骼节点为原点、下一级骨骼节点为振子进行三维振动模型的振动计算,确定下一级骨骼节点的骨骼更新位置,直至更新得到弹性部件的骨骼更新位置。
对于某一根骨骼而言,在受到惯性影响时,会绕着父骨骼朝惯性方向转动,于此同时它会受到一个回归力把它拉回原本的朝向。如图16的左图所示。
在这个振动模型中,将正上方视为最终所要到达的稳定朝向。当前骨骼与父骨骼之间的距离固定为L,当前骨骼在水平方向上的投影视为振子,当前骨骼围绕父骨骼摆动的过程就是它投影所对应的振子进行振动的过程。设定振子本身的质量为m,振动系统的劲度系数为k,阻尼系数为c。假设振子当前的位置为x,根据牛顿第二定律,得到此时的力平衡方程为:
Figure BDA0003440585000000171
其中,
Figure BDA0003440585000000172
代表振子的当前速度,
Figure BDA0003440585000000173
代表振子的加速度。然后定义参量ω0为系统的固有频率,ζ为阻尼比,满足方程:
Figure BDA0003440585000000181
代入前面的方程,得到公式(1):
Figure BDA0003440585000000182
振子会来回摆动,且振幅越来越小,最后无限趋近于平衡。设定初始振幅为
Figure BDA0003440585000000183
随着时间推移,振幅A(t)满足方程:
Figure BDA0003440585000000184
变化后得到:
Figure BDA0003440585000000185
设定
Figure BDA0003440585000000186
来表示振幅在t时刻相对于初始振幅的比例,可以界定当这个比例缩小到一定程度时,振子进入稳定状态,而此刻的时间点记为ts,得到公式(2):
Figure BDA0003440585000000187
振子进入稳定状态所需的时间ts以及阻尼比ζ是能比较直观理解的参数,将它们作为配置参数来让动画师控制系统的表现效果。固有频率ω0可以通过上面的公式来求得。将ζ和ω0代入公式(1)后得到位置、速度与加速度之间的关系,再以固定的时间步长Δt通过粒子运动模拟(Verlet)方法对振动过程进行积分,来更新振子的位置:
Figure BDA0003440585000000188
Figure BDA0003440585000000189
到这里完成了振动模型的计算,接下来要将这个振动模型三维化。对于三维空间中的骨骼,将它在X轴与Y轴上的投影都作为振子,各自沿其所在轴向进行振动,如图16的右图所示。
分别在X轴与Y轴上完成振动计算得到x(t+Δt)与y(t+Δt),在XY平面上所构成的向量VXY=[x(t+Δt),y(t+Δt),0],其长度记为LXY=|VXY|,由此可以得到骨骼所在的位置向量V为:
Figure BDA00034405850000001810
完成上述计算步骤后,便得到了一个三维的振动模型,最后将这一模型应用于角色骨架上。对于每一对父子骨骼,都可以视作一个以父骨骼为原点、子骨骼为振子的三维振动模型。在骨架中选择需要受惯性影响的骨骼树后,从根节点开始,逐级向叶子节点进行计算,这样被作为振子的骨骼更新位置后又成为下一级骨骼的振动原点,从而对下一级骨骼的振动计算产生连带影响,形成逐级递进的惯性效果,如图17所示。
采用这种简化后的振动模型能够在较少的计算量的情况下,在用户视觉上获得较为逼真的惯性振动表现。
上述实施例都是基于平地的行走运动表现,而虚拟世界中会有各种蜿蜒起伏的地形,接下来就要考虑地形对行走运动的影响。
非平地的落脚点修正
如图18所示,首先来让脚部的落角点能正确地落在凹凸不平的地表上。从之前所计算的平地的落脚点F`落脚点出发,在垂直方向上找到一个贴地点G,将贴地点G与抬脚点F进行连线。假设平地上所选的落脚点应该是摆腿所能到达的最大距离,简称摆腿距离。因此还要用这个摆腿距离在新的连线上截取一个参考点,然后重新对参考点做一次贴地,得到新的落脚点F落脚点。也即,在落脚点F`落脚点所在的地面为非平整地面的情况下,计算落脚点F`落脚点在非平整地面上沿垂直方向的第一投影点G;在落脚点F`落脚点和第一投影点G的连线上,基于摆腿距离截取出参考点;将参考点在非平整地面上沿垂直方向的第二投影点,作为更新后的落脚点F落脚点。采用这种落脚点修正技术,能够使得脚部的落角点能正确地落在凹凸不平的地表上。
另外,如图19所示,还需要根据当前落脚点的地面的法线方向,对脚部做一个旋转。由于脚部是有一定厚度的,要连带拉动脚部骨骼F的位置偏移,在将落脚点位置作用于动画时,不能遗漏这一段偏移。也即,根据更新后的落脚点(即当前落脚点)所在的地面的法线方向,对脚部在落脚时的姿态进行偏转,使得脚部的脚掌平面与当前落脚点的地面的法线方向垂直。
对于腿比较多的虚拟角色,每条腿对躯干的支撑点(即腿根部)之间有一定距离,就需要考虑各条腿站在不同高度时所带动的身体倾斜。终端计算虚拟角色的各条腿的支撑向量,支撑向量用于指示当前腿的落脚点相对于虚拟角色的躯干的倾斜度;基于各条腿的支撑向量,计算虚拟角色的躯干的姿态角;基于姿态角对虚拟角色的躯干进行倾斜补偿。其中,姿态角包括偏航角yaw、俯仰角pitch和横滚角roll。
图20中展示了虚拟角色以倾斜姿态站立时的矢面视角,从虚拟角色本体所在的地面位置O点出发,向脚部所在的位置F做连接,获得
Figure BDA0003440585000000201
所在的平面后,再从躯干的支撑点H引一条垂线与平面相交得到交点N,
Figure BDA0003440585000000202
即为这条腿相对躯干的支撑向量。
对虚拟角色的每一条腿都进行同样的计算,将所得到的所有腿的支撑向量分别进行前后和左右的分组,根据所有前腿和所有后腿的支撑向量计算躯干的姿态角Pitch,根据所有左腿和右腿的支撑向量计算躯干的姿态角Roll。
有时候会出现图21中这种凸面地形,虚拟角色站在顶上的时候,为了保持脚能着地,会形成一个身体拱起的姿势,好像被看不见的东西顶起来一样。因此还需要对躯干的高度进行修正,获取当前状态下每只脚F与虚拟角色的身体位置O的高度差进行平均,就可以得到躯干高度的修正值,然后将这个值作用于虚拟角色的身体骨骼将躯干修正到合理高度,比如升高高度差
Figure BDA0003440585000000203
也即,在虚拟角色处于凸型地面上方的情况下,计算虚拟角色的各条腿的落脚点与所述凸型地面的顶点之间的平均高度差;按照平均高度差将虚拟角色的躯干的高度进行升高补偿。这样,虚拟角色站在凸面地形上的躯干高度更符合真实世界中的机甲表现。
图22示出了本申请一个示例性实施例提供的虚拟角色的行走动画生成装置的框图。该装置采用硬件或者软硬件的结合应用于终端中,所述虚拟角色的每条腿在行走过程中交替执行摆动阶段和支撑阶段,该装置包括:
预测模块220,用于根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿在所述行走过程中的落脚点;
计算模块222,用于根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置;
IK模块224,用于基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置;
融合模块226,用于基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
在本实施例的一个可选设计中,所述融合模块226,用于获取预配置的步态参数;基于所述步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
在本实施例的一个可选设计中,所述步态参数包括:步态周期和所述每条腿在所述步态周期内的腿部参数;所述融合模块226,用于在所述步态周期内,按照所述每条腿在所述步态周期内的腿部参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画;
其中,所述腿部参数包括抬脚时间点、所述摆动阶段的时长、所述支撑阶段的步伐中点中的至少一种。
在本实施例的一个可选设计中,所述步态参数包括在第一运动形态下的第一步态参数和在第二运动形态下的第二步态参数;
所述装置还包括:
过渡模块228,用于将所述第一步态参数和所述第二步态参数进行插值,得到第一混合步态参数;基于所述第一混合步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述n条腿从所述第一运动形态切换至所述第二运动形态的过渡动画。
在本实施例的一个可选设计中,所述步态参数包括在第一移动方向下的第三步态参数和在第二移动方向下的第四步态参数;
所述装置还包括:
过渡模块228,用于将所述第三步态参数和所述第四步态参数进行插值,得到第二混合步态参数;基于所述第二混合步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述n条腿在第三移动方向的行走动画;
其中,所述第三移动方向是位于所述第一移动方向和所述第二移动方向之间的移动方向。
在本实施例的一个可选设计中,所述根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿的落脚点,包括:
根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色在地图中的预测移动轨迹;
以所述虚拟角色的每条腿的当前姿态为预测起点,在所述预测移动轨迹上采样出所述每条腿的落脚点。
在本实施例的一个可选设计中,所述虚拟角色包括n条腿,所述以所述虚拟角色的每条腿的当前姿态为预测起点,在所述预测移动轨迹上采样出所述每条腿的落脚点,包括:
在所述虚拟角色的第i条腿的当前姿态为所述摆动阶段的第t秒状态的情况下,计算所述摆动阶段的剩余时长和半个所述支撑阶段的时长之和为预测时长;
以所述虚拟角色的当前姿态在所述预测移动轨迹上的位置为起点,将沿所述预测移动轨迹上前进所述预测长度的位置,确定为所述虚拟角色在落脚时的身体位置,所述预测长度等于所述预测时长和所述移动速度的乘积;
基于所述虚拟角色在落脚时的身体位置以及相对位置关系,推算出所述虚拟角色的第i条腿在所述预测移动轨迹上的落脚点;
其中,i为不大于n的正整数,所述相对位置关系是预配置的所述虚拟角色的身体与所述第i条腿之间的相对位置。
在本实施例的一个可选设计中,所述计算模块222,用于基于相邻两个所述落脚点的位置确定摆腿曲线,所述摆腿曲线用于指示所述脚部在所述摆动阶段的摆动轨迹;基于所述摆腿曲线对所述每条腿的脚部进行插值计算,计算得到所述每条腿的脚部在所述摆动阶段的位置。
在本实施例的一个可选设计中,所述IK模块224,用于根据所述每条腿的相邻两个所述落脚点进行CCDIK计算,得到所述每条腿的骨骼点在摆动阶段的位置;或,根据所述每条腿的相邻两个所述落脚点进行FABRIK计算,得到所述每条腿的骨骼点在摆动阶段的位置。
在本实施例的一个可选设计中,所述融合模块226,用于获取所述虚拟角色的躯干动画;将所述虚拟角色的躯干动画与所述每条腿的行走动画进行融合,得到所述虚拟角色的整体移动动画。
在本实施例的一个可选设计中,所述融合模块226,用于将所述虚拟角色的躯干动画按照步态周期进行缩放,得到缩放后的躯干动画;将所述缩放后的躯干动画与所述每条腿的行走动画进行融合,得到所述虚拟角色的整体移动动画。
在本实施例的一个可选设计中,所述计算模块222,还用于在所述虚拟角色的身体上存在弹性部件的情况下,确定所述弹性部件在所述虚拟角色的骨骼树中对应的至少两级骨骼节点;从所述至少两级的骨骼节点中的根节点开始,以上一级骨骼节点为原点、下一级骨骼节点为振子进行三维振动模型的振动计算,确定所述下一级骨骼节点的骨骼更新位置,直至更新得到所述弹性部件的骨骼更新位置。
在本实施例的一个可选设计中,所述预测模块220,还用于在所述落脚点所在的地面为非平整地面的情况下,计算所述落脚点在所述非平整地面上沿垂直方向的第一投影点;在所述落脚点和所述第一投影点的连线上,基于摆腿距离截取出参考点;将所述参考点在所述非平整地面上沿垂直方向的第二投影点,作为更新后的落脚点。
在本实施例的一个可选设计中,所述预测模块220,还用于根据所述更新后的落脚点所在地面的法线方向,对所述脚部在落脚时的姿态进行偏转。
在本实施例的一个可选设计中,所述融合模块226,还用于计算所述虚拟角色的各条腿的支撑向量,所述支撑向量用于指示当前腿的落脚点相对于所述虚拟角色的躯干的倾斜度;基于所述各条腿的支撑向量,计算所述虚拟角色的躯干的姿态角;基于所述姿态角对所述虚拟角色的躯干进行倾斜补偿。
在本实施例的一个可选设计中,所述融合模块226,还用于在所述虚拟角色处于凸型地面上方的情况下,计算所述虚拟角色的各条腿的落脚点与所述凸型地面的顶点之间的平均高度差;按照所述平均高度差将所述虚拟角色的躯干的高度进行升高补偿。
图23示出了本申请一个示例性实施例提供的计算机设备2300的结构框图。该计算机设备2300可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备2300还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,计算机设备2300包括有:处理器2301和存储器2302。
处理器2301可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器2301可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器2301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器2301可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器2301还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器2302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器2302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器2302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器2301所执行以实现本申请中方法实施例提供的域外网络资源的加速方法。
在一些实施例中,计算机设备2300还可选包括有:外围设备接口2303和至少一个外围设备。处理器2301、存储器2302和外围设备接口2303之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口2303相连。示例地,外围设备可以包括:射频电路2304、显示屏2305、摄像头组件2306、音频电路2307和电源2308中的至少一种。
外围设备接口2303可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器2301和存储器2302。在一些实施例中,处理器2301、存储器2302和外围设备接口2303被集成在同一芯片或电路板上;在一些其他实施例中,处理器2301、存储器2302和外围设备接口2303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路2304用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路2304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路2304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路2304包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路2304可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及23G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路2304还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏2305用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏2305是触摸显示屏时,显示屏2305还具有采集在显示屏2305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器2301进行处理。此时,显示屏2305还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏2305可以为一个,设置在计算机设备2300的前面板;在另一些实施例中,显示屏2305可以为至少两个,分别设置在计算机设备2300的不同表面或呈折叠设计;在另一些实施例中,显示屏2305可以是柔性显示屏,设置在计算机设备2300的弯曲表面上或折叠面上。甚至,显示屏2305还可以设置成非矩形的不规则图形,也即异形屏。显示屏2305可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(OrganicLight-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件2306用于采集图像或视频。可选地,摄像头组件2306包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件2306还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路2307可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器2301进行处理,或者输入至射频电路2304以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备2300的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器2301或射频电路2304的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路2307还可以包括耳机插孔。
电源2308用于为计算机设备2300中的各个组件进行供电。电源2308可以是交流电、直流电、一次性电池或可充电电池。当电源2308包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,计算机设备2300还包括有一个或多个传感器2310。该一个或多个传感器2310包括但不限于:加速度传感器2311、陀螺仪传感器2312、压力传感器2313、光学传感器2314以及接近传感器2315。
加速度传感器2311可以检测以计算机设备2300建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器2311可以用于检测重力加速度在三个坐标轴上的分量。处理器2301可以根据加速度传感器2311采集的重力加速度信号,控制显示屏2305以横向视图或纵向视图进行用户界面的显示。加速度传感器2311还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器2312可以检测计算机设备2300的机体方向及转动角度,陀螺仪传感器2312可以与加速度传感器2311协同采集用户对计算机设备2300的3D动作。处理器2301根据陀螺仪传感器2312采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器2313以设置在计算机设备2300的侧边框和/或显示屏2305的下层。当压力传感器2313设置在计算机设备2300的侧边框时,可以检测用户对计算机设备2300的握持信号,由处理器2301根据压力传感器2313采集的握持信号进行左右手识别或快捷操作。当压力传感器2313设置在显示屏2305的下层时,由处理器2301根据用户对显示屏2305的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器2314用于采集环境光强度。在一个实施例中,处理器2301可以根据光学传感器2314采集的环境光强度,控制显示屏2305的显示亮度。示例地,当环境光强度较高时,调高显示屏2305的显示亮度;当环境光强度较低时,调低显示屏2305的显示亮度。在另一个实施例中,处理器2301还可以根据光学传感器2314采集的环境光强度,动态调整摄像头组件2306的拍摄参数。
接近传感器2315,也称距离传感器,通常设置在计算机设备2300的前面板。接近传感器2315用于采集用户与计算机设备2300的正面之间的距离。在一个实施例中,当接近传感器2315检测到用户与计算机设备2300的正面之间的距离逐渐变小时,由处理器2301控制显示屏2305从亮屏状态切换为息屏状态;当接近传感器2315检测到用户与计算机设备2300的正面之间的距离逐渐变大时,由处理器2301控制显示屏2305从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图23中示出的结构并不构成对计算机设备2300的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述方法实施例提供的虚拟角色的行走动画生成方法。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例提供的虚拟角色的行走动画生成方法。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (21)

1.一种虚拟角色的行走动画生成方法,其特征在于,所述虚拟角色的每条腿在行走过程中交替执行摆动阶段和支撑阶段,所述方法包括:
根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿在所述行走过程中的落脚点;
根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置;
基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置;
基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
2.根据权利要求1所述的方法,其特征在于,所述基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画,包括:
获取预配置的步态参数;
基于所述步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
3.根据权利要求2所述的方法,其特征在于,所述步态参数包括:步态周期和所述每条腿在所述步态周期内的腿部参数;
所述基于所述步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画,包括:
在所述步态周期内,按照所述每条腿在所述步态周期内的腿部参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画;
其中,所述步态周期是所述摆动阶段和所述支撑阶段的交替周期,腿部参数包括抬脚时间点、所述摆动阶段的时长、所述支撑阶段的步伐中点中的至少一种。
4.根据权利要求3所述的方法,其特征在于,所述步态参数包括在第一运动形态下的第一步态参数和在第二运动形态下的第二步态参数;
所述方法还包括:
将所述第一步态参数和所述第二步态参数进行插值,得到第一混合步态参数;
基于所述第一混合步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述n条腿从所述第一运动形态切换至所述第二运动形态的过渡动画。
5.根据权利要求3所述的方法,其特征在于,所述步态参数包括在第一移动方向下的第三步态参数和在第二移动方向下的第四步态参数;
所述方法还包括:
将所述第三步态参数和所述第四步态参数进行插值,得到第二混合步态参数;
基于所述第二混合步态参数对所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述n条腿在第三移动方向的行走动画;
其中,所述第三移动方向是位于所述第一移动方向和所述第二移动方向之间的移动方向。
6.根据权利要求1至5任一所述的方法,其特征在于,所述根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿的落脚点,包括:
根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色在地图中的预测移动轨迹;
以所述虚拟角色的每条腿的当前姿态为预测起点,在所述预测移动轨迹上采样出所述每条腿的落脚点。
7.根据权利要求6所述的方法,其特征在于,所述虚拟角色包括n条腿,所述以所述虚拟角色的每条腿的当前姿态为预测起点,在所述预测移动轨迹上采样出所述每条腿的落脚点,包括:
在所述虚拟角色的第i条腿的当前姿态为所述摆动阶段的第t秒状态的情况下,计算所述摆动阶段的剩余时长和半个所述支撑阶段的时长之和为预测时长;
以所述虚拟角色的当前姿态在所述预测移动轨迹上的位置为起点,将沿所述预测移动轨迹上前进所述预测长度的位置,确定为所述虚拟角色在落脚时的身体位置,所述预测长度等于所述预测时长和所述移动速度的乘积;
基于所述虚拟角色在落脚时的身体位置以及相对位置关系,推算出所述虚拟角色的第i条腿在所述预测移动轨迹上的落脚点;
其中,i为不大于n的正整数,所述相对位置关系是预配置的所述虚拟角色的身体与所述第i条腿之间的相对位置。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述落脚点所在的地面为非平整地面的情况下,计算所述落脚点在所述非平整地面上沿垂直方向的第一投影点;
在所述落脚点和所述第一投影点的连线上,基于摆腿距离截取出参考点;
将所述参考点在所述非平整地面上沿垂直方向的第二投影点,作为更新后的落脚点。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
根据所述更新后的落脚点所在地面的法线方向,对所述脚部在落脚时的姿态进行偏转。
10.根据权利要求1至5任一所述的方法,其特征在于,所述根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置,包括:
基于相邻两个所述落脚点的位置确定摆腿曲线,所述摆腿曲线用于指示所述脚部在所述摆动阶段的摆动轨迹;
基于所述摆腿曲线对所述每条腿的脚部进行插值计算,计算得到所述每条腿的脚部在所述摆动阶段的位置。
11.根据权利要求8所述的方法,其特征在于,所述方法包括:
在所述虚拟角色的身体下方存在障碍物的情况下,基于相邻两个所述落脚点的位置和所述障碍物的最高点确定样条曲线;
将所述样条曲线与所述摆腿曲线进行叠加,得到更新后的摆腿曲线。
12.根据权利要求1至5任一所述的方法,其特征在于,所述基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置,包括:
根据所述每条腿的相邻两个所述落脚点进行循环坐标下降反向动力学CCDIK计算,得到所述每条腿的骨骼点在摆动阶段的位置;
或,
根据所述每条腿的相邻两个所述落脚点进行前向和后向到达反向动力学FABIK计算,得到所述每条腿的骨骼点在摆动阶段的位置。
13.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
获取所述虚拟角色的躯干动画,所述躯干动画是所述虚拟角色的身体在行走过程中的动画;
将所述虚拟角色的躯干动画与所述虚拟角色的行走动画进行融合,得到所述虚拟角色的整体移动动画。
14.根据权利要求13所述的方法,其特征在于,所述将所述虚拟角色的躯干动画与所述虚拟角色的行走动画进行融合,得到所述虚拟角色的整体移动动画,包括:
将所述虚拟角色的躯干动画的时长按照步态周期的时长进行缩放,得到缩放后的躯干动画;所述步态周期是所述摆动阶段和所述支撑阶段的交替周期;
将所述缩放后的躯干动画与所述虚拟角色的行走动画进行融合,得到所述虚拟角色的整体移动动画。
15.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
在所述虚拟角色的身体上存在弹性部件的情况下,确定所述弹性部件在所述虚拟角色的骨骼树中对应的至少两级骨骼节点;
从所述至少两级的骨骼节点中的根节点开始,以上一级骨骼节点为原点、下一级骨骼节点为振子进行三维振动模型的振动计算,确定所述下一级骨骼节点的骨骼更新位置,直至更新得到所述弹性部件的骨骼更新位置。
16.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
计算所述虚拟角色的各条腿的支撑向量,所述支撑向量用于指示当前腿的落脚点相对于所述虚拟角色的躯干的倾斜度;
基于所述各条腿的支撑向量,计算所述虚拟角色的躯干的姿态角;
基于所述姿态角对所述虚拟角色的躯干进行倾斜补偿。
17.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
在所述虚拟角色处于凸型地面上方的情况下,计算所述虚拟角色的各条腿的落脚点与所述凸型地面的顶点之间的平均高度差;
按照所述平均高度差将所述虚拟角色的躯干的高度进行升高补偿。
18.一种虚拟角色的行走动画生成装置,其特征在于,所述虚拟角色的每条腿在行走过程中交替执行摆动阶段和支撑阶段,所述装置包括:
预测模块,用于根据所述虚拟角色的移动速度和移动方向,预测所述虚拟角色的每条腿在所述行走过程中的落脚点;
计算模块,用于根据所述每条腿的相邻两个所述落脚点,计算所述每条腿的脚部在所述摆动阶段中的位置;
IK模块,用于基于所述每条腿的脚部在所述摆动阶段中的位置进行反向动力学计算,得到所述每条腿的骨骼点在所述摆动阶段的位置;
融合模块,用于基于所述每条腿的骨骼点在所述摆动阶段的位置进行步态融合,生成所述虚拟角色的行走动画。
19.一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至17任一所述的虚拟角色的行走动画生成方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至17任一所述的虚拟角色的行走动画生成方法。
21.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行以实现如权利要求1至17任一所述的虚拟角色的行走动画生成方法。
CN202111628788.7A 2021-11-19 2021-12-28 虚拟角色的行走动画生成方法、装置、设备及存储介质 Pending CN114283229A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2022/127073 WO2023088041A1 (zh) 2021-11-19 2022-10-24 虚拟角色的行走动画生成方法、装置、设备及存储介质
US18/338,330 US20230334744A1 (en) 2021-11-19 2023-06-20 Method and apparatus for generating walk animation of virtual role, device and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2021113743619 2021-11-19
CN202111374361 2021-11-19

Publications (1)

Publication Number Publication Date
CN114283229A true CN114283229A (zh) 2022-04-05

Family

ID=80877719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111628788.7A Pending CN114283229A (zh) 2021-11-19 2021-12-28 虚拟角色的行走动画生成方法、装置、设备及存储介质

Country Status (3)

Country Link
US (1) US20230334744A1 (zh)
CN (1) CN114283229A (zh)
WO (1) WO2023088041A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115761074A (zh) * 2022-11-18 2023-03-07 北京优酷科技有限公司 动画数据处理方法、装置、电子设备及介质
CN115797513A (zh) * 2023-02-01 2023-03-14 腾讯科技(深圳)有限公司 一种动画处理方法、装置、设备、存储介质及程序产品
WO2023088041A1 (zh) * 2021-11-19 2023-05-25 腾讯科技(深圳)有限公司 虚拟角色的行走动画生成方法、装置、设备及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230310998A1 (en) * 2022-03-31 2023-10-05 Electronic Arts Inc. Learning character motion alignment with periodic autoencoders
CN117173382B (zh) * 2023-10-27 2024-01-26 南京维赛客网络科技有限公司 Vr交互中的虚拟数字人体态矫正方法、系统及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI473036B (zh) * 2012-06-29 2015-02-11 Reallusion Inc The system and method of automatic adaptation of terrain to virtual terrain
CN105608309B (zh) * 2015-12-11 2019-08-02 杭州南江机器人股份有限公司 一种双足机器人步行规划和控制方法
WO2021045082A1 (ja) * 2019-09-05 2021-03-11 国立大学法人東京工業大学 仮想的なキャラクターの動作を画面上に表現する方法
CN110728739B (zh) * 2019-09-30 2023-04-14 杭州师范大学 一种基于视频流的虚拟人控制与交互方法
CN111311714A (zh) * 2020-03-31 2020-06-19 北京慧夜科技有限公司 一种三维动画的姿态预测方法和系统
CN112348931B (zh) * 2020-11-06 2024-01-30 网易(杭州)网络有限公司 脚部反向运动控制方法、装置、设备及存储介质
CN113318439B (zh) * 2021-06-17 2024-05-28 网易(杭州)网络有限公司 起步动画的处理方法、装置、处理器和电子装置
CN114283229A (zh) * 2021-11-19 2022-04-05 腾讯科技(深圳)有限公司 虚拟角色的行走动画生成方法、装置、设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023088041A1 (zh) * 2021-11-19 2023-05-25 腾讯科技(深圳)有限公司 虚拟角色的行走动画生成方法、装置、设备及存储介质
CN115761074A (zh) * 2022-11-18 2023-03-07 北京优酷科技有限公司 动画数据处理方法、装置、电子设备及介质
CN115761074B (zh) * 2022-11-18 2023-05-12 北京优酷科技有限公司 动画数据处理方法、装置、电子设备及介质
CN115797513A (zh) * 2023-02-01 2023-03-14 腾讯科技(深圳)有限公司 一种动画处理方法、装置、设备、存储介质及程序产品

Also Published As

Publication number Publication date
WO2023088041A1 (zh) 2023-05-25
US20230334744A1 (en) 2023-10-19

Similar Documents

Publication Publication Date Title
CN114283229A (zh) 虚拟角色的行走动画生成方法、装置、设备及存储介质
JP6276882B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
CN111035918B (zh) 基于虚拟环境的侦察界面显示方法、装置及可读存储介质
CN112843679B (zh) 虚拟对象的技能释放方法、装置、设备及介质
CN111026318B (zh) 基于虚拟环境的动画播放方法、装置、设备及存储介质
JP6290467B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるプログラム
CN110665230A (zh) 虚拟世界中的虚拟角色控制方法、装置、设备及介质
CN113209618B (zh) 虚拟角色的控制方法、装置、设备及介质
CN111273780B (zh) 基于虚拟环境的动画播放方法、装置、设备及存储介质
JP2023548941A (ja) ゲームのキャラクターのジャンプの制御方法、ゲームのキャラクターのジャンプの制御装置、端末設備、記憶媒体およびプログラム製品
JP2018125003A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるプログラム
JP2018147465A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
CN112699208B (zh) 地图寻路方法、装置、设备及介质
CN112755517B (zh) 虚拟对象控制方法、装置、终端及存储介质
CN112843683B (zh) 虚拟角色的控制方法、装置、电子设备及存储介质
US20230218984A1 (en) Methods and systems for interactive gaming platform scene generation utilizing captured visual data and artificial intelligence-generated environment
JP6554139B2 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6978240B2 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6263292B1 (ja) 情報処理方法、コンピュータ、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6382928B2 (ja) 仮想空間における画像の表示を制御するためにコンピュータによって実行される方法、当該方法をコンピュータに実現させるためのプログラム、および、コンピュータ装置
JP2018170013A (ja) 仮想空間における画像の表示を制御するためにコンピュータによって実行される方法、当該方法をコンピュータに実現させるためのプログラム、および、コンピュータ装置
WO2021143262A1 (zh) 地图元素添加方法、装置、终端及存储介质
JP6856572B2 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6330072B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
CN113827959B (zh) 游戏动画的处理方法、装置及电子装置

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