概要
アニメーションの「出口」です。上流グラフを総フレーム数ぶん評価し、全コマを1枚の
スプライトシートにまとめます。time_source で動かしたパラメータの結果を、
ゲームエンジンでそのまま使える形にベイクするのが役目です。
使い方のポイント
- 基本の組み方:
time_source(進行度) → 波形ノード(motion(揺れ)等) → 動かしたいパラメータ、 絵を作るグラフの最後にこのノードを置く(→ ガイド「07 アニメーション」) - このノードを選択すると、インスペクターで再生プレビュー(再生/停止/コマ送り、 現在フレーム表示)ができる。まずここで動きを確認してから書き出す
- ループもの(回転・待機など)は、波形ノードのアニメーションが
総フレーム数で ちょうど一周するように作るとつなぎ目が出ない(ノコギリ波1周=1ループが基本形) columns=0(自動)はほぼ正方形の配置。エンジン側で「横一列」を要求される場合はcolumns = total_framesを明示する- 書き出しは下流の
batch_render/ 出力系ノードへ。フレーム情報が必要なら メタデータ出力(frame_count / fps / columns等)も一緒に渡せる
よくある失敗
- 全フレーム同じ絵になる: 動かしたいパラメータに波形がつながっていない (数値を直接入力したまま)。パラメータの入力ポートへの接続を確認する
- フレーム寸法が途中で変わる: 内容欠落を防ぐためレンダーは明示エラーになる。
上流の
solid_render/model_renderをframe_mode = FixedCanvasにし、全フレームの 寸法と中心を固定する(下記) - シートの並びが想定と違う:
columnsを確認。0は自動配置なので、並び順が重要なら明示する - 動きがカクつく:
total_framesが少なすぎるか、緩急がない。フレーム数を増やすかease_in_outを挟む
技術詳細
- マルチフレーム評価は
evaluate_graphレベルで実施。このノードのprocess()は単一フレーム評価のフォールバック AnimationRenderは P07A 以降、SpriteSheet専用型を出力します- helper metadata pin として
frame_count + fps + columns + rows + frame_width + frame_height + fill_orderも併せて出します columns=0のときは自動でほぼ正方形に近い配置を選びます。columns>0で明示配置ですtotal_frames/fps/columnsをプロモートした場合も、接続先で解決された値を使用します- 各フレームの画像寸法は同一である必要があります。不一致時は第1フレームへ黙って cropせず、FixedCanvasを案内するエラーにします
- 上流の TimeSource ノードと組み合わせて使用する設計
使用例
- TimeSource → 各種変換ノード → AnimationRender の順に接続
- AnimationRender の出力スプライトシートを Preview で確認しPNG保存
Solidターンテーブル
Solid の回転アニメーションをベイクする場合は、Solid Render 側を FixedCanvas にする。
TimeSource.progress
-> SawtoothWave.input
-> SolidTransform.rotate_z
-> SolidRender.image
-> AnimationRender.image
Solid Render が AutoFit のままだと、角度によって1フレームのサイズや中心が変わり、スプライトシートでガタつくことがある。
関連ノード
time_source— フレーム進行度の供給元(このノードとほぼ常にセット)motion/motion/keyframe_clip— 進行度を動きに変換するsprite_sheet_playback/sprite_sheet_pack— 既存スプライトシートの再生・詰め直しspritesheet_to_aseprite— Asepriteプロジェクトとして書き出したい場合