Geo To T3D¶
Summary¶
The GEO To T3D turns geometry into a volume. It renders the geometry inside a box (Lower and Upper Bounds) with three orthographic cameras, along X, Y and Z, and marks every voxel a surface passes through; a surface steep to one camera is caught by another. Max Axis Resolution sets the voxels along the box's longest side, and the other axes follow so voxels stay cubic.
Fill. With Fill on, closed surfaces are filled. Each axis is walked in both directions through the marked surfaces, entering and leaving according to the surface's orientation, and a voxel is inside when every axis agrees. Orientation comes from the normals when the geometry has them (as point, vertex or, for POPs, primitive attributes) and from the winding of the faces otherwise, so flipping the normals of an inner surface makes a cavity. Overlapping closed parts fill as their union; open surfaces fill only as far as they enclose.
Signed distance. Output Signed Distance writes the distance to the surface instead, negative inside and in
units of the volume's width, computed exactly from the filled voxels (a separable Euclidean distance transform) and
accurate to about half a voxel. It feeds volume's density through threshold or math, surface rendering, or
anything that needs to know how far a point is from the geometry.
In world space. The volume spans the bounds box, in the geometry's own coordinates. The operator exports this
mapping: point the T3D Transform Reference of volume, surface or voltrace at it, and the rendered volume
lines up with the geometry (see Coordinates and units).
Lock freezes the result, and Reload refreshes it while locked, for geometry that is expensive or should not be re-voxelised every frame.
Parameters - GEO to T3D Page¶
Geo Geo - A Geometry COMP drawn in addition to the inputs, with its own transform and render SOP. Used as is: it is assumed to have normals.
Max Axis Resolution Maxaxisresolution - Voxels along the longest side of the bounds. The other axes get as many voxels as keeps them cubic: bounds of 2 × 1 × 1 at 64 give 64 × 32 × 32.
Upper Bounds Upperboundsx Upperboundsy Upperboundsz ⊞ - The corner of the voxelised box with the largest coordinates, in the geometry's space.
Lower Bounds Lowerboundsx Lowerboundsy Lowerboundsz ⊞ - The corner with the smallest coordinates. Geometry outside the box is ignored.
Margin Margin - Added to the bounds on every side, so geometry touching them is not cut off.
Display Bounds Displaybounds - Draws the bounds box in the operator's viewer.
Get Bounds Calculatebounds - Sets Upper and Lower Bounds to the connected geometry's bounding box.
Output Output ⊞ - Occupancy: Fill Color inside the geometry (or on its surface), Background elsewhere. Signed Distance: distance to the surface in units of the volume's width, negative inside; accurate to about half a voxel. Written as 32-bit float unless Pixel Format says otherwise.
- Occupancy
occupancy- Fill Color where the geometry is (inside it with Fill on, else on its surface), Background Color elsewhere. - Signed Distance
sdf- The signed distance to the surface in units of the volume's width, negative inside, exact to about half a voxel. 32-bit float unless Pixel Format says otherwise. Fill and the colours do not apply.
Fill Fill - Fills the inside of closed surfaces instead of marking the surface only. Inside and outside follow the surface's orientation: its normals when the geometry has them, else the winding of its faces, so a surface turned inside out (a hollow torus's inner wall with flipped normals) makes a cavity. Open surfaces fill up to the opening, not beyond.
Color Fillcolorr Fillcolorg Fillcolorb ⊞ - Colour where the geometry is.
Alpha Fillalpha - Alpha where the geometry is.
Background Color Bgcolorr Bgcolorg Bgcolorb ⊞ - Colour elsewhere.
Background Alpha Bgalpha - Alpha elsewhere.
Pre-Multiply RGB by Alpha Premultrgbbyalpha - Multiplies the colours by their alphas.
Lock Lock - Holds the current result and stops following the input, so animated or heavy geometry need not be revoxelised every frame.
Reload Reload - Voxelises the input once more while Lock stays on.
Parameters - Advanced Page¶
Super Sampling Supersampling - Renders each slice at this many samples per voxel along X and Y, so thin parts and small faces are not missed. 1 is fastest; 2 (the default) catches features down to half a voxel.
Parameters - Common Page¶
Output Resolution Outputresolution ⊞ - Where the output's width, height and depth come from. With nothing connected to the first input the operator always uses Resolution, whichever option is set.
- Use Input
useinput- The first input's width, height and depth. - Custom
custom- The Resolution parameter.
Resolution Resolution1 Resolution2 Resolution3 ⊞ - Width, height and depth of the output in voxels. Used when Output Resolution is Custom, or when the first input is not connected. Memory is width × height × depth × bytes per voxel of the Pixel Format: 256³ at 16-bit float RGBA is 128 MiB.
Input Smoothness Inputfiltertype ⊞ - Filtering of the internal GLSL TOPs' input samplers, as TouchDesigner's Input Smoothness. Inputs are read at normalised coordinates, so this matters whenever the input and output resolutions differ or an input is transformed. Nearest Pixel returns voxels unblended; Interpolate Pixels is trilinear.
- Nearest Pixel
nearest - Interpolate Pixels
linear - Mipmap Pixels
mipmap
Passes Npasses - Has no effect on this operator: its shaders are compute shaders, which read the connected input on every pass, so extra passes repeat identical work. Leave it at 1.
Pixel Format Format ⊞ - Pixel format of the output. Use Input takes the first input's format. With nothing connected, Use Input resolves to 8-bit fixed (RGBA), which clamps values to 0–1 and quantises them to 1/255: set a float format for signed distances, densities above 1, velocities or anything else outside 0–1.
Version Version - T3D version of this operator. Read-only information; include it when reporting a problem.
Copyright Copyright - Author and licence information. Read-only.
Operator Inputs¶
- Input 0: SOP
in_sop- Geometry to voxelise, as a SOP. Closed surfaces can be filled. - Input 1: POP
in_pop- Geometry to voxelise, as a POP (needs a build with POPs). Normals may be point, vertex or primitive attributes; with both inputs connected, both are drawn.
Operator Outputs¶
- Output 0: Output
T3D_output- The voxelised geometry, occupancy or signed distance.
Performance¶
GPU time when the operator recooks: 0.370 ms at 64³, 0.830 ms at 128³, all of its passes summed (GeForce RTX 4090, TouchDesigner 2025.33230). An operator whose inputs and parameters are unchanged does not recook and costs nothing.
At 256³ it takes 3.8 ms. The Render TOPs dominate, so the cost follows the geometry's complexity as well as the resolution; Signed Distance adds its distance transform on top.