骨骼动画学习记录(一)

您所在的位置:网站首页 maya控制器不能动 骨骼动画学习记录(一)

骨骼动画学习记录(一)

#骨骼动画学习记录(一)| 来源: 网络整理| 查看: 265

本文基于上课内容进行一定程度的拓展学习 为什么学习骨骼动画?

骨骼动画优势

•利用骨骼这一特殊结构来保存角色姿态

•只需要很少的数据量就可以表示角色的动画

•控制灵活

•容易和环境交互

•能够得到实时计算的姿态

Rig骨骼动画

也叫做隐式动画,因为其动画数据和模型网格数据是分离的; 动画文件保存的是每一帧骨架的姿态,而非网格信息; 播放阶段利用骨骼结构以及每帧的骨架信息可以得到角色的姿态,再利用骨骼和网格顶点的关系可以将模型按照这种姿态绘制出来

Mixamohttps://www.mixamo.com/ 素材网站

Animation 中骨骼动画的切割

 对骨骼动画选择模型进行预览

1.选择骨骼动画的Inspector >Animation

“+”新增动画节点 Start,End为动画被切割的帧段“RunL002”

 

 绿点代表可以进行循环

3.点击Apply即可生成被切割的帧动画

骨骼动画里Animation中Event的使用

Unity Animation Event 动画事件使用教程 及事件无法触发不触发的解决办法_animationevent_千年奇葩的博客-CSDN博客

动画重定向

即Animation Retargeting,是一种动画复用的技术;动作捕捉技术就是基于这个原理来实现的——将真实人物的动作通过图像识别等技术生成动画信息应用到虚拟的角色身上,保存成动画数据。

AnimationType可以调整模型骨骼的类型,修改为为Humanoid;Avatar definition属性为create form this Modle

选择Humanoid后点击Configure进行配置,此时可能出现T-Pose丢失 T型姿势(T Pose),所谓的T Pose就是指身体的形状像个T字

 

一般有两种手段对模型的T Pose进行调节: (1)通过右边Inspector中的Pose菜单中的Enforce T Pose直接强制进行T Pose调节; (2)通过旋转工具对具体的关节进行旋转调节,如下图所示。

Unity Mecanim动画的实现(二):Avatar的配置_SCNU-Levin的博客-CSDN博客 为此处参考

动画曲线(Curves)

可以在动画片段上增加额外的运动数据;可以基于动画状态来控制其他物体; 比如控制角色在冷天的呼气 

docs.unity.cn 使用动画曲线 - Unity手册

docs.unity.cn 曲线时间轴模式说明 - Unity手册

分层动画

为不同身体部位使用不同的状态机:比如下半身是跑步,而上半身在射击; 在不同层间复用动画状态机:角色受伤之后所有运动变化,但动画逻辑不变。

案例:利用动画层,为角色设置不同层的不同效果,并编写脚本实现不同效果的切换。

第一步,场景中导入unityChan模型,并创建动画控制器。双击打开动画控制器,为第一层添加“Walk”动画,为第二层添加“RUN”动画。

第二步,创建新的Mask,打开Humanoid,取消对腿部的Avatar,如下图,并将其应用到新的layer上面。

第三步,为模型添加动画控制器,添加脚本实现切换图层展示不同的动画效果。

 遮罩Mask:动画层设定受该层动画影响的部位(绿色代表受影响,红色是不受影响)

Weight动画层的权重:

默认的Base Layer必须为1。如果设置为0则当前层的动画不会播放,1则会播放,0-1之间会采用类似融合的情况来播放动画,比如之前的招手的例子,如果设置为0.5则招手动画播放时手部只会抬到脖子附近。

Blending动画混合方式:

Override:覆盖,表示当前层的动画会覆盖掉其它层的动画,比如招手播放时右手就不能播放其它的动画了; Additive:添加,表示当前层的动画的量添加到其它层的动画,比如招手播放时,手部奔跑或站立的甩动也会保留;

使用注意:在使用分层动画时,要在设置要播放层级权重为1进行播放时要隐藏其他层级(Weight = 0),如下:

if (Input.GetKeyDown(KeyCode.Q))         {             animator.SetLayerWeight(layerBase, 0);             animator.SetLayerWeight(layerRun, 0);             animator.SetLayerWeight(layerWalk, 1);             animator.Play("WALK00_B", layerWalk);         } 拓展学习:逆向运动学

正向运动学Forward Kinematics: 实现骨骼动画最简单的方法从根节点开始(人体一般是髋骨)然后将变换逐层传递给子孙节点,当在骨骼上绑定物体的时候使用正向运动学会比较方便。

逆向运动学(IK,Inverse Kinematics): 游戏人物与周围环境的交互计算骨骼链中每个骨骼的角度,使得末端骨骼可以达到一个特定位置从终端节点(比如手部)开始计算,然后逐层往上计算其他祖先节点的信息

利用逆向运动学,可以实现动画角色头部跟踪鼠标,实现手脚跟踪目标物体

IK可以解决使用正向运动学时不知道骨骼链终端骨骼的位置的问题,但是使用IK时会明确终端骨骼位置,而相关关节的角度不知道,所以解决IK问题,通常有不止一种解法

逆向运动学是一种计算动画角色关节位置的技术,可以用于实现角色的头部跟踪鼠标和手脚跟踪目标物体。 首先,我们需要定义角色的骨骼结构和关节约束。对于头部跟踪鼠标,我们可以将头部作为一个关节,将鼠标位置作为目标点,然后使用逆向运动学算法计算头部关节的旋转角度,使得头部朝向鼠标位置。对于手脚跟踪目标物体,我们可以将手和脚作为关节,将目标物体位置作为目标点,然后使用逆向运动学算法计算手和脚关节的旋转角度,使得手和脚朝向目标物体位置。 具体实现过程如下: 1. 定义角色的骨骼结构和关节约束。对于头部,我们可以将头部作为一个关节,将鼠标位置作为目标点,然后使用逆向运动学算法计算头部关节的旋转角度,使得头部朝向鼠标位置。对于手和脚,我们可以将手和脚作为关节,将目标物体位置作为目标点,然后使用逆向运动学算法计算手和脚关节的旋转角度,使得手和脚朝向目标物体位置。 2. 实现逆向运动学算法。逆向运动学算法是一种迭代算法,通过不断调整关节的旋转角度,使得关节朝向目标点。具体实现过程如下: a. 初始化关节的旋转角度,使得关节朝向目标点。 b. 计算关节到目标点的距离,如果距离小于一定阈值,则停止迭代。 c. 计算关节的旋转角度,使得关节朝向目标点。 d. 更新关节的旋转角度。 e. 重复步骤b-d,直到关节到目标点的距离小于一定阈值。 3. 实现鼠标和目标物体的位置更新。鼠标和目标物体的位置会随着时间变化,需要实时更新它们的位置。 4. 实现动画角色的渲染。将计算得到的关节旋转角度应用到角色的骨骼结构上,然后渲染出动画角色。 综上所述,利用逆向运动学可以实现动画角色头部跟踪鼠标,实现手脚跟踪目标物体。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3