Documentation / Node reference / geo nodes
geo/SDFTPMS
Fills space with a lattice of triply periodic minimal surfaces, the gyroid and its relatives.
Sdf Primitives
Creates a lattice as SDF geometry: a saddle-shaped surface that repeats along all three axes and splits space into two channels woven through each other. Pick the surface with `type`. The gyroid is the usual choice; Schwarz P has round openings on the cube faces, Schwarz D (diamond) is the stiffest of the three classics, and Neovius, Lidinoid, Split P and Fischer-Koch S are the denser, more intricate ones.
The `form` decides what is solid. SHEET makes a wall of `thickness` along the surface and leaves both channels open, which is what a heat exchanger or a light infill wants. SOLID fills one channel and leaves the other empty, and `level` moves its skin out (positive, a fatter solid) or in (negative, a thinner one).
`cell` is the size of one repeat along each axis, so different values per axis stretch the cells. The lattice is centred on the origin; move it with geo/Transform.
**`thickness` and `level` are real distances.** The raw formulas make walls that vary up to six times in thickness across a cell. This node measures them along the surface instead, so the walls come out as thick as you ask. A thin wall (a twentieth of a cell) is within 2 percent on the gyroid, both Schwarz surfaces and Neovius, and within 6 percent on the others. Thicker walls come out a little thin: at a tenth of a cell, 3 to 6 percent for the gyroid and both Schwarz surfaces, more for the denser ones, whose channels start to close. The field stays safe to march however thick the wall, so nothing is missed in the preview.
The lattice is infinite, so boundsSize and boundsCenter declare where it is displayed. To fill a part, intersect it with the part in a geo/SDFBoolean; to make a shell with a lattice inside, union that with a geo/SDFOnion of the part.
Parameters
| Name | Type | What it does |
|---|---|---|
| type | UInt8 GYROID · SCHWARZ_P · SCHWARZ_D · NEOVIUS · LIDINOID · SPLIT_P · FISCHER_KOCH_S | Which surface the lattice is made of. |
| form | UInt8 SHEET · SOLID | SHEET makes a wall along the surface with both channels open. SOLID fills one channel and leaves the other empty. |
| cell | Vector3 | Size of one repeat of the lattice along each axis. |
| thickness | Float | Thickness of the wall, as a distance. Used by the SHEET form. |
| level | Float | How far the skin of the SOLID form is moved out from the surface, as a distance. Positive makes the solid fatter, negative thinner. Past about a tenth of a cell either way, the Lidinoid, Neovius and Split P channels start to pinch shut. |
| boundsSize | Vector3 | Size of the displayed region (the lattice itself is infinite). |
| boundsCenter | Vector3 | Center of the displayed region. Moving it slides the window over the lattice, it does not move the lattice. |
See also
This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.