Examples

Everything below was generated by Polymation — animations authored from a prompt, and real conversions between formats. The Rive examples are live and interactive; the conversions show the actual per-decision loss report Polymation produces every time.

Live 3D — in your browser

This Spline scene was authored from scratch by Polymation (no Spline app) and is rendering live, right now, in the real Spline web runtime. Drag to rotate it.

drag to rotate · scroll to zoom

From a prompt

Describe what you want in plain language; Polymation writes the .riv directly — shapes, state machines, physics, text, interactions. Hover the cards to interact.

Conversions — with an honest loss report

Cross-format conversion is lossy by physics (a 2D vector rig is not a 3D scene). So Polymation never silently drops anything: every conversion ships a per-decision report — what came across clean, what was reconstructed, what was dropped (and why), and what needs your call. These are real outputs from the examples below.

A conversion to Spline can write either form — runtime .splinecode (shown live below) or editable .spline — and both are offered here, so you can ship it or keep editing. Both 3D scenes here are rendering in the real Spline runtime.

Rive → Spline

Input — Rive (.riv) · live

ex-rive-source.riv

Three 2D shapes — a gradient box, a floating circle, a triangle — with a gradient fill, opacity and a float animation.

Output — Spline 3D · live runtime

.splinecode + .spline

The circle's float animation plays in the live runtime 3D (right): it rises once on load, so hit ▶ Replay float to see it again. The Rive input (left) bobs up and back on a loop; the 3D copy rises once, because Spline's start transition plays once. Drag the 3D to rotate.

Loss report — Structural check: PASS
6 reconstructed · 1 dropped · 0 need your input
Reconstructed
GradBox → 3D gradient panelThe rounded rectangle becomes a shallow 3D panel; its linear gradient (2 stops) maps to a Spline gradient layer shown unlit, so the gradient reads at true colour rather than wrapping a deep cube.
Reconstructed
Dot → 3D sphere + alphaA 2D circle's natural 3D form is a sphere (same circular silhouette); its opacity folds into the material alpha.
Reconstructed
Tri → 3D pyramidThe triangle becomes a pyramid carrying its solid fill colour.
Reconstructed
"Float" animation → Spline state (plays in runtime)The float keyframes become a Spline transform state + Start transition, lowered into the runtime .splinecode — the runtime auto-fires Start on load, so the sphere rises once in the live 3D (use ▶ Replay).
Reconstructed
Draw order → z-depthThe three shapes' Rive draw order maps to distinct Spline z-planes (panel behind, sphere mid, pyramid front) so the scene has real depth.
Dropped
Ping-pong loopThe Start transition plays once; Rive's ping-pong loop mode has no direct Spline equivalent, so the back-and-forth is dropped — recorded with its loop mode.

Spline → Rive

Input — Spline 3D · live runtime

.splinecode + .spline

Output — Rive (.riv) · live

ex-spline-to-rive.riv

Each 3D mesh becomes its flat 2D footprint with the material color; the scene background becomes a Rive artboard background.

Loss report — Structural check: PASS
4 reconstructed · 8 dropped · 1 needs your input
Reconstructed
RedCube → rounded rectangleThe cube becomes its 2D rectangle footprint carrying the material colour, and keeps its 12px corner radius.
Reconstructed
TealBall → ellipseThe sphere becomes a circular footprint (ellipse) with its colour.
Reconstructed
GoldPeak → triangleThe pyramid becomes its triangular footprint with its colour.
Reconstructed
Scene background → artboard backgroundThe Spline background colour becomes a full-artboard Rive rectangle behind all content.
Your call
Artboard size → 520×242A Spline scene states no canvas, so the artboard was sized to what the content spans plus a 40px margin. A Rive artboard is a real frame that clips, so this is the conversion's choice, and it asks you to confirm it.
Dropped
Lighting · 3D tilt · Z-depth · cameraEach mesh's lit physical material, two meshes' out-of-plane rotation, two meshes' depth (kept only as draw order) and the scene camera have no 2D equivalent — eight decisions, each dropped with its original values recorded.

Lottie → Rive

Input — Lottie (.json) · live lottie-web

ex-lottie-source.json

A gradient card, a morphing blob (animated bezier path), and a dot easing back and forth with overshoot — playing in the real lottie-web player.

Output — Rive (.riv) · live

ex-lottie-to-rive.riv

Both sides are playing live. The blob's path morph became real Rive vertex keyframes (position + curve handles per point), the easing curves carried over 1:1, and the gradient survived intact. It converts back to Lottie too — grab the round-tripped .json above. Also accepts .lottie (dotLottie) files, including interactive dotLottie 2 packages, whose state machines and colour themes arrive as Rive state machines and view models wherever Rive can express them; the rest is named in the report. The reverse works too: any Rive scene exports to Lottie for web/iOS/Android players, or to an interactive dotLottie that keeps its states, guards, transitions and pointer interactions; what dotLottie cannot hold, such as blend states, is named in the report.

Loss report — Structural check: PASS
4 reconstructed · 1 dropped · 1 needs your input
Reconstructed
Blob → Rive vector path with a real morphThe animated bezier (4 cubic vertices) becomes a Rive PointsPath whose vertices are keyframed — position and tangent handles per point — so the outline genuinely morphs instead of freezing on frame one.
Reconstructed
Card → rounded rectangle + linear gradientThe rounded rect carries its 2-stop indigo→cyan gradient across, mapped onto a Rive gradient fill with the same axis.
Reconstructed
Dot → ellipse with eased motionThe position keyframes become a Rive timeline; Lottie's cubic easing handles (including the overshoot) map 1:1 onto Rive cubic interpolators.
Reconstructed
Timelines → one Rive animationThe animated layers lower into a 90-frame 30fps Rive animation, with position, rotation, scale and opacity keyframes mapped 1:1 and Lottie's easing handles as Rive cubic curves.
Dropped
Animation name and loop settingA plain Lottie file has no timeline name and no loop flag — looping is the player's choice — so the animation arrives called "Animation 1" and set to loop.
Your call
InteractivityThis Lottie file has no state machine — any triggers/inputs in the Rive output would be authored, not converted. Surfaced for your spec rather than invented.

Make your own

Everything here came from a prompt or a conversion. Install Polymation in your MCP client and try it — 3 free exports, no account.

Download free Subscribe — $10/mo