Libraries

s&box libraries list

Geppetto

pooh.geppetto

Two editor tools in one package: Effigy (parametric CAD, sculpt, skinned vmdl export) and Marionette (control-rig animation)

About

Two editor tools - WIP

Sharing one goal: make a usable, rigged, animated model without leaving the editor.

**Effigy**

is a parametric CAD modeller. Sketch on a plane or on the face of an

existing solid, then turn that sketch into geometry — extrude, revolve, sweep,
loft, shell, bevel, mirror, pattern, subdivide. Booleans cut for real, through
s&box's own PolygonMesh. There's a sketcher with lines, arcs, circles, ellipses
and splines, closed regions found rather than declared, and trim/extend/fillet/
offset as in-place edits. A Levenberg-Marquardt constraint solver handles
seventeen constraint kinds and reports degrees of freedom from the Jacobian's
rank, so an under-constrained sketch tells you what's loose instead of just
misbehaving.

Everything sits in an ordered feature history with rollback and incremental
rebuild, modelled on Onshape's Part Studio — which is what makes it parametric
rather than a stack of bakes. Change a dimension near the bottom and everything
above it rebuilds.

Then rig it: a skeleton, auto-weighting with smoothing across mesh adjacency,
and export as a real skinned .vmdl. Sculpt and normal-bake are in there too, so
detail can go onto a clean low-poly cage rather than into the topology.

**Marionette**

picks up that .vmdl — or any skinned model — and animates it.

Click a bone in the viewport and drag to rotate; the skeleton draws x-ray so
bones buried in the mesh stay clickable. Key it, move the playhead, pose again.
The timeline gives one lane per bone with the real interpolation curve drawn
between keys, three easing modes, and undo/redo in labelled steps where one drag
is one step. Two-bone IK solves in closed form, so you can drag a hand and let
the elbow and shoulder follow, with rotation limits stopping joints bending
backwards. There's a first-person view that frames off the model's own camera
bone, reference props to pose against, and prop-attach events that spawn a model
on a bone for a frame range.

Clips save as .riganim and rigs as .ctrlrig, kept separate so several clips can
share one rig. Constraints bake into keyframes rather than re-solving at
playback, so a clip plays identically in the editor, in game, and anywhere else
that reads keyframes.