CN113781615A - 一种动画生成方法、装置、设备、存储介质及程序产品 - Google Patents
一种动画生成方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN113781615A CN113781615A CN202111144789.4A CN202111144789A CN113781615A CN 113781615 A CN113781615 A CN 113781615A CN 202111144789 A CN202111144789 A CN 202111144789A CN 113781615 A CN113781615 A CN 113781615A
- Authority
- CN
- China
- Prior art keywords
- stride
- center
- original
- target
- animation
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/02—Non-photorealistic rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种动画生成方法、装置、设备、存储介质及程序产品;该动画生成方法包括:呈现源动画的步幅缩放控件,其中,源动画用于渲染虚拟对象的运动,源动画包括N帧原始画面,N为正整数;响应于作用在步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:基于步幅缩放值和第i帧原始画面中虚拟对象的原始步幅中心,调整第i帧原始画面中虚拟对象的原始脚部位,得到目标脚部位;基于目标脚部位,得到第i帧目标画面;基于迭代i获得的N帧目标画面,生成目标动画。通过本申请,能够提升虚拟对象运动的动画的渲染效果。
Description
技术领域
本申请涉及计算机应用领域中的动画处理技术,尤其涉及一种动画生成方法、装置、设备、存储介质及程序产品。
背景技术
在动画渲染过程中,常常存在渲染虚拟对象以不同运动速度运动的情况,比如,渲染静止的虚拟对象,渲染慢跑的虚拟对象,渲染走路的虚拟对象,等等;通过渲染以不同运动速度进行运动的虚拟对象,能够提升动画渲染效果。
一般来说,为了渲染以不同运动速度进行运动的虚拟对象,通常通过调整虚拟对象的运动频率来实现。然而,通过调整虚拟对象的运动频率来渲染以不同运动速度进行运动的虚拟对象时,当运动频率调整幅度大于阈值时,会出现滑步现象,导致获得的虚拟对象运动的动画的渲染效果较差。
发明内容
本申请实施例提供一种动画生成方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升虚拟对象运动的动画的渲染效果。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种动画生成方法,包括:
呈现源动画的步幅缩放控件,其中,所述源动画用于渲染虚拟对象的运动,所述源动画包括N帧原始画面,N为正整数;
响应于作用在所述步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;
通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:
基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位;
基于所述目标脚部位,得到第i帧目标画面;
基于迭代i获得的N帧所述目标画面,生成目标动画。
本申请实施例提供一种动画生成装置,所述动画生成装置包括:
控件呈现模块,用于呈现源动画的步幅缩放控件,其中,所述源动画用于渲染虚拟对象的运动,所述源动画包括N帧原始画面,N为正整数;
参数获取模块,用于响应于作用在所述步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;
步幅迭代模块,用于通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位;基于所述目标脚部位,得到第i帧目标画面;
动画生成模块,用于基于迭代i获得的N帧所述目标画面,生成目标动画。
在本申请实施例中,所述步幅迭代模块,还用于获取第i帧所述原始画面中所述虚拟对象的所述原始步幅中心在基准面的投影,得到投影步幅中心;获取所述投影步幅中心与第i帧所述原始画面中所述虚拟对象的所述原始脚部位之间的待调步幅距离;基于所述待调步幅距离与所述步幅缩放值的第一融合结果,确定所述目标脚部位。
在本申请实施例中,所述步幅迭代模块,还用于当所述步幅缩放值在指定缩放范围内时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述待调步幅距离与所述步幅缩放值的所述第一融合结果的位置,确定为所述目标脚部位,其中,所述指定缩放范围是基于所述源动画中所述虚拟对象的步幅所确定的。
在本申请实施例中,所述步幅迭代模块,还用于当所述步幅缩放值在指定缩放范围外时,获取所述第一融合结果对应的脚部位与第i帧所述原始画面中所述虚拟对象的原始大腿根之间的距离,得到初始腿弯曲距离;基于所述原始脚部位与所述原始大腿根之间的距离,确定可弯曲距离;当所述初始腿弯曲距离小于等于所述可弯曲距离时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述待调步幅距离与所述步幅缩放值的所述第一融合结果的位置,确定为所述目标脚部位;当所述初始距离大于所述可弯曲距离时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述可扩展距离的位置,确定为所述目标脚部位。
在本申请实施例中,所述步幅迭代模块,还用于累计腿骨骼链中各骨骼的骨骼长度,得到腿长度,其中,所述腿骨骼链是以脚部位开始的且用于构成腿的骨骼序列;基于所述原始脚部位与所述原始大腿根之间的距离、扩展参数和所述腿长度,确定所述可弯曲距离。
在本申请实施例中,所述步幅缩放参数还包括步幅缩放方向;所述步幅迭代模块,还用于基于所述步幅缩放方向,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到目标步幅中心;基于所述步幅缩放值和所述目标步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位。
在本申请实施例中,所述步幅迭代模块,还用于基于所述目标步幅中心和所述目标脚部位,得到第i帧所述目标画面。
在本申请实施例中,所述步幅迭代模块,还用于获取所述步幅缩放方向对应的帧缩放角度与第i帧的融合角度;获取所述步幅缩放方向与所述源动画中所述虚拟对象的原始运动方向之间的差异角度;当所述融合角度小于所述差异角度时,基于所述融合角度,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到所述目标步幅中心;当所述融合角度大于等于所述差异角度时,基于所述差异角度,对所述原始步幅中心进行旋转,得到所述目标步幅中心。
在本申请实施例中,所述动画生成装置还包括参数修正模块,用于呈现所述目标步幅中心的步幅修正控件,响应于作用在所述步幅修正控件上的步幅修正操作,获得步幅修正参数,其中,所述步幅修正参数包括步幅修正位置和步幅修正方向中的一种或两种,所述步幅修正位置用于修正所述目标步幅中心的位置,所述步幅修正方向用于修正所述目标步幅中心的方向;基于所述步幅修正参数对所述目标步幅中心进行修正,得到最终步幅中心。
在本申请实施例中,所述步幅迭代模块,还用于基于所述步幅缩放值和所述最终步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位。
在本申请实施例中,所述步幅迭代模块,还用于基于所述最终步幅中心和所述目标脚部位,得到第i帧所述目标画面。
在本申请实施例中,所述动画生成装置还包括步幅中心模块,用于获取所述目标脚部位与所述原始脚部位之间的距离,得到第i帧脚调整高度;将第i帧所述脚调整高度与步幅中心修正参数之间的第二融合结果,确定为步幅中心待调整高度,其中,所述步幅中心修正参数与所述虚拟对象的步幅负相关;基于所述步幅中心待调整高度,调整所述原始步幅中心,得到新的步幅中心。
在本申请实施例中,所述步幅迭代模块,还用于基于所述新的步幅中心和所述目标脚部位,得到第i帧所述目标画面。
在本申请实施例中,所述步幅中心模块,还用于当所述步幅中心待调整高度高于指定高度时,基于平滑参数和帧时间,确定步幅中心待调整目标高度,并基于所述步幅中心待调整目标高度调整所述原始步幅中心,得到所述新的步幅中心;当所述步幅中心待调整高度低于或等于所述指定高度时,基于所述步幅中心待调整高度调整所述原始步幅中心,得到所述新的步幅中心。
在本申请实施例中,所述步幅迭代模块,还用于基于所述目标脚部位和所述原始步幅中心,确定逆向运动脚部位;基于所述逆向运动脚部位,确定所述虚拟对象的剩余部位的位置;基于所述目标脚部位、所述原始步幅中心和所述剩余部位的位置,得到第i帧所述目标画面。
本申请实施例提供一种动画生成设备,所述动画生成设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的动画生成方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令用于被处理器执行时,实现本申请实施例提供的动画生成方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的动画生成方法。
本申请实施例至少具有以下有益效果:通过获取步幅缩放值,并利用步幅缩放值对源动画中虚拟对象的原始脚部位进行调整,来实现虚拟对象的步幅的调整,进而实现虚拟对象的运动速度的调整;其中,由于步幅是与虚拟对象的运动速度正关联的参数,从而,通过修改源动画中虚拟对象的步幅来获得虚拟对象以不同运动速度运动的目标画面,能够提升所获得的目标画面中虚拟对象的运动速度的渲染效果;因此,能够提升虚拟对象运动的动画的渲染效果。
附图说明
图1是本申请实施例提供的动画生成***的架构示意图;
图2是本申请实施例提供的图1中的一个终端的组成结构示意图;
图3是本申请实施例提供的动画生成方法的流程示意图一;
图4是本申请实施例提供的示例性的目标画面的示意图一;
图5是本申请实施例提供的示例性的目标画面的示意图二;
图6是本申请实施例提供的动画生成方法的流程示意图二;
图7是本申请实施例提供的一种示例性的动画生成流程示意图;
图8是本申请实施例提供的一种示例性的步幅中心的参数调整页面;
图9是本申请实施例提供的一种示例性的骨头数的设置页面;
图10是本申请实施例提供的一种示例性的骨骼的示意图;
图11是本申请实施例提供的一种示例性的确定脚的最终位置的示意图;
图12是本申请实施例提供的一种IK脚的示意图;
图13是本申请实施例提供的与步幅缩放比例对应的动画画面示意图一;
图14是本申请实施例提供的与步幅缩放比例对应的动画画面示意图二;
图15是本申请实施例提供的获取动画节点的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)客户端,终端中运行的用于提供各种服务的应用程序,比如,动画开发客户端、游戏开发客户端等;本申请实施例中,可以基于动画生成设备上运行的客户端实现本申请实施例提供的动画生成方法。
2)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
3)控件,是指界面(或称为页面)上显示的能够触发特定处理的组件,比如,按钮、链接、输入框、页签、图标、选择框以及触控检测模块(比如,手势检测装置、红外检测装置等)等;在本申请实施例中,所涉及的控件比如为步幅缩放控件和步幅修正控件等。
4)操作,用于触发特定处理的行为动作,包括触控操作和非触控操作,比如,点击、双击、手势、长按或滑动等操作;在本申请实施例中,所涉及的操作比如为步幅缩放操作和步幅修正操作等。
5)虚拟场景,是应用程序在终端上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋和虚拟对象等,该陆地可以包括沙漠和城市等环境元素,用户可以控制虚拟对象在虚拟场景中进行移动。在本申请实施例中,动画中的每帧画面即为渲染的一个虚拟对象运动的虚拟场景。
6)虚拟对象,虚拟场景中可以进行交互的各种人和物的形象,或在虚拟场景中的可活动对象,该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,以及虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。本申请实施例中,虚拟对象为通过虚拟脚进行运动的虚拟形象。
一般来说,为了渲染以不同运动速度进行运动的虚拟对象,通常通过调整虚拟对象的运动频率来实现。然而,通过调整虚拟对象的运动频率来渲染以不同运动速度进行运动的虚拟对象时,当运动频率调整幅度大于阈值时,会出现滑步现象,导致获得的虚拟对象运动的动画的渲染效果较差。
另外,还可以采用创建过度动画的方式(比如,“BlendSpace”)、运动匹配的方式(比如,“Motion Match”)和骨骼贴图的方式(比如,“RagDoll”)渲染虚拟对象的运动。然而,创建过度动画的方式中,针对虚拟对象的运动,涉及到的细节较多,实现虚拟对象的运动速度的调整时,复杂度较高。运动匹配的方式中,对于表现复杂、以及任意状态可以切换的动画来说,搜索空间过于庞大,因此,实现虚拟对象的运动速度的调整时,复杂度较高。骨骼贴图的方式中,美术设计调试复杂,并且动作比较僵硬,导致获得的虚拟对象运动的动画的渲染效果较差。并且,采用过度动画的方式、运动匹配的方式和骨骼贴图的方式渲染虚拟对象的运动时,在改变动画速率超过20%时会影响动画质量,失真严重,这是因为动画步幅是固定的,改变运动频率会导致滑步现象。
基于此,本申请实施例提供一种动画生成方法、装置、设备、计算机可读存储介质及计算机程序产品,与真实运动效果的匹配度较高,避免了出现滑步现象,能够提升获得的虚拟对象运动的动画的渲染。下面说明本申请实施例提供的动画生成设备的示例性应用,本申请实施例提供的动画生成设备可以实施为智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备、智能家电和智能音箱等各种类型的终端,也可以实施为服务器。下面,将说明设备实施为终端时的示例性应用。
参见图1,图1是本申请实施例提供的动画生成***的架构示意图;如图1所示,为支撑一个动画生成应用,在动画生成***100中,终端400(动画生成设备)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。另外,该动画生成***100中还包括数据库500,用于向服务器200提供数据支持;并且,图1中示出的为数据库500独立于服务器200的一种情况,此外,数据库500还可以集成在服务器200中,本申请实施例对此不作限定;该动画生成***100中还包括通过网络300与服务器200连接的终端600。
终端400,用于呈现源动画的步幅缩放控件,其中,源动画用于渲染虚拟对象的运动,源动画包括N帧原始画面,N为正整数;响应于作用在步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:基于步幅缩放值和第i帧原始画面中虚拟对象的原始步幅中心,调整第i帧原始画面中虚拟对象的原始脚部位,得到目标脚部位;基于目标脚部位,得到第i帧目标画面;基于迭代i获得的N帧目标画面,生成目标动画。还用于基于目标画面生成待渲染动画,并通过网络300和服务器200,向终端600发送待渲染动画。
服务器200,用于通过网络300向终端600转发终端400通过网络300发送的待渲染动画。
终端600,用于响应于动画渲染请求,通过网络300和服务器200,接收终端400发送的待渲染动画,并渲染待渲染动画。
在本申请实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDelivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400和终端600可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家电、车载设备和游戏设备等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不作限制。
参见图2,图2是本申请实施例提供的图1中的一个终端的组成结构示意图;图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包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作***设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在本申请的一些实施例中,本申请实施例提供的动画生成装置可以采用软件方式实现,图2示出了存储在存储器450中的动画生成装置455,其可以是程序和插件等形式的软件,包括以下软件模块:控件呈现模块4551、参数获取模块4552、步幅迭代模块4553、动画生成模块4554、参数修正模块4555和步幅中心模块4556,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
本申请实施例提供的动画生成装置可以采用硬件方式实现,作为示例,本申请实施例提供的动画生成装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的动画生成方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
在本申请实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的动画生成方法。举例来说,计算机程序可以是操作***中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作***中安装才能运行的程序,如游戏开发APP、视频播放APP或者即时通信APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
下面,将结合本申请实施例提供的动画生成设备的示例性应用和实施,说明本申请实施例提供的动画生成方法。
参见图3,图3是本申请实施例提供的动画生成方法的流程示意图一,该动画生成方法应用于动画生成设备中,将结合图3示出的步骤进行说明。
S301、呈现源动画的步幅缩放控件,其中,源动画用于渲染虚拟对象的运动,源动画包括N帧原始画面。
在本申请实施例中,动画生成设备获得了源动画,并针对源动画获得虚拟对象以另一种运动速度运动的动画时,可通过呈现源动画的步幅缩放控件以及作用在步幅缩放控件上的操作,实现对源动画中虚拟对象的运动速度的调整,获得以另一种预定速度运动的动画。
需要说明的是,源动画用于渲染虚拟对象的运动,比如,虚拟对象走路的动画,虚拟对象跑步的动画,虚拟对象静止的动画,虚拟对象倒退的动画;并且,源动画包括N帧原始画面,N为正整数,N帧原始画面之间具有渲染顺序,当按照该渲染顺序渲染N帧原始画面时,就能够渲染出虚拟对象运动的动画。另外,步幅缩放控件用于调整源动画中虚拟对象的运动的步幅,比如,步幅大小,步幅方向等。
S302、响应于作用在步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数。
在本申请实施例中,当用户通过触发步幅缩放控件对源动画中的虚拟对象的步幅进行调整时,比如,输入数值或者滑动进度时,动画生成设备也就接收到了作用在步幅缩放控件上的步幅缩放操作;此时,动画生成设备响应于该步幅缩放操作,也就获得了步幅缩放参数。
需要说明的是,步幅缩放参数用于调整源动画中的虚拟对象的运动的步幅,包括步幅缩放值和步幅缩放方向中的一种或两种。这里,当步幅缩放参数用于调整源动画中的虚拟对象的运动的步幅大小时,则步幅缩放参数包括步幅缩放值;而当步幅缩放参数用于调整源动画中的虚拟对象的运动的步幅大小时,则步幅缩放包括步幅缩放方向;易知,当步幅缩放参数用于调整源动画中的虚拟对象的运动的步幅大小和步幅方向时,则步幅缩放参数包括步幅缩放值和步幅缩放方向。
这里,当步幅缩放参数包括步幅缩放值时,该步幅缩放值与调整后的源动画中的虚拟对象的运动速度正相关;也就是说,当步幅缩放值越大时,调整后的源动画中的虚拟对象的运动速度,相比源动画中的虚拟对象的运动速度就越大,而当步幅缩放值越小时,调整后的源动画中的虚拟对象的运动速度,相比源动画中的虚拟对象的运动速度就越小。
示例性地,当步幅缩放值为1时,调整后的源动画中的虚拟对象的运动速度,相比源动画中的虚拟对象的运动速度不变;当步幅缩放值大于1时,调整后的源动画中的虚拟对象的运动速度,大于源动画中的虚拟对象的运动速度;当步幅缩放值小于1且大于等于0时,调整后的源动画中的虚拟对象的运动速度,小于源动画中的虚拟对象的运动速度;以及,当步幅缩放值小于0时,调整后的源动画中的虚拟对象以反运动方式运动,并且,反运动方式的运动的速度与步幅缩放值的大小负相关;其中,反运动方式是指与源动画中的虚拟对象的运动方式相反的运动方式,即当源动画中的虚拟对象的运动方式为前进时则反运动方式为后退,而当源动画中的虚拟对象的运动方式为后退时则反运动方式为前进。
在本申请实施例中,动画生成设备通过迭代i来循环执行S303和S304,其中,1≤i≤N,且i为单调递增的整数变量。也就是说,动画生成设备将i作为从1到N的迭代变量,对每帧原始画面(称为第i帧原始画面)进行虚拟对象的步幅的调整。这里,i的迭代幅度为1,故,i的取值依次为1、2、3、……N。
S303、基于步幅缩放值和第i帧原始画面中虚拟对象的原始步幅中心,调整第i帧原始画面中虚拟对象的原始脚部位,得到目标脚部位。
需要说明的是,由于步幅的大小是指脚之间的距离,比如,双脚运动的虚拟对象,步幅的大小是指运动时双脚之间的距离;再比如,四脚运动的虚拟对象,步幅的大小是指运动时的一双脚与另一双脚之间的距离;从而,动画生成设备在获得了步幅缩放值对每帧原始画面中的步幅的大小进行调整时,是对虚拟对象在每帧原始画面中的脚的位置(又称为脚部位)进行的调整。又由于虚拟对象运动时,虚拟对象的有些部位是在动(相对于虚拟对象)而有些部位是没动(相对于虚拟对象)的,因此,动画生成设备在虚拟对象中确定一个位置,以基于该确定的位置确定虚拟对象运动时待调整的部位都有哪些的;比如,盆骨,此时,虚拟对象的盆骨以下的部位在步幅的大小改变时均会进行适应变换;再比如,大腿根,此时,虚拟对象的大腿根以下的部位在步幅的大小改变时均会进行适应变换;这里,将确定的该位置称为步幅中心,源动画中第i帧原始画面中虚拟对象的步幅中心称为原始步幅中心。
在本申请实施例中,动画生成设备利用步幅缩放值调整将基准面上原始脚部位与原始步幅中心之间的距离,以确定虚拟对象的脚部位对应的调整后的位置,也就获得了目标脚部位。也就是说,目标脚部位是与新的步幅对应的脚的位置,而新的步幅时基于步幅缩放值和第i帧原始画面中的原始脚部位确定的;易知,原始脚部位表征了第i帧原始画面中的脚的步幅大小。
S304、基于目标脚部位,得到第i帧目标画面。
在本申请实施例中,当动画生成设备获得了目标脚部位之后,基于目标脚部位,利用逆向运动学对步幅中心至脚部位之间的各部位的位置进行确定,也就基于步幅缩放值完成了第i帧动画画面中虚拟对象的调整,获得的调整后的第i帧动画画面即为第i帧目标画面。易知,第i帧目标画面是指虚拟对象以另一运动速度运动时的每帧动画画面,且,另一运动速度是结合步幅缩放值和源动画中虚拟对象的运动速度所确定的。
需要说明的是,动画生成设备通过迭代i循环执行S303和S304实现对源动画中每种原始画面中虚拟对象的脚部位的调整。
S305、基于迭代i获得的N帧目标画面,生成目标动画。
在本申请实施例中,当动画生成设备完成迭代时,即动画生成设备完成对第N帧原始画面中虚拟对象的步幅大小的调整,获得了第N帧目标画面时,这里,动画生成设备将第1帧目标画面至第N帧目标画面按渲染顺序组合,也就生成了目标动画。
需要说明的是,目标动画也用于渲染虚拟对象的运动,但目标动画所渲染的虚拟对象的运动速度与源动画所渲染的虚拟对象的运动速度不同。
示例性地,参见图4,图4是本申请实施例提供的示例性的目标画面的示意图一;如图4所示,针对源动画中的一帧原始画面4-1,当步幅缩放值为0.5时,获得目标画面4-2;而当步幅缩放值为2时,获得目标画面4-3。
示例性地,参见图5,图5是本申请实施例提供的示例性的目标画面的示意图二;如图5所示,当对源动画进行步幅大小的调整后,可以获得虚拟对象以不同运动速度运动的动画效果,动画图像5-1为虚拟对象行走的目标动画中的一帧动画画面,动画图像5-2为虚拟对象低速跑的目标动画中的一帧动画画面,动画图像5-3为虚拟对象冲刺跑的目标动画中的一帧动画画面。
可以理解的是,通过获得的步幅缩放值,对源动画中的每帧原始画面中的脚部位的位置进行调整,实现了虚拟对象的运动速度的改变;从而,能够基于源动画快速获得虚拟对象以另一运动速度运动的目标动画,因此,能够提升动画生成效率。另外,通过获取步幅缩放值以及调整脚部位的位置,就能获得虚拟对象以不同运动速度运动的动画,实现了通过一个动画节点生成目标动画的过程,能够降低动画渲染资源的占用量。
在本申请实施例中,S303可通过S3031至S3033实现;也就是说,动画生成设备基于步幅缩放值和第i帧原始画面中虚拟对象的原始步幅中心,调整第i帧原始画面中虚拟对象的原始脚部位,得到目标脚部位,包括S3031至S3033,下面对各步骤分别进行说明。
S3031、获取第i帧原始画面中虚拟对象的原始步幅中心在基准面的投影,得到投影步幅中心。
需要说明的是,动画生成设备将第i帧原始画面中虚拟对象的原始步幅中心投影至基准面上,所获得的投影结果即为投影步幅中心。这里,基准面用于确定原始步幅中心和原始脚部位位于同一平面上时两者之间的距离,因此,动画生成设备可以以脚部位所在的地面为基准面,也可以以步幅中心所在的水平面为基准面,又可以以其他的平面作为基准面,等等,本申请实施例对此不作限定。
S3032、获取投影步幅中心与第i帧原始画面中虚拟对象的原始脚部位之间的待调步幅距离。
需要说明的是,动画生成设备获取投影步幅中心与第i帧原始画面中虚拟对象的原始脚部位之间距离,也就获得了原始步幅中心和原始脚部位位于同一平面上时两者之间的距离,并将获得的距离称为待调步幅距离。其中,待调步幅距离表征了第i帧原始画面中虚拟对象运动时的步幅大小。
S3033、基于待调步幅距离与步幅缩放值的第一融合结果,确定目标脚部位。
需要说明的是,动画生成设备将待调步幅距离与步幅缩放值融合,得到第一融合结果,并基于第一融合结果调整原始脚部位,以获得目标脚部位。
在本申请实施例中,动画生成设备基于虚拟对象的腿长度确定如何基于第一融合结果确定目标脚部位。从而,S3033可通过S30331实现;也就是说,动画生成设备基于待调步幅距离与步幅缩放值的第一融合结果,确定目标脚部位,包括S30331,下面对该步骤进行说明。
S30331、当步幅缩放值在指定缩放范围内时,在投影步幅中心与原始脚部位之间,将以投影步幅中心为起点,经过待调步幅距离与步幅缩放值的第一融合结果的位置,确定为目标脚部位。
需要说明的是,指定缩放范围是基于源动画中虚拟对象的步幅所确定的,表征用于减小源动画中虚拟对象的步幅的步幅缩放值所对应的取值范围,比如负1到1;当步幅缩放值在指定缩放范围内时,表明动画生成设备执行减小源动画中虚拟对象的步幅的处理。由于减小源动画中虚拟对象的步幅时,所确定的调好后的脚部位与原始大腿根构成的腿的长度不会超过实际的腿长度,从而,此时,动画生成设备直接将基于第一融合结果调整出的脚部位确定为目标脚部位;其中,实际的腿长度是指原始大腿根和原始脚部位构成的腿的长度。这里,动画生成设备在基于第一融合结果调整原始脚部位时,可以在投影步幅中心与原始脚部位之间,将以投影步幅中心为起点,经过待调步幅距离与步幅缩放值的第一融合结果的位置,确定为目标脚部位。
在本申请实施例中,S3033还可通过S30332至S30335实现;也就是说,动画生成设备基于待调步幅距离与步幅缩放值的第一融合结果,确定目标脚部位,包括S30332至S30335,下面对各步骤进行说明。
S30332、当步幅缩放值在指定缩放范围外时,获取第一融合结果对应的脚部位与第i帧原始画面中虚拟对象的原始大腿根之间的距离,得到初始腿弯曲距离。
S30333、基于原始脚部位与原始大腿根之间的距离,确定可弯曲距离。
需要说明的是,当步幅缩放值在指定缩放范围外时,表明动画生成设备执行增大源动画中虚拟对象的步幅的处理。由于增大源动画中虚拟对象的步幅时,所确定的调好后的脚部位与原始大腿根构成的腿的长度可能会超过实际的腿长度,从而,此时,动画生成设备对基于第一融合结果对原始脚部位调整后的位置进行判断,判断所获得的调整后的原始脚部位与原始大腿根构成的腿的长度是否超过实际的腿长度。这里,第一融合结果对应的脚部位即为基于第一融合结果调整原始脚部位后,得到的调整后的原始脚部位。
在本申请实施例中,由于不确定原始膝盖部位对应的调整后的位置,也就无法确定调整后的原始脚部位与原始大腿根构成的腿的长度,因此,动画生成设备基于原始脚部位与原始大腿根之间的距离、以及实际的腿长度,确定调整后的原始脚部位与原始大腿根之间的距离范围,从所确定的距离范围中选择一个距离,确定为可弯曲距离。
S30334、当初始腿弯曲距离小于等于可弯曲距离时,在投影步幅中心与原始脚部位之间,将以投影步幅中心为起点,经过待调步幅距离与步幅缩放值的第一融合结果的位置,确定为目标脚部位。
在本申请实施例中,动画生成设备基于初始腿弯曲距离和可弯曲距离的比较结果,确定调整后的原始脚部位与原始大腿根构成的腿的长度是否超过了实际的腿长度。
需要说明的是,当初始腿弯曲距离小于等于可弯曲距离时,表明调整后的原始脚部位与原始大腿根构成的腿的长度未超过实际的腿长度;从而此时,动画生成设备直接将基于第一融合结果调整出的脚部位确定为目标脚部位,即动画生成设备在投影步幅中心与原始脚部位之间,将以投影步幅中心为起点,经过待调步幅距离与步幅缩放值的第一融合结果的位置,确定为目标脚部位。
S30335、当初始距离大于可弯曲距离时,在投影步幅中心与原始脚部位之间,将以投影步幅中心为起点,经过可扩展距离的位置,确定为目标脚部位。
需要说明的是,当初始距离大于可弯曲距离时,表明调整后的原始脚部位与原始大腿根构成的腿的长度超过了实际的腿长度;从而此时,动画生成设备还需要对基于第一融合结果调整出的脚部位再进行调整;这里,动画生成设备对基于第一融合结果调整出的脚部位再进行调整时,可在投影步幅中心与原始脚部位之间,将以投影步幅中心为起点,经过可扩展距离的位置,确定为目标脚部位。
可以理解的是,通过指定缩放范围确定调整后的原始脚部位是否符合实际,并在不符合实际的情况下,基于原始大腿根与原始脚部位确定可弯曲距离,对调整后的原始脚部位再次进行调整,使得所获得的原始脚部位具备合理性,能够提升生成的目标动画的质量。
在本申请实施例中,步幅缩放参数还包括步幅缩放方向;表明动画生成设备还基于步幅缩放方向对源动画中虚拟对象的步幅方向进行调整。此时,S303还可通过S3034和S3035实现;也就是说,动画生成设备基于步幅缩放值和第i帧原始画面中虚拟对象的原始步幅中心,调整第i帧原始画面中虚拟对象的原始脚部位,得到目标脚部位,包括S3034和S3035,下面对各步骤分别进行说明。
S3034、基于步幅缩放方向,对第i帧原始画面中虚拟对象的原始步幅中心进行旋转,得到目标步幅中心。
需要说明的是,动画生成设备将原始步幅中心的正方向朝步幅缩放方向旋转,所获得旋转后的结果即为目标步幅中心。也就是说,目标步幅中心为调整了正方向的原始步幅中心,其中,正方向是指源动画中虚拟对象的运动方向。
还需要说明的是,步幅缩放方向是指虚拟对象的新的运动方向,不同于源动画中虚拟对象的运动方向;比如,当源动画中虚拟对象东西方向运动时,步幅缩放方向可以是南北方向,或者偏南15度等。
S3035、基于步幅缩放值和目标步幅中心,对第i帧原始画面中虚拟对象的原始脚部位进行调整,得到目标脚部位。
需要说明的是,当对源动画中的原始步幅中心的方向进行改变并获得了目标步幅中心之后,动画生成设备采用目标步幅中心向基准面进行投影,并结合步幅缩放值确定目标脚部位,实现过程同S3031至S3033。
相应地,S304可通过S3041实现;也就是说,动画生成设备基于目标脚部位,得到第i帧目标画面,包括S3041,下面对该步骤分别进行说明。
S3041、基于目标步幅中心和目标脚部位,得到第i帧目标画面。
需要说明的是,当对源动画中的原始步幅中心的方向进行改变并获得了目标步幅中心之后,动画生成设备采用目标步幅中心,并结合目标脚部位确定虚拟对象其他部位的位置,进而获得第i帧目标画面。
在本申请实施例中,S3034可通过S30341至S30344实现;也就是说,动画生成设备基于步幅缩放方向,对第i帧原始画面中虚拟对象的原始步幅中心进行旋转,得到目标步幅中心,包括S30341至S30344,下面对各步骤分别进行说明。
S30341、获取步幅缩放方向对应的帧缩放角度与第i帧的融合角度。
S30342、获取步幅缩放方向与源动画中虚拟对象的原始运动方向之间的差异角度。
需要说明的是,动画生成设备基于步幅缩放方向与源动画中虚拟对象的运动方向(称为原始运动方向)之间的角度差异,以及当前帧时间,实现由原始运动方向向步幅缩放方向的平滑处理。从而,动画生成设备一方面获取步幅缩放方向与源动画中虚拟对象的原始运动方向之间的角度差异所对应的差异角度,另一方面基于每帧动画的步幅中心的旋转角度(称为帧缩放角度)与当前帧时间(即为第i帧)之间融合结果,确定步幅调整后的第i帧时虚拟对象的步幅中心对应的正方向。
S30343、当融合角度小于差异角度时,基于融合角度,对第i帧原始画面中虚拟对象的原始步幅中心进行旋转,得到目标步幅中心。
需要说明的是,当融合角度小于差异角度时,表明还需要基于方向的平滑处理确定当前帧的步幅中心的正方向;从而,动画生成设备对第i帧中的原始步幅中心进行旋转时,旋转的角度为融合角度。
S30344、当融合角度大于等于差异角度时,基于差异角度,对原始步幅中心进行旋转,得到目标步幅中心。
需要说明的是,当融合角度小于差异角度时,表明已完成了基于方向的平滑处理,从而,后续的每帧中的步幅中心的正方向均为步幅缩放方向;从而,动画生成设备对第i帧中的原始步幅中心进行旋转时,旋转的角度为差异角度。
在本申请实施例中,S3034之后还包括S3036和S3037;也就是说,动画生成设备基于步幅缩放方向,对第i帧原始画面中虚拟对象的原始步幅中心进行旋转,得到目标步幅中心之后,该动画生成方法还包括S3036和S3037,下面对各步骤分别进行说明。
S3036、呈现目标步幅中心的步幅修正控件,响应于作用在步幅修正控件上的步幅修正操作,获得步幅修正参数。
需要说明的是,动画生成设备可以对目标步幅中心的位置和角度进行修正处理。这里,当用户通过触发步幅修正控件对目标步幅中心的位置和/或角度进行修正时,动画生成设备也就接收到了作用在步幅修正控件上的步幅修正操作;此时,动画生成设备响应于该步幅修正操作,也就获得了步幅修正参数。其中,步幅修正参数包括步幅修正位置和步幅修正方向中的一种或两种,步幅修正位置用于修正目标步幅中心的位置,步幅修正方向用于修正目标步幅中心的方向。
S3037、基于步幅修正参数对目标步幅中心进行修正,得到最终步幅中心。
需要说明的是,当步幅修正参数包括步幅修正位置时,动画生成设备基于步幅修正位置对目标步幅中心的位置进行修正,得到最终步幅中心。当步幅修正参数包括步幅修正方向时,动画生成设备基于步幅修正位置对目标步幅中心的方向进行修正,得到最终步幅中心。当步幅修正参数包括步幅修正位置和步幅修正方向时,动画生成设备基于步幅修正位置对目标步幅中心的位置进行修正,并基于步幅修正方向对位置修正后的目标步幅中心的方向进行修正(或者,基于步幅修正方向对目标步幅中心的方向进行修正,并基于步幅修正方向对方向修正后的目标步幅中心的位置进行修正),得到最终步幅中心。
相应地,在本申请实施例中,S3035中动画生成设备基于步幅缩放值和目标步幅中心,对第i帧原始画面中虚拟对象的原始脚部位进行调整,得到目标脚部位,包括:动画生成设备基于步幅缩放值和最终步幅中心,对第i帧原始画面中虚拟对象的原始脚部位进行调整,得到目标脚部位。以及S3041中动画生成设备基于目标步幅中心和目标脚部位,得到第i帧目标画面,包括:动画生成设备基于最终步幅中心和目标脚部位,得到第i帧目标画面。也就是说,当获得了最终步幅中心之后,脚部位的调整以及目标画面的生成均基于最终步幅中心实现。
在本申请实施例中,动画生成设备还可以针对原始步幅中心进行位置和方向的修正,对应的处理过程同对目标步幅中心的修正过程。
在本申请实施例中,当基于步幅缩放参数和步幅修正参数对虚拟对象的部位进行调整时,如果步幅缩放参数和步幅修正参数为组件空间的参数,则需要将待调整的对象(比如,原始步幅中心、原始脚部位和目标步幅中心等)由骨骼空间转换至组件空间后再基于参数进行调整。
在本申请实施例中,S304之前还包括S306和S308;也就是说,动画生成设备基于目标脚部位,得到第i帧目标画面之前,该动画生成方法还包括S306和S308,下面对各步骤分别进行说明。
S306、获取目标脚部位与原始脚部位之间的距离,得到第i帧脚调整高度。
S307、将第i帧脚调整高度与步幅中心修正参数之间的第二融合结果,确定为步幅中心待调整高度。
在本申请实施例中,当步幅中心为虚拟对象的身体部位时,步幅中心会基于脚部位的高度进行高度的适应调整,而调整的方式通过步幅中心修正参数确定。这里,步幅中心的高度调整与脚部位的高度调整可以一致,也可以相反;当步幅中心的高度调整与脚部位的高度调整相反时,步幅中心比如为盆骨、大腿根和膝盖等,此时,步幅中心的高度调整方向与脚部位的高度调整方向相反,且,步幅中心修正参数与虚拟对象的步幅负相关。
S308、基于步幅中心待调整高度,调整原始步幅中心,得到新的步幅中心。
相应地,在本申请实施例中,S304中动画生成设备基于目标脚部位,得到第i帧目标画面,包括:动画生成设备基于新的步幅中心和目标脚部位,得到第i帧目标画面。
S307、获取前i帧脚调整高度中的最大脚调整高度。
需要说明的是,前i帧脚调整高度为第1帧脚调整高度至第i帧脚调整高度构成的集合。
在本申请实施例中,S308可通过S3081和S3082实现;也就是说,动画生成设备基于步幅中心待调整高度,调整原始步幅中心,得到新的步幅中心,包括S3081和S3082,下面对各步骤分别进行说明。
S3081、当步幅中心待调整高度高于指定高度时,基于平滑参数和帧时间,确定步幅中心待调整目标高度,并基于步幅中心待调整目标高度调整原始步幅中心,得到新的步幅中心。
需要说明的是,步幅中心由于高度的调整可能出现动画抖动的现象,从而动画生成设备基于待调整目标高度进行平滑处理,并基于平滑处理后的高度对步幅中的高度进行调整,以消除动画抖动现象,提升动画生成的质量。
还需要说明的是,指定高度是指出现抖动现象时的一种基准高度,比如指调低,调高。
示例性地,当步幅中心为盆骨,且盆骨调高时出现抖动时,该指定高度可以为0;从而,当步幅中心待调整高度高于指定高度时,表明动画生成设备是调高了盆骨,需要基于平滑参数对盆骨的调整高度进行平滑处理,得到步幅中心待调整目标高度。
S3082、当步幅中心待调整高度低于或等于指定高度时,基于步幅中心待调整高度调整原始步幅中心,得到新的步幅中心。
需要说明的是,当步幅中心待调整高度低于或等于指定高度时,表明步幅中心基于步幅中心待调整高度进行高度的调整时,不会出现动画抖动的情况;从而此时,动画生成设备直接将步幅中心调整步幅中心待调整高度。
参见图6,图6是本申请实施例提供的动画生成方法的流程示意图二;如图6所示,在本申请实施例中,S304可通过S3042至S3044实现;也就是说,动画生成设备基于目标脚部位,得到第i帧目标画面,包括S3042至S3044,下面对各步骤分别进行说明。
S3042、基于目标脚部位和原始步幅中心,确定逆向运动脚部位。
需要说明的是,动画生成设备基于获得的目标脚部位和原始步幅中心,进行逆向运动学(Inverse Kinematics,IK)脚的计算,也就获得了逆向运动脚部位。
S3043、基于逆向运动脚部位,确定虚拟对象的剩余部位的位置。
需要说明的是,由于IK脚用于确定虚拟对象中其他的剩余部位的位置,比如,膝盖部位的位置,大腿根部位的位置等;因此,动画生成设备基于逆向运动脚部位,能够确定出虚拟对象的剩余部位的位置。
S3044、基于目标脚部位、原始步幅中心和剩余部位的位置,得到第i帧目标画面。
需要说明的是,动画生成设备获得了虚拟对象的各个部位的位置(目标脚部位、原始步幅中心和剩余部位的位置)之后,基于虚拟对象的各个部位的位置确定与步幅缩放值对应的第i帧的虚拟对象运动的动画画面,也就得到了第i帧目标画面。
在本申请实施例中,S3034中动画生成设备基于步幅缩放方向,对第i帧原始画面中虚拟对象的原始步幅中心进行旋转,得到目标步幅中心,包括:动画生成设备确定当i大于1时,将第i-1帧的目标步幅中心确定为待调整步幅中心;而当i等于1时,将第i帧原始画面中虚拟对象的原始步幅中心确定为待调整步幅中心;确定原始步幅中心由原始运动方向旋转至步幅缩放方向所需要的帧数;当i小于等于该所需要的帧数时,对待调整步幅中心调整帧缩放角度,得到目标步幅中心;而当i大于该所需要的帧数时,将待调整步幅中心确定为目标步幅中心。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。该示例性应用描述了基于一个动画节点(对应于源动画)获取另一个动画节点(对应于目标动画)的过程,其中,动画节点表征虚拟对象以一个运动速度进行运动的动画。
参见图7,图7是本申请实施例提供的一种示例性的动画生成流程示意图;如图7所示,该示例性的动画生成包括S701至S707,下面对各步骤分别进行说明。
S701、基于步幅缩放方向确定步幅中心的旋转信息。
需要说明的是,客户端可以对源动画中的虚拟对象的运动方向(原始运动方向)进行调整,这里,虚拟对象的运动方向即为步幅中心的正方向。参见图8,图8是本申请实施例提供的一种示例性的步幅中心的参数调整页面;如图8所示,方向(Direction)8-1即为步幅缩放方向,默认情况下,方向8-1为步幅中心的正方向;当对虚拟对象的运动方向进行调整时,通过设置方向8-1实现,比如,正方向为前后方向时,通过设置方向8-1,可以使得运动方向更改为偏左45度的方向。其中,方向8-1,用于调整步幅中心的正方向。
继续参见图8,客户端在对步幅中心的正方向进行调整时,还可以通过步幅中心平滑旋转到新的方向(度/秒)8-2来确定平滑信息,比如,20度/秒(称为帧缩放角度)。以及,还可以通过选择距离最近的方向作为步幅中心的旋转方向8-3,比如,可以是,也可以是否;比如,当将步幅中心的正方向调整至左前方时,可以通过向左旋转实现,也可以通过向右旋转实现,这里,由于向左旋转时所选择的角度最小,从而,向左旋转即为距离最近的方向;从而,距离最近的方向即为步幅中心的进行角度旋转时的旋转方向。
可以理解的是,通过方向8-1、步幅中心平滑旋转到新的方向(度/秒)8-2和选择距离最近的方向作为步幅中心的旋转方向8-3,就能够实现步幅中心的正方向的旋转;方向8-1、步幅中心平滑旋转到新的方向(度/秒)8-2和选择距离最近的方向作为步幅中心的旋转方向8-3中的一种或多种,即为步幅中心的旋转信息。
S702、基于旋转信息确定步幅中心的最终位置和最终正方向(称为最终步幅中心)。
需要说明的是,客户端可以将步幅中心的原始位置(称为原始步幅中心)确定为步幅中心的最终位置,将方向8-1确定为步幅中心的最终正方向。另外,客户端还可以基于步幅中心正方向的偏移量(称为步幅修正位置,参见图8中的步幅中心正方向的偏移量8-4)对步幅中心的原始位置进行修正,得到最终位置;以及基于扭曲角度(称为步幅修正方向,参见图8中的扭曲角度8-5)对步幅中心的新的正方向(即方向8-1)进行修正,得到最终正方向。这里,步幅中心正方向的偏移量8-4和扭曲角度8-5对应的控件称为步幅修正控件。
这里,客户端在确定步幅中心的最终位置和最终正方向时,首先,获取步幅中心的原始位置,下面对获取步幅中心的原始位置的过程进行说明。
当图8中的各个参数对应于组件空间时,客户端将步幅中心由骨骼空间变换到组件空间,其中,骨骼空间中,每个位置是相对于父骨骼节点的相对位置,原点为父骨骼;组件空间是相对于整个虚拟对象的相对位置,原点为虚拟对象的中心点(Root)。
需要说明的是,步幅中心可以是虚拟对象的盆骨,或者小腿,还可以是脚中心;当步幅中心为脚中心时,则获得的步幅中心的原始位置为投射到地面的位置(StepPiovtProjectLocation=Vector(StepPiovtLocation.X,StepPiovtLocation.Y,0)),否则获得的步幅中心的原始位置为步幅中心在组件空间的位置(StepPiovtLocation)。其中,当步幅中心为脚中心时,参见图8,步幅中心是否投射到地面8-6,则会被勾选;否则不被勾选。
其次,基于步幅中心正方向的偏移量(Offset)对步幅中心的原始位置进行偏移,得到最终位置(OffsetLocation=StepPiovt.AddToTranslation(StepPiovt.TransformPositon(Fvector(0.0f,Offset,0.0f))))。
最后,基于扭曲角度(Twist)对步幅中心的新的正方向进行修正,得到最终正方向(TwistRotation=StepPiovt.Rotation*(FQuat(Vector::UpVector,DegreesToRadians(Twist))))。
S703、确定下半身骨骼长度(称为腿长度)。
需要说明的是,客户端通过腿骨骼链计算下半身骨骼长度;其中,腿骨骼链是指以脚作为起始骨骼,以大腿根作为结束骨骼,再基于各骨骼的父骨骼所确定的骨骼序列;骨头数(BoneCount)是骨骼链中的骨头的数量,即为骨骼序列中的骨骼单元的数量。
参见图9,图9是本申请实施例提供的一种示例性的骨头数的设置页面;如图9所示,右脚9-1对应的右腿的骨骼链的骨头数9-2为2(即右脚骨骼到右大腿根骨骼的骨头数);左脚9-3对应的左腿的骨骼链的骨头数9-4为2(即左脚骨骼到左大腿根骨骼的骨头数)。
参见图10,图10是本申请实施例提供的一种示例性的骨骼的示意图;如图10所示,图像10-1示出的骨骼10-11即为左脚骨骼;由于脚骨骼的父骨骼是膝盖骨骼,从而如图像10-2,骨骼长度10-21为脚骨骼与膝盖骨骼之间的骨骼长度;由于膝盖骨骼的父骨骼是图像10-3中的大腿根骨骼10-31,从而如图像10-4,骨骼长度10-41为膝盖骨骼与大腿根骨骼之间的骨骼长度。易知,骨骼长度10-21和骨骼长度10-41的累加和即为下半身骨骼长度。
这里,基于骨头数,累加每个骨头的长度,得到腿长度,也就得到了下半身骨骼长度。参见公式(1),描述了腿长度的获取方式。
其中,||Pose.GetLocalSpaceLocation(Bonesk)||为第k个骨头的长度,BoneLength为腿长度,BoneCount为骨头数。
S704、基于步幅缩放比例(称为步幅缩放值)确定脚的最终位置(称为目标脚部位)。
这里,针对源动画中的每帧动画画面(称为第i帧原始画面)进行脚的位置的确定。参见图11,图11是本申请实施例提供的一种示例性的确定脚的最终位置的示意图;如图11所示,虚线圆圈11-11为源动画中的脚的位置(称为原始脚部位),虚线圆圈11-12为源动画中的膝盖的位置,实线圆圈11-13为源动画中的大腿根的位置(称为原始大腿根),实线圆圈11-14为源动画中的盆骨的位置(称为原始步幅中心);易知,虚线圆圈11-11和虚线圆圈11-12之间的距离为L2,实线圆圈11-13和虚线圆圈11-12之间的距离为L1,L1与L2之和即为腿长度。这里,基于腿长度,源动画中的虚线圆圈11-11和实线圆圈11-13之间的距离为L3(称为原始脚部位与原始大腿根之间的距离),以及扩展参数(AllowExtensionPercent∈[0,1]),可以确定距离L4(可弯曲距离),如公式(2)所示。
L4=L3+AllowExtensionPercent*(BoneLength-L3) (2);
示例性地,当步幅缩放比例(StepScale)为0.5时,确定脚由于步幅缩放比例在正反向上前移或后退后的位置,与步幅中心的最终位置在地面的投影位置(参见图11中的实线圆圈11-18)之间的水平距离(即为NewTipLocation_SPS.Y*=StepScale,其中,NewTipLocation_SPS通过“Fvector NewTipLocation_SPS=StepPivot.Transform.InverseTransformPositon(footLocation_CS)”获得,而footLocation_CS为图11中虚线圆圈11-11对应的位置),进而基于该水平距离确定脚的新位置(Limb.TipLocation_CS=TwistPivotTransform.TransformPositon(NewTipLocation_SPS)),也就得到了脚的最终位置,如图11中实线圆圈11-15。
另外,当步幅缩放比例大于1时,比如为3时,在获得了Limb.TipLocation_CS(如图11中虚线圆圈11-16)之后,还需要进行是否超过腿长度的判断,这里基于L4进行判断。先获取图11中虚线圆圈11-16与图11中实线圆圈11-13(ThighBoneLocation_CS)之间的距离(CurrentLimbLength,其中,CurrentLimbLength通过“Fvcetor newThighToFootVec=Limb.TipLocation_CS-ThighBoneLocation_CS”获得);再判断CurrentLimbLength是否大于L4,如果大于,由于大腿根到新的脚的位置不能超过腿长度,则利用CurrentLimbLength减去超过的部分(CurrentLimbLength-L4,参见图11中的距离11-19),即将L4确定为大腿根到脚的最终位置之间的距离,从而确定脚的最终位置,如图11中实线圆圈11-17。
S705、基于脚的最终位置调整步幅中心。
需要说明的是,当步幅中心为虚拟对象的盆骨时,由于虚拟对象的运动过程中脚抬高时盆骨降低,而脚降低时盆骨升高,又由于虚拟对象的运动过程中脚抬高还是降低,与虚拟对象的步幅相关,从而,设定与虚拟对象的步幅负相关的修正参数(ModifyRatio)。当修正参数为0时,表示不对盆骨进行调整;当修正参数为1时,完全基于源动画中的脚(称为原始脚部位或旧脚)的位置与脚(称为目标脚部位或新脚)的最终位置确定盆骨的调整高度;以及,确定当虚拟对象行走时修正参数的取值范围是0.5至1,当虚拟对象慢跑时修正参数的取值范围是0.25至0.5,当虚拟对象行走时修正参数的取值范围是0至0.25。以及,盆骨的高度的调整方向与脚的调整的方向相反,也就是说,脚调高时调低盆骨位置,脚调低时调高盆骨位置,从而,盆骨的待调整高度可通过公式(3)获得。
HipShift=-FootZDelta*ModifyRatio (3);
其中,HipShift为盆骨的待调整高度,FootZDelta为新脚和旧脚的高度差。
还需要说明的是,当当前盆骨的位置(CurrentFootShift)在调整了待调整高度之后,如果调整后的盆骨的位置高于当前盆骨的位置(CurrentFootShift)时,由于盆骨从被下拉的位置恢复到原位置时,会出现动画抖动;因此,通过平滑参数(RecoveryRate,盆骨从下移后恢复的速度)进行平滑处理(MoveToward(CurrentFootShift,-MaxFootZDelta*ModifyRatio,RecoveryRate*DeltaTime),其中,MaxFooZDelta为新脚和旧脚的最大高度差,DeltaTime为帧时间,比如,0.03秒),接着基于平滑处理结果对当前盆骨的位置进行调整(NewHipLocation+=Vector(0,0,MoveToward(CurrentFootShift,-MaxFootZDelta*ModifyRatio,RecoveryRate*DeltaTime))。而如果调整后的盆骨的位置不高于当前盆骨的位置(CurrentFootShift)时,则直接基于待调整高度对当前盆骨的位置进行调整(NewHipLocation+=Vector(0,0,HipShift))。
S706、基于脚的最终位置和调整后的步幅中心的最终位置,确定IK脚。
需要说明的是,基于脚的最终位置和调整后的步幅中心的最终位置,确定用于计算IK脚的各个参数(盆骨偏移量(HipOffset=Vector(0,0,MoveToward(CurrentFootShift,-MaxFootZDelta*ModifyRatio,RecoveryRate*DeltaTime)或者Vector(0,0,HipShift)),Vector(0,0,(MaxFootZDelta-FootZDelta)*ModifyRatio),-MaxFootZDelta*ModifyRatio-CurrentFootShift),并通过叠加用于计算IK脚的各个参数,确定IK脚的偏移(IKFootAdjust),进而基于IK脚的偏移获得IK脚(NewIKLocation+=IKFootAdjust)。
示例性地,参见图12,图12是本申请实施例提供的一种IK脚的示意图;如图12所示,动画画面12-1中,位置12-21和位置12-22为源动画中虚拟对象的脚的位置,位置12-11和位置12-12为虚拟对象的IK脚的位置;位置12-31为源动画中虚拟对象12-11的盆骨的位置,位置12-41为盆骨的最终位置。
S707、基于脚的最终位置、调整后的步幅中心的最终位置和IK脚,确定帧画面(称为第i帧目标画面)。
下面对通关S701至S707获得的新的动画(称为目标动画)进行说明。
参见图13,图13是本申请实施例提供的与步幅缩放比例对应的动画画面示意图一;如图13所示,步幅缩放比例13-1为0.0时,对应的一帧动画画面13-2中,位置13-11和位置13-12为源动画中虚拟对象的脚的位置(称为原始脚部位),位置13-21和位置13-22为虚拟对象的IK脚的位置。
参见图14,图14是本申请实施例提供的与步幅缩放比例对应的动画画面示意图二;如图14所示,步幅缩放比例14-1为5.0时,对应的一帧动画画面14-2中,位置14-11和位置14-12为源动画中虚拟对象的脚的位置,位置14-21和位置14-22为虚拟对象的IK脚的位置。
下面说明基于一个动画节点获得虚拟对象以不同运动速度进行运动的动画节点的过程。其中,动画节点为虚拟对象以一个运动速度进行运动的动画,比如,本申请实施例中的源动画和目标画面均分别是一个动画节点。
参见图15,图15是本申请实施例提供的获取动画节点的示意图;如图15所示,针对源动画对应的动画节点15-1(称为源动画),经过空间转换15-2,由骨骼空间转换至组件空间;空间转换后的动画节点15-1基于步幅缩放比例15-3进行虚拟对象的步幅的调整,得到初始动画节点;接着,初始动画节点经过IK脚计算15-4并经过空间转换15-5(由组件空间转换至骨骼空间),也就得到了目标画面对应的动画节点15-6(称为目标动画)。
在本申请实施例中,当动画位移改变时,还可以通过计算出每一帧位移的补偿位移来适配不同位移下的动画表现效果;在位移补偿后,根据补偿的位移数据反算出动画的播放速度来达到更好的动画表现。
可以理解的是,只需要一个动画节点就可以实现虚拟对象以不同运动速度运动的动画效果,不仅减少了动画使用量,节省了内存占用,而且能够提升动画生成的效率和灵活性;也就是说,通过动画节点,并根据获得的参数对动画节点中脚部位进行调整,以获得虚拟对象行走-低速跑-冲刺跑等运动的动画效果,能够降低目标动画生成的资源消耗,且能够提升生成的动画的渲染效果。
下面继续说明本申请实施例提供的动画生成装置455的实施为软件模块的示例性结构,在本申请实施例中,如图2所示,存储在存储器450的动画生成装置455中的软件模块可以包括:
控件呈现模块4551,用于呈现源动画的步幅缩放控件,其中,所述源动画用于渲染虚拟对象的运动,所述源动画包括N帧原始画面,N为正整数;
参数获取模块4552,用于响应于作用在所述步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;
步幅迭代模块4553,用于通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位;基于所述目标脚部位,得到第i帧目标画面;
动画生成模块4554,用于基于迭代i获得的N帧所述目标画面,生成目标动画。
在本申请实施例中,所述步幅迭代模块4553,还用于获取第i帧所述原始画面中所述虚拟对象的所述原始步幅中心在基准面的投影,得到投影步幅中心;获取所述投影步幅中心与第i帧所述原始画面中所述虚拟对象的所述原始脚部位之间的待调步幅距离;基于所述待调步幅距离与所述步幅缩放值的第一融合结果,确定所述目标脚部位。
在本申请实施例中,所述步幅迭代模块4553,还用于当所述步幅缩放值在指定缩放范围内时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述待调步幅距离与所述步幅缩放值的所述第一融合结果的位置,确定为所述目标脚部位,其中,所述指定缩放范围是基于所述源动画中所述虚拟对象的步幅所确定的。
在本申请实施例中,所述步幅迭代模块4553,还用于当所述步幅缩放值在指定缩放范围外时,获取所述第一融合结果对应的脚部位与第i帧所述原始画面中所述虚拟对象的原始大腿根之间的距离,得到初始腿弯曲距离;基于所述原始脚部位与所述原始大腿根之间的距离,确定可弯曲距离;当所述初始腿弯曲距离小于等于所述可弯曲距离时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述待调步幅距离与所述步幅缩放值的所述第一融合结果的位置,确定为所述目标脚部位;当所述初始距离大于所述可弯曲距离时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述可扩展距离的位置,确定为所述目标脚部位。
在本申请实施例中,所述步幅迭代模块4553,还用于累计腿骨骼链中各骨骼的骨骼长度,得到腿长度,其中,所述腿骨骼链是以脚部位开始的且用于构成腿的骨骼序列;基于所述原始脚部位与所述原始大腿根之间的距离、扩展参数和所述腿长度,确定所述可弯曲距离。
在本申请实施例中,所述步幅缩放参数还包括步幅缩放方向;所述步幅迭代模块4553,还用于基于所述步幅缩放方向,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到目标步幅中心;基于所述步幅缩放值和所述目标步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位。
在本申请实施例中,所述步幅迭代模块4553,还用于基于所述目标步幅中心和所述目标脚部位,得到第i帧所述目标画面。
在本申请实施例中,所述步幅迭代模块4553,还用于获取所述步幅缩放方向对应的帧缩放角度与第i帧的融合角度;获取所述步幅缩放方向与所述源动画中所述虚拟对象的原始运动方向之间的差异角度;当所述融合角度小于所述差异角度时,基于所述融合角度,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到所述目标步幅中心;当所述融合角度大于等于所述差异角度时,基于所述差异角度,对所述原始步幅中心进行旋转,得到所述目标步幅中心。
在本申请实施例中,所述动画生成装置455还包括参数修正模块4555,用于呈现所述目标步幅中心的步幅修正控件,响应于作用在所述步幅修正控件上的步幅修正操作,获得步幅修正参数,其中,所述步幅修正参数包括步幅修正位置和步幅修正方向中的一种或两种,所述步幅修正位置用于修正所述目标步幅中心的位置,所述步幅修正方向用于修正所述目标步幅中心的方向;基于所述步幅修正参数对所述目标步幅中心进行修正,得到最终步幅中心。
在本申请实施例中,所述步幅迭代模块4553,还用于基于所述步幅缩放值和所述最终步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位。
在本申请实施例中,所述步幅迭代模块4553,还用于基于所述最终步幅中心和所述目标脚部位,得到第i帧所述目标画面。
在本申请实施例中,所述动画生成装置455还包括步幅中心模块4556,用于获取所述目标脚部位与所述原始脚部位之间的距离,得到第i帧脚调整高度;将第i帧所述脚调整高度与步幅中心修正参数之间的第二融合结果,确定为步幅中心待调整高度,其中,所述步幅中心修正参数与所述虚拟对象的步幅负相关;基于所述步幅中心待调整高度,调整所述原始步幅中心,得到新的步幅中心。
在本申请实施例中,所述步幅迭代模块4553,还用于基于所述新的步幅中心和所述目标脚部位,得到第i帧所述目标画面。
在本申请实施例中,所述步幅中心模块4556,还用于当所述步幅中心待调整高度高于指定高度时,基于平滑参数和帧时间,确定步幅中心待调整目标高度,并基于所述步幅中心待调整目标高度调整所述原始步幅中心,得到所述新的步幅中心;当所述步幅中心待调整高度低于或等于所述指定高度时,基于所述步幅中心待调整高度调整所述原始步幅中心,得到所述新的步幅中心。
在本申请实施例中,所述步幅迭代模块4553,还用于基于所述目标脚部位和所述原始步幅中心,确定逆向运动脚部位;基于所述逆向运动脚部位,确定所述虚拟对象的剩余部位的位置;基于所述目标脚部位、所述原始步幅中心和所述剩余部位的位置,得到第i帧所述目标画面。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备(称为动画生成设备)的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的动画生成方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的动画生成方法,例如,如图3示出的动画生成方法。
在本申请的一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在本申请的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件***中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算机设备上执行(此时,这一个计算机设备即动画生成设备),或者在位于一个地点的多个计算机设备上执行(此时,位于一个地点的多个计算机设备即动画生成设备),又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行(此时,分布在多个地点且通过通信网络互连的多个计算机设备即动画生成设备)。
综上所述,本申请实施例通过获取步幅缩放值,并利用步幅缩放值对源动画中虚拟对象的原始脚部位进行调整,来实现虚拟对象的步幅的调整,进而实现虚拟对象的运动速度的调整;其中,由于步幅是与虚拟对象的运动速度正关联的参数,从而,通过修改源动画中虚拟对象的步幅来获得虚拟对象以不同运动速度运动的目标画面,能够提升所获得的目标画面中虚拟对象的运动速度的渲染效果;因此,能够提升虚拟对象运动的动画的渲染效果。另外,还能够提升动画生成的质量、效率和灵活性,并降低目标动画生成的资源消耗。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (15)
1.一种动画生成方法,其特征在于,所述方法包括:
呈现源动画的步幅缩放控件,其中,所述源动画用于渲染虚拟对象的运动,所述源动画包括N帧原始画面,N为正整数;
响应于作用在所述步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;
通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:
基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位;
基于所述目标脚部位,得到第i帧目标画面;
基于迭代i获得的N帧所述目标画面,生成目标动画。
2.根据权利要求1所述的方法,其特征在于,所述基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位,包括:
获取第i帧所述原始画面中所述虚拟对象的所述原始步幅中心在基准面的投影,得到投影步幅中心;
获取所述投影步幅中心与第i帧所述原始画面中所述虚拟对象的所述原始脚部位之间的待调步幅距离;
基于所述待调步幅距离与所述步幅缩放值的第一融合结果,确定所述目标脚部位。
3.根据权利要求2所述的方法,其特征在于,所述基于所述待调步幅距离与所述步幅缩放值的第一融合结果,确定所述目标脚部位,包括:
当所述步幅缩放值在指定缩放范围内时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述待调步幅距离与所述步幅缩放值的所述第一融合结果的位置,确定为所述目标脚部位,其中,所述指定缩放范围是基于所述源动画中所述虚拟对象的步幅所确定的。
4.根据权利要求2所述的方法,其特征在于,所述基于所述待调步幅距离与所述步幅缩放值的第一融合结果,确定所述目标脚部位,包括:
当所述步幅缩放值在指定缩放范围外时,获取所述第一融合结果对应的脚部位与第i帧所述原始画面中所述虚拟对象的原始大腿根之间的距离,得到初始腿弯曲距离;
基于所述原始脚部位与所述原始大腿根之间的距离,确定可弯曲距离;
当所述初始腿弯曲距离小于等于所述可弯曲距离时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述待调步幅距离与所述步幅缩放值的所述第一融合结果的位置,确定为所述目标脚部位;
当所述初始距离大于所述可弯曲距离时,在所述投影步幅中心与所述原始脚部位之间,将以所述投影步幅中心为起点,经过所述可扩展距离的位置,确定为所述目标脚部位。
5.根据权利要求4所述的方法,其特征在于,所述基于所述原始脚部位与所述原始大腿根之间的距离,确定可弯曲距离,包括:
累计腿骨骼链中各骨骼的骨骼长度,得到腿长度,其中,所述腿骨骼链是以脚部位开始的且用于构成腿的骨骼序列;
基于所述原始脚部位与所述原始大腿根之间的距离、扩展参数和所述腿长度,确定所述可弯曲距离。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述步幅缩放参数还包括步幅缩放方向;
所述基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位,包括:
基于所述步幅缩放方向,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到目标步幅中心;
基于所述步幅缩放值和所述目标步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位;
所述基于所述目标脚部位,得到第i帧目标画面,包括:
基于所述目标步幅中心和所述目标脚部位,得到第i帧所述目标画面。
7.根据权利要求6所述的方法,其特征在于,所述基于所述步幅缩放方向,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到目标步幅中心,包括:
获取所述步幅缩放方向对应的帧缩放角度与第i帧的融合角度;
获取所述步幅缩放方向与所述源动画中所述虚拟对象的原始运动方向之间的差异角度;
当所述融合角度小于所述差异角度时,基于所述融合角度,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到所述目标步幅中心;
当所述融合角度大于等于所述差异角度时,基于所述差异角度,对所述原始步幅中心进行旋转,得到所述目标步幅中心。
8.根据权利要求6所述的方法,其特征在于,所述基于所述步幅缩放方向,对第i帧所述原始画面中所述虚拟对象的所述原始步幅中心进行旋转,得到目标步幅中心之后,所述方法还包括:
呈现所述目标步幅中心的步幅修正控件,响应于作用在所述步幅修正控件上的步幅修正操作,获得步幅修正参数,其中,所述步幅修正参数包括步幅修正位置和步幅修正方向中的一种或两种,所述步幅修正位置用于修正所述目标步幅中心的位置,所述步幅修正方向用于修正所述目标步幅中心的方向;
基于所述步幅修正参数对所述目标步幅中心进行修正,得到最终步幅中心;
所述基于所述步幅缩放值和所述目标步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位,包括:
基于所述步幅缩放值和所述最终步幅中心,对第i帧所述原始画面中所述虚拟对象的所述原始脚部位进行调整,得到所述目标脚部位;
所述基于所述目标步幅中心和所述目标脚部位,得到第i帧所述目标画面,包括:
基于所述最终步幅中心和所述目标脚部位,得到第i帧所述目标画面。
9.根据权利要求1至5任一项所述的方法,其特征在于,所述基于所述目标脚部位,得到第i帧目标画面之前,所述方法还包括:
获取所述目标脚部位与所述原始脚部位之间的距离,得到第i帧脚调整高度;
将第i帧所述脚调整高度与步幅中心修正参数之间的第二融合结果,确定为步幅中心待调整高度;
基于所述步幅中心待调整高度,调整所述原始步幅中心,得到新的步幅中心;
所述基于所述目标脚部位,得到第i帧目标画面,包括:
基于所述新的步幅中心和所述目标脚部位,得到第i帧所述目标画面。
10.根据权利要求9所述的方法,其特征在于,所述基于所述步幅中心待调整高度,调整所述原始步幅中心,得到新的步幅中心,包括:
当所述步幅中心待调整高度高于指定高度时,基于平滑参数和帧时间,确定步幅中心待调整目标高度,并基于所述步幅中心待调整目标高度调整所述原始步幅中心,得到所述新的步幅中心;
当所述步幅中心待调整高度低于或等于所述指定高度时,基于所述步幅中心待调整高度调整所述原始步幅中心,得到所述新的步幅中心。
11.根据权利要求1至5任一项所述的方法,其特征在于,所述基于所述目标脚部位,得到第i帧目标画面,包括:
基于所述目标脚部位和所述原始步幅中心,确定逆向运动脚部位;
基于所述逆向运动脚部位,确定所述虚拟对象的剩余部位的位置;
基于所述目标脚部位、所述原始步幅中心和所述剩余部位的位置,得到第i帧所述目标画面。
12.一种动画生成装置,其特征在于,所述动画生成装置包括:
控件呈现模块,用于呈现源动画的步幅缩放控件,其中,所述源动画用于渲染虚拟对象的运动,所述源动画包括N帧原始画面,N为正整数;
参数获取模块,用于响应于作用在所述步幅缩放控件上的步幅缩放操作,获得包括步幅缩放值的步幅缩放参数;
步幅迭代模块,用于通过迭代i执行以下处理,其中,1≤i≤N,且i为单调递增的整数变量:基于所述步幅缩放值和第i帧所述原始画面中所述虚拟对象的原始步幅中心,调整第i帧所述原始画面中所述虚拟对象的原始脚部位,得到目标脚部位;基于所述目标脚部位,得到第i帧目标画面;
动画生成模块,用于基于迭代i获得的N帧所述目标画面,生成目标动画。
13.一种动画生成设备,其特征在于,所述动画生成设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的动画生成方法。
14.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令用于被处理器执行时,实现权利要求1至11任一项所述的动画生成方法。
15.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现权利要求1至11任一项所述的动画生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111144789.4A CN113781615B (zh) | 2021-09-28 | 2021-09-28 | 一种动画生成方法、装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111144789.4A CN113781615B (zh) | 2021-09-28 | 2021-09-28 | 一种动画生成方法、装置、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113781615A true CN113781615A (zh) | 2021-12-10 |
CN113781615B CN113781615B (zh) | 2023-06-13 |
Family
ID=78854265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111144789.4A Active CN113781615B (zh) | 2021-09-28 | 2021-09-28 | 一种动画生成方法、装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113781615B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115797513A (zh) * | 2023-02-01 | 2023-03-14 | 腾讯科技(深圳)有限公司 | 一种动画处理方法、装置、设备、存储介质及程序产品 |
CN116012497A (zh) * | 2023-03-29 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 动画重定向方法、装置、设备及介质 |
CN116051699A (zh) * | 2023-03-29 | 2023-05-02 | 腾讯科技(深圳)有限公司 | 动捕数据的处理方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201209821D0 (en) * | 2012-02-29 | 2012-07-18 | Naturalmotion Ltd | Animation processing |
US20120306891A1 (en) * | 2011-06-05 | 2012-12-06 | Shaffer Joshua H | Device and Method for Dynamically Rendering an Animation |
US20130120460A1 (en) * | 2011-11-14 | 2013-05-16 | Microsoft Corporation | Animations for Scroll and Zoom |
CN107014396A (zh) * | 2017-03-30 | 2017-08-04 | 强辉 | 精确测量视频中目标人的鞋长与步幅的方法 |
CN107294838A (zh) * | 2017-05-24 | 2017-10-24 | 腾讯科技(深圳)有限公司 | 社交应用的动画生成方法、装置、***以及终端 |
CN111494942A (zh) * | 2020-04-16 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 动画播放方法、装置、终端和存储介质 |
CN112037311A (zh) * | 2020-09-08 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 一种动画生成的方法、动画播放的方法以及相关装置 |
WO2020248951A1 (zh) * | 2019-06-11 | 2020-12-17 | 腾讯科技(深圳)有限公司 | 动画渲染方法、装置、计算机可读存储介质和计算机设备 |
CN112597903A (zh) * | 2020-12-24 | 2021-04-02 | 珠高电气检测有限公司 | 基于步幅测量的电力人员安全状态智能识别方法及介质 |
CN112669194A (zh) * | 2021-01-06 | 2021-04-16 | 腾讯科技(深圳)有限公司 | 虚拟场景中的动画处理方法、装置、设备及存储介质 |
WO2021160108A1 (zh) * | 2020-02-10 | 2021-08-19 | 腾讯科技(深圳)有限公司 | 一种动画视频处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-09-28 CN CN202111144789.4A patent/CN113781615B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120306891A1 (en) * | 2011-06-05 | 2012-12-06 | Shaffer Joshua H | Device and Method for Dynamically Rendering an Animation |
US20130120460A1 (en) * | 2011-11-14 | 2013-05-16 | Microsoft Corporation | Animations for Scroll and Zoom |
GB201209821D0 (en) * | 2012-02-29 | 2012-07-18 | Naturalmotion Ltd | Animation processing |
CN107014396A (zh) * | 2017-03-30 | 2017-08-04 | 强辉 | 精确测量视频中目标人的鞋长与步幅的方法 |
CN107294838A (zh) * | 2017-05-24 | 2017-10-24 | 腾讯科技(深圳)有限公司 | 社交应用的动画生成方法、装置、***以及终端 |
WO2020248951A1 (zh) * | 2019-06-11 | 2020-12-17 | 腾讯科技(深圳)有限公司 | 动画渲染方法、装置、计算机可读存储介质和计算机设备 |
WO2021160108A1 (zh) * | 2020-02-10 | 2021-08-19 | 腾讯科技(深圳)有限公司 | 一种动画视频处理方法、装置、电子设备及存储介质 |
CN111494942A (zh) * | 2020-04-16 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 动画播放方法、装置、终端和存储介质 |
CN112037311A (zh) * | 2020-09-08 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 一种动画生成的方法、动画播放的方法以及相关装置 |
CN112597903A (zh) * | 2020-12-24 | 2021-04-02 | 珠高电气检测有限公司 | 基于步幅测量的电力人员安全状态智能识别方法及介质 |
CN112669194A (zh) * | 2021-01-06 | 2021-04-16 | 腾讯科技(深圳)有限公司 | 虚拟场景中的动画处理方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
段辉丽;唐丽玉;: "利用OSG三维图形渲染引擎实现的骨骼动画", 计算机工程与应用, no. 03 * |
翟艳东;于明;师硕;: "一种基于步幅长度及频域特征的步态识别方法", 河北工业大学学报, no. 06 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115797513A (zh) * | 2023-02-01 | 2023-03-14 | 腾讯科技(深圳)有限公司 | 一种动画处理方法、装置、设备、存储介质及程序产品 |
CN116012497A (zh) * | 2023-03-29 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 动画重定向方法、装置、设备及介质 |
CN116051699A (zh) * | 2023-03-29 | 2023-05-02 | 腾讯科技(深圳)有限公司 | 动捕数据的处理方法、装置、设备及存储介质 |
CN116012497B (zh) * | 2023-03-29 | 2023-05-30 | 腾讯科技(深圳)有限公司 | 动画重定向方法、装置、设备及介质 |
CN116051699B (zh) * | 2023-03-29 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 动捕数据的处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113781615B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113781615B (zh) | 一种动画生成方法、装置、设备、存储介质 | |
WO2018095273A1 (zh) | 图像合成方法、装置以及匹配实现方法、装置 | |
WO2021143278A1 (zh) | 图像处理方法、装置、电子设备及存储介质 | |
JP2018125000A (ja) | 視点変換のためのリアルなリグ付き3次元(3d)モデルアニメーションを生成するための装置及び方法 | |
US10909744B1 (en) | Simulating garment with wrinkles based on physics based cloth simulator and machine learning model | |
CN109144252B (zh) | 对象确定方法、装置、设备和存储介质 | |
US11783523B2 (en) | Animation control method and apparatus, storage medium, and electronic device | |
CN112860063B (zh) | 交互水的实现方法、***、电子装置和存储介质 | |
CN114742925A (zh) | 虚拟对象的蒙皮方法、装置、电子设备和存储介质 | |
CN109448117A (zh) | 图像渲染方法、装置及电子设备 | |
CN115984447A (zh) | 图像渲染方法、装置、设备和介质 | |
CN112843683B (zh) | 虚拟角色的控制方法、装置、电子设备及存储介质 | |
CN114401362A (zh) | 一种图像显示方法、装置和电子设备 | |
WO2021258598A1 (zh) | 一种显示画面的调整方法、智能终端及可读存储介质 | |
CN114452646A (zh) | 虚拟对象透视处理方法、装置及计算机设备 | |
CN115239856A (zh) | 3d虚拟对象的动画生成方法、装置、终端设备及介质 | |
CN113610949B (zh) | 虚拟手臂骨骼的蒙皮方法、装置、设备以及存储介质 | |
Rompapas et al. | Project esky: An open source software framework for high fidelity extended reality | |
CN114201046B (zh) | 注视方向优化方法、装置、电子设备及存储介质 | |
CN116012497B (zh) | 动画重定向方法、装置、设备及介质 | |
Constantine et al. | Project Esky: an OpenSource Software Framework for High Fidelity Extended Reality | |
US20240185399A1 (en) | Parameter processing method and apparatus for virtual camera, device, storage medium, and program product | |
CN117173378B (zh) | 基于CAVE环境的WebVR全景数据展现方法、装置、设备及介质 | |
JP7441289B1 (ja) | コンピュータプログラム、情報処理端末、及びその制御方法 | |
CN111905365B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |