Skip to content

Make a clip of your work

Serpentine3D can turn what you model into video three ways: a clean turntable of the finished thing, a portrait UI turntable that shows the app around it, and a timelapse replayed from the session itself.

The turntable

Type turntable. It asks for a length in seconds, a shape for the frame (16:9 for a video, 9:16 for a reel, 1:1 square) and where to put the file, then walks the camera once around the model and writes an .mp4. If anything is selected it orbits the selection; otherwise it orbits everything. Frames render at full resolution regardless of the window, so a small laptop screen still produces a 1080p clip.

The encoder is ffmpeg, found on your system. Without it you get the frames as numbered PNGs and the one command line that assembles them.

The UI turntable

Resize the application window into the portrait composition you want and type turntableui. It keeps the current camera target, distance and elevation, rotates once around that shot, and records the whole application window into a 1080x1920, 30 fps story clip. The default length is 15 seconds.

The window is scaled to fit without cropping or stretching. Any aspect-ratio difference becomes quiet dark padding, which is useful space for a caption or link sticker. When recording finishes, the camera returns to exactly where it started.

The session timelapse

Serpentine3D keeps a journal of every session: each command and every point, number and selection it actually received, resolved through snaps and planes, written as it happens to ~/.local/share/serpentine3d/journals/. The journal is a recipe — the whole session can be cooked again.

serp3d replay <journal.jsonl> --check
serp3d replay <journal.jsonl> --video build.mp4 --speed 10 --endcard

--check re-executes the session headless and verifies the geometry comes out identical to what you saved. --video re-executes it under a slow orbiting camera and renders a timelapse: your pauses are compressed by --speed, every command appears in a caption band as it runs, and --aspect 9:16 makes a reel of the same session without remodelling anything. A fumbled take never appears, because the journal only holds what was actually done.

Because the video is rendered rather than recorded, you can make it again tomorrow, taller, faster, or at a different resolution.

The end card

--endcard (or the media.endcard setting, for the turntable) closes the clip with a quiet dark card: Built with Serpentine3D and the address. It is off unless you ask for it.

What the journal is for besides video

A journal is also the best bug report there is: a file that reproduces your whole session, keystroke for keystroke, on someone else's machine. If something misbehaves, attach the journal from ~/.local/share/serpentine3d/journals/ to the issue. Set SERP3D_NO_JOURNAL=1 if you would rather no journal were kept.