Back to Node List

Animation Render

animation_render

Renders animation as spritesheet by evaluating upstream graph for each frame

Reviewed
Guide available
The node name and summary are available in English. Port, parameter, and article details are currently shown in Japanese.

Input Ports

NameTypeDescription
画像
image
Image
Required
アニメーションする元画像

Output Ports

NameTypeDescription
スプライトシート
spritesheet
SpriteSheet
全フレームを解決済みグリッドに配置したスプライトシート
フレーム数
frame_count
Int
アニメーションの総フレーム数
FPS
fps
Int
1秒あたりのフレーム数
列数
columns
Int
スプライトシート配置で実際に使われた列数
行数
rows
Int
スプライトシート配置で実際に使われた行数
フレーム幅
frame_width
Int
1フレームの幅
フレーム高さ
frame_height
Int
1フレームの高さ
配置順
fill_order
Text
フレームの埋め順

Parameters

NameTypeDefaultRangeDescription / Options
総フレーム数
total_frames
Int
00–120

レンダリングするフレーム数 (0 = プロジェクト既定に従う)

FPS
fps
Int
00–60

1秒あたりのフレーム数 (0 = プロジェクト既定に従う)

列数
columns
Int
00–32

スプライトシートの列数 (0 = 自動でほぼ正方形に近い配置)

Overview

This is the "exit" for an animation. It evaluates the upstream graph once for every frame and combines all frames into a single sprite sheet. Its role is to bake the results of parameters driven by time_source into a form that a game engine can use directly.

Usage tips

  • Basic setup: time_source(progress) → waveform node (such as motion (Wobble)) → parameter to animate, then place this node at the end of the graph that creates the artwork (→ Guide "07 Animation").
  • Select this node to use the playback preview in the inspector (play/pause, frame stepping, and current-frame display). Check the motion here before exporting.
  • For looping motion such as rotation or an idle animation, make the waveform complete exactly one cycle over total_frames to avoid a visible seam (one sawtooth cycle per loop is the standard setup).
  • columns=0 (automatic) produces a roughly square layout. If the target engine requires a single horizontal row, explicitly set columns = total_frames.
  • Send the result to downstream batch_render or output nodes. If you need frame information, pass along the metadata output as well (frame_count / fps / columns, and so on).

Common pitfalls

  • Every frame looks identical: no waveform is connected to the parameter you want to animate; it still has a direct numeric value. Check the connection to the parameter's input port.
  • Frame dimensions change during the animation: rendering fails explicitly to avoid losing content. Set an upstream solid_render or model_render to frame_mode = FixedCanvas so every frame uses fixed dimensions and center.
  • The sheet layout is not what you expected: check columns. A value of 0 uses automatic layout, so set it explicitly when ordering matters.
  • Motion looks choppy: total_frames is too low, or the motion has no easing. Increase the frame count or insert ease_in_out.

Technical details

  • Multi-frame evaluation runs at the evaluate_graph level. This node's process() is the fallback for single-frame evaluation.
  • Starting with P07A, AnimationRender outputs the dedicated SpriteSheet type.
  • It also provides frame_count + fps + columns + rows + frame_width + frame_height + fill_order as helper metadata pins.
  • With columns=0, it automatically chooses a roughly square layout. Use columns>0 for an explicit layout.
  • Promoted total_frames, fps, and columns use their resolved connected values.
  • Every frame image must have identical dimensions. A mismatch reports an error with FixedCanvas guidance instead of silently cropping to the first frame.
  • It is designed to be used with an upstream TimeSource node.

Examples

  1. Connect TimeSource → transformation nodes → AnimationRender in that order.
  2. Check AnimationRender's output sprite sheet in Preview, then save it as PNG.

Solid turntable

When baking a Solid rotation animation, set Solid Render to FixedCanvas.

TimeSource.progress
  -> SawtoothWave.input
  -> SolidTransform.rotate_z
  -> SolidRender.image
  -> AnimationRender.image

If Solid Render remains set to AutoFit, the size or center of individual frames may change with the angle, causing the sprite sheet to jitter.

Related nodes

  • time_source — supplies frame progress (almost always paired with this node)
  • motion / motion / keyframe_clip — convert progress into motion
  • sprite_sheet_playback / sprite_sheet_pack — play or repack an existing sprite sheet
  • spritesheet_to_aseprite — when you want to export an Aseprite project
Back to Node List
Animation Render — PixPipeline Node Reference