mcpField
L
layer-sprite-animation

layer-sprite-animation

github.com/layerai其他70 次安装今天更新
代码仓库

关于 layer-sprite-animation

从统一角色设计生成高清游戏精灵表的工作流指南。适用于需要多方向图像和动画循环的游戏美术,先通过镜头变化与视频片段保持角色一致,再提取帧。

主要功能

  1. 01从一个已批准设计生成多个方向
  2. 02统一镜头与精灵对齐方式
  3. 03从视频片段制作动画循环
  4. 04按指定时间提取帧
  5. 05打包或拆分精灵表

适用场景

  1. 01制作多方向角色精灵组
  2. 02创建原地行走或待机循环
  3. 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。”

  1. 已批准的四分之三正面视图具有 file_id。
  2. 使用 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"} 相同。每个方向各批准一个。
  3. 使用 list_base_models,并设置 filter.use_case: "image_to_video" 和 filter.capabilities: {loop: true, fixed_duration: true}。制作四段片段,每个方向分别作为 first_frame 和 last_frame,提示词设为原地行走。
  4. 运行三十二次帧处理(每段片段八帧),使用 background_removal 模型。
  5. 首次运行前计算全部费用:三个方向处理、四段片段、三十二次帧处理,每种都按实际运行方式估算。费用将超过 20 CUs;请先征求同意,并等待明确答复。
  6. 按上述顺序执行,并以 poll_interval_seconds 轮询。将每个方向的帧放在一起检查,重新制作角色发生漂移的片段。
  7. 使用全部三十二个 file_id,按方向顺序调用 pack_sprite_sheet,并设置 columns: 8。

常见错误

  • 为 HD 美术作品逐帧绘制,导致角色发生漂移。
  • 从上一个方向生成下一个方向,而不是从原始图像生成。
  • 各方向使用不同的镜头俯仰角。
  • 不设置 output_fit,导致角色转向时尺寸发生变化。
  • 行走时穿过画面,而不是原地行走。
  • 单独裁切循环帧或将其底部锚定,导致上下起伏和跳跃动作消失。
  • 对逐帧处理任务将 batch_size 留在四。
  • 在引擎会镜像其中三个方向时,仍为八个方向付费。

评论

支持 Markdown