Spyder

SVG + Python + render

A character study became a tool for building a 3D guide from approved vector contours.

01 / The character

Keep the expression that makes him Hugh.

The selected front render establishes the expression.

Hugh began as a very particular character: long-faced, heavy-lidded and entirely assured of his own taste. His 3D face needed to carry the expression in the selected render.

A scripted sculpt passed its numerical checks, but the brows looked wrong. I rejected the result and returned to the reference.

02 / The decision

Make the reference something we can inspect.

Hugh - front render vector referenceEditable 2D contour reference traced from the user-selected Hugh render. Source coordinates are retained, with the canvas cropped to head and collar. This does not encode depth. Thin grey curves are surface cues.Main hair mass and hairlineFace and jaw contourTemple to cheek RTemple to cheek LEar outline REar outline LEar helix REar helix LNeck side RNeck side LBrow pigment contour RBrow pigment contour LEyelid opening REyelid opening LLower lid rim RLower lid rim LUpper lash contour RUpper lash contour LNose side RNose side LNostril edge RNostril edge LNasal ridge planeUpper lip contourLower lip contourUpper lid fold RUpper lid fold LUnder-eye surface turn RUnder-eye surface turn LInner brow furrow RInner brow furrow LForehead crease 1Forehead crease 2PhiltrumChin surface turnCheek plane RCheek plane LTurtleneck top edge
The approved contours retain the source image’s coordinates.
“why don’t you establish hugh’s render as vectors?”

I proposed a vector drawing, then reviewed the trace against the original. The eyelid openings, brow shapes and facial contours became named, editable paths.

Those lines have different jobs. An eyebrow’s colour boundary is different from an opening in the mesh. A soft shadow is a cue, not a cut.

03 / The construction

Build a guide from the approved drawing.

The actual triangle mesh of the generated facial guide, with two open eye holes.
The saved geometry: 6,038 vertices and 10,537 triangles.

The next question was whether a script could construct the mould. The Python generator now reads the SVG directly and registers it to Hugh’s existing model.

The drawing supplies the front contours. The existing head supplies depth. The result is a separate facial guide, with the original character preserved.

04 / The inspection

Turn it. See what the front view can’t tell us.

The same saved guide turns to both sides, then returns to the front.

The guide follows the approved contours in the front view. Turning it exposes the nose, undercut and rim, where the depth still needs refinement.

This is the working prototype’s current state. I haven’t accepted this surface as a target for reshaping Hugh yet.

Play the eight-second inspection. It has no audio.

A specific working prototype.

Spyder can repeat the construction. Two runs with unchanged inputs produced identical mapping arrays. The saved Blender file was reopened to check projection, the boundary and the two eye openings.

Visual acceptance is a separate decision. The depth surface remains a draft. The next step is to refine it against the reference before fitting the character.

Inspect the recorded checks
Saved prototype verification, 14 October 2026
Unchanged-input rerunAll mapping arrays identical
Camera projectionMaximum error 0.000339 px
Eye-edge agreement with SVGMaximum error 0.002396 px
Surface boundaryOne outer loop, two eye holes; manifold edges

These measure agreement with the approved SVG and repeatability of construction. They do not measure trace accuracy or establish the final likeness.

My contribution

Character direction, identifying the visual mismatch, proposing the vector and mould approach, and reviewing what should be kept or rejected.

How it was made

SVG authoring and Python/Blender implementation with Codex. The source portrait is a selected Firefly generation. The vectors and mesh are the actual prototype artifacts.

The inspection clip presents the saved mesh with the same smooth shading and shell thickness as its review scene. It does not change the sculpt.