跳转到正文
全部教程English

AI 行走动画循环

从 4 秒 AI 行走动画中,截出一个可循环的步态

用水彩角色的真实动画,演示如何从 96 帧预览中选择 32 帧行走循环,检查首尾衔接,并理解帧率、角色位移和滑步之间的关系。

AnimGen更新于 9 分钟阅读
水彩女性角色一个行走周期中的四个真实姿势,等比排列在浅色背景上
本文目录

一段角色行走视频,单次播放看起来很自然,整段重复时却可能每隔几秒重新起步。放进游戏后,角色已经在往前走,身体却又回到准备迈步的姿势,停顿就会特别明显。

AnimGen 首页的水彩女性角色正好能说明这个问题。这次使用角色的 ProRes 4444 透明源文件:4 秒、24 FPS,共 96 帧。开头接近站立,随后进入连续行走。我们从中截出 32 帧,保持 24 FPS,一个周期约 1.33 秒。

打开原片、循环与横向移动对照。演示默认暂停,点击播放后可以连续观察几轮,也可以分别拖动两个视频的进度条。

把起步和连续行走分开看

完整动画 · 4 秒 · 96 帧 · 24 FPS。点击播放,观察角色从起步进入连续行走。

先把完整的 4 秒预览(MP4,约 1.1 MB)播放一次。前几帧的步幅较小,角色逐渐迈开腿;后面才出现交替重复的行走动作。

起步本身有用途。游戏里的角色从静止转为移动时,可以单独使用这一段。持续行走则需要一个能接回自身的周期:末尾回到开头以后,双脚仍按原来的节奏交替,身体没有突然退回站姿。

选片段时,先观察脚,再看手臂和衣摆。同一条腿再次来到相近的步态位置,是寻找周期的起点;两条腿交换前后位置的相似轮廓,可能只走了半个周期。衣服遮住腿时,手臂摆动和脚尖方向可以帮助辨认。

这次选取的是第 33–64 帧

我们在 24 FPS 源文件中重新核对选区,保留零基索引 32–63 的连续 32 帧。完整预览和循环都从这份 ProRes 导出,画面尺寸保持为 496 × 864,没有补帧或加速。

项目 完整预览 选出的循环
帧数 96 32
播放帧率 24 FPS 24 FPS
时长 4 秒 32 ÷ 24,约 1.33 秒
在预览中的位置 第 1–96 帧 第 33–64 帧
可下载格式 WebM,带 Alpha 透明度 WebM,带 Alpha 透明度

这里的“第 33 帧”从 1 开始数。如果工具从 0 开始编号,同一段是索引 32–63。按时间表达,起点为 32 / 24 秒,终点边界为 64 / 24 秒,也就是约 1.33–2.67 秒,终点边界处的下一帧不包含在选区中。

text
保留的源帧:32, 33, 34, ... , 63(零基索引)
输出帧数:32
输出 FPS:24
周期时长:32 / 24 ≈ 1.333 秒
播放顺序:32 → 33 → … → 63 → 32 → 33 → …

这组数字用于复核本案例。换一段生成结果,稳定动作出现的位置和一个周期的长度都会变化,需要重新寻找选区。

重点检查第 64 帧接回第 33 帧

截完后,循环播放至少三遍。选区内部本来就是连续画面,最容易暴露问题的位置是最后一帧跳回第一帧的瞬间。

选出的行走循环 · 原片第 33–64 帧 · 24 FPS · 约 1.33 秒。点击播放后持续循环,观察首尾衔接。

循环交界处的四帧,从左到右为原预览第 63、64、33、34 帧

图中从左到右依次是原预览的第 63、64、33、34 帧,对应输出序列的最后两帧与最前两帧。图片来自透明循环文件,统一合成到浅色背景,人物保持原始比例。

观察跨过中间接缝时的三件事:脚是否沿原来的方向继续运动;身体高度和位置是否突然跳变;衣摆有没有瞬间换成另一种形状。可以慢速拖动视频看姿势,再恢复正常速度判断节奏。

首尾两帧不必完全相同。正常播放时,每一帧都会保持一小段时间;在末尾再塞入一张与首帧相同的图片,可能让同一个姿势停留两次,反而形成顿点。更合适的目标是让最后一帧到第一帧的变化,与片段内部相邻帧的变化接近。

如果交界处仍然明显,可以把选区起点或终点前后移动一帧,再播放比较。24 FPS 下,一帧约占 42 毫秒,少一帧或多一帧都足以改变脚步节奏。每次只动一个边界,更容易知道哪次调整起了作用。

在编辑器里保留这一段,先保持 24 FPS

使用这份预览复核时,在 AnimGen 的精修编辑器中查看 Source Frames,把中间这 32 帧按原顺序放入 Animation Sequence,移除序列里其他帧。已有序列需要先检查,避免把同一选区又追加一遍。将输出 FPS 保持为 24,再开启循环检查。

具体面板和选帧操作可以参照动画精修编辑器说明。源帧位置与输出序列位置要分开看:截取后,输出的第 1 帧已经是原预览的第 33 帧。

32 帧改用 48 FPS 播放,时长会缩短到约 0.67 秒,人物也会走得更快。这次保留源文件的全部 24 FPS 动作帧,让循环与原片保持相同的速度。若先丢掉一半帧,再通过重复帧导出成 24 FPS,丢失的中间姿势仍不会回来。

本文提供完整片段与循环片段的透明 WebM 下载。浏览器对照演示使用同一批帧合成的浅底 MP4,两种预览保持相同背景和帧率,便于比较动作。制作自己的素材时,可以从透明动画工作流开始。

素材 网页预览(浅色背景) 透明素材(保留 Alpha)
完整 4 秒片段 MP4 · 约 1.1 MB WebM · 约 2.2 MB
32 帧行走循环 MP4 · 约 396 KB WebM · 约 810 KB

以上文件都保持 496 × 864、24 FPS。观看动作可以打开 MP4;需要透明背景时,下载 WebM。网页无需加载约 35 MB 的 ProRes 原片。

让角色往前走,还要配合场景里的移动速度

循环文件反复播放脚步,角色在游戏世界里的坐标通常由游戏逻辑更新。将两者放在一起后,即使循环接缝已经比较顺,移动速度不匹配仍会产生滑步:脚接触地面时,身体前进得太快或太慢。

配套的横向移动演示使用同一份 32 帧透明 WebM 循环,同时改变角色在页面中的位置,默认移动速度为 125 px/s。浅色底来自演示场景,角色视频本身保留透明通道。可以调低或调高移动速度,观察脚底和地面的相对运动。演示到达右侧后会回到左侧,这是场景位置重置,和视频内部每 1.33 秒重复一次的步态是两个独立过程。

实际放进游戏时,从正常大小和正常速度开始看。以脚落地的一段为参照,让它在接触地面时尽量少滑动,再按玩法调整移动速度或动画播放速度。缩放角色后也要重新看一遍;同一套动作变大以后,一个步幅在屏幕上对应的距离会跟着变化。

本文的移动演示用于观察这层关系,没有把某个网页速度值写成角色的标准步速。导入 Godot 的过程可以接着看透明动画导入实测

把确认好的周期带到目标项目

选区满意后,记录帧数、FPS 和画布尺寸。导出后再播放一次,确认步态、透明度和角色位置都与编辑时一致。更换格式或引擎时,重点核对帧序和播放速度,避免 24 FPS 的片段被按其他帧率播放。

游戏中的精灵图与独立 PNG 帧可以参照导出格式对比选择;如果透明边缘仍有残色,可以继续调整Alpha 阈值与边缘去色

用这份4 秒预览寻找选区,再与32 帧循环预览对照。给自己的角色制作行走循环时,从一个完整步态开始,连续播放几遍,等动作接顺了再接入场景移动。

查看图片细节