Pack a folder of pre-rendered frames into one filmstrip
Assemble takes frames you already rendered elsewhere — a path-traced PNG sequence out of Blender, KeyShot, or Octane, or any other pre-rendered set — and stacks them into one filmstrip PNG. It mirrors the Create tab's export feature set (HiDPI copy, skin.json manifest, loader-code snippets) but involves no procedural rendering: StripKit only reconciles, retimes, and packs the frames you give it.
Source frames
Load, add to, reorder, and remove the frames that will become the filmstrip. Frames are natural-sorted automatically, so frame_2 sorts before frame_10 regardless of zero-padding.
- Choose folder… — opens a folder picker and enumerates every file inside matching an accepted extension. This replaces the current frame list entirely, discarding whatever was already loaded.
- Add files… — opens a multi-select image picker and adds the chosen files to the existing list (de-duplicated by path), then re-sorts the combined set.
- Clear — empties the frame list, clears the preview and readout, and resets the status line.
- Sequence info readout — reports frame count and dimensions, e.g. "N frame(s) · WxH px · uniform," or a min–max range with "mixed — will reconcile" when sizes differ.
- Warning text — shown only when a probe or QC pass has something to flag; appears in the accent-highlight color.
- Frame list rows — each row shows its position and file name plus three controls: ↑ (move earlier), ↓ (move later), and × (remove). The list appears once at least one frame is loaded.
- Drop zone — drag a folder or a set of image files onto the preview area; this sets the list if it was empty, or adds to it otherwise.
Component type
Declares what these frames depict, which sets the manifest and loader-code control type written on export.
- Component type — a dropdown defaulting to Rotary knob, with Vertical fader, Horizontal slider, Meter, Button, and Toggle also available. Changing it also live-regenerates the render-recipe preview further down the panel.
Layout
Controls how frames are stacked into the final strip and how mismatched frame sizes get reconciled.
- Stack direction — Vertical (default) or Horizontal; stacks frames top-to-bottom or left-to-right.
- If frame sizes differ — Pad to largest (default: transparent-pads every frame up to the largest frame's dimensions, centred), Crop to smallest (centre-crops every frame down to the smallest), or Strict (any size mismatch refuses to assemble).
- Re-centre each frame on its content — unchecked by default. Re-centres every frame on its opaque content before packing; fixes a 3D object that drifts off-centre between renders.
Render QC (path-tracing)
Catches common path-tracer failure modes — object drift, missing or blank transparency, premultiplied edges — before you commit to assembling.
- Check frames — decodes every frame off the UI thread and runs a QC analysis, enabled only once at least two frames are loaded. It reports either that N frames look clean, or flags specific issues: drift of 2px or more between frames (suggesting you tick "Re-centre each frame"), frames with no transparency at all (a possibly-missing transparent background), fully transparent frames (a likely failed or empty render), and premultiplied-looking edges (suggesting the "Un-premultiply alpha" fix below).
- Un-premultiply alpha (fix dark edge halos) — unchecked by default. Divides RGB by alpha to remove the dark fringe a premultiplied render leaves on anti-aliased edges; a no-op on fully opaque or fully transparent pixels, so it's safe to leave off unless you actually see halos.
Resample (optional)
Re-times the assembled sequence to a different frame count, optionally synthesizing in-between frames — render fewer frames offline, ship more in the filmstrip.
- Re-time to a standard frame count — unchecked by default. Reveals the target-count and method controls below when checked.
- Target frame count — a numeric field, default 64, ranging 2–512, that sets the output frame count.
- 32 / 64 / 128 — three preset buttons that set the target frame count directly to the standard StripKit counts.
- Method — Nearest (default: picks the closest rendered frame — never ghosts, the safe choice for a moving pointer) or Crossfade (blends the two bracketing frames to synthesise in-betweens — good for slow, smooth motion, but can ghost on fast motion).
Emission / glow pass (optional)
An optional second render pass — an emission/glow AOV (arbitrary output variable) — additively composited over the beauty (main) frames, so path-traced glow reads as emitted light rather than being baked flat into the beauty render.
- Choose emission folder… — opens a folder picker for the second sequence, probed and natural-sorted the same way as the main sequence. The readout reports whether any readable frames were found and whether the count matches the beauty sequence.
- Emission info readout — defaults to "No emission pass added" until a folder is chosen.
- Intensity (%) — a slider from 0 to 100, default 100, converted to a 0.0–1.0 gain applied to the emission composite. Only visible once an emission pass is loaded.
- Remove emission pass — clears the stored emission frames and returns the section to its unloaded state.
Quality & output
HiDPI export scale for the assembled strip.
- Also export a HiDPI copy — checked by default. Writes an upscaled copy at the chosen scale alongside the main export. Reveals the Scale row when checked.
- Scale —
2,3, or4(default2), i.e. @2x / @3x / @4x. Sets both the exported filename suffix and the upscale factor applied to the already-assembled strip.
Manifest (optional)
Optionally write a skin.json manifest describing this single control alongside the exported PNG(s).
- Also write a skin.json manifest — checked by default.
- Parameter id — an empty-by-default text field (watermark "e.g. filterCutoff"); if left blank, the exported control's parameter id falls back to the output PNG's base file name.
Code export (loader snippets)
Optionally emit ready-to-paste loader code files for one or more target platforms, written next to the exported PNG.
- Also emit ready-to-paste loader code — unchecked by default. Reveals the per-target checkboxes below when checked.
- JUCE — checked by default.
- CSS / HTML — unchecked by default.
- iPlug2 — unchecked by default.
- HISE — unchecked by default.
- React / Web — unchecked by default. Emits a
.jsxsprite component driven by a 0..1valueprop.
Render recipe (plan a render)
For frames you haven't rendered yet: generates a Blender script or a CSV/JSON frame table so an offline render matches StripKit's (N−1) sweep law. These fields are independent of, and don't feed, the assembly options above — the only thing they share is the Component type chosen earlier in the panel.
- Preview / save render recipe — a collapsible section containing all the recipe controls below.
- Frames to render — a numeric field, default 64, ranging 2–512.
- Render size (px) — a numeric field, default 256, ranging 8–4096; used as both width and height for a square render.
- Sweep (degrees) — a numeric field, default 270, ranging 1–360 (rotary controls); split symmetrically into a −half..+half range around 0 for the recipe.
- Recipe format — Blender (default), CSV, or JSON; selecting a target regenerates the preview live.
- Recipe preview — a read-only, monospace, scrollable text area showing the generated script or table.
- Save recipe… — opens a folder picker and saves the currently-previewed format to disk.
- Copy to clipboard — copies the current recipe preview text.
Preview & transport
A scrubbable preview of the loaded sequence, on the right-hand panel; the same area doubles as the drag-and-drop target for loading frames.
- Preview / drop area — shows the currently scrubbed-to frame, decoded on demand. Displays a placeholder prompt until at least one frame is loaded.
- Previous frame — steps the preview back one frame.
- Play / Stop — toggles frame-by-frame playback of the preview.
- Next frame — steps the preview forward one frame.
- Reset — returns the preview to the first frame.
- Scrub slider — a normalized 0..1 position mapped to a frame index; the one control that live-re-renders the preview image as you drag it.
- Frame readout — shows "Frame i/n," or "Frame i/n — unreadable" if that frame failed to decode.
- Sequence info — the same summary text as the left panel, repeated in monospace under the transport row.
- Progress bar — appears only while an export is running, showing frames loaded so far.
- Status message — reports the current step: cleared, checked, assembling, cancelled, or the export result.
- Cancel — appears only while an export is running; cancels the in-flight assemble-and-export operation.
- Assemble & export — enabled once at least two frames are loaded and no run is in progress. Opens a Save PNG dialog, then off the UI thread decodes all frames (and emission frames if enabled), packs them, and writes the main PNG plus whichever of the HiDPI copy, manifest, and loader-code files are ticked. The status line summarizes exactly what was written.
- Show in folder — enabled once an export has completed and the file still exists on disk; reveals the exported filmstrip in Explorer.
.png, .webp, .bmp, .jpg, .jpeg, .exr, .hdr, .tif, and .tiff are picked up from a chosen folder or drop — anything else is silently ignored, with no warning. If you're relying on the emission pass, make sure that folder has exactly as many frames as your beauty sequence; a mismatched count is reported in the emission info readout but won't block export.