PW Tools for Blender

Format: Sprite Sheet

Specification for the sprite sheet export formats (.png and Aseprite .json).

The add-on exports sprite sheet animations in two formats: PNG (.png) and Aseprite JSON (.json). Both render animation frames into a grid-based sprite sheet image. The difference is how metadata and the image are delivered.

  • PNG (.png) — A single sprite sheet image with no metadata.
  • Aseprite JSON (.json) — Aseprite-compatible JSON metadata alongside a sidecar PNG image.

All exportable animations are packed sequentially into a single sheet. Frames are laid out left-to-right, top-to-bottom in the grid.

PNG format (.png)

A single PNG image containing all animation frames arranged in a grid. No metadata is included — the consumer must know the frame size and count ahead of time.

Aseprite JSON format (.json)

An Aseprite-compatible JSON metadata file alongside a sidecar PNG sprite sheet image. This format can be imported by Aseprite and any engine with Aseprite sprite sheet support (Godot, Phaser, LibGDX, etc.).

Schema

{
    "frames": [
        {
            "filename": "idle 0",
            "frame": { "x": 0, "y": 0, "w": 256, "h": 256 },
            "rotated": false,
            "trimmed": false,
            "spriteSourceSize": { "x": 0, "y": 0, "w": 256, "h": 256 },
            "sourceSize": { "w": 256, "h": 256 },
            "duration": 42
        }
    ],
    "meta": {
        "app": "Playable Workshop Tools for Blender",
        "image": "character.png",
        "format": "RGBA8888",
        "size": { "w": 1024, "h": 1024 },
        "scale": "1",
        "frameTags": [
            {
                "name": "idle",
                "from": 0,
                "to": 23,
                "direction": "forward"
            }
        ]
    }
}

Field reference

Frame

FieldTypeDescription
filenamestringFrame identifier ("animation_name index")
frameobjectRegion in the sheet: x, y, w, h (pixels)
rotatedboolAlways false (no rotation packing)
trimmedboolAlways false (no trim packing)
spriteSourceSizeobjectSame as frame (no trimming)
sourceSizeobjectOriginal frame dimensions: w, h
durationintFrame duration in milliseconds (1000 / fps)

Meta

FieldTypeDescription
appstringExporter identifier
imagestringFilename of the sidecar PNG image
formatstringPixel format (always "RGBA8888")
sizeobjectTotal sheet dimensions: w, h (pixels)
scalestringScale factor (always "1")
frameTagsarrayAnimation tag definitions

Frame tag

FieldTypeDescription
namestringAnimation name
fromintFirst frame index (inclusive)
tointLast frame index (inclusive)
directionstringPlayback direction (always "forward")

Frame indices in frameTags are global across all animations. For example, if “idle” uses frames 0–23 and “run” uses frames 24–31, the run tag would have "from": 24, "to": 31.

Notes

  • The sidecar PNG (for the .json format) is saved alongside the JSON file with the same base name.
  • Image data in the metadata refers to raw PNG file bytes, not decoded pixel data.