Log inGet started
World

Ironspine

Branchmain
Branchesmain
Commit9a7cce6233

README.md

suitgeom

The hard-surface mesh builder the IRONSPINE exosuit is made of. Shapes are appended into ONE vertex buffer per part, so a plate with forty bolt heads is still one draw.

CallShape
Geo.slab(b, fr, hx, hy, hz, ch, col, taper?)a box with every edge chamfered — the workhorse
Geo.cylinder(b, fr, r1, r2, h, seg, col, capA?, capB?)a tapered tube along the frame's +Y
Geo.torus(b, fr, R, r, majorSeg, minorSeg, col)a ring — hydraulic ribs, clamp collars
Geo.bolt / Geo.boltRowa hex head sunk in a washer, alone or in a row
Geo.sweep(b, pts, r, seg, col)a tube through a path — cabling, hoses, the tether
Geo.fin(b, fr, len, root, tip, thick, col)a flat tapered vane — cooling fins, boot cleats

Frames are built with Geo.frame(origin, up, forwardHint) and moved around with Geo.offset and Geo.rotated, so a sub-shape is placed in the part's own terms rather than in world numbers.

Two things make the result read as a made object rather than a box stack:

Chamfers. Every plate edge is cut, so a raking storm sun catches a highlight along it. A raw cube has nothing to catch.

Vertex colour. col is either a flat {r,g,b} or a function of the local point and its normal, and the builtin pbr shader multiplies it into base_color — so one material carries rust, verdigris, salt bloom and edge wear across a single mesh.

Geo.noise / Geo.fbm are deterministic, so the same seed gives the same rust every boot and a screenshot taken today matches the one taken tomorrow.

Geo.upload(builder) hands the accumulated geometry to the GPU and returns a MeshHandle a Model component takes directly, plus the triangle count.