关节坐标的定义和计算方法
- 绑定姿势:这是网格绑定到骨骼之前的姿势,通常是设计师在绑定模型时预设的。绑定姿势通常在一个T型姿势(T-Pose)下进行记录。
- 局部姿势:这是关节相对于父关节来指定的常见姿势。局部姿势存储为TQS格式,表示相对于父关节的位置、朝向和缩放。根关节的父节点可以认为是世界坐标系的原点。在数学上,关节姿势是一个仿射变换,由平移向量、旋转矩阵和对角缩放矩阵组成。
骨架由一系列具有层次关系的关节(骨骼)和关节链组成,是一种树结构,选择其中一个是根关节,其它关节是根关节的子孙,可以通过平移和旋转根关节移动并确定整个骨架在世界空间中的位置和方向。父关节运动能影响子关节运动,但子关节运动对父关节不产生影响,因此,平移或旋转父关节时,也会同时平移或旋转其所有子关节。
Unity动画系统
分为旧版动画系统和新版动画系统,即AnimationClip 与 Animator(Mecanim)
AnimationClip
Plays specific Animation Clips directly via script (e.g., animation.Play(“Jump”)). It has no built-in state machine or visual graph.Animator/Mecanim (New)
Attach a animator component to your GameObject. It requires an Animator Controller asset to function.
It uses a visual graph to manage states. You rarely tell it to “Play” a clip; instead, you change a parameter (e.g., animator.SetFloat(“Speed”, 5.0f)), and the state machine decides which animation to play.
3D模型
- 绑定 (Rigging)
指为3D模型创建内部骨骼、关节及控制器系统,定义运动逻辑,给角色搭建“骨架”和“控制系统”的过程,类似于给木偶安装操纵线。
- 目的: 赋予模型生命,使动画师能方便地操纵复杂的几何体。
- 组成: 包含骨骼(Joints)、控制器(Controllers)、IK/FK(逆向/正向动力学)链。
工作内容: 放置关节、设置骨骼层级、添加IK把手、创建控制器。
- 蒙皮 (Skinning)
蒙皮是绑定完成后的步骤,将模型的顶点(Vertex)“绑定”到骨骼上。
目的: 让骨骼驱动模型网格变形。当骨骼移动时,皮肤上的顶点会随之移动。
方法:
- 平滑蒙皮(Smooth Skinning): 顶点受多个骨骼影响,变形平滑自然(最常用)。
- 刚性蒙皮(Rigid Skinning): 一个顶点只受一个骨骼影响,变形较生硬。
关键概念——刷权重(Weighting): 定义顶点受特定骨骼影响的程度(0-1之间)。将Mesh网格的顶点与骨骼节点对应,从而决定模型的不同部位要跟着关节位移的程度
- 制作关键帧动画
IK骨(Inverse Kinematics,反向动力学)通过设置骨骼末端(如手、脚)的目标位置,计算系统会自动推算出其他关节(如手腕、肘部)的移动
- IK骨不是被反推的骨头的子节点,而是以外的骨头(例如大腿->小腿->脚,此时IK骨则不为这三个骨头的子节点)
- Chain Length:有多少根节点骨头要反算
- Pole Target:被影响关节的朝向方向