CN116597056B - 一种动画处理方法、装置、设备和存储介质 - Google Patents
一种动画处理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN116597056B CN116597056B CN202310863895.0A CN202310863895A CN116597056B CN 116597056 B CN116597056 B CN 116597056B CN 202310863895 A CN202310863895 A CN 202310863895A CN 116597056 B CN116597056 B CN 116597056B
- Authority
- CN
- China
- Prior art keywords
- joint
- target
- animation
- rotation
- virtual 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 36
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 238000012937 correction Methods 0.000 claims abstract description 259
- 230000008859 change Effects 0.000 claims abstract description 118
- 238000012545 processing Methods 0.000 claims abstract description 118
- 238000000034 method Methods 0.000 claims abstract description 97
- 238000005457 optimization Methods 0.000 claims description 422
- 238000009499 grossing Methods 0.000 claims description 83
- 230000008569 process Effects 0.000 claims description 51
- 230000009471 action Effects 0.000 claims description 39
- 210000000988 bone and bone Anatomy 0.000 claims description 25
- 239000013598 vector Substances 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000002829 reductive effect Effects 0.000 abstract description 5
- 210000001503 joint Anatomy 0.000 description 159
- 230000002159 abnormal effect Effects 0.000 description 23
- 210000002310 elbow joint Anatomy 0.000 description 18
- 230000008439 repair process Effects 0.000 description 16
- 230000009466 transformation Effects 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 13
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 230000000670 limiting effect Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 208000006981 Skin Abnormalities Diseases 0.000 description 5
- 238000000354 decomposition reaction Methods 0.000 description 5
- 210000000323 shoulder joint Anatomy 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 210000003857 wrist joint Anatomy 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 210000003414 extremity Anatomy 0.000 description 3
- 210000004247 hand Anatomy 0.000 description 3
- 230000005808 skin problem Effects 0.000 description 3
- 210000001145 finger joint Anatomy 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 210000001364 upper extremity Anatomy 0.000 description 2
- 210000000707 wrist Anatomy 0.000 description 2
- 241000203475 Neopanax arboreus Species 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 210000003484 anatomy Anatomy 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 210000000544 articulatio talocruralis Anatomy 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000003109 clavicle Anatomy 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000002478 hand joint Anatomy 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 210000000629 knee joint Anatomy 0.000 description 1
- 210000003141 lower extremity Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000452 restraining effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 210000000689 upper leg Anatomy 0.000 description 1
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例提供了一种动画处理方法、装置、设备和存储介质,方法包括:获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型;确定动画序列中目标动画帧的虚拟角色包括的多个关节的局部旋转改变量;多个关节中目标关节的局部旋转改变量是指目标关节相对于角色模型中与目标关节对应的参考关节的旋转改变量;按照运动约束规则对目标动画帧中虚拟角色的各关节的局部旋转改变量进行约束处理,得到各关节对应的局部旋转修正量,并根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数,进而根据各局部旋转修正参数,得到动画序列中动画帧对应的修正动画帧。这样可批量化、自动化地修复动画序列,降本增效。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种动画处理方法、装置、设备和存储介质。
背景技术
角色动画制作广泛应用于各种产业中,例如游戏、影视、媒体等。当前主要通过动作捕捉或深度学习等技术获得骨骼动画,再使用动画重定向技术将动画应用到不同的虚拟角色上。但是,受限于动作捕捉设备的精度或生成算法的效果,基于此产生的动画往往存在一定程度的错误或不合理之处,在动画应用到具体角色模型上时,经常产生蒙皮异常形变的问题。目前,针对动画造成的蒙皮异常形变,大多是动画师进行人工修复,这需要耗费大量的人力和时间,在实际生产应用时人工成本较高,动画的修复效率还有待提升。
发明内容
本申请实施例提供一种动画处理方法、装置、设备和存储介质,可以批量化、自动化地修复动画序列,不仅可降低人工成本,还可有效提高动画的修复效率。
一方面,本申请实施例提供了一种动画处理方法,方法包括:
获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型;
确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转;多个关节中目标关节的局部旋转改变量是指:目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量;
按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量,并根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数;
根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧。
另一方面,本申请实施例提供了一种动画处理装置,装置包括:
获取单元,用于获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型;
处理单元,用于确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转;多个关节中目标关节的局部旋转改变量是指:目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量;
处理单元,还用于按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量,并根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数;
处理单元,还用于根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧。
再一方面,本申请实施例提供了一种计算机设备,计算机设备包括输入接口和输出接口,计算机设备还包括:处理器以及计算机存储介质;
其中,处理器适于实现一条或多条指令,计算机存储介质存储有一条或多条指令,一条或多条指令适于由处理器加载并执行上述所提及的动画处理方法。
再一方面,本申请实施例提供了一种计算机存储介质,计算机存储介质存储有一条或多条指令,一条或多条指令适于由处理器加载并执行上述所提及的动画处理方法。
再一方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机程序;计算机程序被处理器执行时,实现上述所提及的动画处理方法。
在本申请实施例中,可获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型,并确定出动画序列中待处理的目标动画帧,进而确定目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,该目标动画帧中的虚拟角色的每个关节被允许在旋转轴上的旋转,该局部旋转改变量是相对于在参考姿态下的角色模型而言的,多个关节中目标关节的局部旋转改变量是该目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量。通过运动约束规则可对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,进而将各关节的局部旋转改变量约束在合理范围内,得到各关节的局部旋转修正量,根据关节的局部旋转修正量得到关节的局部旋转修正参数。该局部旋转修正参数可将关节的旋转限制在预设范围内,进而使得目标动画帧中虚拟角色的关节的变换是合理的。基于该局部旋转修正参数可生成目标动画帧对应的修正动画帧,通过使用运动约束规则限制关节的变换,可消除动画数据层面造成的蒙皮异常形变,实现对目标动画帧的修复。上述动画处理流程可实现对动画序列的自动化修复,无需人工参与,这样能够降低人工成本,另外,针对不同的动画序列,也能够并发地处理,从而实现批量化处理,进而有效地提升对动画序列的修复效率,实现降本增效。
附图说明
图1a是本申请实施例提供的一种参考姿态下的角色模型的示意图;
图1b是本申请实施例提供的一种蒙皮异常形变的示例性示意图;
图2是本申请实施例提供的一种动画处理系统的架构图;
图3是本申请实施例提供的一种动画处理方法的流程示意图;
图4是本申请实施例提供的另一种动画处理方法的流程示意图;
图5a是本申请实施例提供的一种模型骨架与内部骨架之间的匹配示意图;
图5b是本申请实施例提供的一种朝向分量限制范围的示意图;
图5c是本申请实施例提供的一种限制朝向分量的示意图;
图5d是本申请实施例提供的一种旋转项定义的示意图;
图6是本申请实施例提供的一种平滑窗口与修正动画序列的关系示意图;
图7是本申请实施例提供的一种动画处理的流程示意图;
图8是申请实施例提供的一种动画处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提出了一种动画处理方法,该方法针对任意的关于虚拟角色的动画序列,可使用运动约束规则对动画序列中的目标动画帧中该虚拟角色的各个关节的局部旋转改变量进行约束,并基于约束得到的局部旋转修正量来对关节的局部旋转参数进行修正,从而得到局部旋转修正参数来对虚拟角色的各个关节进行合理的变换,消除动画数据层面造成的蒙皮异常形变。
本申请中动画序列可理解成是一种动画数据,可用于驱动物体运动、实现动态效果,并广泛应用于游戏以及影视等领域,如电影中虚拟人物的动作动画。动画序列包括一个或多个动画帧,且各个动画帧按序排列。每个动画帧中包括处于相应姿态的虚拟角色。基于该动画序列中按序排列的动画帧可呈现关于虚拟角色的动画。不同于影像媒体形式的动画,此处的动画更多地是指一种虚拟角色的动作效果或动画效果,动画可以是多维(例如二维或三维)的形式,例如动漫中虚拟人物的动作。本申请中关于虚拟角色的动画序列可以由动画师创建或者相应工具自动创建,以描述虚拟角色的动作。需说明的是,本申请中,姿态、姿势、动作、动作姿势等均是表示相同的含义,“肢体动画”、“三维动画”、“角色动画”、“动画序列”等表述均是指虚拟场景下虚拟角色的身体动画,例如3D(三维)场景下虚拟人物角色的身体动画。
参考姿态是虚拟角色的姿态在生成过程中所参考的姿态。具体地,关于虚拟角色的动画序列中任一动画帧中的虚拟角色的姿态能够以参考姿态为基础进行变换得到。参考姿态可以是角色模型的一个特定姿态,例如Tpose姿态,该姿态下一般为双手水平张开置于身体两侧,自然直立的姿态,如图1a所示。Tpose作为虚拟角色的参考姿态,可应用于处理该虚拟角色相关动画的各种算法中,例如动画重定向、动画修复等。参考姿态也可以是A-pose姿态,该姿态下一般为双手呈一定角度置于身体两侧,身体自然直立的姿态。参考姿态也可以是其他姿态,本申请在此不做限制。其中,角色模型可用于模拟虚拟角色的骨骼和关节等。其中,骨骼是指骨架结构,包括多个骨头,而关节可理解成连接骨头的各个点,通过对关节进行旋转和变换,可以实现虚拟角色的动画效果和姿态变换。虚拟角色的角色模型可以是多维的角色模型,例如游戏场景中用于模拟虚拟人物的三维角色模型。
蒙皮异常形变是指虚拟角色(如人型角色)的三维模型在身体动画的驱动下,出现了与真实皮肤严重不一致的蒙皮变形,如手肘处的打结、手指反折等,如图1b所示,其中101标记的为手指反折,102和103标记的为手肘处的打结或异常。可理解的是,本申请中如图1a和图1b等仅为示例,如图1a或图1b中所示的虚拟角色可以是三维的虚拟角色。本申请提供的动画处理方法,是一种全自动化的动画修复方案,可用于修复蒙皮异常形变。并且,考虑了动画数据本身的合理性,可适用于任意的虚拟角色,实现动画数据的批量自动化修复,可提高修复效率和修复质量。
下面将结合附图,对本申请实施例提供的动画处理系统的架构进行介绍。
请参见图2,是本申请实施例提供的一种动画处理系统的架构图。如图2所示,该动画处理系统包括数据库201和计算机设备202;数据库201可以和计算机设备202之间通过有线或无线的方式建立通信连接。其中,计算机设备202用于执行动画处理流程;数据库201用于为计算机设备202的动画处理过程提供数据支持。
按照部署位置划分,数据库201可以是计算机设备202的本地数据库,也可以是能够与计算机设备202建立连接的云数据库。按照属性划分,数据库201可以是公有数据库,即向所有计算机设备开放的数据库;也可以是私有数据库,即仅向特定的计算机设备(如计算机设备202)开放的数据库。数据库201可用于存储待修复的动画序列,还可用于存储虚拟角色在参考姿态下的角色模型。
计算机设备202执行的动画处理流程大致可包括:①获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型,然后从动画序列中确定出待处理的目标动画帧。其中,动画序列和角色模型可以从数据库201中获取,或者计算机设备可基于用户的输入而得到。②对目标动画帧中的虚拟角色的姿态进行修复处理。具体可确定出目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,然后按照运动约束规则来约束虚拟角色的各个关节的局部旋转改变量,进而得到各个关节的局部旋转修正量,基于各个关节的局部旋转修正量可得到关节的局部旋转参数,进而基于各个关节的局部旋转参数,能够生成虚拟角色的每个关节均满足约束的修正动画帧。由于局部旋转参数在用于控制虚拟角色的关节进行旋转时,可使得虚拟角色的关节变换在限制的合理范围内,这样,修正动画帧中虚拟角色的关节的姿态也就是正常的姿态,不会存在手指反折、打结等异常,进而修复蒙皮异常。另外,由于整个动画处理流程是全自动化的,无需人工参与,还可处理批量的动画序列,从而能够提升修复效率。
进一步地,在一个可实现的方式中,计算机设备可对动画序列中每个动画帧进行类似的处理,并得到每个动画帧对应的修正动画帧,进而基于各个修正动画帧生成修正动画序列并输出。在另一个可实现的方式中,计算机设备也可以目标动画帧对应的修正动画帧为参考,对该动画序列中目标动画帧之后的动画帧进行优化,从而得到各个动画帧对应的修正动画帧,并基于各个修正动画帧生成修正动画序列并输出。为获取更高质量的动画,在输出之前还可对修正动画序列中各个修正动画帧进行平滑处理,从而使得动画更加流畅、不抖动。
计算机设备202可包括终端设备和服务器中的任一者或两者,终端设备包括但不限于:智能手机、平板电脑、智能可穿戴设备、智能语音交互设备、智能家电、个人电脑、车载终端、智能摄像头等设备,本申请对此不作限制。对于终端设备的数量,本申请不做限制。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。对于服务器的数量,本申请不做限制。在一种实现方式中,当计算机设备202包括服务器以及终端设备时,可由服务器执行上述动画处理流程的内容,得到修正动画帧并下发给终端设备,以使得终端设备输出修正动画帧。
本申请提出的动画修复方案能够以独立工具库的形式提供,并支持多种操作系统(例如主流的Windows、Linux操作系统),可通过c++、python等语言调用,也可作为插件整合进游戏引擎(UE)中使用,这样并不一定限制用户在相应软件内才能使用基于该动画处理方法的修复功能,而是可独立于大型软件中使用,使得该动画处理方法的使用更加灵活。另外,动画序列是驱动虚拟角色的关键,其中动画修复是保证动画质量的必备环节,本方案可以直接和已有的动画生产流程结合。在具体应用中,本方案可以应用于任何需要生成高质量多维(例如三维)动画的应用,比如游戏、影视等。基于本方案,可以自动化批量修复由动画数据引起的蒙皮异常形变问题,保证动画质量。
接下来对本申请实施例提供的动画处理方法进行介绍。
请参见图3,是本申请实施例提供的一种动画处理方法的流程示意图。该动画处理方法可以由计算机设备(如图2所示的动画处理系统中的计算机设备202)来执行,该动画处理方法可以包括以下S301-S305所描述的内容。
S301,获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型。
计算机设备可从数据库中获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型,也可以接收实时输入的关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型。
关于虚拟角色的动画序列包括有序排列的至少一个动画帧,且每个动画帧包括虚拟角色。每个动画帧可表示一帧动画,因此,若本申请中提及例如:动画序列中的第1帧也可理解成是动画序列中的第1个动画帧。虽然不同动画帧中虚拟角色的姿态有所差别,但相邻动画帧之间是关联的,这表现在相邻动画帧中虚拟角色所处的姿态变化比较细微。示例性地,动画序列中虚拟角色A在第1帧到第10帧是处于跑步的姿态,而在第11帧到20帧中虚拟角色处于行走的姿态。该动画序列可以是虚拟角色的身体动画,可用于驱动虚拟角色的模型骨架中关节的变换而使得虚拟角色在虚拟空间中的姿态发生改变。该动画序列可以是待修复的动画序列,在动画序列中可能存在部分动画帧中虚拟角色存在蒙皮形变的情况。
虚拟角色在参考姿态下的角色模型可用于模拟虚拟角色所处的参考姿态。该角色模型也可理解成是虚拟角色的模型骨架,用于模拟虚拟角色的骨骼和关节。在参考姿态下的角色模型是虚拟角色进行姿态变换的基础模型。针对动画序列所包括的各个动画帧,各动画帧中相应姿态下的虚拟角色均可基于在参考姿态下的角色模型生成,具体可将关节有关的数据施加至角色模型上,以使得角色模型的参考姿态发生变换而得到虚拟角色在动画帧中的姿态。
S302,确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量。
在一种具体实现中,动画序列中包括至少两个动画帧,那么计算机设备可将动画序列中的任一动画帧或者特定动画帧确定为待处理的目标动画帧。也即,目标动画帧可以是动画序列中的任一个动画帧,例如动画序列中的第1个动画帧、第2个动画帧。特定动画帧可以是指定的任一动画帧或者指定位置范围内的任一动画帧,例如动画序列中前5帧中的任一帧,动画序列中的第一个动画帧。本申请对此不做限制。可理解的是,若动画序列中仅包括一个动画帧,那么计算机设备可将该动画帧作为目标动画帧。
目标动画帧中的虚拟角色包括多个关节,本申请中多个是指至少两个,即两个及两个以上。虚拟角色包括的至少两个关节是构成虚拟角色的模型骨架的一部分。虚拟角色包括的关节可以是身体关节,例如:四肢、脊柱、锁骨、肩膀、手肘等身体部位的关节。动画序列的各个动画帧中虚拟角色所包括的关节数量可相同。
目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转。旋转轴是关节旋转所绕的方向轴,示例性地,旋转轴可以包括三维空间中的X轴、Y轴、Z轴等。如果从关节方向上看,旋转轴可以包括父关节指向子关节的单位向量,例如手肘关节指向手腕关节的单位向量,或与该单位向量正交的平面上的其他单位向量等等。任一关节可在一个或多个旋转轴上进行旋转,且任一关节在旋转轴上进行旋转可使得虚拟角色中的该关节在虚拟空间中的位置发生变化,从而使得虚拟角色的动作姿态发生变化。任意两个关节可在相同数量的旋转轴上进行旋转。例如:肘关节和腕关节均可绕3个旋转轴进行旋转,任意两个关节也可在不同数量的旋转轴上进行旋转,例如脚踝关节可绕3个旋转轴进行旋转,而膝关节仅能绕1个旋转轴进行旋转。关节绕旋转轴进行旋转可对应旋转自由度,该旋转自由度与关节旋转所绕的旋转轴的数量相同。例如,在三维空间中,旋转自由度可包括绕X轴旋转的自由度、绕Y轴旋转的自由度以及绕Z轴旋转的自由度。
每一个关节对应有局部旋转改变量,多个关节中目标关节的局部旋转改变量是指:虚拟角色的目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量。其中,目标关节可以是虚拟角色的多个关节中的任一关节。目标动画帧中虚拟角色的目标关节可能绕其自身的坐标系发生局部旋转,也就是说,对于目标动画帧中虚拟角色的任一关节,关节相对于自身或其他连接关节发生的旋转可称为局部旋转,例如肘关节弯曲时,可以认为肘关节发生了局部旋转。角色模型中也可包括多个关节,角色模型中的每个关节也对应有局部旋转,由于目标动画帧中虚拟角色可基于参考姿态下的角色模型得到,参考姿态可作为虚拟角色的初始姿态,在参考姿态下的角色模型中关节的局部旋转可以是记为0度,例如[0°,0°,0°],即相对于初始姿势,角色模型中的关节没有发生旋转。角色模型中同目标关节对应的参考关节是与目标关节具有相同语义的关节。例如目标关节为手肘关节,那么角色模型中与目标关节对应的参考关节也是手肘关节。而目标动画帧中由于虚拟角色的姿态可能并不是参考姿态,因此目标关节的局部旋转相对于参考姿态下的参考关节的局部旋转可能存在差异。例如:参考姿态为双手水平张开置于身体两侧,自然直立的姿态,如果目标动画帧中虚拟角色的肘关节弯曲,那么虚拟角色的肘关节的局部旋转相对于参考姿态下的肘关节的局部旋转之间存在差异。因此,计算机设备在确定目标动画帧中虚拟角色包括的关节的局部旋转改变量时,以目标关节为例,可比较在目标动画帧中虚拟角色的目标关节的局部旋转及在参考姿态下的角色模型中参考关节的局部旋转之间的差异,从而得到目标关节相对于参考关节的局部旋转改变量,该局部旋转改变量在一定程度上可反映目标关节相对于参考关节的局部旋转的变化程度。示例性地,目标动画帧中虚拟角色的肩关节的局部旋转与角色模型中肩关节的局部旋转之间的变化量,即可作为局部旋转改变量,可用于反映肩关节的旋转变化程度。
在虚拟角色的骨骼模型中,各个关节的旋转以及它们相互之间的连接决定了虚拟角色的姿态。每个关节通过其旋转改变了骨骼的朝向和位置,并累积到整个骨骼模型中,形成虚拟角色的总体姿态。因此,目标关节的局部旋转改变量也可理解成是虚拟角色的一个关节从参考姿态到目标动画帧中的当前姿态的旋转改变量,各个关节的局部旋转改变量可组合描述目标动画帧中虚拟角色的当前姿态和参考姿态(例如Tpose)之间的差异。
S303,按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量。
在一种具体实现中,运动约束规则可用于约束虚拟角色中关节的旋转运动。计算机设备按照运动约束规则对各个关节的局部旋转改变量进行约束处理的大致逻辑为:获取目标动画帧中虚拟角色的各个关节对应的旋转约束信息,然后采用每一个关节对应的旋转约束信息对目标动画帧中虚拟角色的相应关节的局部旋转改变量进行约束处理,得到每一个关节的局部旋转修正量。其中,任一关节对应的旋转约束信息可用于约束关节绕一个或多个旋转轴进行旋转的角度范围,不同关节的旋转约束信息可以不同,这具体体现在以下一个或多个方面:关节所绕的旋转轴不同,旋转角度范围不同。旋转约束信息可包括一个或者多个旋转角度范围,每个旋转角度范围是相对于在参考姿态(例如Tpose)下的角色模型的关节的局部旋转而言的,以目标关节为例,目标关节的旋转角度范围可以是限制目标关节的局部旋转相对于参考姿态下的参考关节的局部旋转的改变量的范围。通过该旋转约束信息对局部旋转改变量进行约束处理,可以将局部旋转改变量约束到指定的范围内,从而限制关节的局部旋转改变量,达到限制关节的局部旋转的目的。最终得到的局部旋转修正量是限制后的局部旋转改变量,即处于旋转角度范围的局部旋转改变量。针对任一关节,其局部旋转修正量可使得该关节的旋转是处于合理范围内的,从而使得动画数据是合理的,这样能够修正由于关节的旋转超出合理范围所带来的蒙皮异常等问题。
S304,根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数。
在一种具体实现中,由于局部旋转修正量是限制后的局部旋转改变量,而局部旋转改变量是相对于参考姿态下对应关节的旋转而言的,以目标动画帧中虚拟角色的目标关节为例,基于目标关节的局部旋转修正量和在参考姿态下对应的关节的局部旋转参数可确定出目标关节的局部旋转修正参数。该局部旋转修正参数是限制后的局部旋转参数,可用于表示目标关节在限制范围内的局部旋转。目标关节在限制范围内的局部旋转可以是指目标关节的局部旋转被限制在目标关节的旋转约束信息所指示的旋转角度范围内。在具体表示上,本申请中局部旋转参数和局部旋转修正参数可以是欧拉角、旋转矩阵或者四元数等中的任一种,本申请在此不做限制。可理解的是,目标动画帧中虚拟角色的任一关节的局部旋转修正参数均可按照上述方式来得到。
S305,根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧。
在一种可行的实现方式中,根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,可生成目标动画帧应的修正动画帧。进一步地,对于动画序列中的其他动画帧,例如目标动画帧之后的动画帧,可参考目标动画帧对应的修正动画帧中关节的局部旋转的有关参数,或者参考相邻的动画帧中关节的局部旋转的有关参数,生成该动画帧对应的修正动画帧。
计算机设备在根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,生成目标动画帧对应的修正动画帧时,可将目标动画帧中虚拟角色的各关节的局部旋转修正参数应用到虚拟角色的骨骼模型上,或者说应用到处于参考姿态的角色模型上,从而生成虚拟角色的修正动画帧,具体可根据关节的局部旋转修正参数确定关节的全局旋转参数,该全局旋转参数可用于指示关节在全局坐标系(例如世界坐标系)下的旋转,进而可根据关节的全局旋转参数来更新关节在虚拟空间中的位置,使得虚拟角色的姿态得到更新,并得到修正动画帧。由于局部旋转修正参数可将虚拟角色的关节的局部旋转限制在合理范围内,因此基于局部旋转修正参数所生成的修正动画帧中虚拟角色的关节是处于合理的位置上,该修正动画帧中虚拟角色的关节变换是合理的,即不会出现如手肘打结、手指反折等异常问题,从而能够解决蒙皮形变,保证动画质量。
可理解的是,计算机设备可获取到多个不同的动画序列,不同动画序列所关联的虚拟角色可不同,或者是关于同一虚拟角色的不同动画序列。针对每个动画序列可按照上述S301-S304所描述的步骤进行动画修复,进而实现批量、自动化地处理动画序列,提高动画序列的处理效率,且能够使得质量可控、处理更加灵活,并进一步降低人工成本。
本申请实施例提供的动画处理方法,考虑了动画数据本身的合理性,通过运动约束规则可对虚拟角色的关节旋转进行限制,使得限制后的关节旋转在合理范围内,通过将关节旋转限制在一定范围内,可修复由于动画数据本身不合理而导致的蒙皮异常,以保证动画质量。并且可批量自动化处理大量动画数据,并可独立于任何大型软件使用,可覆盖的使用场景更加全面。
请参见图4,是本申请实施例提供的另一种动画处理方法的流程示意图。该动画处理方法可以由计算机设备(如图2所示的动画处理系统中的计算机设备202)来执行,该动画处理方法可以包括以下S401-S407内容。
S401,获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型。
S402,确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量。
在一个实施例中,计算机设备在确定目标动画帧中虚拟角色的各关节的局部旋转改变量时,以多个关节中目标关节的局部旋转改变量的确定方式为例进行说明,其具体实现可包括如下内容:首先,计算机设备可获取目标动画帧中虚拟角色的目标关节对应的局部旋转参数,以及在参考姿态下的角色模型中与目标关节对应的参考关节的局部旋转参数;然后,根据目标关节的局部旋转参数及参考关节的局部旋转参数进行差异计算,得到目标关节相对于参考关节的局部旋转改变量。
具体的,目标关节的局部旋转参数用于表示目标关节的局部旋转,关节的局部旋转描述了在特定姿势下关节相对于自身或相对于其他连接关节的旋转情况,可理解成是目标关节相对于父关节的旋转。参考关节是角色模型中与目标关节具有相同语义的关节,示意性的,目标关节是虚拟角色的手肘关节,那么参考关节是在参考姿态下的角色模型中的手肘关节,并且目标关节的局部旋转参数可用于表示目标动画帧中虚拟角色所处姿态下的手肘关节相对于自身或其连接的肩关节的旋转情况,参考关节的局部旋转参数可用于表示在参考姿态(如Tpose)下角色模型的手肘关节相对于自身或其连接的肩关节的旋转情况。
局部旋转参数可以是欧拉角、四元数或者旋转矩阵等。基于不同类型的局部旋转参数对关节的局部旋转的表示,计算机设备在基于获取到的两个局部旋转参数进行差异计算时,可以具体按照如下方式执行:①如果关节的局部旋转参数为欧拉角,那么计算机设备可计算目标关节的欧拉角和参考关节的欧拉角之间的差值,并将计算得到的差值作为目标关节的局部旋转改变量。②如果关节的局部旋转参数为四元数,那么计算机设备可对参考关节的四元数取逆得到逆四元数(conjugate),然后将逆四元数与目标关节的四元数相乘,获取到的新的四元数即为局部旋转改变量。③如果关节的局部旋转参数为旋转矩阵,那么计算机设备可对参考关节的旋转矩阵进行取逆处理,得到逆矩阵,然后将逆矩阵与目标关节的旋转矩阵进行相乘,得到结果矩阵,并将从结果矩阵中提取的旋转向量表示作为局部旋转改变量。示例性地,按照如③所示的方式,可有如下计算表达式1):
式1)
其中,表示局部旋转改变量,R表示目标关节的旋转矩阵,/>表示参考关节的旋转矩阵/>对应的逆矩阵,是对参考姿态(如Tpose)下参考关节的旋转矩阵/>进行取逆处理得到的。
可理解的是,对于虚拟角色包括的多个关节中的任一关节,均可按照上述为确定目标关节的局部旋转改变量的确定方式来进行类似的计算,从而可得到虚拟角色包括的每个关节的局部旋转改变量。可见,对于关节的局部旋转改变量的计算,可将关节的局部旋转与参考姿势下关节的局部旋转进行比较得到,并且依据不同类型的参数表示,可采取相应的方式来进行处理,从而使得局部旋转改变量是可靠且准确的。
S403,按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量。
在一个实施例中,计算机设备可通过定义虚拟角色的关节的语义来获取运动约束规则。具体实现中,计算机设备可先对虚拟角色的每一个关节进行语义定义,得到虚拟角色中每一个关节的语义。然后,可按照虚拟角色中各个关节的语义在约束信息集合中进行查询处理,得到每一个关节对应的旋转约束信息,运动约束规则是根据每一个关节各自对应的旋转约束信息生成的。
具体的,计算机设备在进行关节语义定义时,可获取虚拟角色的模型骨架和内部骨架的对应关系,其中,模型骨架是为虚拟角色定义的骨架,具体是指虚拟角色的骨骼模型中的骨骼层次结构,可用于描述虚拟角色的姿态。内部骨架是指系统内一套标准骨架,包括驱动角色所必需的主要关节(例如四肢、脊柱、头等身体部位的关节)。模型骨架和内部骨架之间的对应关系可由用户进行设定,通过该对应关系可确定虚拟角色包括的各个关节的语义。示例性地,如图5a所示的模型骨架与内部骨架之间的匹配示意图。如图5a中的(1)所示是虚拟角色的模型骨架中部分关节的名称,如图5a中的(2)所示是内部骨架的各个关节的定义。例如:角色骨骼名为mixamorig:LeftUpLeg的关节可匹配至内部骨架的ARLBONE_LEFTUPLEG关节,即表示角色骨骼的关节在语义上为左大腿根关节。通过确定虚拟角色的关节语义,可确定虚拟角色的哪个关节是头部关节,哪些关节是手部关节等,从而便于从约束信息集合中获取与关节有关的旋转约束信息并作用于该关节的局部旋转上。
约束信息集合中记录了多个关节的语义和各语义对应的旋转约束信息,任一关节对应的旋转约束信息用于约束相应关节绕一个或者多个旋转轴进行旋转的角度范围。
在一种可实现的方式中,一个关节对应的旋转约束信息可以由一个或多个旋转轴以及绕相应旋转轴的旋转角度范围确定,例如手肘关节的旋转约束信息可由三个旋转轴及绕相应旋转轴的旋转角度范围确定。旋转约束信息可包括锥形扭曲约束(即ConeTwist限制),那么关节所绕的旋转轴可以是自旋轴或者朝向轴,自旋轴可定义为参考姿态下的骨骼方向,即父关节指向子关节的方向,例如,手肘关节的自旋轴为:参考姿态(如Tpose)下由手肘关节指向手腕关节方向的单位向量。若一个关节没有与其相连的子关节,例如手指的最后一个关节,那么可采用父关节指向该关节的方向向量作为自旋轴。自旋轴可作为后续旋转分解时使用的轴,在自旋轴上的限制可约束关节的自旋程度。朝向轴是与自旋轴正交的平面上的单位向量。如果关节所绕的旋转轴包括两个朝向轴,那么这两个朝向轴是相互正交的单位向量,在朝向轴上的限制可约束骨骼的朝向范围,限制后的朝向范围可以为椎体结构(即Cone)。关节可从自旋轴向某个朝向轴旋转,这可理解成绕另一朝向轴的旋转。一个旋转轴可以是自旋轴或者朝向轴,多个旋转轴可以包括一个自旋轴和两个朝向轴,或者包括两个朝向轴,或者包括一个朝向轴和一个自旋轴,本申请在此不做限制。
上述约束信息集合能够以表格的形式进行表示。示例性地,虚拟角色为虚拟人物,虚拟角色的关节是指身体关节,各关节限制的自由度及具体数值能够以人体解剖学为基础进行设定,从而得到各个关节对应的旋转约束信息,具体参见下表。为方便表示,表中x轴表示自旋轴,yz轴表示朝向轴,对于上肢相关关节(锁骨、肩膀、手肘、手腕、手指),y轴定义为竖直向上方向在自旋轴正交平面上的投影,对于其余关节,y轴定义为Tpose下指向人体前方方向在自旋轴正交平面上的投影,z轴定义为xy轴的点积。如下表1所示的关节限制。
表1关节限制自由度及具体数值:
如上述表1 所示,x轴指向子关节,y默认为与x垂直的竖直向上(上肢)或向前(脊柱&下肢)方向。对于旋转范围,表上以身体左部分为例,逆时针旋转为正。旋转约束信息可包括旋转范围,该旋转范围是用于限制局部旋转改变量的角度范围,也可理解成是旋转角度范围。基于关节的语义可从中查找到相应的旋转约束信息,包括在相应旋转轴上的旋转范围。示例性地,若虚拟角色中某个关机的语义为“膝盖”,那么查询到的旋转约束信息包括:该关节的旋转范围[-130,0],旋转自由度1以及绕Z轴旋转。进一步地,计算机设备可根据各关节对应的旋转约束信息生成运动约束规则,该运动约束规则可被应用于对关节旋转的限制过程中,以将动画序列中虚拟角色的各关节旋转限制在相应范围内。
在一个实施例中,运动约束规则中对应有针对目标关节的旋转约束信息,旋转约束信息包括目标关节的对应于自旋轴的自旋约束信息和目标关节对应于朝向轴的朝向约束信息。该自旋约束信息用于约束目标关节绕自旋轴旋转的自旋角度范围,该朝向约束信息用于约束目标关节绕朝向轴旋转的朝向角度范围;计算机设备在按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量时,具体可执行如下步骤①-步骤③。
步骤①对目标动画帧中虚拟角色的目标关节的局部旋转改变量进行分解,得到目标关节的自旋分量和目标关节的朝向分量。
在一种具体实现中,计算机设备在分解局部旋转改变量时,具体可将局部旋转沿自旋轴进行分解,从而得到目标关节的自旋分量以及目标关节的朝向分量。其中,目标关节的自旋分量是目标关节绕自旋轴进行旋转的分量,该自旋分量可以是以自旋轴为旋转轴的轴角表示;目标关节的朝向分量是指目标关节从自旋轴方向旋转到当前骨骼朝向的分量,也可理解成是绕朝向轴旋转的分量,具体可以是从自旋轴方向旋转到当前骨骼朝向所形成的角度,其中,当前骨骼朝向是指目标动画帧中虚拟角色所处姿态下目标关节的骨骼朝向。在具体分解过程中,可采用朝向-自旋(Swing-Twist)分解算法,通过该分解算法可将局部旋转改变量分解为绕自旋轴旋转的自旋分量以及绕朝向轴旋转的朝向分量。即如下式2)所示:
式2)
其中,表示局部旋转改变量,/>表示朝向分量,/>表示自旋分量。
步骤②根据目标关节的旋转约束信息中包括的自旋约束信息,对目标关节的自旋分量进行约束处理,得到目标关节的第一旋转修正量,并根据目标关节的旋转约束信息中包括的朝向约束信息,对目标关节的朝向分量进行约束处理,得到目标关节的第二旋转修正量。
目标关节的自旋约束信息和朝向约束信息均可理解为对目标关节的关节限制。自旋约束信息是对目标关节在自旋轴上的限制,其约束了目标关节绕自旋轴旋转的自旋角度范围,基于骨骼和关节之间的关系,也就约束了骨骼的自旋程度。朝向约束信息是对目标关节在朝向轴上的限制,其约束了目标关节绕朝向轴旋转的朝向角度范围,基于骨骼和关节之间的关系,也就约束了骨骼的朝向范围。针对自旋约束信息和朝向约束信息,可如上表1所示,如:锁骨关节的自旋约束信息包括绕x轴旋转的旋转范围[-30,30],朝向约束信息包括绕y轴旋转的旋转范围[-25,20]以及绕z轴旋转的旋转范围[-15,75]。通过上述旋转范围的限制,可将分解得到的自旋分量和朝向分量限制在对应范围内。示例性地,如图5b展示了空间中任意的朝向分量在限制前后的朝向范围,10标记的线表示限制前的朝向,20标记的线表示限制后的朝向,11标记的长线表示自旋轴,12和13标记的长线分别表示朝向分量定义中的朝向轴。
通过自旋约束信息对自旋分量进行约束处理,所得到的第一旋转修正量是处于自旋约束信息所约束的自旋角度范围内的一个自旋分量,可理解成是限制后的自旋分量。通过朝向约束信息对朝向分量进行约束处理,所得到的第二旋转修正量是处于朝向约束信息所约束的朝向角度范围内的一个朝向分量,可理解成是限制后的朝向分量。
在一种可行的实现方式中,自旋约束信息包括构成自旋角度范围的第一旋转角和第二旋转角,该第一旋转角表示目标关节绕自旋轴顺时针旋转的最大角度,第二旋转角表示目标关节绕自旋轴逆时针旋转的最大角度。示例性地,如前述表1中手肘关节绕x轴旋转的旋转范围[-10,10]即可表示自旋角度范围,而-10表示手肘关节绕自旋轴顺时针旋转的最大角度,10表示手肘关节绕自旋轴逆时针旋转的最大角度。自旋分量是指目标关节(沿对应方向,如顺时针或逆时针)绕自旋轴旋转的轴角。计算机设备在根据目标关节的自旋约束信息对目标关节的自旋分量进行约束处理时,具体可以执行如下内容:将目标关节的自旋分量对应的轴角与自旋约束信息对应的自旋角度范围进行比较;若目标关节的自旋分量对应的轴角处于自旋角度范围内,则将目标关节的自旋分量确定为目标关节的第一旋转修正量;若目标关节的自旋分量对应的轴角处于自旋角度范围之外,则将第一旋转角和第二旋转角中与目标关节的自旋分量对应轴角之间的差值的绝对值较小者确定为目标关节的第一旋转修正量。
具体地,计算机设备可先判断轴角是否在所约束的自旋角度范围内,如果目标关节自旋对应的轴角处于自旋角度范围内,那么说明目标关节的自旋运动是合理的,而不需对自旋分量进行修正,因此可直接将该轴角确定为目标关节的第一旋转修正量,此时,目标关节的第一旋转修正量即目标关节的自旋分量。如果目标关节自旋对应的轴角不在自旋角度范围内,那么说明目标关节的自旋运动可能是不合理的,存在蒙皮形变的问题,因此可通过自旋约束信息修正该轴角,具体可将轴角与自旋角度范围的两个旋转角进行比较,计算出轴角与两个旋转角各自的差值后取绝对值,再将绝对值小的旋转角确定为第二旋转修正量。示例性地,轴角为-30,自旋约束信息所约束的自旋角度范围为[-10,10],那么轴角与第一旋转角(-10)之间的差值的绝对值为20,轴角与第二旋转角(10)之间的差值的绝对值为40,进而可将第一旋转角确定为目标关节的第一旋转修正量,从而实现对目标关节的轴角的调整。
上述方式中,通过轴角与构成自旋角度范围的两个旋转角进行比较,可快速确定出目标关节的自旋是否超出约束的角度大小,进而在超出约束的角度大小时,将其调整至所约束的自旋角度范围内,可实现对目标关节的自旋程度的限制,保证目标关节在自旋轴上的运动是合理的。
在一种可行的实现方式中,朝向约束信息包括构成朝向角度范围的张角。计算机设备在根据目标关节的朝向约束信息对目标关节的朝向分量进行约束处理时,具体可以执行如下内容:首先可根据朝向约束信息所指示的朝向角度范围确定锥体,并根据朝向分量确定锥体的中心轴旋转至目标关节的骨骼朝向所对应的旋转轴及旋转角。该椎体的中心轴可以是目标关节的自旋轴,分解出的朝向分量可指示目标关节的当前骨骼朝向,从而基于该朝向分量可确定目标关节从中心轴旋转至当前骨骼朝向所对应的旋转轴和旋转角,该旋转角是朝向分量对应的实际旋转角,旋转轴可以与中心轴所在平面正交。然后,可根据椭圆方程确定锥体在旋转轴所在方向的张角,进而比较张角与旋转角之间的大小。该张角是处于朝向角度范围内的最大旋转角。若张角小于旋转角,则将张角确定为目标关节的第二旋转修正量。这是因为在张角小于旋转角的情况下,说明朝向分量对应的旋转角超出了朝向约束信息所约束的朝向角度范围,目标关节的朝向是不合理的,为此可将张角确定为目标关节的第二旋转修正量来限制目标关节的朝向,即第二旋转修正量是限制后的朝向分量。若张角大于旋转角,则将旋转角确定为目标关节的第二旋转修正量。这是因为在张角大于旋转角的情况下,说明朝向分量还处于朝向约束信息所约束的朝向角度范围,由于该旋转角是基于朝向分量确定的,基于旋转角所确定的第二旋转修正量也可理解成是未限制的朝向分量。
示例性地,对于朝向分量的限制,可参见图5c,如图5c所示的锥体,其中,22所标记的线条表示限制前的朝向分量,23所标记的线条表示限制后的朝向分量,24所标记的弧线表示的是锥体在旋转轴方向的张角,25所标记的弧线表示的是锥体的中心轴旋转至目标关节的骨骼朝向所对应的旋转角。26所标记的是朝向分量所在的旋转轴。如图5c所示,朝向分量对应的旋转角大于该椎体所约束的张角,因此,限制后的朝向分量是23所标记的新的朝向分量,与限制前的朝向分量具有不同的朝向。
通过上述方式,可将求解出的旋转角与在相同旋转轴方向上的张角进行比较,进而快速确定出朝向分量是否处于满足朝向约束,并基于实际的旋转角与所约束的张角之间的大小确定是否对朝向分量进行限制,从而较为准确地得到处于朝向角度范围内的第二旋转修正量。
步骤③根据第一旋转修正量和第二旋转修正量,得到目标关节的局部旋转修正量。
由于前述对局部旋转改变量进行了分解,再限制得到两个旋转修正量,而第一旋转修正量可能是限制后的自旋分量或原本分解出的自旋分量,第二旋转修正量也可能是限制后的朝向分量或原本分解出的朝向分量,基于此,计算机设备可将第一旋转修正量和第二旋转修正量进行合并处理,从而得到目标关节的局部旋转修正量。在具体表达式上,可如下式3)所示:
式3)
其中,表示目标关节的局部旋转修正量,/>表示目标关节的第一旋转修正量,/>表示目标关节的第二旋转修正量。
由于对自旋分量和朝向分量均执行了限制再进行合并,因此所得到的局部旋转修正量可能是一个新的局部旋转改变量,可理解成是限制后的局部旋转改变量。通过该局部旋转修正量可将目标关节的局部旋转与参考姿态下的参考关节的局部旋转之间的改变量限制在合理的范围内,从而对一些超出合理范围的关节变换进行修正,使得动画数据是合理的。
可理解的是,虚拟角色的多个关节中的各个关节均可按照上述步骤①-步骤③的方式执行,以得到各自的局部旋转修正量,进而基于局部旋转修正量可修正关节的局部旋转。另外,上述步骤①-步骤③所示的步骤可理解成是对目标关节的限制的建模所需的流程,具体建模为椎体扭曲(ConeTwist)限制。基于椎体扭曲(ConeTwist)限制,计算机设备能够将目标关节的旋转沿一根轴(自旋轴)分解为绕该轴旋转的自旋分量及从该轴方向旋转到当前骨骼方向的朝向分量,分别对两分量施加限制后再合并,便可能够得到限制后的旋转,使得对关节的限制更加真实、可靠。
S404,根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数。
在一种具体实现中,在得到各个关节对应的局部旋转修正量之后,计算机设备可以根据各局部旋转修正量对目标动画帧中虚拟角色的关节的局部旋转参数进行修正,得到目标动画帧中虚拟角色的关节的局部旋转修正参数。计算机设备具体可以执行如下内容:获取在参考姿态下的角色模型中每一个关节的局部旋转参数;根据各个关节的局部旋转修正量和在参考姿态下的角色模型中相应关节的局部旋转参数,确定目标动画帧中虚拟角色的各个关节的局部旋转修正参数。
具体地,以多个关节中的目标关节为例,计算机设备可根据目标关节的局部旋转修正量和在参考姿态下角色模型中与目标关节对应的参考关节的局部旋转参数,确定出目标关节的局部旋转修正参数。目标关节的局部旋转修正参数的计算的表达方式如下式4):
式4)
其中,表示目标关节的局部旋转修正参数,/>表示目标关节的局部旋转修正量,/>表示参考关节的局部旋转参数。
对于虚拟角色中的每一个关节,均可按照上述方式进行计算,从而得到虚拟角色中每个关节的局部旋转修正参数。参考姿态下的角色模型的关节的局部旋转是作为未旋转的参考,相比于局部旋转参数,任一关节的局部旋转修正参数可以是限制后的局部旋转参数,可表示关节限制在相应角度范围内的局部旋转,基于该局部旋转修正参数可使得关节的旋转在合理范围内,而不会出现蒙皮异常等问题。
在一种实现方式中,计算机设备在根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧时,具体可执行如下S405-S407所示的步骤。上述S401-S404可以是应用关节限制使得目标动画帧中虚拟角色的各关节处于所约束的预设范围内的实现方式,在一种具体实现中,为了进一步提升动画帧的修复质量,在根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,生成目标动画帧对应的修正动画帧时,可按照如下S405-S407所示的内容,来进一步对关节的局部旋转进行优化,进而生成目标动画帧的修正动画帧。在另一种具体实现中,针对动画序列中除目标动画帧之外的动画帧,可直接按照如下S405-S407所示的内容对关节的局部旋转进行优化,并在优化过程中,实现对关节的局部旋转的限制。
S405,获取用于进行姿态优化的优化变量X。
优化变量X用于表示:优化对象帧中虚拟角色的每一个关节的局部旋转参数优化量。该优化对象帧为动画序列中的目标动画帧或者动画序列中目标动画帧之后的动画帧。若优化对象帧为目标动画帧之后的动画帧,那么优化对象帧可与目标动画帧相邻或者不相邻。示例性地,如果目标动画帧是动画序列中的第1帧,那么优化对象帧可以是动画序列中位于第1帧之后的动画帧,例如第2帧、或者第3帧。如果目标动画帧是动画序列中的第5帧,那么优化对象帧可以是动画序列中位于第5帧之后的动画帧,例如相邻的第6帧,或者第7帧。示意性地,优化变量X中所包括的各个关节的局部旋转参数优化量能够以轴角进行表示。
局部旋转参数优化量包括:优化对象帧中虚拟角色的每一个关节的局部旋转参数相对于各个关节对应的初始状态参数的改变量。初始状态参数可包括用于表示初始状态下关节的局部旋转的参数,可记为。初始状态是指采用优化算法对优化对象帧中虚拟角色的姿态进行第一次迭代优化时虚拟角色所处的姿态,在数学表示上可以包括虚拟角色的各关节的变换,基于优化对象帧的不同,初始状态下各个关节的局部旋转,可通过局部旋转参数或局部旋转修正参数来指示。
在优化对象帧为所述目标动画帧时,优化变量X是根据目标动画帧中虚拟角色的各关节的局部旋转修正参数得到的。具体的,在对目标动画帧中虚拟角色进行姿态优化过程中的第一次迭代时,优化变量X可基于目标动画帧中虚拟角色的各关节的局部旋转修正参数和初始状态参数确定,在非首次迭代时,优化变量X可表示目标动画帧中虚拟角色的各关节的局部旋转优化参数和初始状态参数所包括的局部旋转修正参数之间的改变量,从而能够基于该优化变量X进行局部旋转参数的优化,得到当前次迭代的局部旋转优化参数。具体的,若优化对象帧为目标动画帧,则各个关节对应的初始状态参数包括:目标动画帧对应的修正动画帧中各个关节的局部旋转修正参数。此时,局部旋转参数优化量包括:目标动画帧中虚拟角色的每一个关节的局部旋转修正参数相对于各个关节对应的初始状态参数的改变量,由于初始状态参数包括局部旋转修正参数,如。此处的局部旋转参数优化量为0,即优化变量用于指示目标动画帧中虚拟角色的各个关节的局部旋转相对于初始状态下的关节的局部旋转是没有变化的,但在优化过程中,为保持优化对象帧中虚拟角色的姿态语义的一致性,可调整优化变量X,从而调整关节的局部旋转参数的调整,若第一次迭代,调整的是关节的局部旋转修正参数,若非首次迭代,调整的是前一次优化得到的局部旋转优化参数,进而在迭代优化过程中,可确定出合适的局部旋转优化参数,尽可能地保证姿态语义的一致性且对关节的旋转进行相应约束。
在优化对象帧为动画序列中目标动画帧之后的动画帧时,优化变量X是根据优化对象帧中的虚拟角色的各关节的局部旋转参数和各个关节的初始状态参数得到的。其中,优化对象帧之前的动画帧可包括优化对象帧之前的一个或多个动画帧中的任一动画帧,具体可以是优化对象帧的前一动画帧、该前一动画帧之前的动画帧。示例性地,优化对象帧为第3帧,那么优化对象帧之前的动画帧可以是第2帧,也可以是第1帧。这样,对于优化对象帧中虚拟角色的关节在优化过程中可以参考相邻的前一帧,也可以参考不相邻的动画帧。示意性的,优化对象帧是与目标动画帧相邻的前一动画帧,那么初始状态参数可包括该目标动画帧对应修正动画帧中虚拟角色的各关节的局部旋转优化参数,该局部旋转优化参数是对目标动画帧中虚拟角色的各关节的局部旋转修正参数进行优化得到的。因此,优化变量X可根据优化对象帧中的虚拟角色的各关节的局部旋转参数和目标动画帧对应修正动画帧中虚拟角色的各关节的局部旋转优化参数确定。具体的,若优化对象帧为动画序列中目标动画帧之后的动画帧,则各个关节对应的初始状态参数包括:虚拟角色在优化对象帧之前的动画帧对应的修正动画帧中各个关节的局部旋转参数。在一种可实现的方式中,该初始状态参数可包括优化对象帧的前一动画帧对应修正动画帧中各个关节的局部旋转参数,进一步地,如果前一动画帧为目标动画帧,那么,即修正动画帧中各个关节的局部旋转参数具体是局部旋转修正参数。如果前一动画帧不是目标动画帧,那么/>,/>表示前一动画帧对应的修正动画帧中虚拟角色的关节的局部旋转参数,具体是优化后的局部旋转参数,即局部旋转优化参数。示意性的,优化变量X的表达式可以为:X=/>。其中,若对优化对象帧中虚拟角色的关节执行姿态优化的第一次迭代,那么R可表示优化对象帧中虚拟角色的各关节的局部旋转参数,若对优化对象帧中虚拟角色的关节执行姿态优化的非首次迭代,那么R可表示优化对象帧中虚拟角色的各关节在前一次迭代所得到的局部旋转优化参数。
以虚拟角色的目标关节,优化对象帧为目标动画帧之后的动画帧为例,优化对象帧中虚拟角色的目标关节的局部旋转参数优化量可包括:优化对象帧中虚拟角色的目标关节的局部旋转参数和该优化对象帧的前一动画帧对应的修正动画帧中目标关节的局部旋转参数之间的改变量。其中,优化对象帧中虚拟角色的目标关节的旋转参数可用于表示优化对象帧中虚拟角色的目标关节的局部旋转,该局部旋转是未执行限制前目标关节相对于参考姿态下对应参考关节的旋转。
S406,采用优化变量X对优化对象帧中虚拟角色的相应关节进行局部旋转参数的优化,得到优化对象帧中虚拟角色的各个关节的局部旋转优化参数。
针对优化对象帧中虚拟角色的目标关节,若优化对象帧为目标动画帧,那么可采用优化变量X包括的目标关节的局部旋转参数优化量,对虚拟角色的目标关节的局部旋转修正参数进行优化,从而得到目标动画帧中虚拟角色的目标关节的局部旋转优化参数。若优化对象帧为目标动画帧之后的动画帧,那么可采用优化变量X包括的目标关节的局部旋转参数优化量,和前一动画帧对应的修正动画帧中虚拟角色的目标关节的局部旋转优化参数,实现对优化对象帧中虚拟角色的目标关节的局部旋转参数的优化,从而得到优化对象帧中虚拟角色的目标关节的局部旋转优化参数。该局部旋转优化参数是优化后的局部旋转参数,可用于表示目标关节优化后的局部旋转。针对以上优化过程,具体计算过程可如下式5)所示:
式5)
其中,表示优化对象帧中各个关节的局部旋转优化参数,X表示优化变量,表示优化对象帧中的各个关节在初始状态下的局部旋转,基于优化对象帧的不同,可以是局部旋转修正参数或者局部旋转优化参数。
由于动画序列中相邻两帧的姿态变化是比较微小的且存在关联,因此可使用前一帧的姿态优化所得到的结果,作为当前进行姿态优化的优化对象帧的初始状态参数,即初始状态参数包括前一动画帧的各个关节的局部旋转优化参数。示例性的,目标动画帧为动画序列中的第一帧,初始状态参数可包括各关节的局部旋转修正参数,该局部旋转修正参数是应用关节限制所得到的局部旋转参数,此时,初始状态是基于局部旋转修正参数生成的修正动画帧中的姿态。对目标动画帧可按照上述方式对关节的局部旋转修正参数进行优化,从而可得到局部旋转优化参数,以表示优化后的局部旋转,并基于该局部旋转优化参数得到该目标动画帧对应的修正动画帧,这样,对目标动画帧不仅应用了关节限制,还执行了姿态优化,使得修复得到的修正动画帧中虚拟角色的姿态语义与目标动画帧尽可能保持一致,且关节是正常变换的,这样有效地提升了目标动画帧的修复质量。示意性地,目标动画帧为第1帧,若优化对象帧为动画序列中的第2帧,初始状态参数可包括目标动画帧对应的修正动画帧中关节的局部旋转优化参数,若优化对象帧为第3帧,那么初始状态参数包括第2帧对应的修正动画帧中虚拟角色的各个关节的局部旋转优化参数,基于局部旋转优化参数,可对优化对象帧中关节的局部旋转参数进行优化,并在优化过程中实现对关节的约束以及尽可能保证姿态语义的一致性,从而生成高质量的修正动画帧。
在一种可实现的方式中,若计算机设备指定动画序列中的相应位置的多个动画帧为目标动画帧,那么对于目标动画帧中虚拟角色的关节的局部旋转可参考上述S401-S406所描述的内容进行关节限制和姿态优化,而对于目标动画帧之后的动画帧,则可参考距离最近的目标动画帧对应的修正动画帧,具体可根据目标动画帧对应的修正动画帧中虚拟角色的关节的局部旋转优化参数,对当前优化的优化动画帧中关节的局部旋转参数进行优化。由于优化得到的局部旋转优化参数可作为对优化对象帧进行姿态优化所得到的优化结果(或可简称为姿态优化结果)。因此,优化动画帧在优化时具体可参考相应目标动画帧的优化结果,例如,将动画序列中的第1帧、第5帧以及第10帧确定为目标动画帧,那么在处理第2-4帧时,可参考第1帧的姿态优化结果,在处理第6-9帧时,可参考第5帧的姿态优化结果,在处理第11-15帧时,可参考第10帧的姿态优化结果。
S407,根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧对应的修正动画帧。
在按照上述方式得到各个关节的局部旋转优化参数之后,可将该局部旋转优化参数应用于虚拟角色的骨骼模型中,更新虚拟角色的姿态,以生成优化对象帧对应的修正动画帧。可理解的是,为得到动画帧中虚拟角色的预期的姿态,局部旋转优化参数是一个迭代求取的过程,进而上述S405-S406可以在不同次优化中重复地执行,最终得到的修正动画帧中虚拟角色的姿态是优化后的姿态,在姿态语义上能够尽可能地与优化对象帧中虚拟角色的姿态语义保持一致,例如都是一个动画帧在修复前后的姿态语义都是跑步。
上述步骤S405-S407所描述的内容,通过优化变量对优化对象帧中虚拟角色的关节的局部旋转进行优化,从而可实现对优化对象帧中虚拟角色的姿态的优化,通过姿态优化可进一步调整虚拟角色的各关节的变换,并保证关节在不引起蒙皮异常形变的同时,保持整体姿态的语义在调整前后的一致性,从而进一步提升动画修复质量。
在一个可实现的方式中,计算机设备在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧对应的修正动画帧时,可具体执行如下步骤(1)-(4)。
(1)根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧的中间动画帧。
具体地,计算机设备可基于对优化对象帧中虚拟角色的各个关节的局部旋转参数进行优化后所得到的局部旋转优化参数,来生成优化对象帧的中间对象帧,通过中间对象帧的生成,可判断局部旋转优化参数是否是一个比较合适的参数来实现对关节的局部旋转的优化,以使得虚拟角色的姿态与预期接近。
(2)根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数和优化对象帧中相应关节的局部旋转参数,确定中间动画帧的目标损失。
该目标损失用于指示虚拟角色在中间动画帧中的动作姿态与目标动作姿态之间的差异。虚拟角色在中间动画帧中的动作姿态是虚拟角色在优化过程中,基于当前次优化所得到的局部旋转优化参数描述的动作姿态。虚拟角色的目标动作姿态是预期的动作姿态,是一个较为理想的结果,其姿态语义与虚拟角色在优化对象帧进行修复之前的姿态语义是一致的。在一种实现方式中,计算机设备在优化过程中可最小化目标损失,继而不断地调整优化变量X,以对优化对象帧中虚拟角色的关节的局部旋转参数的优化,使得目标损失不断减小。而目标损失越小,表示对虚拟角色在优化对象帧中的姿态进行优化的结果越接近于预期结果。
在一个实施例中,计算机设备在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数和优化对象帧中相应关节的局部旋转参数,确定中间动画帧的目标损失时,具体可从如下三个方面来计算:①对优化变量X取模得到正则项;该正则项用于约束优化变量X的改变量;②根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项;③根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与虚拟角色在优化对象帧中各个关节的旋转参数对应的姿态数据,确定动作约束项。然后,可将正则项、关节约束项以及动作约束项进行加权求和,得到中间动画帧的目标损失。即目标损失可包含三个损失函数项,分别正则项、关节约束项/>以及动作约束项/>,具体表示如下式6)所示:
式6)
其中,Loss表示目标损失,表示正则项的权重,/>表示关节约束项的权重,/>表示动作约束项的权重。上述正则项、关节约束项以及动作约束项均可视为损失项,通过权重可使得相应损失项在目标损失中所占的比例有所不同,关键的损失项可设置更高的权重,例如为尽可能地保证关节是在合理范围内变换,可将关节约束项的权重设置得较大,从而实现通过该关节约束项对关节进行限制。
下面对各个损失项的确定方式以及作用进行详细地介绍。
针对正则项:计算机设备对优化变量X进行取模可得到正则项,即,通过正则项约束对优化对象帧在迭代过程中优化变量的改变量进行约束,可使得虚拟角色的各个关节以尽可能小的调整幅度抵达满足关节约束和动作约束的姿态,保证动画的平滑和优化过程的稳定。
针对关节约束项:该关节约束项可定义为超出关节约束的角度大小。计算机设备在执行上述②时,可按照前述对局部旋转改变量进行约束的类似逻辑,即先分解再限制的部分逻辑,从而得到关节在优化过程中的关节约束项。可理解的是,若优化对象帧为目标动画帧,那么在优化过程的第一次迭代时,在对目标动画帧的局部旋转修正量进行约束时,所得到的关节约束项为0,即目标动画帧的关节的局部旋转是未超出约束范围的。而在优化过程中可能会为了使得姿态语义尽可能一致,使得关节的局部旋转超出约束范围,此时关节约束项不为0,但为了保证姿态语义一致,允许关节的局部旋转超出约束范围的角度小于预设角度阈值。具体地,可按照如下步骤计算得到关节约束项:首先,可根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数和在参考姿态下的角色模型中的各个关节的局部旋转参数,确定优化对象帧中虚拟角色的相应关节的局部旋转改变量。然后对优化对象帧中虚拟角色的各个关节的局部旋转改变量进行分解处理,得到优化对象帧中虚拟角色的相应关节的自旋分量和朝向分量。该自旋分量和朝向分量是优化过程中得到的分量,上述具体原理可参见上述介绍获取目标关节的局部旋转改变量,以及自旋分量和朝向分量的分解部分,在此不做赘述。接着,可根据优化对象帧中虚拟角色的各个关节的自旋分量和相应关节的自旋约束信息,确定各个关节对应的第一角度值,并根据各个关节的朝向分量和相应关节的朝向约束信息,确定各个关节对应的第二角度值;其中,第一角度值用于指示自旋分量与相应关节的自旋约束信息之间的差异,第二角度值用于指示朝向分量与相应关节的朝向约束信息之间的差异。如果优化过程中关节的自旋分量对应的轴角超出自旋约束信息所约束的自旋角度范围,那么第一角度值是自旋分量与构成自旋角度范围的两个旋转角之间的差值的绝对值中较小的绝对值,如果优化过程中关节的自旋分量对应的轴角处于自旋约束信息所约束的自旋角度范围内,那么该第一角度值可为零。同理,如果优化过程中关节的朝向分量对应的旋转角超出朝向约束信息所约束的朝向角度范围,那么第二角度值是自旋分量与构成朝向角度范围的最大张角之间的差值的绝对值,如果优化过程中关节的朝向分量对应的旋转角处于自旋约束信息所约束的朝向角度范围内,那么该第二角度值可为零。通过上述方式可计算出在自旋分量下和朝向分量下超出所约束的角度的大小,最终,可根据各个关节的第一角度值和第二角度值确定关节约束项。在一种具体实现中,可将第一角度值和第二角度值进行求和,所得到的数值即为关节约束项的数值。对于该关节约束项,在限制的理想状态下,该关节约束项取值为0,但是目标损失中还包括其他损失项,并且后续基于目标损失调整的是优化变量,因此,关节约束项可尽可能地逼近于0,而使得将关节的局部旋转尽可能限制在所约束的范围内。
针对动作约束项:动作约束项可包括位置项和旋转项两个部分。虚拟角色处于虚拟空间中,该虚拟空间可以是二维空间或者三维空间。计算机设备在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与虚拟角色在优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项时,具体可执行如下内容:首先可根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数确定相应关节在虚拟空间中的第一位置,并根据虚拟角色在优化对象帧中的各个关节的局部旋转参数确定相应关节在虚拟空间中的第二位置;具体的,上述第一位置和第二位置均是在虚拟空间中的全局位置,且第一位置是对优化对象帧中虚拟角色的关节的局部旋转进行优化后对应的全局位置,该第二位置是对优化对象帧中虚拟角色的关节在虚拟空间中的原本的全局位置,即未做关节限制、也未执行关节优化的位置。然后可采用第一位置和第二位置进行距离计算,得到虚拟角色中的相应关节对应的位置距离。以虚拟角色的目标关节为例,基于目标关节在虚拟空间中的第一位置和目标关节在虚拟空间中的第二位置可计算目标关节的欧式距离,作为动画序列中动画帧在修复前后关节的位置距离。可理解的是,针对虚拟角色中的任一关节,均可按照同目标关节的类似计算过程来得到虚拟角色的关节在动画帧被修复前后的位置距离,进而可将各个关节的位置距离确定为位置项。
基于关节的类型,计算机设备还可计算得到旋转项。具体包括如下内容:根据优化对象帧中虚拟角色在局部旋转优化参数下对应的第一关节指向第二关节的方向向量,与优化对象帧中虚拟角色在局部旋转参数下对应的第一关节指向第二关节的方向向量,得到旋转差异。其中,第一关节为第二关节的父关节,且第二关节为末端关节。末端关节是指虚拟角色的四肢末端的关节,例如手指关节。以优化对象帧中虚拟角色的目标关节为例,如果目标关节对应有子关节,且该子关节为末端关节,则可按照上述方式计算父关节指向子关节在修复前后的差异。具体可计算两个方向向量之差的模,进而将计算得到的模作为旋转差异。示例性地,如图5d所示的旋转项定义的示意图。第一关节为手腕关节,第二关节为手指关节,可计算手腕关节指向五指根关节的五个方向向量(如图5d所示的箭头部分)与修复前姿态的相应向量的向量之差的模,在修复前后向量之差的模即可作为旋转差异。可理解的是,针对优化对象帧中虚拟角色的任一关节,若没有对应的子关节,或者所对应的子关节不是末端关节,那么计算机设备可不计算该旋转项。
最终,计算机设备可根据位置距离和旋转差异得到动作约束项。在一种具体实现中,计算机设备可将位置距离和旋转差异直接求和,得到动作约束项。在另一种具体实现方式中,也可为位置距离和旋转差异各自配置一个权重,进而采用所配置的权重对位置距离和旋转差异进行加权求和,得到动作约束项。
通过上述正则项、关节约束项以及动作约束项等各个损失项来确定目标损失,所得到的目标损失能够从关节的局部旋转的调整幅度、关节是否满足旋转约束信息、动作约束以及虚拟角色的姿态语义一致性等方面,更加全面地衡量优化对象帧中虚拟角色的姿态在优化前后的效果,进而使得后续迭代过程中的优化能够更加准确,保持修复前后角色姿态的语义一致性,从而生成更高质量的身体动画。
(3)若目标损失满足变量优化条件,则对优化变量X进行调整,以便于根据调整后的优化变量X得到优化对象帧的修正动画帧。
在一种具体实现中,对优化对象帧中虚拟角色的各个关节的局部旋转参数的优化处理可采用相应的优化算法来实现,包括但不限于:SLSQP算法(序贯最小二乘规划算法,可用于处理边界约束、等式约束和不等式约束条件等),COBYLA算法(一种线性逼近约束优化方法)以及Jacobian(雅可比)算法等。还可使用开源库NLOPT(包含对目标损失进行全局或局部优化的算法)中的其他优化算法实现。本申请在此不做限制。
在一种可行的方式中,目标损失满足变量优化条件可以是当前次优化过程的目标损失所包括的正则项(或称为优化变量损失项),与上一次优化过程中的目标损失包括的正则项之间的差值的绝对值大于或等于预设阈值。例如,相邻两次迭代时优化变量的模的差值的绝对值大于0.0001。在另一种实现方式中,基于迭代优化过程中对目标损失的最小化,目标损失满足变量优化条件也可以是:目标损失大于或等于第一预设损失阈值,相邻两次迭代的目标损失之间的差值的绝对值大于或等于第二预设损失阈值。等等,本申请在此不做限制。
如果目标损失满足变量优化条件,表明中间动画帧中虚拟角色的姿态还未达到预期,那么此时可继续调整优化变量,对优化变量X进行调整之后,并按照调整后的优化变量继续对优化对象帧进行局部旋转参数的优化,进而按照类似的流程得到新的一次迭代优化对应的目标损失,再比对目标损失是否满足变量优化条件,并在满足变量优化条件时,重复执行上述内容,直至所得到的目标损失不满足变量优化条件。
(4)若目标损失不满足变量优化条件,则将中间动画帧作为优化对象帧对应的修正动画帧。
在一种可行的方式中,目标损失不满足变量优化条件当前次优化过程的目标损失所包括的正则项(或称为优化变量损失项),与上一次优化过程中的目标损失包括的正则项之间的差值的绝对值小于预设阈值。例如相邻两次迭代时优化变量的差值的绝对值小于0.0001。在另一种实现方式中,基于迭代优化过程中对目标损失的最小化,目标损失不满足变量优化条件也可以是:目标损失小于第一预设损失阈值,相邻两次迭代的目标损失之间的差值的绝对值小于第二预设损失阈值。等等,本申请在此不做限制。
如果目标损失不满足变量优化条件,说明当前次优化的局部旋转优化参数下的姿态是能够符合预期的,那么可终止优化,进而将中间动画帧作为优化对象帧对应的修正动画帧。可理解的是,在不满足变量优化条件之前,可对优化对象帧中虚拟角色的关节进行局部旋转参数的迭代优化。
通过上述对优化对象帧的迭代优化处理,可实现对动画序列中动画帧的修复,各个动画帧在修复前后的角色姿态语义可保持一致。具体地,通过对目标动画帧中虚拟角色的关节进行限制,并构建带关节限制约束的优化问题并求解,基于求解结果调整各关节变换,保证关节在不引起蒙皮异常形变的同时,整体姿态的语义和输入的动画序列一致。也就是说,上述方式能够使虚拟角色以不引入蒙皮问题的关节变换保持原始动画的姿态,且不会受限于个人的经验和审美,能保持修复前后角色姿态的语义一致性,控制动画修复质量。此外,考虑了动画数据的合理性,可批量自动化修复造成蒙皮异常形变的动画数据,输出无蒙皮异常问题的动画。由于能够批量化、自动化地处理,能够减少人力开销。
在一个实施例中,为使得最终得到的动画是流畅平滑的,计算机设备在确定得到虚拟角色的动画序列中的动画帧对应的修正动画帧之后,可生成动画序列对应的修正动画序列;然后,按照窗口化的加权平均处理规则,对修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于虚拟角色的修正动画。
在一种具体实现中,计算机设备在确定得到虚拟角色的动画序列中的目标动画帧对应的修正动画帧之后,可生成动画序列对应的修正动画序列。在此方式下,可将动画序列中存在明显蒙皮异常问题的动画帧指定为目标动画帧,若目标动画帧仅包含动画序列中的部分动画帧,例如仅包括第一帧,那么计算机设备可将该目标动画帧对应的修正动画帧与动画序列中除目标动画帧之外的动画帧进行组合,得到修正动画序列。这样,相比于动画序列,该修正动画序列可视为采用修正动画帧,对动画序列中的目标动画帧进行替换得到的。因此,所生成的修正动画序列中的修正动画帧可能是动画序列中原始的动画帧,也可能是进行关节限制,或关节限制和姿态优化后得到的修正动画帧。或者仅对动画序列中存在明显蒙皮异常问题的动画帧进行处理,得到的修正动画帧也可与原始的动画帧进行组合而得到修正动画帧。
在另一种具体实现中,计算机设备在确定得到虚拟角色的动画序列中各个动画帧对应的修正动画帧之后,可生成动画序列对应的修正动画序列。在此方式下,修正动画序列中的修正动画帧均是经过关节限制,或关节限制和姿态优化后得到的动画帧,这样,不仅能够使得关节在合理范围内变换,还可保持修正动画序列中虚拟角色的整体姿态语义与动画序列中虚拟角色的姿态语义的一致性。
对于动画序列中各个动画帧对应的修正动画帧,按照上述介绍有以下①-②方式:①动画序列中所有动画帧均可作为目标动画帧,计算机设备在按照如图4所示实施例中的处理流程处理完毕之后,可得到动画序列中各个动画帧分别对应的修正动画帧,这样,任一动画帧对应的修正动画帧中虚拟角色的所有关节的局部旋转是限制在相应范围内的,且是经过进一步优化后的局部旋转。进而可将这些修正动画帧按序进行组合,从而得到动画序列对应的修正动画序列。②动画序列中指定的动画帧作为目标动画帧,对于动画序列中的目标动画帧,按照如图3所示的实施例的处理流程,对目标动画帧中虚拟角色的关节的局部旋转进行限制后,得到目标动画帧对应的修正动画帧;或者按照如图4所示的实施例的处理流程,对目标动画帧中虚拟角色的关节的局部旋转进行限制后,并进一步对关节限制后的局部旋转进行优化,得到对应的修正动画帧。而对于动画序列中除目标动画帧之外的其他动画帧,例如位于目标动画帧之后的动画帧,则可按照S405-S407所示的处理流程,对动画帧中虚拟角色的关节的局部旋转进行优化,得到对应的修正动画帧。计算机设备在得到各个动画帧对应的修正动画帧之后可将这两种方式下得到的修正动画帧按序组合,得到修正动画序列。
在生成修正动画序列之后,计算机设备可对修正动画序列中的各个修正动画帧中关节的局部旋转参数进行平滑处理,从而得到平滑后的修正动画序列,该平滑后的修正动画序列是关于虚拟角色的修正动画。通过平滑处理可进一步调整各个关节变换所需的数值,使得修复后的动画流畅、无抖动。在一种具体实现方式中,在平滑处理的过程中,可采用窗口化的加权平均处理规则,在该规则下具体的处理如步骤(1)-步骤(4)所示。
步骤(1)确定修正动画序列中的目标修正动画帧,并将该目标修正动画帧作为平滑对象帧。
在一种具体实现中,计算机设备在确定目标修正动画帧时,可遍历修正动画序列中各个修正动画帧,并将遍历到的修正动画帧作为所确定的目标修正动画帧,进而将其作为平滑对象帧,以对其进行后续的平滑处理。
步骤(2)移动具有预设半径的平滑窗口。
移动后平滑窗口以平滑对象帧为窗口中心。该平滑窗口是计算机设备预先获取的具有预设半径的窗口,它的预设半径可记为L,窗口长度可记为。预设半径以修正动画帧的数量为单位,例如L=3,表示平滑窗口可以平滑对象帧为窗口中心,平滑窗口内可包括平滑对象帧、平滑对象帧的前3个修正动画帧以及后3个修正动画帧,即平滑窗口的窗口长度为7。可理解的是,如果平滑对象帧之前没有修正动画帧,那么修正动画序列中在平滑窗口内的修正动画帧的数量为L+1。如果平滑动画帧之前的修正动画帧的数量小于L,那么修正动画序列中在平滑窗口内的修正动画帧的数量小于2L+1。如果平滑对象帧之后没有修正动画帧或者修正动画帧的数量小于L,也是同理。
平滑窗口中每个位置对应有一个平滑权重。平滑窗口中每个位置是与该平滑窗口内的修正动画帧对应的位置,每个位置对应动画序列中一个修正动画帧。示例性地,如图6所示,平滑对象帧为修正动画序列中的第5个修正动画帧,平滑窗口的预设半径为2,那么平滑窗口内第0个位置对应第3个修正动画帧,第1个位置对应第4个修正动画帧,第2个位置对应平滑对象帧(即第5个修正动画帧),第3个位置对应第5个修正动画帧,第4个位置对应第7个修正动画帧。平滑窗口内第i个位置对应的平滑权重可记为wi,基于平滑窗口的窗口长度,i的取值范围可以是0-2L。在对不同平滑对象帧进行平滑处理时,平滑窗口中每个位置对应的平滑权重可以是固定不变的,平滑窗口中每个位置对应的平滑权重可作用于对应位置的修正动画帧上,进而使得不同修正动画帧在对平滑动画帧进行平滑过程中发挥相应的作用。
步骤(3)针对虚拟角色中的目标关节,获取位于平滑窗口内的各个修正动画帧中虚拟角色的目标关节的局部旋转参数、与平滑对象帧中虚拟角色的目标关节的局部旋转参数之间的点积,并使用符号函数统一旋转方向后按照平滑权重进行加权平均处理,得到平滑对象帧中虚拟角色的目标关节的平滑后的局部旋转参数。
具体的,计算机设备可先将平滑对象帧中虚拟角色的目标关节的局部旋转参数,与平滑窗口内的各个修正动画帧中虚拟角色的目标关节的局部旋转参数进行点积处理,然后采用符号函数sign来对点积结果进行处理,使得旋转方向统一,并将符号函数求得的各个值与各个位置上的平滑权重、以及各个修正动画帧中虚拟角色的目标关节的局部旋转参数进行加权平均,从而得到平均结果。需说明的是,修正动画帧中虚拟角色的目标关节的局部旋转参数可能是局部旋转修正参数,也可能是局部旋转优化参数。上述过程可参见如下式7):
式7)
其中,表示平均结果,可直接将其作为平滑动画帧中虚拟角色的目标关节的平滑后的局部旋转参数。sign()表示符号函数,其功能是取某个数的符号(正或负):当x>0,sign(x)=1;当x=0,sign(x)=0;当x<0,sign(x)=-1。/>表示平滑对象帧中虚拟角色的目标关节的局部旋转参数,/>表示平滑窗口内第i个修正动画帧中虚拟角色的目标关节的局部旋转参数,/>表示平滑窗口内第i个修正动画帧中虚拟角色的目标关节的局部旋转参数,与平滑对象帧中虚拟角色的目标关节的局部旋转参数之间的点积,/>表示平滑窗口中第i个位置的平滑权重。
在一种可行的方式中,修正动画序列中的修正动画帧可以是按照上述S401-S407所示的流程,对动画序列中的动画帧应用关节限制以及执行姿态优化后得到的,那么修正动画帧中虚拟角色的目标关节的局部旋转参数具体是局部旋转优化参数。
平滑对象帧中虚拟角色的目标关节的局部旋转参数可以是单位四元数,在计算出平均结果之后,还可将平均结果重新标准化为单位四元数,从而将其作为平滑后的局部旋转参数,对平均结果进行标准化的过程如下所示式8):
式8)
其中,表示目标关节的平滑后的局部旋转参数,/>表示加权平均处理得到的平均结果,它是一个中间局部旋转参数,/>表示对平均结果取模得到的结果。
可理解的是,对于虚拟角色的各个关节,均可按照上述方式对修正动画序列中的各个修正动画帧进行平滑处理,具体是对修正动画帧中虚拟角色的所有关节的局部旋转参数进行平滑处理,从而进一步调整修正动画帧中虚拟角色的目标关节的局部旋转参数,使得最终生成的动画是流畅的。
步骤(4)根据平滑对象帧中虚拟角色的各个关节所对应的平滑后的局部旋转参数,生成平滑后的修正动画帧,以得到关于虚拟角色的修正动画。
在一种具体实现中,计算机设备可遍历修正动画序列中的每一修正动画帧以执行上述步骤,在遍历到修正动画序列中最后一个修正动画帧并求解出各个关节的平滑后的局部旋转参数之后,可根据平滑处理所得到的平滑后的局部旋转参数,生成平滑后的修正动画帧,进而将平滑后的修正动画帧按序组合,可得到一个新的动画序列,并将其作为关于虚拟角色的修正动画。应理解的是,所生成的修正动画可直接输出或在检测到输出需求时输出,若输入的动画序列中存在蒙皮异常变形问题,那么所输出的修正动画是修复蒙皮异常变形后的动画序列,且基于该修正动画呈现的动画效果是流畅的,通过上述窗口化的加权平均的平滑处理,进一步提升了修复后的动画质量。
按照上述各个实施例所提供的动画处理方法的内容,可提供如图7所示的动画处理的流程示意图,可用于修复动画。在该流程示意图中,可输入待修复的动画序列和处于参考姿态下的角色模型(如角色Tpose),其中包含的虚拟角色可以是三维的虚拟角色。经过一系列处理,可输出修复后的动画序列。若动画序列存在蒙皮异常形变,那么经过上述处理输出的具体是修复蒙皮异常形变后的动画序列。在上述流程中,“模型定义”模块可以确定虚拟角色的关节语义,即哪个关节是头、哪个关节是手等;“应用关节限制”模块可以根据预设的关节限制,将动画中各关节的旋转限制在相应范围内;“姿态优化”模块可优化各关节变换,保证关节在不引起蒙皮异常形变的前提下,整体姿态的语义和输入的动画序列一致;“动画平滑”模块则可进一步调整各关节变换的数值,求解出平滑的动画曲线,使修复后的动画流畅、无抖动。基于上述流程,下面以一个包含10帧的动画序列为例进行示例性地说明。在获取到关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型之后,通过“模型定义”模块可对虚拟角色的关节进行语义定义,从而得知虚拟角色中每个关节的语义,进而基于关节的语义获取到每个关节的旋转约束信息(即预设的关节限制);然后,通过“应用关节限制”模块,确定目标动画帧为动画序列中的第1帧,并确定第1帧中虚拟角色的各关节的局部旋转改变量,再将每个关节的局部旋转改变量分解为自旋分量和朝向分量,分别采用自旋约束信息对自旋分量进行约束,采用朝向约束信息对朝向分量进行约束,再合并约束所得到的第一旋转分量和第二旋转分量,得到局部旋转修正量,即限制后的局部旋转改变量,再基于该局部旋转修正量得到局部旋转修正参数,即限制后的局部旋转参数,经过上述处理,可将第1帧中虚拟角色的各关节的旋转限制在相应范围内,从而实现对关节的限制。接着,“应用关节限制”模块可将该局部旋转修正参数输入至“姿态优化”模块,通过“姿态优化”模块可对第1帧继续进行姿态优化,具体可将局部旋转修正参数添加至第1帧的关节的初始状态参数中,从而确定出优化变量X,并优化该局部旋转修正参数,在优化过程中,可计算优化变量损失项、关节约束项以及动作约束项,得到目标损失,进而基于目标损失调整优化变量X,使得第1帧中虚拟角色在处理前后的姿态语义尽可能地保持一致,并得到该第1帧对应的修正动画帧。之后,将第1帧优化之后得到的局部旋转优化参数添加至第2帧中虚拟角色的关节的初始状态参数中,从而基于该局部旋转优化参数和第2帧中虚拟角色的关节的局部旋转参数确定出优化变量X,再按照类似的优化过程,通过调整优化变量X对第2帧中虚拟角色的关节的局部旋转参数进行迭代优化,继而得到最终的局部旋转优化参数,并生成第2帧对应的修正动画帧,而第3帧中虚拟角色的关节的初始状态参数则包括第2帧优化之后得到的局部旋转优化参数,进而以相同的方式进行优化,以此类推,可得到动画序列中每帧对应的修正动画帧,每个修正动画帧中关节的局部旋转参数为局部旋转优化参数,可被输入至“动画平滑”模块中,并按照窗口化加权平均规则对每个修正动画帧进行平滑处理,得到流畅、不卡顿的动画,整个流程结束能够得到高质量的动画。
基于本申请提供的动画处理方法可建立完整且独立的针对蒙皮异常形变的动画修复流程,该动画修复流程在修复过程中考虑了动画数据的合理性,可批量自动化修复造成蒙皮异常形变的动画数据,输出无蒙皮问题的动画。具体为构建带关节限制约束的优化问题,求解得到不引入蒙皮问题并保持修复前姿态语义的关节变换,实现了批量化自动化,降低人力开销,并可把控修复质量,基于修复前后角色姿态的语义一致性,可大大地提高动画质量。此外,基于自动化地处理大量动画数据,可以不依赖于任何大型游戏引擎或3D软件,且可整合到各种动画生产流程,应用覆盖面广,扩展了使用场景。
基于上述动画处理方法实施例的描述,本申请实施例还公开了一种动画处理装置;动画处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),且该动画处理装置可以执行图3或图4所示的方法流程中的各个步骤。请参见图8,动画处理装置可以运行如下单元:
获取单元801,用于获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型;
处理单元802,用于确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转;多个关节中目标关节的局部旋转改变量是指:目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量;
处理单元802,还用于按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量,并根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数;
处理单元802,还用于根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧。
在一个实施例中,运动约束规则中对应有针对目标关节的旋转约束信息;处理单元802在按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量时,具体用于:
对目标动画帧中虚拟角色的目标关节的局部旋转改变量进行分解,得到目标关节的自旋分量和目标关节的朝向分量;
根据目标关节的旋转约束信息中包括的自旋约束信息,对目标关节的自旋分量进行约束处理,得到目标关节的第一旋转修正量;自旋约束信息用于约束目标关节绕自旋轴旋转的自旋角度范围;
根据目标关节的旋转约束信息中包括的朝向约束信息,对目标关节的朝向分量进行约束处理,得到目标关节的第二旋转修正量;朝向约束信息用于约束目标关节绕朝向轴旋转的朝向角度范围;
根据第一旋转修正量和第二旋转修正量,得到目标关节的局部旋转修正量。
在一个实施例中,自旋约束信息包括构成自旋角度范围的第一旋转角和第二旋转角;自旋分量是指目标关节绕自旋轴旋转的轴角;处理单元802在根据目标关节的旋转约束信息中包括的自旋约束信息,对目标关节的自旋分量进行约束处理,得到目标关节的第一旋转修正量时,具体用于:
将目标关节的自旋分量对应的轴角与自旋约束信息对应的自旋角度范围进行比较;
若目标关节的自旋分量对应的轴角处于自旋角度范围内,则将目标关节的自旋分量确定为目标关节的第一旋转修正量;
若目标关节的自旋分量对应的轴角处于自旋角度范围之外,则将第一旋转角和第二旋转角中与目标关节的自旋分量对应轴角之间的差值的绝对值较小者确定为目标关节的第一旋转修正量。
在一个实施例中,朝向约束信息包括构成朝向角度范围的张角;处理单元802在根据目标关节的旋转约束信息中包括的朝向约束信息,对目标关节的朝向分量进行约束处理,得到目标关节的第二旋转修正量时,具体用于:
根据朝向约束信息所指示的朝向角度范围确定锥体,并根据朝向分量确定锥体的中心轴旋转至目标关节的骨骼朝向所对应的旋转轴及旋转角;
根据椭圆方程确定锥体在旋转轴所在方向的张角;
若张角小于旋转角,则将张角确定为目标关节的第二旋转修正量;
若张角大于旋转角,则将旋转角确定为目标关节的第二旋转修正量。
在一个实施例中,处理单元802在根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧时,具体用于:
获取用于进行姿态优化的优化变量X,优化变量X用于表示:优化对象帧中虚拟角色的每一个关节的局部旋转参数优化量;优化对象帧为动画序列中的目标动画帧或动画序列中目标动画帧之后的动画帧;其中,当为目标动画帧时,优化变量X是根据目标动画帧中虚拟角色的各关节的局部旋转修正参数得到的;
采用优化变量X对优化对象帧中虚拟角色的相应关节进行局部旋转参数的优化,得到优化对象帧中虚拟角色的各个关节的局部旋转优化参数;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧对应的修正动画帧。
在一个实施例中,在优化对象帧为目标动画帧时,各个关节对应的初始状态参数包括:目标动画帧中虚拟角色的各个关节的局部旋转修正参数;在优化对象帧为动画序列中目标动画帧之后的动画帧时,各个关节对应的初始状态参数包括:虚拟角色在优化对象帧之前的动画帧对应的修正动画帧中各个关节的局部旋转参数。
在一个实施例中,处理单元802在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧对应的修正动画帧时,具体用于:
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧的中间动画帧;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数、和优化对象帧中相应关节的局部旋转参数,确定中间动画帧的目标损失,目标损失用于指示虚拟角色在中间动画帧中的动作姿态与目标动作姿态之间的差异;
若目标损失满足变量优化条件,则对优化变量X进行调整,以便于根据调整后的优化变量X得到优化对象帧对应的修正动画帧;
若目标损失不满足变量优化条件,则将中间动画帧作为优化对象帧对应的修正动画帧。
在一个实施例中,处理单元802在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数、和优化对象帧中相应关节的局部旋转参数,确定中间动画帧的目标损失时,具体用于:
对优化变量X取模得到正则项;正则项用于约束优化变量X的改变量;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与虚拟角色在优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项;
将正则项、关节约束项以及动作约束项进行加权求和,得到中间动画帧的目标损失。
在一个实施例中,处理单元802在旋转约束信息包括自旋约束信息和朝向约束信息;根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项时,具体用于:
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数和在参考姿态下的角色模型中的各个关节的局部旋转参数,确定优化对象帧中虚拟角色的相应关节的局部旋转改变量;
对优化对象帧中虚拟角色的各个关节的局部旋转改变量进行分解处理,得到优化对象帧中虚拟角色的各个关节的自旋分量和朝向分量;
根据优化对象帧中虚拟角色的各个关节的自旋分量和相应关节的自旋约束信息,确定各个关节对应的第一角度值,并根据优化对象帧中虚拟角色的各个关节的朝向分量和相应关节的朝向约束信息,确定各个关节对应的第二角度值;
根据各个关节的第一角度值和第二角度值确定关节约束项;
其中,第一角度值用于指示自旋分量与相应关节的自旋约束信息之间的差异,第二角度值用于指示朝向分量与相应关节的朝向约束信息之间的差异。
在一个实施例中,处理单元802在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与虚拟角色在优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项时,具体用于:
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数确定相应关节在虚拟空间中的第一位置,并根据虚拟角色在优化对象帧中的各个关节的局部旋转参数确定相应关节在虚拟空间中的第二位置;
采用第一位置和第二位置进行距离计算,得到虚拟角色中的相应关节对应的位置距离;
根据优化对象帧中虚拟角色在局部旋转优化参数下对应的第一关节指向第二关节的方向向量,与优化对象帧中虚拟角色在局部旋转参数下对应的第一关节指向第二关节的方向向量,得到旋转差异;其中,第一关节为第二关节的父关节,且第二关节为末端关节;
根据位置距离和旋转差异得到动作约束项。
在一个实施例中,处理单元802在确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量时,具体用于:
获取目标动画帧中虚拟角色的目标关节对应的局部旋转参数,以及在参考姿态下的角色模型中与目标关节对应的参考关节的局部旋转参数;
根据目标关节的局部旋转参数及参考关节的局部旋转参数进行差异计算,得到目标关节相对于参考关节的局部旋转改变量。
在一个实施例中,处理单元802还用于:
对虚拟角色的每一个关节进行语义定义,得到虚拟角色中每一个关节的语义;
按照虚拟角色中各个关节的语义在约束信息集合中进行查询处理,得到每一个关节对应的旋转约束信息;约束信息集合中记录了多个关节的语义和各语义对应的旋转约束信息,任一关节对应的旋转约束信息用于约束相应关节绕一个或者多个旋转轴进行旋转的角度范围;
运动约束规则是根据每一个关节各自对应的旋转约束信息生成的。
在一个实施例中,处理单元802在根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数时,具体用于:
获取在参考姿态下的角色模型中每一个关节的局部旋转参数;
根据各个关节的局部旋转修正量和在参考姿态下的角色模型中相应关节的局部旋转参数,确定目标动画帧中虚拟角色的各个关节的局部旋转修正参数。
在一个实施例中,处理单元802还用于:
在确定得到虚拟角色的动画序列中的动画帧对应的修正动画帧之后,生成动画序列对应的修正动画序列;
按照窗口化的加权平均处理规则,对修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于虚拟角色的修正动画。
在一个实施例中,处理单元802在按照窗口化的加权平均处理规则,对修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于虚拟角色的修正动画时,具体用于:
确定修正动画序列中的目标修正动画帧,并将目标修正动画帧作为平滑对象帧;
移动具有预设半径的平滑窗口,移动后平滑窗口以平滑对象帧为窗口中心;且平滑窗口中每个位置对应有一个平滑权重;
针对虚拟角色中的目标关节,获取位于平滑窗口内的各个修正动画帧中虚拟角色的目标关节的局部旋转参数、与平滑对象帧中虚拟角色的目标关节的局部旋转参数之间的点积,并使用符号函数统一旋转方向后按照平滑权重进行加权平均处理,得到平滑对象帧中虚拟角色的目标关节的平滑后的局部旋转参数;
根据平滑对象帧中虚拟角色的各个关节所对应的平滑后的局部旋转参数,生成平滑后的修正动画帧,以得到关于虚拟角色的修正动画。
本申请考虑了动画数据本身的合理性,通过运动约束规则可对虚拟角色的关节旋转进行限制,使得限制后的关节旋转在合理范围内,通过将关节旋转限制在一定范围内,可修复由于动画数据本身不合理而导致的蒙皮异常,以保证动画质量。并且可批量自动化处理大量动画数据,并可独立于任何大型软件使用,可覆盖的使用场景更加全面。
基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种计算机设备。请参见图9,该计算机设备至少包括处理器901、输入接口902、输出接口903以及计算机存储介质904。其中,计算机设备内的处理器901、输入接口902、输出接口903以及计算机存储介质904可通过总线或其他方式连接。计算机存储介质904可以存储在计算机设备的存储器中,计算机存储介质904用于存储计算机程序,计算机程序包括程序指令,处理器901用于执行计算机存储介质904存储的程序指令。处理器901(或称CPU(Central ProcessingUnit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一种可行的实现方式中,本申请实施例的处理器901可以用于执行:获取关于虚拟角色的动画序列和虚拟角色在参考姿态下的角色模型;确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转;多个关节中目标关节的局部旋转改变量是指:目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量;按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量,并根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数;根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧。
在一个实施例中,运动约束规则中对应有针对目标关节的旋转约束信息;在按照运动约束规则,对目标动画帧中虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
对目标动画帧中虚拟角色的目标关节的局部旋转改变量进行分解,得到目标关节的自旋分量和目标关节的朝向分量;
根据目标关节的旋转约束信息中包括的自旋约束信息,对目标关节的自旋分量进行约束处理,得到目标关节的第一旋转修正量;自旋约束信息用于约束目标关节绕自旋轴旋转的自旋角度范围;
根据目标关节的旋转约束信息中包括的朝向约束信息,对目标关节的朝向分量进行约束处理,得到目标关节的第二旋转修正量;朝向约束信息用于约束目标关节绕朝向轴旋转的朝向角度范围;
根据第一旋转修正量和第二旋转修正量,得到目标关节的局部旋转修正量。
在一个实施例中,自旋约束信息包括构成自旋角度范围的第一旋转角和第二旋转角;自旋分量是指目标关节绕自旋轴旋转的轴角;在根据目标关节的旋转约束信息中包括的自旋约束信息,对目标关节的自旋分量进行约束处理,得到目标关节的第一旋转修正量时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
将目标关节的自旋分量对应的轴角与自旋约束信息对应的自旋角度范围进行比较;
若目标关节的自旋分量对应的轴角处于自旋角度范围内,则将目标关节的自旋分量确定为目标关节的第一旋转修正量;
若目标关节的自旋分量对应的轴角处于自旋角度范围之外,则将第一旋转角和第二旋转角中与目标关节的自旋分量对应轴角之间的差值的绝对值较小者确定为目标关节的第一旋转修正量。
在一个实施例中,朝向约束信息包括构成朝向角度范围的张角;在根据目标关节的旋转约束信息中包括的朝向约束信息,对目标关节的朝向分量进行约束处理,得到目标关节的第二旋转修正量时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
根据朝向约束信息所指示的朝向角度范围确定锥体,并根据朝向分量确定锥体的中心轴旋转至目标关节的骨骼朝向所对应的旋转轴及旋转角;
根据椭圆方程确定锥体在旋转轴所在方向的张角;
若张角小于旋转角,则将张角确定为目标关节的第二旋转修正量;
若张角大于旋转角,则将旋转角确定为目标关节的第二旋转修正量。
在一个实施例中,在根据目标动画帧中虚拟角色的各关节的局部旋转修正参数,得到虚拟角色的动画序列中的动画帧对应的修正动画帧时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
获取用于进行姿态优化的优化变量X,优化变量X用于表示:优化对象帧中虚拟角色的每一个关节的局部旋转参数优化量;优化对象帧为动画序列中的目标动画帧或动画序列中目标动画帧之后的动画帧;其中,当为目标动画帧时,优化变量X是根据目标动画帧中虚拟角色的各关节的局部旋转修正参数得到的;
采用优化变量X对优化对象帧中虚拟角色的相应关节进行局部旋转参数的优化,得到优化对象帧中虚拟角色的各个关节的局部旋转优化参数;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧对应的修正动画帧。
在一个实施例中,在优化对象帧为目标动画帧时,各个关节对应的初始状态参数包括:目标动画帧中虚拟角色的各个关节的局部旋转修正参数;在优化对象帧为动画序列中目标动画帧之后的动画帧时,各个关节对应的初始状态参数包括:虚拟角色在优化对象帧之前的动画帧对应的修正动画帧中各个关节的局部旋转参数。
在一个实施例中,在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧对应的修正动画帧时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数,生成优化对象帧的中间动画帧;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数、和优化对象帧中相应关节的局部旋转参数,确定中间动画帧的目标损失,目标损失用于指示虚拟角色在中间动画帧中的动作姿态与目标动作姿态之间的差异;
若目标损失满足变量优化条件,则对优化变量X进行调整,以便于根据调整后的优化变量X得到优化对象帧对应的修正动画帧;
若目标损失不满足变量优化条件,则将中间动画帧作为优化对象帧对应的修正动画帧。
在一个实施例中,在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数、和优化对象帧中相应关节的局部旋转参数,确定中间动画帧的目标损失时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
对优化变量X取模得到正则项;正则项用于约束优化变量X的改变量;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项;
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与虚拟角色在优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项;
将正则项、关节约束项以及动作约束项进行加权求和,得到中间动画帧的目标损失。
在一个实施例中,在旋转约束信息包括自旋约束信息和朝向约束信息;根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数和在参考姿态下的角色模型中的各个关节的局部旋转参数,确定优化对象帧中虚拟角色的相应关节的局部旋转改变量;
对优化对象帧中虚拟角色的各个关节的局部旋转改变量进行分解处理,得到优化对象帧中虚拟角色的各个关节的自旋分量和朝向分量;
根据优化对象帧中虚拟角色的各个关节的自旋分量和相应关节的自旋约束信息,确定各个关节对应的第一角度值,并根据优化对象帧中虚拟角色的各个关节的朝向分量和相应关节的朝向约束信息,确定各个关节对应的第二角度值;
根据各个关节的第一角度值和第二角度值确定关节约束项;
其中,第一角度值用于指示自旋分量与相应关节的自旋约束信息之间的差异,第二角度值用于指示朝向分量与相应关节的朝向约束信息之间的差异。
在一个实施例中,在根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与虚拟角色在优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
根据优化对象帧中虚拟角色的各个关节的局部旋转优化参数确定相应关节在虚拟空间中的第一位置,并根据虚拟角色在优化对象帧中的各个关节的局部旋转参数确定相应关节在虚拟空间中的第二位置;
采用第一位置和第二位置进行距离计算,得到虚拟角色中的相应关节对应的位置距离;
根据优化对象帧中虚拟角色在局部旋转优化参数下对应的第一关节指向第二关节的方向向量,与优化对象帧中虚拟角色在局部旋转参数下对应的第一关节指向第二关节的方向向量,得到旋转差异;其中,第一关节为第二关节的父关节,且第二关节为末端关节;
根据位置距离和旋转差异得到动作约束项。
在一个实施例中,在确定动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
获取目标动画帧中虚拟角色的目标关节对应的局部旋转参数,以及在参考姿态下的角色模型中与目标关节对应的参考关节的局部旋转参数;
根据目标关节的局部旋转参数及参考关节的局部旋转参数进行差异计算,得到目标关节相对于参考关节的局部旋转改变量。
在一个实施例中,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
对虚拟角色的每一个关节进行语义定义,得到虚拟角色中每一个关节的语义;
按照虚拟角色中各个关节的语义在约束信息集合中进行查询处理,得到每一个关节对应的旋转约束信息;约束信息集合中记录了多个关节的语义和各语义对应的旋转约束信息,任一关节对应的旋转约束信息用于约束相应关节绕一个或者多个旋转轴进行旋转的角度范围;
运动约束规则是根据每一个关节各自对应的旋转约束信息生成的。
在一个实施例中,在根据各局部旋转修正量得到目标动画帧中虚拟角色的各关节的局部旋转修正参数时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
获取在参考姿态下的角色模型中每一个关节的局部旋转参数;
根据各个关节的局部旋转修正量和在参考姿态下的角色模型中相应关节的局部旋转参数,确定目标动画帧中虚拟角色的各个关节的局部旋转修正参数。
在一个实施例中,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
在确定得到虚拟角色的动画序列中的动画帧对应的修正动画帧之后,生成动画序列对应的修正动画序列;
按照窗口化的加权平均处理规则,对修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于虚拟角色的修正动画。
在一个实施例中,在按照窗口化的加权平均处理规则,对修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于虚拟角色的修正动画时,计算机存储介质中的一条或多条指令可由处理器901加载并执行如下步骤:
确定修正动画序列中的目标修正动画帧,并将目标修正动画帧作为平滑对象帧;
移动具有预设半径的平滑窗口,移动后平滑窗口以平滑对象帧为窗口中心;且平滑窗口中每个位置对应有一个平滑权重;
针对虚拟角色中的目标关节,获取位于平滑窗口内的各个修正动画帧中虚拟角色的目标关节的局部旋转参数、与平滑对象帧中虚拟角色的目标关节的局部旋转参数之间的点积,并使用符号函数统一旋转方向后按照平滑权重进行加权平均处理,得到平滑对象帧中虚拟角色的目标关节的平滑后的局部旋转参数;
根据平滑对象帧中虚拟角色的各个关节所对应的平滑后的局部旋转参数,生成平滑后的修正动画帧,以得到关于虚拟角色的修正动画。
本申请考虑了动画数据本身的合理性,通过运动约束规则可对虚拟角色的关节旋转进行限制,使得限制后的关节旋转在合理范围内,通过将关节旋转限制在一定范围内,可修复由于动画数据本身不合理而导致的蒙皮异常,以保证动画质量。并且可批量自动化处理大量动画数据,并可独立于任何大型软件使用,可覆盖的使用场景更加全面。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文图3和图4所对应实施例中的方法,因此,这里将不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备可以执行前文图3和图4所对应实施例中的方法,因此,这里将不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于本申请所涵盖的范围。
Claims (18)
1.一种动画处理方法,其特征在于,包括:
获取关于虚拟角色的动画序列和所述虚拟角色在参考姿态下的角色模型;
确定所述动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,所述目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转;多个关节中目标关节的局部旋转改变量是指:所述目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量;
按照运动约束规则,对目标动画帧中所述虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量;其中,所述运动约束规则中对应有针对所述目标动画帧中虚拟角色的目标关节的旋转约束信息;所述按照运动约束规则,对目标动画帧中所述虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量包括:对所述目标关节的局部旋转改变量进行分解,得到所述目标关节的自旋分量和所述目标关节的朝向分量;根据所述目标关节的旋转约束信息中包括的自旋约束信息,对所述目标关节的自旋分量进行约束处理,得到所述目标关节的第一旋转修正量,并根据所述目标关节的旋转约束信息中包括的朝向约束信息,对所述目标关节的朝向分量进行约束处理,得到所述目标关节的第二旋转修正量;根据所述第一旋转修正量和所述第二旋转修正量,得到所述目标关节的局部旋转修正量;
根据各局部旋转修正量得到所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数;
根据所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数,得到所述虚拟角色的动画序列中的动画帧对应的修正动画帧;
所述目标关节的第一旋转修正量在自旋约束信息所指示的自旋角度范围之内;所述目标关节的第二旋转修正量是根据比较张角与旋转角之间的大小后确定的,其中,所述朝向约束信息包括构成朝向角度范围的张角,在得到第二旋转修正量的过程中是根据所述朝向约束信息所指示的朝向角度范围确定锥体,并根据所述朝向分量确定所述锥体的中心轴旋转至所述目标关节的骨骼朝向所对应的旋转轴及所述旋转角;根据椭圆方程确定所述锥体在所述旋转轴所在方向的所述张角。
2.如权利要求1所述的方法,其特征在于,所述自旋约束信息用于约束所述目标关节绕自旋轴旋转的自旋角度范围;所述朝向约束信息用于约束所述目标关节绕朝向轴旋转的朝向角度范围。
3.如权利要求2所述的方法,其特征在于,所述自旋约束信息包括构成所述自旋角度范围的第一旋转角和第二旋转角;所述自旋分量是指所述目标关节绕自旋轴旋转的轴角;所述根据所述目标关节的旋转约束信息中包括的自旋约束信息,对所述目标关节的自旋分量进行约束处理,得到所述目标关节的第一旋转修正量,包括:
将所述目标关节的自旋分量对应的轴角与所述自旋约束信息对应的自旋角度范围进行比较;
若所述目标关节的自旋分量对应的轴角处于所述自旋角度范围内,则将所述目标关节的自旋分量确定为所述目标关节的第一旋转修正量;
若所述目标关节的自旋分量对应的轴角处于所述自旋角度范围之外,则将所述第一旋转角和所述第二旋转角中与所述目标关节的自旋分量对应轴角之间的差值的绝对值较小者确定为所述目标关节的第一旋转修正量。
4.如权利要求2所述的方法,其特征在于,在得到第二旋转修正量的过程中,若所述张角小于所述旋转角,则将所述张角确定为所述目标关节的第二旋转修正量;若所述张角大于所述旋转角,则将所述旋转角确定为所述目标关节的第二旋转修正量。
5.如权利要求1所述的方法,其特征在于,所述根据所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数,得到所述虚拟角色的动画序列中的动画帧对应的修正动画帧,包括:
获取用于进行姿态优化的优化变量X,所述优化变量X用于表示:优化对象帧中虚拟角色的每一个关节的局部旋转参数优化量;所述优化对象帧为所述动画序列中的所述目标动画帧或所述动画序列中所述目标动画帧之后的动画帧;其中,当所述优化对象帧为所述目标动画帧时,所述优化变量X是根据所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数得到的;
采用所述优化变量X对所述优化对象帧中虚拟角色的相应关节进行局部旋转参数的优化,得到所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数;
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数,生成所述优化对象帧对应的修正动画帧。
6.如权利要求5所述的方法,其特征在于,在所述优化对象帧为所述目标动画帧时,各个关节对应的初始状态参数包括:所述目标动画帧中所述虚拟角色的各个关节的局部旋转修正参数;在所述优化对象帧为所述动画序列中所述目标动画帧之后的动画帧时,各个关节对应的初始状态参数包括:所述虚拟角色在所述优化对象帧之前的动画帧对应的修正动画帧中各个关节的局部旋转参数。
7.如权利要求5或6所述的方法,其特征在于,所述根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数,生成所述优化对象帧对应的修正动画帧,包括:
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数,生成所述优化对象帧的中间动画帧;
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数、和所述优化对象帧中相应关节的局部旋转参数,确定所述中间动画帧的目标损失,所述目标损失用于指示所述虚拟角色在所述中间动画帧中的动作姿态与目标动作姿态之间的差异;
若所述目标损失满足变量优化条件,则对所述优化变量X进行调整,以便于根据调整后的优化变量X得到所述优化对象帧对应的修正动画帧;
若所述目标损失不满足变量优化条件,则将所述中间动画帧作为所述优化对象帧对应的修正动画帧。
8.如权利要求7所述的方法,其特征在于,所述根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数、和所述优化对象帧中相应关节的局部旋转参数,确定所述中间动画帧的目标损失,包括:
对所述优化变量X取模得到正则项;所述正则项用于约束所述优化变量X的改变量;
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项;
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与所述虚拟角色在所述优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项;
将所述正则项、所述关节约束项以及所述动作约束项进行加权求和,得到所述中间动画帧的目标损失。
9.如权利要求8所述的方法,其特征在于,所述旋转约束信息包括自旋约束信息和朝向约束信息;所述根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数与对应的旋转约束信息,确定关节约束项,包括:
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数和在参考姿态下的角色模型中的各个关节的局部旋转参数,确定所述优化对象帧中所述虚拟角色的相应关节的局部旋转改变量;
对所述优化对象帧中所述虚拟角色的各个关节的局部旋转改变量进行分解处理,得到所述优化对象帧中所述虚拟角色的各个关节的自旋分量和朝向分量;
根据所述优化对象帧中所述虚拟角色的各个关节的自旋分量和相应关节的自旋约束信息,确定各个关节对应的第一角度值,并根据所述优化对象帧中所述虚拟角色的各个关节的朝向分量和相应关节的朝向约束信息,确定各个关节对应的第二角度值;
根据各个关节的所述第一角度值和所述第二角度值确定关节约束项;
其中,所述第一角度值用于指示所述自旋分量与所述相应关节的自旋约束信息之间的差异,所述第二角度值用于指示所述朝向分量与所述相应关节的朝向约束信息之间的差异。
10.如权利要求8所述的方法,其特征在于,所述根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数对应的姿态数据、与所述虚拟角色在所述优化对象帧中各个关节的局部旋转参数对应的姿态数据,确定动作约束项,包括:
根据所述优化对象帧中所述虚拟角色的各个关节的局部旋转优化参数确定相应关节在虚拟空间中的第一位置,并根据所述虚拟角色在所述优化对象帧中的各个关节的局部旋转参数确定相应关节在虚拟空间中的第二位置;
采用所述第一位置和所述第二位置进行距离计算,得到所述虚拟角色中的相应关节对应的位置距离;
根据所述优化对象帧中所述虚拟角色在所述局部旋转优化参数下对应的第一关节指向第二关节的方向向量,与所述优化对象帧中所述虚拟角色在局部旋转参数下对应的第一关节指向第二关节的方向向量,得到旋转差异;其中,所述第一关节为所述第二关节的父关节,且所述第二关节为末端关节;
根据所述位置距离和所述旋转差异得到动作约束项。
11.如权利要求1所述的方法,其特征在于,所述确定所述动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,包括:
获取所述目标动画帧中所述虚拟角色的目标关节对应的局部旋转参数,以及在参考姿态下的角色模型中与所述目标关节对应的参考关节的局部旋转参数;
根据所述目标关节的局部旋转参数及所述参考关节的局部旋转参数进行差异计算,得到所述目标关节相对于所述参考关节的局部旋转改变量。
12.如权利要求1所述的方法,其特征在于,所述方法还包括:
对所述虚拟角色的每一个关节进行语义定义,得到所述虚拟角色中每一个关节的语义;
按照所述虚拟角色中各个关节的语义在约束信息集合中进行查询处理,得到每一个关节对应的旋转约束信息;所述约束信息集合中记录了多个关节的语义和各语义对应的旋转约束信息,任一关节对应的旋转约束信息用于约束相应关节绕一个或者多个旋转轴进行旋转的角度范围;
所述运动约束规则是根据每一个关节各自对应的旋转约束信息生成的。
13.如权利要求1所述的方法,其特征在于,所述根据各局部旋转修正量得到所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数,包括:
获取在参考姿态下的角色模型中每一个关节的局部旋转参数;
根据各个关节的局部旋转修正量和所述在参考姿态下的角色模型中相应关节的局部旋转参数,确定所述目标动画帧中所述虚拟角色的各个关节的局部旋转修正参数。
14.如权利要求1所述的方法,其特征在于,所述方法还包括:
在确定得到所述虚拟角色的动画序列中的动画帧对应的修正动画帧之后,生成所述动画序列对应的修正动画序列;
按照窗口化的加权平均处理规则,对所述修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于所述虚拟角色的修正动画。
15.如权利要求14所述的方法,其特征在于,所述按照窗口化的加权平均处理规则,对所述修正动画序列的各个修正动画帧进行关于关节的局部旋转参数的平滑处理,得到关于所述虚拟角色的修正动画,包括:
确定所述修正动画序列中的目标修正动画帧,并将所述目标修正动画帧作为平滑对象帧;
移动具有预设半径的平滑窗口,移动后所述平滑窗口以所述平滑对象帧为窗口中心;且所述平滑窗口中每个位置对应有一个平滑权重;
针对所述虚拟角色中的目标关节,获取位于所述平滑窗口内的各个修正动画帧中所述虚拟角色的目标关节的局部旋转参数、与所述平滑对象帧中所述虚拟角色的目标关节的局部旋转参数之间的点积,并使用符号函数统一旋转方向后按照平滑权重进行加权平均处理,得到所述平滑对象帧中所述虚拟角色的目标关节的平滑后的局部旋转参数;
根据所述平滑对象帧中所述虚拟角色的各个关节所对应的平滑后的局部旋转参数,生成平滑后的修正动画帧,以得到关于所述虚拟角色的修正动画。
16.一种动画处理装置,其特征在于,包括:
获取单元,用于获取关于虚拟角色的动画序列和所述虚拟角色在参考姿态下的角色模型;
处理单元,用于确定所述动画序列中待处理的目标动画帧中虚拟角色包括的多个关节的局部旋转改变量,所述目标动画帧中的虚拟角色包括的每一个关节被允许在旋转轴上进行旋转;多个关节中目标关节的局部旋转改变量是指:所述目标关节相对于在参考姿态下的角色模型中与目标关节对应的参考关节的旋转改变量;
所述处理单元,还用于按照运动约束规则,对目标动画帧中所述虚拟角色的各个关节的局部旋转改变量进行约束处理,得到每一个关节对应的局部旋转修正量,并根据各局部旋转修正量得到所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数;其中,所述运动约束规则中对应有针对所述目标动画帧中虚拟角色的目标关节的旋转约束信息;所述处理单元,用于对所述目标关节的局部旋转改变量进行分解,得到所述目标关节的自旋分量和所述目标关节的朝向分量;根据所述目标关节的旋转约束信息中包括的自旋约束信息,对所述目标关节的自旋分量进行约束处理,得到所述目标关节的第一旋转修正量,并根据所述目标关节的旋转约束信息中包括的朝向约束信息,对所述目标关节的朝向分量进行约束处理,得到所述目标关节的第二旋转修正量;根据所述第一旋转修正量和所述第二旋转修正量,得到所述目标关节的局部旋转修正量;
所述处理单元,还用于根据所述目标动画帧中所述虚拟角色的各关节的局部旋转修正参数,得到所述虚拟角色的动画序列中的动画帧对应的修正动画帧;
所述目标关节的第一旋转修正量在自旋约束信息所指示的自旋角度范围之内;所述目标关节的第二旋转修正量是根据比较张角与旋转角之间的大小后确定的,其中,所述朝向约束信息包括构成朝向角度范围的张角,在得到第二旋转修正量的过程中是根据所述朝向约束信息所指示的朝向角度范围确定锥体,并根据所述朝向分量确定所述锥体的中心轴旋转至所述目标关节的骨骼朝向所对应的旋转轴及所述旋转角;根据椭圆方程确定所述锥体在所述旋转轴所在方向的所述张角。
17.一种计算机设备,包括输入接口和输出接口,其特征在于,还包括:处理器以及计算机存储介质;
其中,所述处理器适于实现一条或多条指令,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-15任一项所述的动画处理方法。
18.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-15任一项所述的动画处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310863895.0A CN116597056B (zh) | 2023-07-14 | 2023-07-14 | 一种动画处理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310863895.0A CN116597056B (zh) | 2023-07-14 | 2023-07-14 | 一种动画处理方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116597056A CN116597056A (zh) | 2023-08-15 |
CN116597056B true CN116597056B (zh) | 2023-11-03 |
Family
ID=87590264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310863895.0A Active CN116597056B (zh) | 2023-07-14 | 2023-07-14 | 一种动画处理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116597056B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117095086B (zh) * | 2023-10-18 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 动画处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112950751A (zh) * | 2019-12-11 | 2021-06-11 | 阿里巴巴集团控股有限公司 | 姿态动作的展示方法及装置、存储介质、系统 |
CN113554736A (zh) * | 2021-09-22 | 2021-10-26 | 成都市谛视科技有限公司 | 骨骼动画顶点矫正方法及模型的学习方法、装置和设备 |
CN116342408A (zh) * | 2023-02-24 | 2023-06-27 | 华为技术有限公司 | 一种修复方法、装置及存储介质 |
-
2023
- 2023-07-14 CN CN202310863895.0A patent/CN116597056B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112950751A (zh) * | 2019-12-11 | 2021-06-11 | 阿里巴巴集团控股有限公司 | 姿态动作的展示方法及装置、存储介质、系统 |
CN113554736A (zh) * | 2021-09-22 | 2021-10-26 | 成都市谛视科技有限公司 | 骨骼动画顶点矫正方法及模型的学习方法、装置和设备 |
CN116342408A (zh) * | 2023-02-24 | 2023-06-27 | 华为技术有限公司 | 一种修复方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116597056A (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112686976B (zh) | 骨骼动画数据的处理方法、装置及通信设备 | |
US10565792B2 (en) | Approximating mesh deformations for character rigs | |
US6822653B2 (en) | Methods and system for general skinning via hardware accelerators | |
US9177409B2 (en) | Animating a virtual object within a virtual world | |
CN111768477B (zh) | 三维人脸表情基建立方法及装置、存储介质及电子设备 | |
US20200388064A1 (en) | Single image-based real-time body animation | |
CN116597056B (zh) | 一种动画处理方法、装置、设备和存储介质 | |
JP2006524863A (ja) | 複雑な関節の動きをモデリングする関節構成要素フレームワーク | |
JP5490080B2 (ja) | スケルトンモデルの姿勢制御方法,及びプログラム | |
US7176915B1 (en) | Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions | |
CN111223171A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
JP2023524252A (ja) | 生成的非線形人間形状モデル | |
US20110267356A1 (en) | Animating a virtual object within a virtual world | |
CN115601480A (zh) | 虚拟对象驱动方法、装置、电子设备和存储介质 | |
US20040257368A1 (en) | Rig baking | |
US20210118241A1 (en) | Computer-implemented method for making a skeleton of a modeled body take a posture | |
Erleben et al. | Inverse kinematics problems with exact hessian matrices | |
CN116958436A (zh) | 一种目标虚拟模型的生成方法、装置及电子设备和存储介质 | |
CN116248920A (zh) | 虚拟角色直播处理方法、装置及系统 | |
US20110267357A1 (en) | Animating a virtual object within a virtual world | |
US11052317B1 (en) | Performing simulation of stretchable character in computer game | |
Musoni et al. | Reposing and Retargeting Unrigged Characters with Intrinsic-extrinsic Transfer. | |
CN116206026B (zh) | 轨迹信息处理方法、装置、计算机设备和可读存储介质 | |
Kim et al. | The inductive inverse kinematics algorithm to manipulate the posture of an articulated body | |
Cao et al. | Minimal non-linear camera pose estimation method using lines for SLAM application |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40091476 Country of ref document: HK |