Documentation / Node reference / geo nodes
geo/SDFCreate
Creates an SDF field from real geometry.
Sdf Primitives
Turns geometry into a signed distance field, so shapes that were not authored as SDF primitives can join an SDF tree. A 2D manifold gives a 2D SDF whose value is the exact signed distance to its outline. A volume carrying distances gives a 3D SDF that samples it.
This is how a 2D SDF tree gets a CORRECT INTERIOR. A field built from geo/SDFBoolean is exact outside the shape but only a lower bound inside it, which shows up as distance bands following the union's hidden seams instead of its outline. Send the tree through geo/SDFTriangulate, which outputs a manifold by default, and back in here: the result is exact on both sides. Use dual contouring on the way if the shape has corners.
Several loops work: a square with a square hole reads negative in the ring and positive in the hole, whichever way each loop was wound. Every input object is gathered into ONE field, which is what keeps the interior exact, and input transforms are baked into the result.
The cost is one segment test per sample, so a few hundred segments is comfortable and a few thousand is slow. The limit is 4096 segments. Two smaller notes: the bounds are the outline's own extents, so the visualization quad hugs the shape more tightly than a smooth boolean's inflated bounds did, and changing the NUMBER of segments regenerates the preview shader while moving the points does not.
**Importing a 3D model.** Plug the mesh straight in: a triangle mesh or a 3D manifold is voxelized here, and the result is a 3D SDF you can boolean, transform, repeat, slice and mesh like any other. The params below are what that bake uses. Voxel size is the resolution of the field, so it is the one that matters: a grid cannot hold an edge sharper than one voxel. The limit is 16.7 million voxels, 256 cubed, and memory is real at that size.
A closed surface is what a voxelizer needs, since it decides inside from outside by flooding the space around the mesh. A shape with holes in it will read as solid where you did not mean it to. Split vertices are fine, so geo/Box goes in as it is.
A VOLUME input works too and skips the bake, since it arrives already baked: that is the route to take when the volume itself is wanted in the scene, or when the volume came from a file rather than from a mesh. The params below are ignored for it, and geo/VolumeCreate's own decide the grid instead.
Two range notes: the field reaches only as far past the mesh as the padding, and beyond the grid box it reports the distance to the box instead, which keeps growing so a march from outside still behaves. Raise padding when a march starts far away.
**A field made here wears ONE colour.** The per-region shading record (a geo/MaterialAttributes on OBJECT mode, see geo/SDFBoolean) applies to the whole imported model: per-vertex colours from the source mesh would need a second volume of colour voxels beside the distance volume, which is a different feature. Boolean several fields together to get several colours.
Each mesh and each volume becomes its OWN field object rather than being merged, since two grids cannot combine without resampling; use geo/SDFBoolean to combine them.
Parameters
| Name | Type | What it does |
|---|---|---|
| voxelSize | Float | Size of one voxel when a MESH input is baked, in world units. This is the resolution of the field: no edge can be sharper than one voxel. Ignored for a 2D manifold or a volume input. |
| maxResolution | Vector3UInt | Ceiling on the voxel count per axis, so a small voxel size on a large shape cannot run away with memory. Hitting it means the bake is coarser than the voxel size asked for. |
| padding | UInt32 | Margin around the mesh, in voxels. The field only reaches this far past the shape; beyond the grid box it reports the distance to the box instead. Raise it when a march starts far away. |
| allocator | UInt8 TEMP · POOL · FLAT_POOL | Where the bake's scratch voxels come from. The voxels are copied into the field, so this memory is released as soon as the node is done with it. |
See also
- geo/VolumeCreate
- geo/SDFTriangulate
- geo/SDFBoolean
- geo/SDFCircle
- geo/SDFExtrude
- geo/M2DCreate
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.