Documentation / Node reference / geo nodes
geo/VolumeCreate
Turns a mesh into a volume: a 3D grid of values covering it.
Volume
Voxelizes every mesh on the input and publishes one VOLUME object per mesh, in input order. A 3D manifold counts as a mesh, so geo/M3DCreate plugs straight in with no geo/M3DTriangulate between. Anything else is an error rather than a silent skip.
A volume is a box of cells with one number in each. What that number MEANS is the mode.
**DENSITY** fills the cells inside the mesh and leaves the rest empty, which is what a cloud, a smoke field or anything shaded as a participating medium wants. Point it at tex/Volume and the result renders as fog.
**DISTANCE** writes the signed distance to the surface in every cell: negative inside, positive outside, zero on it. That is a sampled SDF, and it is what geo/SDFCreate reads when a volume goes into it, what geo/VolumeGradient differentiates into surface normals, and what a raymarching material marches. Pick DISTANCE whenever the field is going to be sampled BETWEEN the cells, because distance interpolates smoothly and a density does not.
**Voxel size is the only setting that really matters.** It is the edge of one cell in world units, so it is the resolution of the result: no feature narrower than a cell survives, and no edge is sharper than one. Halving it costs eight times the memory and eight times the bake. `maxResolution` is the ceiling that stops a fine voxel size on a large mesh from running away: hitting it means the grid is coarser than you asked for. `padding` is how many cells of margin sit around the mesh, which is how far past the surface the field still reads.
**A voxelizer needs a CLOSED surface.** Inside and outside are decided by flooding the space around the mesh, so a shape with a hole in it reads solid where you did not mean it to. Split vertices are fine, so geo/Box goes in as it is; a mesh that was merged from pieces usually wants a geo/Fuse first.
**Nothing here is cached.** Every cook voxelizes again, and on a large mesh that is seconds. When the same bake is wanted at every scene open, go through geo/SDFCreate instead: it takes the mesh directly, bakes the same grid, and writes a .pvol file beside the scene's assets.
A DISTANCE bake runs on the GPU where the build and the device allow it, and falls back to the CPU where they do not, which is slower and never wrong. The node says so on itself when the reason is something about this scene, such as a mesh or a grid past what the kernel can bind; it stays quiet about a browser on WebGL or a build with no compute shaders, since neither is anything the scene's author chose. In a browser the distances land a tick or two after the cook starts them, so the cook is held and the nodes below it run when it finishes. DENSITY has no GPU path and asks for none.
Parameters
| Name | Type | What it does |
|---|---|---|
| mode | UInt8 DENSITY · DISTANCE | What the number in each cell means. DENSITY is full inside the mesh and empty outside, which is what a fog or smoke material reads. DISTANCE is the signed distance to the surface, negative inside and positive outside, which is a sampled SDF: geo/SDFCreate, geo/VolumeGradient and a raymarching material all want this one. Only DISTANCE interpolates smoothly between cells, and only DISTANCE has a GPU path. |
| voxelSize | Float | Edge of one cell, in world units. This is the resolution of the volume: no feature narrower than a cell survives and no edge is sharper than one. Halving it costs eight times the memory and eight times the bake. |
| maxResolution | Vector3UInt | Ceiling on the number of cells per axis, so a fine voxel size on a large mesh cannot run away with memory. Hitting it means the grid is coarser than the voxel size asked for. |
| padding | UInt32 | Margin around the mesh, in cells. The field only reaches this far past the surface, so raise it when whatever samples the volume starts further away. |
| allocator | UInt8 TEMP · POOL · FLAT_POOL | Where the bake's scratch memory comes from. The voxels themselves live in the published volume; this is only what the voxelizer works in, and it is released as soon as the cook is done. |
See also
- geo/SDFCreate
- geo/VolumeGradient
- geo/VolumeSmooth
- geo/VolumeTriangulate
- geo/FileVolume
- geo/Fuse
- tex/Volume
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.