Play an actual .riv, turn its live image into oil paint, vector splats, phosphor traces or an orbitable time volume, then export the entire player. The source stays a Rive document throughout.
Choose a timeline, or use state-machine inputs and pointer interaction.Drag the right view to orbit · wheel to zoomContinuous contour traversal; dim travel between disconnected contours
MSE 0.004092 · start 0.028520 · 68 steps / 68 accepted · 192 Gaussians · 10.6 ms last batch
RGB error is measured at 96 × 64 against the Gaussian renderer. Geometry and colours are optimized with accepted loss-decreasing steps. A complete step may exceed the requested time budget; the measured batch time is shown. Pause the source to measure convergence; animation reuses the previous fit. Rive uses a palette and eight ellipse layers per Gaussian, so its approximation has a separate display error.
Drag the lens in the output. It samples the displayed image; hidden scene geometry and physical transport are unavailable.
The selected .riv supplies rendered colour and supported timeline/state-machine interaction. All effects here accept that image; native object IDs, surface normals, depth and hidden surfaces are unavailable. Output: ordinary Rive ellipse geometry; the static .riv snapshot preserves full sampled colour. The added lens is a custom image-space layer and is retained in hybrid HTML.
01 / Official Rivefaux.riv02 / Official Rive vectorsFitted geometry · official Rive
1,536 ordinary ellipse draws · paused preview
The optimized image becomes actual ordinary Rive geometry: eight translucent ellipse layers per Gaussian. The live pool uses a bounded palette; Export fitted geometry saves the current full-colour static geometry in a vanilla .riv. Animation and optical processing remain in the hybrid HTML.
KEEP THE WHOLE WORKFLOW
Export a working browser player.
The HTML carries the original .riv, official runtime, WASM, pipeline settings and captured history. Open it directly in a browser. The layered-splat snapshot exports actual ordinary Rive ellipses.
Self-contained player: source, runtime, pipeline and captured image history.
RIVE → TEXTURE → RIVE
The final marks can be Rive too.
Compare fitted Gaussian shader splats with eight concentric translucent ellipses per mark, drawn by the official Rive renderer. A bounded gradient optimizer adjusts position, covariance and RGB to reduce reconstruction loss at 96 × 64. The displayed residual reports that objective. Both routes use the same optimized marks, including dark details. A fixed ordinary Rive shape pool updates every display frame. It uses 24 or fewer source-derived colors and a bounded mark budget; the static snapshot export keeps full sampled color. This is a warm-started 2D image fit, not a trained 3D Gaussian scene. A changing source changes the objective; freeze it to see convergence. This illustrates an approximation with a real vector cost, not an arbitrary Gaussian feather feature in vanilla Rive.
IMAGE HISTORY AS A VOLUME
Time becomes the third axis.
Studio mode stores 128 actual 512 × 512 frames and raymarches up to 192 samples per ray. RGB, motion density and iso-sheets share that history. STM uses luminance as height; it is an image relief, not recovered scene depth. Beam traces ordered extracted contours into a decaying phosphor buffer.
RUNTIME OWNERSHIP
A working hybrid, with clear boundaries.
The imported artboard, timelines and state machines use official Rive. Oil, Gaussian splats, beam and space-time use custom WebGL2. The browser extracts image contours; the desktop beam also has original path access. Hybrid HTML is self-contained, but is not a native .rivx or GPU Canvas .riv export. GPU Canvas export status →