关于 layer-sprite-animation
从统一角色设计生成高清游戏精灵表的工作流指南。适用于需要多方向图像和动画循环的游戏美术,先通过镜头变化与视频片段保持角色一致,再提取帧。
主要功能
- 01从一个已批准设计生成多个方向
- 02统一镜头与精灵对齐方式
- 03从视频片段制作动画循环
- 04按指定时间提取帧
- 05打包或拆分精灵表
适用场景
- 01制作多方向角色精灵组
- 02创建原地行走或待机循环
- 03提取帧并排入精灵表
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ layerai/ skills --skill layer-sprite-animation安装后在 Claude Code 中输入/layer-sprite-animation确认已加载。
详细介绍
图层精灵动画
概述
一组精灵图是同一个角色从多个方向、做着不同动作的逐帧画面,并且每一帧都必须是站在同一位置的同一个角色。逐帧绘制无法让高清美术图保持一致:细节太多,很难让角色始终符合设定。可靠的方法是让模型分两次保持角色身份一致:先通过移动摄像机来保持不同方向的一致性,再通过视频片段来保持不同时间的一致性,最后才切分帧。
像素艺术有所不同:它的动作循环较短,逐帧绘制,使用 layer-pixel-art。绑定骨骼动画(Spine)则会把角色拆分为不同部件,使用 layer-game-assets。生成机制和费用门槛见 layer 技能;动作提示见 layer-video。
下文明确提及 pack_sprite_sheet 和 split_sprite_sheet,因为它们是 Layer 确定性图集工具,而非模型,没有其他可供探索的替代方案。
如果你可用的技能中缺少此处提到的同级技能,请让用户安装它(npx skills add layerai/skills --skill <name>);若无法联系用户,则根据工具架构继续操作,并指出这一缺失。
快速参考
| 步骤 | 工具或输入 |
|---|---|
| 一个已批准的设计 | text_to_image,中性站立姿势、单独呈现、采用游戏的摄像机俯仰角 |
| 各个方向 | multi_angle 用例,以已批准的设计为源,设置 camera.yaw_degrees |
| 各方向共用尺寸 | output_fit:FIXED 画布,anchor: "BOTTOM_CENTER",每次运行都保持相同设置 |
| 每个方向一个动作循环 | image_to_video,将该方向的静帧设为 first_frame(循环时也设为 last_frame) |
| 帧 | 在图像槽中使用片段的 file_id,设置 video_frame_seconds,batch_size: 1 |
| 图集 | pack_sprite_sheet,每个方向占一行 |
| 现有图集 | 使用生成该图集时的网格调用 split_sprite_sheet,关闭 trim_transparent |
从一个设计生成各个方向
先生成并批准一个采用游戏摄像机视角绘制的设计:平台游戏采用侧视角,RPG 采用四分之三俯视角。然后通过移动摄像机来生成其他所有方向,不要重新描述角色。
对于 get_base_model 功能报告包含 camera_transform 的模型,execute_forge 接受结构化的 camera;使用 filter.use_case: "multi_angle" 过滤 list_base_models,即可找到这类模型。将已批准的设计附加到模型支持的槽位(init_image 或 reference_image),并设置 yaw_degrees:90 表示右侧面,180 表示背面,270 表示左侧面。八个方向每次旋转 45 度。对于俯视游戏,每个方向都使用相同的 pitch_degrees,确保整组方向共用同一视角。
生成每个方向时,都以原始正面图为基础,切勿使用上一个方向的图,以免误差累积。对称角色通常只需生成八个方向中的五个,因为游戏引擎常会镜像朝左的方向;在花费生成全部八个方向前,先确认游戏是否会这样处理。
每次运行方向生成时,都设置相同的 output_fit:canvas: "FIXED"、相同的 width 和 height,以及 anchor: "BOTTOM_CENTER",让每个精灵都站在同一点上。否则,每个方向生成的尺寸会不同,角色转向时身高也会改变。将已批准的正面图不设置 camera,通过同一个模型运行一次(这样会保留其视角),并使用相同的 output_fit,确保正面图也采用相同画布。
从片段制作循环动画
使用 image_to_video 为每个已批准的方向制作动画,并将其作为 first_frame 传入。对于需要重复的循环(待机、行走、奔跑),筛选 loop 和 fixed_duration,并将同一张静帧也作为 last_frame 传入,这样动作就会回到起点。单次动作(攻击、受击、死亡)只需传入 first_frame。
提示词有三个要点:动作、原地以及静止的镜头。“原地行走,完成一个完整的步幅循环,身体不会在画面中移动。固定镜头,纯色平面背景。”走出画面的角色无法构成循环动画。
从片段提取帧
任何图像槽位都接受视频 file_id,并会在 video_frame_seconds 指定的时间点提取其中一帧(或使用 video_frame:first、middle、last)。均匀提取帧,行走动画通常取六到八帧,并分别对每帧运行一次 background_removal;将 batch_size 设为 1,因为默认值为四。
来自同一固定镜头片段的帧彼此已经对齐。直接将它们打包:pack_sprite_sheet 会把每帧居中放入同一尺寸的单元格中,不会缩放,因此已对齐的循环动画会保持对齐。不要逐帧重新适配或裁切循环帧:分别锚定每帧的底部会抹掉跳跃动作,也会让行走时的上下起伏消失。出于同样的原因,使用 split_sprite_sheet 切分现有精灵表时,不要启用 trim_transparent。
示例
“为我们的骑士制作一段 8 帧的四方向行走动画,用于俯视角 RPG。”
- 已批准的四分之三正面视图具有
file_id。 - 使用
list_base_models并设置filter.use_case: "multi_angle";对第一个结果使用get_base_model,确认camera_transform和所需槽位。运行三次,分别设置yaw_degrees为 90、180、270,使用相同的pitch_degrees,并保持output_fit: {canvas: "FIXED", width: 512, height: 512, anchor: "BOTTOM_CENTER"}相同。每个方向各批准一个。 - 使用
list_base_models,并设置filter.use_case: "image_to_video"和filter.capabilities: {loop: true, fixed_duration: true}。制作四段片段,每个方向分别作为first_frame和last_frame,提示词设为原地行走。 - 运行三十二次帧处理(每段片段八帧),使用
background_removal模型。 - 首次运行前计算全部费用:三个方向处理、四段片段、三十二次帧处理,每种都按实际运行方式估算。费用将超过 20 CUs;请先征求同意,并等待明确答复。
- 按上述顺序执行,并以
poll_interval_seconds轮询。将每个方向的帧放在一起检查,重新制作角色发生漂移的片段。 - 使用全部三十二个
file_id,按方向顺序调用pack_sprite_sheet,并设置columns: 8。
常见错误
- 为 HD 美术作品逐帧绘制,导致角色发生漂移。
- 从上一个方向生成下一个方向,而不是从原始图像生成。
- 各方向使用不同的镜头俯仰角。
- 不设置
output_fit,导致角色转向时尺寸发生变化。 - 行走时穿过画面,而不是原地行走。
- 单独裁切循环帧或将其底部锚定,导致上下起伏和跳跃动作消失。
- 对逐帧处理任务将
batch_size留在四。 - 在引擎会镜像其中三个方向时,仍为八个方向付费。