【Unity】Avatar与AvatarMask系统介绍(TPS.番外篇)

文章介绍了Unity中的Avatar系统,它是解决不同模型骨骼不一致问题的解决方案,允许复用动画。AvatarMask则是用于部分动画应用,可以选择动画影响的角色部分,提高效率。文章提到,创建Avatar可能存在的精度问题以及如何通过AvatarMask进行部分动画控制。
摘要由CSDN通过智能技术生成


这次也是拖了蛮久,一个是在修动画,一个是别的游戏确实比较能吸引住人。
在主要系列进行前,要先为接下来要讲的动画做一些基础知识的补充,这期是Avatar,即替身系统,以及AvatarMask的讲解。

一些动画知识

对于动画,我的了解比较基础,大家可以去看这位的系列《动画入门》
在这里,我就提一些我遇到的以及需要注意的地方。

动画文件格式

对于外部导入的动画文件,相信最多的就是从Mixamo上下载的动画文件了。还有一些其他的,比如在资源商店里购买的那些。
一般来说,导入到unity后,会是这样的界面,我们需要关注的就是Rig。
在这里插入图片描述
通常而言,Mixamo的动画都是Generic类型,而我们会将其更改为Humanoid类型。这些操作代表的是什么?

这就要聊到动画文件本身了。我们思考一个问题,我们如何描述动作?
对于这些动画文件来说,描述方式是骨骼的位置及旋转。这样很好理解,我们只需要确定一个基准骨骼(通常选择腹部的骨骼作为基准),然后逐层确定骨骼位置,这样就可以确定所有的骨骼位置了,同样,,动起来之后我们只需要描述在哪一帧时哪些骨骼发生了位移和旋转,其余节点随之重新计算位置即可1
在这里插入图片描述
那么我们明白了动画文件描述的是哪些属性,那么如何将属性与对应骨骼绑定呢?一种很直接的方式就是:骨骼叫什么,我就拿进来,然后把对应数据写在后边。没错,就这么简单。

正是这种简单的做法导致了接下来出现的问题。

Avatar系统-Unity统一骨骼的解决方案

当模型师A的动画很棒,而模型师B的角色是我要用的,那么这个动画的复用2要求是什么?动画中的骨骼命名要与角色骨骼相同(结构我不清楚,但我认为也最好一样)。如果这两位模型师规范过创建和命名规则,那么复用没有任何问题;但对于个人开发者而言,我们手中的模型和动画没有任何的命名规范,那么如何去复用这些动画呢?

Unity为我们提供了Avatar,即替身系统。这是一种Unity设置的骨骼模式,只要你是人型的角色,就会识别,并根据角色原本的骨骼及命名,创建对应的Avatar。那么只需要大家的骨骼都转换成这种模式,我们就可以实现动画复用了。

对于用户而言,我们只需要将Rig中的模式3切换为人形即可。那么这种简单的创建就会带来很多问题,就是Avatar的精准度。注意:这是常见问题

在讨论这个问题前,我们先得了解Avatar的基本形态。
创建Avatar有两种方式,可以复用其他Avatar,也可以为当前模型创建Avatar。我们一般都是让其创建。下图是创建后的Rig界面,那么Avatar怎么看呢?我们的模型中有,也可以直接点击下图中的Configure打开界面。
在这里插入图片描述
下图就是Avatar的界面了。我们看到了角色的Avatar。
可以看到右侧,unity将原本的骨骼节点对应到了Avatar。其中有些节点可以为空,而关键节点不可以为空。

在这里插入图片描述
Unity是以T字的人体来创建的,然后每个骨骼方向什么都是计算出来,或者说推算出来的,因此不一定准确。
于是乎,我们可以看到一些很奇怪的画面,比如下图中跑步的左脚是很奇怪的,原因是复用的动画的替身没有绑定很准确,导致我的角色的左脚有问题。
解决方式:如果unity的角色在动画预览下不正常,则修改动画的Avatar绑定。
如果如果unity的角色在动画预览下正常,那么就该修改角色的Avatar。
这样的修改方式是要保证动画的通用性。
在这里插入图片描述
老实说,这个动画中只有上半身还比较好,下本身只能说一言难尽,那我能不能只用上半身的动画而不用下半身的动画呢?
替身系统为我们提供了解决方案。

AvatarMask-部分动画的应用

很多时候,我们希望只改变角色的部分动画。
比如说,换子弹。当我按照一般思路来处理动画,那么考虑到静止,走路,跑步等状态,我们要做特别多的动画,而且动画之间的过渡问题实在是让人难堪。
考虑到是跑步或者什么状态都是下半身的运动,我们的手就没有动嘛(非空手状态下手部不考虑大的晃动)。那换子弹也就是两条胳膊的事情,跟腿也不冲突。那现在我只需要让各个部分做自己的事情,,不就可以处理复杂的动画了吗?
AvatarMask就是这样子。它基于原本的替身体系。
你只需要选择在这一个动画层中,哪些骨骼需要动就可以。
在这里插入图片描述
在这里插入图片描述
可以发现,这套东西很简单,但很有用。


  1. 比如胳膊没有动,但是肩膀发生了运动,因为是父子关系,胳膊是以肩膀为坐标原点记录位置的,所以当肩膀发生了运动,胳膊在世界坐标下的位置也发生了移动,所以要重新计算 ↩︎

  2. 所谓的复用,就是指一套要将 ↩︎

  3. Generic代表是普通模型,无论是车,动物,人都可以。而随之导入的动画一般就和上文介绍的普通动画一样,复用很麻烦。
    Humanoid代表的是这个模型一定是人形模型,Unity会为其创建Avatar以统一骨骼系统。 ↩︎

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Avatar 系统是一个用于创建和控制角色动画的工具。它的原理是通过将角色模型的骨架与动画控制器结合起来,使得角色能够根据不同的动作进行动画表现。 具体来说,Unity Avatar 系统的工作流程如下: 1. 创建角色模型:首先需要创建一个角色模型,包括角色的骨架和皮肤(即角色的外表)。 2. 创建动画控制器:为了让角色能够执行不同的动作,需要创建一个动画控制器。动画控制器是一个用于控制动画的状态机,通过将不同的动作状态连接起来,可以让角色根据不同的状态进行相应的动画表现。 3. 创建 Avatar:在创建角色模型时,需要将其绑定到一个 Avatar 上。Avatar 是一个用于描述角色骨架的数据结构,通过将角色模型的骨架与 Avatar 进行绑定,可以让角色模型在执行动画时正确地进行骨骼变换。 4. 创建动画剪辑:动画剪辑是一段动画序列,用于描述角色在某个状态下的动画表现。通过将不同的动画剪辑与动画控制器相连,可以让角色在不同的状态下执行相应的动画。 5. 控制角色动画:最后,在游戏运行时,通过对动画控制器中的参数进行设置,可以控制角色执行不同的动画。例如,可以通过控制动画控制器中的“移动速度”参数来控制角色的行走动画。 综上所述,Unity Avatar 系统的原理主要是通过将角色模型、动画控制器和 Avatar 进行结合,使得角色能够根据不同的动作进行动画表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值