- Geometry
- Solvers
SDF Collider
Purpose
Section titled “Purpose”SDF Collider turns a mesh or analytic primitive into a signed distance field. Solvers sample its distance to push points out of obstacles or keep them inside a domain. The output also includes a transform set for the collider’s fitted pose.
Place SDF Collider in the Geometry view, under Solvers. For a first obstacle, choose Analytic Primitive, select Sphere and start with Radius at 0.5 and Resolution at 48. Place it where the receiving solver’s particles will reach it.
On the receiving solver’s Resources page, add a Connections row, select its sdf input in Type and choose this collider’s field resource. Select the xform output in a separate xforms row when the receiver uses moving-collider transforms. Check the row Status after selecting each resource.
Inputs and outputs
Section titled “Inputs and outputs”Geometry Input reads the incoming mesh. Analytic Primitive uses the shape controls without a mesh; Blend Geometry + Primitive combines them. The outputs are field0, the collision field, and xform, the fitted transforms.
Input SDF appears in the Source menu, but the current public declaration has no SDF input port. Use the mesh or primitive modes for this node’s documented connection workflow.
Controls
Section titled “Controls”- Primitive chooses Box, Sphere, Cylinder, Capsule, Plane, Torus or Rounded Box. Center, Size, Rotation and the relevant radius controls place and shape it.
- Domain Mode chooses solid inside or free inside. Invert Sign reverses the sign; use it deliberately, since it changes which side the solver treats as solid.
- Dilate, Erode and Offset move the collision boundary. Smooth and Blend Width modify the field and the geometry/primitive blend.
- Resolution sets the cubic field density. Padding adds room around the mesh bounds. Max Triangles caps mesh capacity; begin with a simple mesh before increasing it.
- Geometry Pose chooses Fit Rigid Pose or AABB Only. Surface Slip ranges from no slip at 0 to full slip at 1 for consumers that use it.
- Rebuild Field refreshes the field. Structural edits follow Auto-Rebuild or wait for Rebuild. Show Preview and its density and length controls change the field display.
Animated mesh input can update the field, including changing point counts. Do not assume animation only changes a transform or that a deforming mesh costs the same as an analytic primitive.
Thin features need enough field resolution to survive sampling. For mesh input, use a closed surface with a clear inside and outside; the Hybrid and Winding number sign methods depend on that distinction.
Inputs
-
geometrypoints
Outputs
-
field0sdf collider -
xformtransforms -
previewlines -
preview_cdlines
Parameters
Section titled “Parameters”SDF Collider
op('sdf_collider').par.Autorebuild - Default:
On- Options:
- Off, On
op('sdf_collider').par.Rebuildnow - Default:
None
op('sdf_collider').par.Simulate - Default:
On- Options:
- Off, On
op('sdf_collider').par.Resetsolver - Default:
None
Preview
op('sdf_collider').par.Previewshow - Default:
On- Options:
- Off, On
op('sdf_collider').par.Previewdensity - Default:
12- Range:
- 2 to 48
op('sdf_collider').par.Previewlength - Default:
0.6- Range:
- 0 to 2
Outputs
op('sdf_collider').par.Hdrsdfout Read only.
- Default:
"" (Empty String)
op('sdf_collider').par.Resourcename - Default:
collider
Source
op('sdf_collider').par.Hdrsource Read only.
- Default:
"" (Empty String)
op('sdf_collider').par.Centerx - Default:
0- Range:
- -1000 to 1000
op('sdf_collider').par.Centery - Default:
0- Range:
- -1000 to 1000
op('sdf_collider').par.Centerz - Default:
0- Range:
- -1000 to 1000
op('sdf_collider').par.Sizex - Default:
1- Range:
- 0.0001 to 1000
op('sdf_collider').par.Sizey - Default:
1- Range:
- 0.0001 to 1000
op('sdf_collider').par.Sizez - Default:
1- Range:
- 0.0001 to 1000
op('sdf_collider').par.Rotationx - Default:
0- Range:
- -360 to 360
op('sdf_collider').par.Rotationy - Default:
0- Range:
- -360 to 360
op('sdf_collider').par.Rotationz - Default:
0- Range:
- -360 to 360
op('sdf_collider').par.Radius - Default:
0.5- Range:
- 0.0001 to 1000
op('sdf_collider').par.Radius2 - Default:
0.125- Range:
- 0.0001 to 1000
op('sdf_collider').par.Height - Default:
1- Range:
- 0.0001 to 1000
op('sdf_collider').par.Round - Default:
0- Range:
- 0 to 1000
Domain
op('sdf_collider').par.Hdrdomain Read only.
- Default:
"" (Empty String)
op('sdf_collider').par.Invert - Default:
Off- Options:
- Off, On
op('sdf_collider').par.Dilate - Default:
0- Range:
- 0 to 1000
op('sdf_collider').par.Erode - Default:
0- Range:
- 0 to 1000
op('sdf_collider').par.Offset - Default:
0- Range:
- -1000 to 1000
op('sdf_collider').par.Smooth - Default:
0- Range:
- 0 to 1000
op('sdf_collider').par.Blend - Default:
0- Range:
- 0 to 1000
op('sdf_collider').par.Surfaceslip - Default:
0- Range:
- 0 to 1
Field
op('sdf_collider').par.Hdrfield Read only.
- Default:
"" (Empty String)
op('sdf_collider').par.Resolution - Default:
48- Range:
- 8 to 128
op('sdf_collider').par.Padding - Default:
0.1- Range:
- 0 to 1
op('sdf_collider').par.Maxtriangles - Default:
200000- Range:
- 1000 to 2000000
op('sdf_collider').par.Boxmargin - Default:
0.00001- Range:
- 0 to 1
op('sdf_collider').par.Rebuild - Default:
None