关于 layer-vfx
layer-vfx 是制作游戏特效短片和翻页动画的技能,涵盖特效隔离、背景选择、动作节奏、帧提取与精灵图集打包。
主要功能
- 01规划居中且独立的特效
- 02按混合方式选择背景
- 03为动作安排阶段与时长
- 04提取翻页动画帧
- 05对齐并打包精灵图集
适用场景
- 01制作火焰或魔法冲击翻页动画
- 02为烟雾帧制作透明通道
- 03制作可循环的光环或传送门
- 04保持提取帧位置对齐
MCP 相关
该技能介绍了使用 Layer 的 `text_to_image`、`image_to_video` 和 `pack_sprite_sheet` 等工具;未说明 MCP 连接方式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ layerai/ skills --skill layer-vfx安装后在 Claude Code 中输入/layer-vfx确认已加载。
详细介绍
Layer VFX
概述
特效不是魔法的插画,而是一段简短、独立的动态效果,由引擎叠加到游戏画面上。因此,特效必须不带任何周边内容,背景要能被引擎移除,时长也要让玩家能在瞬间看清。大多数失败的特效都败在这三点之一,而不是外观上。
流程是:先将特效设计为静帧,再将静帧制作成短片,然后从短片中提取帧,制成翻页动画。生成机制和花费门槛见 layer 技能;运动提示词见 layer-video。
下文直接点名 pack_sprite_sheet,因为它是 Layer 的确定性打包工具,是工具而非模型,没有其他替代方案可供探索。
如果你的可用技能中缺少此处提到的同系列技能,请让用户安装它(npx skills add layerai/skills --skill <name>);如果没有人协助,请根据工具架构继续操作,并标明这一缺口。
快速参考
| 需求 | 操作 |
|---|---|
| 火焰、魔法、光效、火花 | 使用纯黑背景,以便进行加色混合 |
| 烟雾、灰尘、碎屑、墨迹 | 使用纯色键控背景,然后逐帧移除;这些效果需要真正的 Alpha 通道 |
| 外观 | 使用 text_to_image 生成静帧,只包含一个居中的特效,不要出现其他内容 |
| 动态效果 | 使用 image_to_video,并将静帧设为 first_frame |
| 循环特效 | 使用 loop 功能,并将同一静帧设为 first_frame 和 last_frame |
| 锁定摄像机 | 在模型支持的情况下使用 video_effects: [{type: "STATIC"}],并在提示词中注明 |
| 从短片中提取帧 | 将短片的 file_id 放入图像槽,并使用 video_frame_seconds;每帧运行一次 |
| 翻页动画 | 使用 pack_sprite_sheet,并按照播放顺序传入帧的 file_ids |
背景决定混合方式
引擎通过两种方式之一合成特效,因此背景必须与之匹配。
- 加色混合(火焰、闪电、辉光、魔法轨迹、火花):引擎会将特效的颜色叠加到场景中,因此纯黑会消失。请要求“纯黑背景,没有地板、没有环境、没有地面辉光”。这里的黑色是特效的一部分,不是占位背景;移除黑色会破坏辉光的衰减效果。
- Alpha 混合(烟雾、灰尘、碎石、水花、黑暗魔法):这些效果会使画面变暗或遮挡画面,因此不能用黑色代替透明背景。请使用一种效果中不会出现的纯色键控背景生成,然后逐帧使用
background_removal模型移除背景。这会损伤轻薄的边缘,因此这类特效应优先采用浓密、轮廓清晰的形状。
不要承诺生成透明视频。视频运行的架构中没有任何内容能提供 Alpha 通道,因此透明效果只能通过提取出的帧制作,而不是通过短片制作。
隔离并居中
每次运行只生成一个特效,将其置于画面中央,并确保完整显示,四周留有边距。超出画面的火球无法在引擎中重新定位;画面中的第二个特效则必须手动裁切。请明确写出:“单个特效,居中,完全位于画面内,图像中没有其他内容,没有角色,没有场景”。
特效显示得很小、出现得很快:一个明亮的核心、一个清晰可辨的形状、一种能体现特效用途的颜色。
时序读取
一次性特效分为三个阶段,提示词应写出这三个阶段及大致时长: 蓄势(聚集或蓄力)、爆发(峰值,速度快)、消散(逐渐减弱至无)。特效一开始就达到最高强度,会看起来像故障;如果一直没有完全消散,最后一帧就会留下残影。一次性特效应以全黑画面结束。
循环特效(光环、传送门、火炬火焰)没有开头或结尾:只包含循环运动,并使用循环能力。有关仅提示“循环播放”为何会生成在衔接处跳变的片段,请参阅 layer-video。
从片段中提取帧
任何图像槽位(init_image、reference_image、first_frame、last_frame)都接受视频 file_id,并从中提取一帧,可通过 video_frame(first、middle、last)指定,也可通过 video_frame_seconds 指定,后者会覆盖前者。让时间戳在整个片段中均匀分布:八到十二帧是常见的翻页书帧数。每一帧都会单独运行一次接收它的模型,因此应让每帧的运行也能完成有用的工作:例如,为 Alpha 混合特效移除背景,或在片段分辨率过低时进行升采样。使用 batch_size: 1,因为默认值是四。
某些帧提取模型会使用 init_video 和 frame_extraction_location;get_base_model 会说明模型需要哪些输入。
同一段固定机位片段中的帧已经对齐,因此 pack_sprite_sheet 会让它们保持对齐:以每帧自身的缩放比例将其居中放入统一尺寸的单元格中。不要先逐帧裁剪,否则特效会抖动。
完整示例
“为我们的俯视角 RPG 制作一个火球撞击特效,作为 8 帧翻页书。”
- 使用
list_base_models,并设置filter.use_case: "text_to_image",选择第一个结果。提示词:“游戏视觉特效,一个火球在爆发瞬间撞击,橙白色核心,火焰舔舐,火星飞溅,居中,完整位于画面内,纯黑背景,无地面,无场景,俯视角。”批准其中一个结果。 - 使用
list_base_models,并设置filter.use_case: "image_to_video"和filter.capabilities: {fixed_duration: true};对第一个结果调用get_base_model,查看它支持哪些帧槽位和video_effects。 - 撰写包含各阶段的运动提示词:“一颗小火星聚集四分之一秒,然后迅速向外爆发,接着火焰和火星逐渐消散,直到结束时完全消失。固定机位,全程黑色背景。”将已批准静帧的
file_id作为first_frame传入;如果支持,则传入video_effects: [{type: "STATIC"}],并设置较短的duration_seconds。 - 按整个任务估算费用:视频加上八次帧运行,每次按实际运行方式估算。超过 20 CU 时,先询问并等待明确同意。
- 执行任务,并按
poll_interval_seconds轮询。使用均匀分布的video_frame_seconds提取八帧,每帧分别进行一次batch_size: 1的升采样运行。保留黑色背景。 - 调用
pack_sprite_sheet,将file_ids设置为按播放顺序排列的八帧,并设置columns: 4。
常见错误
- 移除加色特效的黑色背景,导致辉光也被删除。
- 将黑色用作烟雾或尘土的背景,导致它们无法遮挡任何内容。
- 特效周围的画面中出现了场景、地面或角色。
- 特效超出画面边缘。
- 一次性特效没有蓄势阶段,或始终没有完全消散。
- 承诺提供透明视频。
- 打包前逐帧裁剪,导致翻页书抖动。
- 逐帧运行时将
batch_size保持为四,导致费用变为四倍。