Constrained design — Noyron-shape rule encoder live
A parametric sphere starts oversized + offset, three constraints active: maximum mass, build-volume containment, minimum wall thickness. The search runs a seeded local-step burst each animation frame; the cross-section through z = 0 paints the current voxel field, the constraint column flips ✗ → ✓ as parameters cross feasibility thresholds, and the objective + total-score numbers descend underneath. Every step is deterministic: same seed, same trajectory, same final design. The output is a typed VoxelGrid artifact, not a chat string.
About this exhibit
Two substrate primitives compose here. mgai-voxel
ships the stored, mutable 3-D scalar field — the kernel layer
— with boolean ops, Minkowski offset, and mass properties.
mgai-cea sits on top as the rule-encoder layer:
Constraint and Objective traits, a Score that bundles the
constraint reports with a penalty-weighted total, and a
seeded local search.
The three constraints driving the search:
- max_mass — total mass ≤ 2.0 (density 1.0).
- within_aabb — every inside cell must fit inside a smaller build-volume than the design starts at.
- min_wall_thickness — design must survive an inward Minkowski erosion of 0.025; canonical additive-manufacturing rule.
Each constraint emits a ConstraintReport with
satisfied / violation / bit_ops / energy_uj. The
search penalises violations heavily, so the trajectory
converges to a feasible point before refining the objective.
Same seed produces the same trajectory across reruns —
substrate replayability at the design-search layer.
mgai_voxel::mesh::polygonise.