interactive editor
Keyframe Clip は source 埋め込み型の interactive editor を持ちます。
editor でできること:
- source 切替
PathとImageのどちらを今編集するか選べます
pose mode- 現在時刻の形を 1キーの pose として保存します
record mode- drag 軌跡を開始/終了範囲へ記録します
- play / stop / loop
- editor 内 preview をそのまま再生できます
- key list
- 保存済み key を一覧で見て、そこへジャンプできます
- export
- 全尺を
1コマ秒ごとにサンプルした spritesheet PNG - 実キー時刻だけをまとめた key PNG 一括書き出し
- 現在フレーム PNG 書き出し
- 全尺を
重要:
- source node 自体は書き換えません
- editor 上で見えているのは source + clip 適用後の姿 です
- キーを切り替えると、その key pose がそのまま表示されます
- 画像 source は v1 では移動 / 回転 / 拡大縮小の transform を編集します
- 回転は外周付近へマウスを持っていくと
↺が出る zone drag 方式です
- 回転は外周付近へマウスを持っていくと
- path source は point / handle を直接動かして pose を作ります
技術詳細
AnimationClip は P07 の user-facing animation 型です。
内部では explicit な track / keyframe を持ち、必要に応じて RecordedLayer と相互 bridge します。
layer 入力が接続されている場合は:
layer入力を base clip へ変換clip_dataを local clip として重ねる- 出力では同じ clip を
AnimationClip/RecordedLayerの両方で見られます
path / image 入力は editor 用の source でもあり、同時に downstream の ClipApplyPath / ClipApplyImage と組み合わせる前提です。
使用例
Path をキー編集する
BezierPathを作るKeyframeClip.pathへつなぐKeyframeClipeditor を開くtime=0.0で point / handle を動かして最初の pose を作るtime=1.0で別 pose を作るKeyframeClip.clipをClipApplyPath.clipへつなぐBezierPath.pathをClipApplyPath.pathへつなぎ、Float InputかTime Sourceで再生する
Image をキー編集する
PixelCanvas.imageなどの image source を作るKeyframeClip.imageへつなぐKeyframeClipeditor を開く- 画像本体をドラッグして移動、角で拡大、外周近くの
↺zone で回転する KeyframeClip.clipをClipApplyImage.clipへつなぐ- source image を
ClipApplyImage.imageへつなぎ、timeを動かして再生する
clip editor から書き出す
KeyframeClipeditor を開く1コマ秒を決める列数を必要なら指定するスプライトシートPNGで全尺を書き出すキー画像一括で実キーだけを個別 PNG として書き出す
補足:
Imagesource の spritesheet は全尺を等間隔サンプルして並べます列数 = 0の時は横一列ではなく、自動でほぼ正方形に近い配置を選びます- 配置順は
右へ(row_major) と下へ(column_major) を選べます - node 出力は P07A の
SpriteSheet契約spritesheetは専用型frame_count / fps / columns / rows / frame_width / frame_height / fill_orderは helper metadata 出力 を同じ書き出し設定で返します
columns/rows/frame_width/frame_height/fill_order出力を使うと、後段でフレーム分割しやすくなりますPathsource の書き出しは editor 上の line preview を透明背景 PNG にしたものです- 最終見た目で書き出したい場合は
ClipApplyPath -> PathStroke -> AnimationRenderを使ってください