Neuronauts — 3D-printable standees

Flat relief standees of the five Neuronaut characters (Captain Cortex, Axon, Dendra, Syn, Glia), generated directly from the character coordinates used in neuronauts/index.html. Each figure includes the neuron-styled details from the page art: the trailing axon-cable tail with myelin beads and a glowing synaptic bouton, plus a raised chest emblem, eyes, and mouth.

Files

Assembly

A figure panel is only 4.5 mm thick — balanced on that edge it’s not stable on its own. Press each figure’s tab into a stand base’s slot (a firm push fit; add a dot of glue if you want it permanent) to display it upright. Both pieces print flat with no supports.

Design

Figure panel — a two-layer relief, extruded from the flat SVG artwork:

Stand base — a solid block with a through-slot boolean-cut to the tab’s size plus clearance, so any figure snaps into any base.

No supports or brim needed for either part — both have a flat bottom. Suggested starting point for FDM:

For resin printers, either part can also print flat with no supports; there’s no need to print the figure panel on edge.

Keeping this in sync with index.html

generate_stl.py reconstructs each character’s geometry by hand in Python — it does not parse neuronauts/index.html, so editing a character’s SVG there does not automatically change the generated STLs. To catch that drift instead of silently generating stale models, the script hashes each character’s <g id="nn-*"> markup in index.html and compares it against EXPECTED_SVG_HASHES at the top of the file; if they don’t match, it refuses to run.

After intentionally changing a character’s SVG in index.html:

  1. Update the matching shape function in generate_stl.py (e.g. cortex_shapes()) to reflect the new geometry.
  2. Run python generate_stl.py --freeze-hashes and paste the printed hashes into EXPECTED_SVG_HASHES.
  3. Re-run python generate_stl.py . to regenerate the STLs.