Unity 人物模型学习笔记
一、关于模型的检查
拿到人物模型时,检查人物:
- 位置信息是否在0点
- 布线/UV是否正常
- 身体各部分是否分开
- 各部分命名是否清晰
- 骨骼需要绑定
二、Unity人物动画
https://www.bilibili.com/video/BV1cc41197mF?spm_id_from=333.788.recommend_more_video.-1&vd_source=707ec8983cc32e6e065d5496a7f79ee6
1. 人物下载
- mixamo.com,可以下载人物模型和动画
2. 导入unity
https://www.bilibili.com/video/BV1Wu411F7Ca?spm_id_from=333.788.recommend_more_video.-1&vd_source=707ec8983cc32e6e065d5496a7f79ee6
- 通过使用外部材质,导入模型的贴图
3. 人物动画
https://www.bilibili.com/video/BV1RH4y1i7px/?spm_id_from=333.337.search-card.all.click&vd_source=707ec8983cc32e6e065d5496a7f79ee6
- 导入模型后,建立Animator,并关联骨骼(Avatar)阿凡达
- 可以查看Avatar文件,有骨骼等设置
- 建立一个Animator Control,加一个状态节点,绑定一个动画
- 这里先绑定了一个抠帧动画
- 先去掉Avatar骨骼,发现可以运行(这是因为这个案例的模型不符合T-Pose或Humanoid规则)
- 只要符合T-Pose与Humanoid规则,相互的人物动画,就可以互通使用
4. 人物动画素材下载
-
https://www.mixamo.com
-
https://assetstore.unity.com/3d/animations
-
一些动画组件:
-
https://assetstore.unity.com/packages/3d/animations/human-basic-motions-free-154271
-
https://assetstore.unity.com/packages/3d/animations/human-basic-motions-157744
-
https://assetstore.unity.com/packages/3d/characters/humanoids/humans/anime-girls-pack-263442
-
https://assetstore.unity.com/packages/3d/animations/frank-platformer-basic-222129
-
https://assetstore.unity.com/packages/3d/animations/basic-standing-animation-package-219976
-
https://assetstore.unity.com/packages/3d/animations/synty-animation-idles-299700
-
https://assetstore.unity.com/packages/3d/animations/dialogue-anims-222285
三、Animation Rigging
Unity 的 Animation Rigging 是一个强大的动画系统扩展包,主要用于在运行时(Runtime)或编辑器(Editor)中对角色骨骼进行程序化控制,增强传统动画的表现力。它的核心作用是在保持原有动画的基础上,添加动态的、可编程的骨骼控制
网址:https://www.bilibili.com/video/BV1Vf421D7YY/?spm_id_from=333.1387.favlist.content.click&vd_source=707ec8983cc32e6e065d5496a7f79ee6
1. 安装
- 下载一个免费的人物UnityChan
2、Bone Renderer Setup
- 菜单 -> Animation Rigging -> Bone Renderer Setup
- 添加Bone Renderer组件
- 能显示骨骼,选择骨骼,调整骨骼显示等
3、Rig Setup,望向目标
- 菜单 -> Animation Rigging -> Rig Setup
- 在Rig 1里,可以增加骨骼约束
- 在Rig下建立HeadAim,并添加组件Multi-Aim Constraint 多目标约束
- 找到头部的节点,拖入
- 加入Target
- 通过AnimationRigging小窗口改变Target的样式
- 加入HeadAim的Source Objects,调整Axis
- 限制旋转,更加自然
- 使用权重,来减轻在某种情况下的影响
- 或者
- 碰到需要多个跟随目标的情况,可以如下设置
- HeadAim是头部,ChestAim是身体,都绑定Target,就可以实现
4、IK骨骼约束
- 可以再添加一个约束层
- 建立Rig 2,并有手臂移动约束器
- 使用Two Bone IK Constraint,双骨IK约束器
- 这里有3个骨骼,把手、手肘和手臂分配给它
- 建立一个target
- 选择Target,在选择LeftHand节点,选择菜单Animation Rigging -> Align Transform,对齐到手上
- 通过右下方的Animation Rigging小窗口,改动下形状
- 把目标绑定在Target关联
- 这样手的位置被约束到了一个位置
5、更多案例
通过Animation Rigging的Samples,导入更多的案例进行学
核心约束脚本
- BoneRenderer
功能:在Scene视图中可视化骨骼层级结构
用途:调试和查看骨骼位置关系
- RigBuilder
功能:管理所有Rig层的核心组件
用途:必须添加到角色根对象上,协调所有Rig约束
- Rig
功能:定义约束层容器
用途:组织和管理一组相关约束
常用约束类型
- TwoBoneIKConstraint
功能:实现经典的两段骨骼IK解算
用途:手臂/腿部控制,末端受目标位置和旋转控制
- MultiParentConstraint
功能:多父级约束
用途:允许一个骨骼受多个变换源影响,可设置权重混合
- MultiPositionConstraint
功能:多位置约束
用途:混合多个位置源的影响
- MultiRotationConstraint
功能:多旋转约束
用途:混合多个旋转源的影响
- MultiAimConstraint
功能:多目标注视约束
用途:控制骨骼朝向多个目标点
- ChainIKConstraint
功能:链式IK约束
用途:处理多骨骼链的IK解算,比TwoBoneIK更灵活
高级约束
- BlendConstraint
功能:约束混合
用途:在不同约束设置之间平滑过渡
- OverrideTransform
功能:变换覆盖
用途:临时覆盖骨骼的变换值
- TwistChainConstraint
功能:扭曲链约束
用途:实现脊柱等部位的扭曲效果
- DampedTransform
功能:阻尼变换
用途:为变换添加延迟/阻尼效果
实用工具脚本
- RigTransform
功能:装备变换代理
用途:在装备系统中创建虚拟控制点
- WeightedTransformArray
功能:加权变换数组
用途:存储带权重的变换数据
- RiggingMenu
功能:快速创建装备的菜单工具
用途:加速装备创建流程
典型应用场景
-
角色装备:组合使用TwoBoneIK和MultiParent创建完整角色装备
-
面部动画:使用MultiPosition和MultiRotation控制面部混合形状
-
动态道具:通过OverrideTransform实现武器拾取/放置
-
注视系统:MultiAimConstraint创建头部/眼睛注视控制
-
程序动画:结合ChainIK和脚本创建动态运动效果
测试源码地址:https://download.csdn.net/download/qq_17523181/90855595