Skip to content

Art Canvas

The Art workspace is Opal's sprite-sequence baker. It turns image sheets, loose sprites, and existing .ssb bundles into reusable Sprite Sequence Bundle assets that can be previewed, re-timed, adjusted, and saved back to the library.

It is intentionally different from Motion and Rigging:

WorkspaceBest forOutput
ArtCut sprite sheets, assemble flipbooks, bake effects, register frames.ssb sprite sequence bundle assets
MotionKeyframe an object moving, rotating, fading, scalingMotion clips on scene objects
RiggingBone-based characters, skins, IK, mesh weightsCharacter assets and skeleton clips

Important: Art Canvas bakes assets. It does not automatically bind the result onto the selected scene object. After saving a bundle, use the asset from the library or add it to Object Flow with a Sprite Sequence node.

When To Use It

Use Art Canvas when you have frame art and want Opal to treat it as one animation asset.

Sprite sheetOne image contains a grid or atlas of frames. Slice it, name the clip, preview it, then save a `.ssb` bundle.
Loose frame imagesSeveral separate images already represent each frame. Import them as sprites, order them, adjust timing, and save a bundle.
Existing sequenceOpen a saved `.ssb` bundle, re-time it, flip it, tint it, outline it, adjust registration, or save a variant.

Open The Workspace

  1. Open a project in the editor.
  2. Import the source art with Add -> Library or Add -> Add Art.
  3. Click the Art workspace tab in the top bar.
  4. Use + Sheet, + Sprites, drag an asset from the library, or right-click the board.

The Art workspace is a node board. Source nodes produce frames, processing nodes transform those frames, Animation turns frames into a timed clip, Preview shows it, and Save .ssb writes it to the asset library.

text
Image -> Slice Sheet -> Animation -> Preview
                         |
                         -> Save .ssb

Board Basics

Gesture or controlWhat it does
+ SheetPick one image and create a sheet pipeline
+ SpritesPick several images and create a frame-by-frame pipeline
Bake AllSave every valid Save node on the board
Clear boardRemove every Art node from the current project graph
100%Reset board pan and zoom
Right-click empty boardAdd a pipeline, add any Art node, import Aseprite JSON, or clear
Drag from a portWire compatible nodes together
Drag a wire to empty spaceOpen a filtered node menu for that wire type
Drop a pass-through node on a wireSplice it into the pipeline when the types match
Shift-drag board backgroundMarquee-select nodes
Drag an image asset onto the boardCreate a sheet pipeline at the drop point
Drag a .ssb asset onto the boardCreate a Sprite Sequence node

The board graph is saved with the project, so your baking setup is still there when you return.

Core Nodes

NodeRole
ImageSource image. Use its image output for slicing, or its frames output as a one-frame sequence
SpritesOrdered list of individual sprite assets
Sprite SequenceExisting .ssb bundle used as editable source frames
Slice SheetGrid-slice a sheet by columns, rows, margin, spacing, and max frame count
Atlas FramesDefine arbitrary rectangles when a sheet is packed or irregular
Join FramesConcatenate several frame streams into one sequence
TintBake hue, saturation, lightness, or flat tint changes into each frame
FlipMirror frames horizontally or vertically
OrderReverse or ping-pong frame order
OutlineBake a solid outline around each frame
Bake ScaleResize baked output, useful for crisp pixel-art scale variants
AnimationName the clip, set FPS, frame range, looping, holds, and registration
PreviewPlayback monitor with its own transport, scrubber, zoom, and onion skin
Save .ssbSave the incoming animation as a reusable sprite sequence bundle

Slice A Sprite Sheet

Create the pipeline

Click + Sheet, choose the sheet image, and Opal creates an Image -> Slice Sheet -> Animation -> Preview -> Save chain.

Set the grid

On Slice Sheet, set columns, rows, margin, spacing, and max frame count. If frames are not a grid, use Atlas Frames instead.

Name and time the clip

On Animation, set a clear name, FPS, looping, and an optional From/To frame range.

Preview before saving

Use the Preview node to play, scrub, zoom, and turn on Onion if frame registration needs work.

Save the bundle

Click Save .ssb. The first save creates a bundle. Later saves overwrite the bundle in place unless you choose Save copy.

Build From Loose Sprites

Click + Sprites when every frame is already a separate image.

The frame strip becomes editable for direct Sprites pipelines:

ActionWhere
Reorder framesDrag a frame cell in the strip
Add framesClick + Add frames...
Duplicate / removeRight-click a frame cell
Hold a frame longerSelect it and set Hold in Frame Registration

This is the fastest path for hand-drawn frames, exported animation frames, or small VFX sequences.

Frame Registration

Many sprite sheets wobble because each frame has different transparent padding or a slightly different foot position. The docked Frame Registration panel fixes that before you save.

Controls:

ControlUse
FrameSelect the frame to edit
HoldMake the selected frame last multiple ticks
X / YNudge the frame inside the output box
ScaleResize the selected frame
RotRotate the selected frame
CenterReset selected frame position to the center
Reset frameClear registration for the selected frame
OnionGhost neighboring frames under the current one
Apply to allCopy the current registration adjustment to every frame
Match heightNormalize visual height across frames
Align feetKeep feet or baseline stable across frames

Registration bakes into the saved sequence. The Preview node uses the same drawing path as Save, so what you see is what the bundle will contain.

Effects And Variants

Art nodes are intentionally composable. You can branch one source into several variants:

text
Image -> Slice Sheet -> Animation "walk_right" -> Save .ssb
                  |
                  -> Flip -> Animation "walk_left" -> Save .ssb
                  |
                  -> Tint -> Outline -> Animation "walk_poison" -> Save .ssb

Good variant uses:

  • Flip to make left-facing clips from right-facing sheets.
  • Tint to create team colors, damage flashes, poison states, or rarity variants.
  • Outline to make pickups and interactable objects read clearly.
  • Order with ping-pong for loops that should bounce instead of snapping back.
  • Bake Scale for pixel-art sizes that should stay crisp in game.

Save And Use The Bundle

After saving, the Save node can show handoff links:

LinkWhat it does
Reveal in LibraryOpens the saved .ssb asset in the asset library
Use in Object FlowAdds a Sprite Sequence value node for the selected object's Object Flow

Use a saved bundle when a graph needs to switch or play sprite frames at runtime. For example, an enemy can play slime_hit.ssb after a collision event, then return to slime_idle.ssb.

Use Motion instead when you want to animate the object transform itself. Use Art when the pixels inside the sprite change frame by frame.

Naming And Organization

Name bundles by game role and state:

WeakBetter
Animationplayer_idle
walkplayer_walk_right
new sequencecoin_spin_gold
sheet copyslime_hit_poison

Save related variants near the source art. The Save node tries to place the bundle near its source image, sprite list, or existing bundle folder.

Troubleshooting

ProblemFirst checks
Preview is emptyConfirm Image/Sprites/Sprite Sequence is wired into Animation and Animation is wired into Preview
Save button is disabledThe Save node needs an Animation with at least one frame
Sliced frames look wrongRecheck columns, rows, margin, spacing, and max frame count
Animation jittersUse Frame Registration, Onion, Align feet, or Match height
Saved variant did not changeProcessing nodes must be wired before Animation, then save again
I cannot find the resultUse Reveal in Library or search for the Animation name

Opal Engine — MIT licensed