mcpField
L
layer-vfx

layer-vfx

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

关于 layer-vfx

layer-vfx 是制作游戏特效短片和翻页动画的技能,涵盖特效隔离、背景选择、动作节奏、帧提取与精灵图集打包。

主要功能

  1. 01规划居中且独立的特效
  2. 02按混合方式选择背景
  3. 03为动作安排阶段与时长
  4. 04提取翻页动画帧
  5. 05对齐并打包精灵图集

适用场景

  1. 01制作火焰或魔法冲击翻页动画
  2. 02为烟雾帧制作透明通道
  3. 03制作可循环的光环或传送门
  4. 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 帧翻页书。”

  1. 使用 list_base_models,并设置 filter.use_case: "text_to_image",选择第一个结果。提示词:“游戏视觉特效,一个火球在爆发瞬间撞击,橙白色核心,火焰舔舐,火星飞溅,居中,完整位于画面内,纯黑背景,无地面,无场景,俯视角。”批准其中一个结果。
  2. 使用 list_base_models,并设置 filter.use_case: "image_to_video" 和 filter.capabilities: {fixed_duration: true};对第一个结果调用 get_base_model,查看它支持哪些帧槽位和 video_effects。
  3. 撰写包含各阶段的运动提示词:“一颗小火星聚集四分之一秒,然后迅速向外爆发,接着火焰和火星逐渐消散,直到结束时完全消失。固定机位,全程黑色背景。”将已批准静帧的 file_id 作为 first_frame 传入;如果支持,则传入 video_effects: [{type: "STATIC"}],并设置较短的 duration_seconds。
  4. 按整个任务估算费用:视频加上八次帧运行,每次按实际运行方式估算。超过 20 CU 时,先询问并等待明确同意。
  5. 执行任务,并按 poll_interval_seconds 轮询。使用均匀分布的 video_frame_seconds 提取八帧,每帧分别进行一次 batch_size: 1 的升采样运行。保留黑色背景。
  6. 调用 pack_sprite_sheet,将 file_ids 设置为按播放顺序排列的八帧,并设置 columns: 4。

常见错误

  • 移除加色特效的黑色背景,导致辉光也被删除。
  • 将黑色用作烟雾或尘土的背景,导致它们无法遮挡任何内容。
  • 特效周围的画面中出现了场景、地面或角色。
  • 特效超出画面边缘。
  • 一次性特效没有蓄势阶段,或始终没有完全消散。
  • 承诺提供透明视频。
  • 打包前逐帧裁剪,导致翻页书抖动。
  • 逐帧运行时将 batch_size 保持为四,导致费用变为四倍。

评论

支持 Markdown