MMD 补间曲线 — 让动作从机械变成灵动
为什么需要补间曲线
两个关键帧之间,MMD 默认用线性插值(匀速运动)。但真实世界里,几乎没有东西匀速运动——挥手是先快后慢,转头是先加速再减速,落地是快速到地面然后微弹一下。
补间曲线(Interpolation Curve) 就是让你调整"两个关键帧之间的运动速度分布",把机械感的匀速变成自然感的变化速度。
面板位置
时间轴下方通常有一个独立的小面板,标题叫「补间曲线」「Interpolation」或类似名字。里面有:
- 一条红色曲线(连接两个菱形端点)
- 曲线上的控制点(默认两端各一个,部分版本可加中点)
每个骨骼(和相机参数)都有独立的补间曲线。
曲线的直观理解
横向 = 时间(左=上一个关键帧,右=下一个关键帧)纵向 = 运动进度(下=开始,上=结束)
| 曲线形状 | 效果 | 适用场景 |
|---|---|---|
| 直线(默认) | 匀速运动 | 简单平移、不重要的过渡 |
| 左端平缓 → 右端陡峭 | 先慢后快(加速) | 抬手→挥手加速 |
| 左端陡峭 → 右端平缓 | 先快后慢(减速) | 挥手→停住 |
| S 形曲线 | 先加速再减速 | 转头、大动作(最常用) |
| 反向 S 形 | 先减速再加速 | 少见,特殊效果 |
调整曲线的方法
方法一:拖动端点
曲线上有两个菱形端点,直接用鼠标拖动它们改变曲线的倾斜度和弯曲方向。
- 拖端点的Y 轴高度:改变起始/结束速度
- 拖端点的X 轴位置:改变曲线的曲率(部分版本不支持)
方法二:预设模板
部分版本在曲线面板里提供几个预设按钮:
- 直线
- 先快后慢(Ease Out)
- 先慢后快(Ease In)
- S 形(Ease In + Out)
直接点一下套用,比手动拖更精确。
骨骼曲线 vs 相机曲线
两者的曲线系统完全相同,但调整的参数不同:
| 对象 | 曲线作用参数 | 常见用途 |
|---|---|---|
| 骨骼 | 绕 XYZ 三轴的旋转 | 手臂挥动速度、头部转动节奏 |
| 相机位置 | XYZ 三轴坐标移动 | 推镜速度、环绕平滑度 |
| 相机朝向 | XYZ 三轴旋转 | 转头观看方向 |
| 相机 FOV | 单参数 | 快速推镜 → 慢停 |
实战:让挥手更自然
原始 K 帧(4 帧挥手):
帧 0 → 手在身侧
帧 10 → 手抬到肩高
帧 20 → 手举到最高
帧 30 → 手回到身侧
默认线性曲线 → 匀速挥手 → 像个机器人。
调整方案
- 选中帧 10-20 之间的手臂骨骼曲线(抬手到举高)
- 把曲线调成先快后慢(左端陡峭 → 右端平缓)
- 选中帧 20-30 之间的曲线(从最高回到身侧)
- 调成先慢后快(左端平缓 → 右端陡峭)
播放效果:手快速抬起 → 在最高点稍作停留 → 快速落下。像真人挥手了。
为什么每个骨骼要独立曲线
不同部位的运动节奏完全不同:
- 头:转头需要 S 形(先加速再减速,模拟惯性)
- 手臂:挥手需要先快后慢(抬起有冲劲,落下有重力)
- 躯干:跟着头的节奏(身体微侧)
- 相机:环绕运镜需要平滑(S 形曲线)
如果全用同一条曲线,每个部位的运动看起来像被一个节拍器卡住,没有层次感。
复制曲线
很多版本支持曲线复制粘贴——把一根骨骼调好的曲线应用到其他骨骼:
- 选中调好曲线的骨骼
- 点「复制曲线」
- 选中需要同样曲线的其他骨骼
- 点「粘贴曲线」
适合批量调整一个动作段内所有手臂骨骼的曲线。
循环动作的曲线
如果一个动作段需要循环播放(8 拍舞蹈循环),首尾帧的曲线必须衔接——否则循环点会有"跳变"。
检查方法:播放到循环衔接处,看动作是否自然连贯。如果有"抖一下",就是首尾帧的曲线没调好。
曲线和物理的关系
动力学刚体(头发/裙摆)不被曲线影响——它们的运动完全由 Bullet 物理引擎模拟。曲线只影响运动学刚体跟随的骨骼姿势。
所以:
- K 帧骨架 + 曲线 → 决定"身体怎么动"
- 物理模拟 → 决定"头发裙摆怎么飘"
- 两者叠加 → 最终画面
高级:曲线的时间压缩
部分版本支持"时间压缩/扩展"——整体拉快或放慢一段关键帧的时间轴。这个和曲线配合:
- 时间压缩:让动作变快
- 曲线调整:让变快的动作仍然有节奏感
- 两者结合:实现"快动作 + 自然减速"
曲线的可复用性
如果你做了一个动作,花了很多时间调曲线,务必把 VMD 导出备份——下次类似的动作可以直接复用。
曲线是动作质感的关键,也是衡量"好 K 帧者"和"差 K 帧者"的标志之一。