动画帧 — 视频优先
图像生成器绘制姿态;而视频生成器理解运动——腿部交替、弧线连续性、布料与火焰动力学都是“免费”的,因为视频必须让它们动起来。因此,不要要求图像模型想象运动中的姿态:先让基础姿态动起来,然后从中提取真实的帧。
应用构建器执行(请先阅读)
本技能是原则文档(运动定律、循环质量控制、何时使用视频)。在应用构建器沙箱中,不要随意运行 ffmpeg 收割,也不要发明一个随机的可抠像 #hex 背景。
| 步骤 | 执行此操作 |
|---|---|
| 生产精灵 / 固定网格 | generate2dsprite — 使用纯色 #FF00FF 品红精灵表 + 色度脚本 |
| 从视频获取更密集的运动 | video2dsprite — 基础帧仍用 #FF00FF → imagine_image_to_video → 技能脚本(ffmpeg + 色度) |
| 可抠像背景 | 使用任一管线时始终使用 #FF00FF(色度处理必需) |
| 本技能 | 循环 / 翻页测试 / 下方运动定律 — 在管线运行后应用 |
打开 .grok/skills/video2dsprite/SKILL.md 或 .grok/skills/generate2dsprite/SKILL.md,并遵循其工作流进行生成和后处理。然后在此应用定律和翻页测试,再将帧送入游戏。
默认管线(意图)
- 基础帧。 主体处于中立/起始姿态,使用完整风格词,侧面/游戏适用视角,纯色
#FF00FF背景(应用构建器色度抠图)。game-asset-core 默认规则适用。 - 动画化。 从基础帧调用
imagine_image_to_video:一个清晰的动作,原地进行,固定镜头(例如“骑士原地行走,侧面视角,镜头锁定”,6秒)。保持镜头简单——一个主体,一个动作。优先通过video2dsprite运行,以确保收割和色度处理一致。 - 收割 + 清理。 使用
video2dsprite脚本(而非临时ffmpeg -i … fps=12单独调用)。品红填充/去色出血线逻辑在该脚本中;除非你完全放弃品红管线,否则不要使用另一个不同的纯色#hex重新抠图。 - 选择。 挑选那些 (a) 捕捉了运动不同阶段且 (b) 可循环的帧——序列的结尾必须能流畅回到开头。不要强制固定帧数:如果运动用8、10或12帧表现最好,就输出那么多帧(更多帧数在引擎中更平滑)。对于循环,使用运动标志点(脚触地、翅膀极点、火焰峰值)选择完整的一个周期。
- 打包。 按播放顺序交付帧(零填充名称)和/或按 game-asset-core 规则(统一单元格,无分隔线)生成精灵表——或者使用
video2dsprite/generate2dsprite输出的透明条或网格。说明预期的 fps。
仅当视频运动失败(极少情况:非常风格化的姿态、单个戏剧性关键帧)时,回退到逐关键帧的 imagine_text_to_image(如果后续使用精灵脚本处理后处理,仍使用 #FF00FF 背景)——然后自行规划阶段并遵守下方定律。对于清晰的多帧生产网格,优先使用 generate2dsprite。
运动定律(无论使用何种管线,均需对照验证)
- 循环必须可循环;交替步态的一半周期应为镜像。
- 连续性:肢体、道具、解剖部位、特效在连续路径上移动——相邻帧之间没有任何瞬移、消失或复制。
- 静帧时物理感依然存在:腾空时显示空气阻力,蓄力时压缩,跟随动作时过冲;特效锚定其原点,除非请求要求移动。
- 能量匹配请求:待机/微妙动作意味着帧间差异极小。
验证——翻页测试
严格按照顺序查看最终帧,并口头描述运动;明确检查循环闭合(最后一帧→第一帧)。口头描述中的任何犹豫都意味着帧不合格。视频管线通常一次通过——这就是它作为默认方案的原因。