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
概要
エフェクトは、魔法を描いたイラストではありません。ゲームプレイにエンジンが重ねる、短く独立したモーションです。そのため、周囲に何もない状態で、エンジンが除去できる背景に置き、プレイヤーが一瞬で認識できるタイミングで表示する必要があります。失敗するエフェクトのほとんどは、見た目ではなく、この3点のいずれかに問題があります。
手順は次のとおりです。まずエフェクトを静止画としてデザインし、その静止画を短いクリップにアニメーション化してから、クリップからフレームを取り出してフリップブックにします。生成の仕組みと利用料の確認については layer スキル、モーションのプロンプトについては layer-video を参照してください。
pack_sprite_sheet は Layer の決定論的なパッキングユーティリティであり、モデルではなくツールで、ほかに探すものがないため、以下では明記しています。
ここで名前が挙がっている関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add layerai/skills --skill <name>)。無人で作業する場合は、ツールのスキーマに従って進め、不足している点を明示してください。
クイックリファレンス
| 必要なもの | 対応方法 |
|---|---|
| 炎、魔法、光、火花 | 加算合成用に、背景を純粋な黒にする |
| 煙、ほこり、破片、インク | 単色のキーイングカラーにして、フレームごとに除去する。これらには正しいアルファが必要です |
| 見た目 | text_to_image で静止画を作成し、エフェクトを1つだけ中央に配置して、ほかは何も入れない |
| モーション | 静止画を first_frame として image_to_video を使う |
| ループするエフェクト | loop 機能を使い、同じ静止画を first_frame と last_frame に指定する |
| 固定カメラ | モデルが対応している場合は video_effects: [{type: "STATIC"}] を使い、プロンプトにも明記する |
| クリップからのフレーム | 画像スロットにクリップの file_id を指定し、video_frame_seconds を使ってフレームごとに1回実行する |
| フリップブック | フレームの file_ids を再生順に並べて pack_sprite_sheet を使う |
背景で合成方法が決まる
エンジンによるエフェクトの合成方法は2種類あり、それぞれに背景を合わせる必要があります。
- 加算合成(炎、稲妻、光彩、魔法の軌跡、火花):エンジンはエフェクトの色をシーンに加算するため、純粋な黒は消えます。「純粋な黒の背景、床なし、環境なし、地面の光彩なし」と指定してください。ここで黒は機能の一部であり、仮の背景ではありません。黒を取り除くと、光彩の減衰が失われます。
- アルファ合成(煙、ほこり、瓦礫、水しぶき、闇の魔法):これらは暗くしたり、覆い隠したりするため、黒を透明の代わりにはできません。エフェクトに含まれない単色のキーイングカラーを背景にして、
background_removalモデルでフレームごとに除去してください。かすかな輪郭は損なわれるため、こうしたエフェクトでは密度が高く、輪郭のはっきりした形状を優先してください。
透明な動画を約束してはいけません。動画生成のスキーマにはアルファチャンネルを出力するものがないため、透明化はクリップではなく、抽出したフレームに対して行います。
分離して中央に配置する
1回の実行につきエフェクトは1つだけにし、中央に配置して、四辺に余白を残しながらフレーム内に完全に収めてください。フレームからはみ出した火の玉はエンジン内で位置を変えられず、フレーム内に別のエフェクトがあると、手作業で切り抜かなければなりません。「エフェクトは1つだけ、中央に配置し、フレーム内に完全に収める。画像内にほかのものを入れず、キャラクターも風景も入れない」と指定してください。
エフェクトは小さく、素早く表示されます。明るいコアを1つ、認識しやすい形を1つ、エフェクトの効果が伝わる色を1つにしてください。
タイミングの読み取り
単発エフェクトには3つのフェーズがあり、プロンプトではそれぞれの大まかなタイミングを指定します。 予備動作(集束またはチャージ)、バースト(ピーク、瞬間的)、減衰(消え去るまでの弱まり)です。最初から最大強度で始まるエフェクトはグリッチのように見え、完全に消えないエフェクトは最後のフレームに残像を残します。単発エフェクトは何もない黒で終わらせます。
オーラ、ポータル、たいまつの炎などのループには始まりも終わりもありません。循環する動きだけを指定し、ループ機能を使います。「ループ」とだけ指示すると継ぎ目で飛ぶクリップになる理由については、layer-video を参照してください。
クリップからフレームを取り出す
どの画像スロット(init_image、reference_image、first_frame、last_frame)にも動画の
file_id を指定でき、video_frame(first、middle、last)または、そちらより優先される
video_frame_seconds で指定した1フレームが取り出されます。タイムスタンプはクリップ全体に均等に配置します。8〜12フレームが一般的なフリップブックの枚数です。各フレームは受け取るモデルを1回実行するため、フレームには、それだけでも役立つ処理を行わせます。たとえば、アルファブレンドするエフェクトなら背景を除去し、クリップの解像度が低すぎる場合はアップスケールします。デフォルトは4なので、batch_size: 1 を使用します。
一部のフレーム抽出モデルでは、代わりに init_video と frame_extraction_location を指定します。モデルが必要とする入力は get_base_model で確認できます。
カメラが固定された1つのクリップから取り出したフレームはすでに位置合わせされているため、pack_sprite_sheet はフレームを整列したままにします。各フレームを個別のスケールに合わせて、同じセルサイズの中で中央に配置します。エフェクトが揺れて見える原因になるため、事前にフレームを個別にトリミングしないでください。
実例
「トップダウンRPG用の火球の着弾を、8フレームのフリップブックにします。」
filter.use_case: "text_to_image"を指定してlist_base_modelsを実行し、最初の結果を選びます。プロンプト:「ゲーム用VFX。バーストの瞬間の火球の着弾。橙白色の中心、舐めるように燃え上がる炎、飛び散る火の粉。中央に配置し、フレーム内に完全に収める。純粋な黒の背景。地面や風景はなし。トップダウン視点。」1つを承認します。filter.use_case: "image_to_video"とfilter.capabilities: {fixed_duration: true}を指定してlist_base_modelsを実行します。最初の結果に対してget_base_modelを実行し、使用可能なフレームスロットとvideo_effectsを確認します。- フェーズを指定したモーションプロンプト:「小さな火の粉が4分の1秒かけて集まり、素早く外側へバーストし、その後、炎と火の粉が最後までに完全に消え去る。カメラは固定し、全編を通して背景は黒。」承認済みの静止画の
file_idをfirst_frameとして渡します。対応している場合はvideo_effects: [{type: "STATIC"}]を指定し、短いduration_secondsを指定します。 - ジョブ全体の料金を見積もります。動画に加え、実際に行う処理として見積もった8回分のフレーム実行を含めます。20 CUs を超える場合は、明確な承諾を求め、返答を待ちます。
- 実行し、
poll_interval_seconds間隔でポーリングします。均等な間隔のvideo_frame_secondsを指定して8フレームを取り出し、それぞれbatch_size: 1のアップスケール実行に渡します。黒はそのまま残します。 file_idsに再生順の8フレームを指定し、columns: 4を指定してpack_sprite_sheetを実行します。
よくある間違い
- 加算合成するエフェクトから黒い背景を除去してしまい、グローまで消してしまう。
- 煙やほこりの背景に黒を使い、何も覆い隠せなくなる。
- エフェクトの周囲にシーン、床、キャラクターが映り込む。
- エフェクトがフレームの端で切れている。
- 予備動作がない、または完全に消えない単発エフェクト。
- 透明な動画を約束する。
- パッキング前にフレームを1枚ずつトリミングし、フリップブックが揺れてしまう。
- フレームごとの実行で
batch_sizeを4のままにし、料金を4倍支払う。