Hi Louis — the mismatch first, because you’d find it in the first minute anyway and it’s the one thing not worth burying.
I don’t work in Blender Geometry Nodes. What I build is signed distance fields evaluated in GLSL and sphere-traced in the browser — the same mathematics a procedural lattice runs on, a different tool at the end of it. If a Geometry Nodes tree is literally the deliverable, I’m the wrong person and you can stop here. If what you need is the architected material defined correctly and then made printable, the field is where that gets decided, and Blender is one of several ways to realise it.
So you can judge the domain rather than the claim, here’s a graded gyroid I have running: https://smirnov-artur.github.io/webgl/lattice — cell density graded continuously toward the centre. There is no mesh and no model file; the counter on the page reads GEOMETRY 0 B for that reason, and the whole page is four requests and 64.5 KB over the wire, 49 KB of which is two fonts. 60 fps on desktop.
Now the part I think matters more than the tooling question.
A gyroid fails your brief for a structural reason rather than a resolution one. The level set f = 0 divides space into two congruent interpenetrating labyrinths. Both percolate, and they percolate identically — which is exactly what you don’t want, because your liquid network and your air network are then the same network mirrored. But that symmetry is a knob, not a fact. Offsetting the level to f = c moves volume from one labyrinth into the other, and past a threshold the thinner one pinches off into disconnected pockets while the other stays fully connected. That is your “minimise continuous air pathways” requirement expressed as a single scalar, and it is checkable rather than hopeful: voxelise the field, label connected components, confirm the air phase has no spanning cluster. The threshold depends on cell size and print tolerance, so it wants finding numerically for your geometry — I wouldn’t quote you a number off a paper.
Directional transport then falls out of two more parameters. Anisotropy: evaluate the cell on scaled coordinates (x/λx, y/λy, z/λz), so stretching the cell along the drain axis raises permeability along it and drops it across. Capillary drive: grade the pore radius finer toward the side drain, so the Laplace pressure 2σcosθ/r is always higher at the drain end and liquid is pulled there passively instead of pushed. That gradient is exactly what the demo above does — for a visual reason there, for a physical one here.
The constraint that bounds all of it is FDM, and it bounds it hard. A pore much below a nozzle width closes up under extrusion, and a graded structure meets that limit at its fine end first — so the achievable gradient is set by your nozzle diameter and layer height before the fluid mechanics gets a say. Worth pinning those two numbers before anything else, because they set every parameter range downstream.
Concretely, what I’d propose: define the field with those parameters exposed, give you an interactive tool in the browser where you drag them and watch the structure and a section cut update in real time — including the connectivity check on the air phase — and mesh to STL from the same field. Your colleagues open a link; nobody needs a Blender install or a rebuild to see a variant. If you’d rather it end up in Geometry Nodes, the field definition transfers — a node tree implementing a level set is a fairly mechanical translation — but I’d rather say that plainly than pretend I’ve already built one.
If that’s not the shape of help you’re after, say so and I won’t take more of your time. If it is, tell me the nozzle diameter, the layer height, the envelope of the porous region and how it meets the helical channels, and I’ll come back with a scope.
Artur Smirnov — Belgrade, UTC+2 · paladei702@gmail.com · GitHub: smirnov-artur