Torus
A 3D torus mesh.
What it does
Torus builds a ring-shaped mesh from two radii. Major Radius sets the distance from the centre to the middle of the tube, Minor Radius the thickness of the tube itself. Major Segments and Minor Segments set how finely the two circles are tessellated, trading smoothness for vertex count.
Turn Analytical on to emit the torus as an analytic shape rather than a tessellated mesh: resolution-independent, and ready for Distance Field booleans with other shapes. In that mode Major Segments and Minor Segments have no effect, since there is no tessellation to control.
When to use it
A ring, donut, tube-loop, or handle shape in 3D
A smooth loop for a Distance Field boolean: turn Analytical on
A tube mesh to deform, displace, or subdivide further: keep Analytical off and dial in the segment counts
A chunky low-poly ring: lower both segment counts
| Parameter | Type | Default | What it does |
|---|---|---|---|
fill | Color or Color Field or Color[] or Field or Material or Material[] or Frame Sequence | — | — |
major_radius | Number | 100 | Distance from center to tube center |
minor_radius | Number | 30 | Tube radius |
major_segments | Number | 48 | Number of segments around major circle |
minor_segments | Number | 24 | Number of segments around minor circle (tube) |
analytical | Boolean | false | Emit an analytical Field::Record(geometry_surface) instead of a tessellated mesh. The whole object transform still applies — position, rotation, scale and anchor place the analytical shape through the same transform that places the mesh, so flipping this switch never moves, turns or resizes it. Cross-primitive SDF booleans and lazy-resolution rendering work natively; mesh consumers get the tessellation spliced transparently via the geometry_field_to_collection adapter. |
position | Vec3 | (0, 0, 0) | Translation (X, Y, Z) |
rotation | Vec3 | (0, 0, 0) | Rotation in degrees (X, Y, Z) |
scale | Vec3 | (1, 1, 1) | Scale (X, Y, Z) |
anchor | Vec3 | (0, 0, 0) | Pivot offset (X, Y, Z) — rotation/scale orbit this point |
opacity | Number | 1 | Layer opacity (0 = transparent, 1 = opaque). Editable, wirable, keyframable. |
Gotchas
The torus's ring sits in the local XZ plane. Under rotation, the identity it carries for downstream shape operations such as Distance Field booleans only survives at zero rotation. Treat a rotated tessellated torus as a plain mesh rather than a live analytic ring.
Minor Radius is the tube thickness, not its diameter. A Minor Radius half the size of Major Radius gives a fairly fat donut.
Major Segments and Minor Segments only affect the tessellated mesh, and are ignored while Analytical is on.
Worked example
Add a Torus. Set Major Radius for the ring's size and Minor Radius for the tube's thickness.
Raise Major Segments and Minor Segments for a smoother surface, or lower them for a faceted, low-poly look.
Wire a Color or Material into Fill to drive the surface from the graph.
For a Distance Field boolean with another shape, turn Analytical on.