Spyder
SVG + Python + render
A character study became a tool for building a 3D guide from approved vector contours.
Keep the expression that makes him Hugh.
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.
Make the reference something we can inspect.
“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.
Build a guide from the approved drawing.

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.
Turn it. See what the front view can’t tell us.
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
| Unchanged-input rerun | All mapping arrays identical |
|---|---|
| Camera projection | Maximum error 0.000339 px |
| Eye-edge agreement with SVG | Maximum error 0.002396 px |
| Surface boundary | One 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.