Skip to content

Hyperglyph Generator

Tools → Hyperglyph Generator… (Ctrl+H)

The Hyperglyph Generator invents multi-level glyph designs procedurally. Press Regenerate and you get a whole branching creature — geometry family, color scheme, branch counts, topologies and proportions all chosen for you — which you can then drop into the scene or save as a template to edit by hand.

It is the counterpart to the Glyph Composer: the Composer is where you describe a glyph, this is where you discover one.

What a hyperglyph is

A hyperglyph is a deliberately designed hierarchy of nodes read as a single visual object rather than as a data plot. It uses exactly the machinery everything else in GlyphViz uses — each level's topology arranges the next level's children, each level picks a geometry — so a hyperglyph is ordinary scene content, not a special node type. Nothing downstream treats it differently.

The generator builds on the same GlyphRecipe / level model the Glyph Composer edits, which is why every design it produces can be saved as a Composer template.

The dialog

The GUI dialog is deliberately one glyph at a time. For generating many designs at once with ratings and mutation, use the batch tools below.

Parameters

Field What it does
Max Nodes An upper bound on the total node count — a cap, not a target. Branch counts are chosen to fit under it.
Branch Levels How many levels deep, including the trunk. 5 means a trunk plus four branching levels.
Randomize Checked: every Regenerate draws a fresh random seed and shows it in the Seed field. Unchecked: Regenerate reuses the Seed field exactly.
Seed Only live when Randomize is off. Seed + Max Nodes + Branch Levels together determine the design completely — the same three values always regenerate the identical glyph.
Idle Motion (rotate_rate) A slow counter-rotating spin per branch level, so a fresh hyperglyph reads as alive before any data drives it.

The one workflow worth knowing

Leave Randomize on and press Regenerate until something catches your eye, then immediately turn Randomize off. That locks in the seed of the design on screen, and you can now tweak Max Nodes and Branch Levels around it without losing it.

Regeneration happens only on an explicit Regenerate click — never on opening the dialog, never on changing a field. Nothing rerolls out from under you.

The readout under the button reports the node count, the geometry family, the palette scheme, and the seed.

Idle Motion

Idle Motion sets rotate_rate_* on non-root nodes, alternating direction by depth — each ring of children counter-rotates against its parent ring, like an orrery. Only rotation is animated: translate_rate and scale_rate integrate forever with no wraparound, so they would drift or grow rather than loop.

The static design underneath is already complete without it. To freeze a live hyperglyph before saving, use View → Pause Rate Animation (P) in the main window, which zeroes the rate fields for real rather than just visually.

Getting the design out

Button Result
Insert into Scene Adds the nodes to the live scene — as a child of the selected node, or at the scene root if nothing is selected. What you previewed is exactly what gets inserted.
Save Recipe… Writes the design as a Glyph Template .json, the format Glyph Composer → Load Template opens.

Node CSVs still come from File → Save / Save As on the main window once a design is inserted, the same as any other content.

Capture live orientation

This checkbox changes what Save Recipe writes: the pose the preview has spun into, rather than the orientation the design was generated with.

It matters because a recipe holds one rotation per level, while Idle Motion gives every node its own axis and speed — so siblings drift apart and no single value can describe them all. The capture is therefore:

  • Exact for the trunk, which is always a single node.
  • Representative for deeper levels, taking the first node at each level. First-node is chosen over an average because it is an orientation that genuinely occurred on screen, and it stays stable as the siblings spread out.

With Idle Motion off nothing has moved, so the checkbox has no effect.

A recipe is always static

Recipes carry no rate fields at all. What Capture live orientation preserves is the pose the preview had reached, not the motion.

Large designs

Above roughly 2,000 nodes the dialog says so in the readout, and again when you save. The recipe file stays tiny and the glyph renders fine in a scene — what gets heavy is editing it in the Composer, which rebuilds the whole tree after every keystroke. Regenerate is cheap; it's worth knowing before you commit.

How designs are chosen

The randomness is tuned, not uniform. Three choices do most of the work:

Geometry family. One family is picked per design, rather than mixing all shapes freely — this is what keeps a five-level, thousand-node glyph reading as one coherent creature instead of visual noise.

Family Shapes
platonic Tetra, Octa, Dodeca, Icosa, Cube (solid + wire)
round Sphere, Torus, Cylinder, Cone (solid + wire)
wire_only The wireframe of everything
spiky Cone, Pin, Tetra, Star
particles Point, Circle, Cross, Star
mixed A curated cross-section

Palette scheme. Hues are related by color theory rather than rolled per level: monochrome, analogous, complementary, triadic, split_complementary, or rainbow. Each level also gets its color_index wired to its depth, so the design is ready for the Color Palettes feature the moment it is generated.

Topology pool. Only topologies whose angular coordinate suits branching are drawn from: Sphere, Torus, Cylinder, Pin, Rod, Point, Spiral. Cube, Plane and None read translate_x as something else entirely; the Z-variants place children through the center rather than on the surface, which reads as a clump rather than a structure.

Levels are generated with Topo Scale on Auto (see Glyph Composer), which is what keeps a Pin level's children inside the parent's extent instead of smeared along 360 units.

Batch generation (hyperglyph_lab/)

For exploring many designs at once, the repository ships a standalone lab with a CLI and a notebook. This is the tool the dialog is a single-glyph wrapper around.

python generate_hyperglyphs.py --levels 5 --max-nodes 2000 --count 10
python generate_hyperglyphs.py --levels 4 --max-nodes 500 --count 20 --name storm
Option Meaning
--levels Branch levels including the trunk (required)
--max-nodes Per-design node cap (required)
--count How many designs this batch (default 10)
--name Filename prefix
--output-dir Where to write (default hyperglyph_lab/output/)
--ratings-csv The design manifest (default hyperglyph_lab/ratings.csv)
--explore-ratio Fraction of the batch that is fresh randomness vs. mutation of a past favorite
--seed Master seed, for a reproducible batch
--no-idle-motion Turn off the idle spin

Each design writes three files — a gv_node.csv / gv_tag.csv pair you can open directly, and a _recipe.json you can open in the Composer — plus one row appended to the ratings manifest.

The rating loop

ratings.csv is a plain manifest of every design ever generated, with blank rating, categories and notes columns for you to fill in. It is meant to be edited by hand in a spreadsheet (or from the notebook) between runs.

Once at least three designs are rated 7 or better, later batches stop being pure noise: part of each batch is spent mutating a top-rated recipe instead — small jitter on the numeric fields, occasional re-rolls of geometry within the same family and of topology within the safe pool, re-clamped back inside the node budget.

That is the whole "learning" mechanism. It is a feedback loop with you in it, not a model.

Next step

Return to the Reference overview, or open a saved recipe in the Glyph Composer to edit it level by level. For designing branching, tree-like glyphs deliberately rather than at random, see the Hyperglyph Tree Designer.