Simulation

Nodes for simulations inside of Geometry Nodes

Build Elastic Network

nodes.geometry.BuildElasticNetwork(
    atoms=None,
    selection=True,
    menu='Alpha Carbon',
    alpha_carbon=4.0,
    all_atom=2.0,
)

GUI reference: Build Elastic Network.

Parameters

Name Type Description Default
atoms InputGeometry Atomic mesh which inculdes vertices and edges to generate an elastic network on None
selection InputBoolean Atoms which aren’t selected will not be included in the final output mesh True
menu InputMenu | Literal['Alpha Carbon', 'All Atom'] Output a network between just alpha carbons, or one that includes all atoms 'Alpha Carbon'
alpha_carbon InputFloat Scale the distance for edge creation between just alpha carbon atoms, ignoring all other atoms. 4.0
all_atom InputFloat Scale the distance for edge creation, looking for all selected atoms 2.0

Inputs

Name Type Description
i.atoms GeometrySocket Atomic mesh which inculdes vertices and edges to generate an elastic network on
i.selection BooleanSocket Atoms which aren’t selected will not be included in the final output mesh
i.menu MenuSocket Output a network between just alpha carbons, or one that includes all atoms
i.alpha_carbon FloatSocket Scale the distance for edge creation between just alpha carbon atoms, ignoring all other atoms.
i.all_atom FloatSocket Scale the distance for edge creation, looking for all selected atoms

Outputs

Name Type Description
o.mesh GeometrySocket The generated elastic network. Edges are formed between atoms within the cutoff distance for use as constraints in a simulation

Force Brownian

nodes.geometry.ForceBrownian(add=None, small=0.1, large=0.0)

GUI reference: Force Brownian.

Parameters

Name Type Description Default
add InputVector Add None
small InputFloat Small 0.1
large InputFloat Large 0.0

Inputs

Name Type Description
i.add VectorSocket Add
i.small FloatSocket Small
i.large FloatSocket Large

Outputs

Name Type Description
o.force VectorSocket Force

Force Gravity

nodes.geometry.ForceGravity(add=None, gravity=None)

GUI reference: Force Gravity.

Parameters

Name Type Description Default
add InputVector Add None
gravity InputVector Gravity None

Inputs

Name Type Description
i.add VectorSocket Add
i.gravity VectorSocket Gravity

Outputs

Name Type Description
o.force VectorSocket Force

Force Mesh Collide

nodes.geometry.ForceMeshCollide(
    add=None,
    geometry=None,
    geometry_bounds='Original',
    collision_distance=0.1,
)

GUI reference: Force Mesh Collide.

Parameters

Name Type Description Default
add InputVector Add None
geometry InputGeometry Geometry None
geometry_bounds InputMenu | Literal['Original', 'Convex Hull'] Geometry Bounds 'Original'
collision_distance InputFloat Collision Distance 0.1

Inputs

Name Type Description
i.add VectorSocket Add
i.geometry GeometrySocket Geometry
i.geometry_bounds MenuSocket Geometry Bounds
i.collision_distance FloatSocket Collision Distance

Outputs

Name Type Description
o.force VectorSocket Force

Simulate Curve

nodes.geometry.SimulateCurve(
    geometry=None,
    selection=True,
    substeps=5,
    force=None,
    drag=1.0,
    point_radius=0.04,
    point_alpha=0.0,
    curve_points=1,
    curve_straightness=0.9,
    curve_segment_length=0.1,
    curve_alpha=0.0,
    hook_selection=False,
    hook_target=None,
    hook_decay=0.5,
    pin_selection=False,
    pin_target=None,
)

GUI reference: Simulate Curve.

Parameters

Name Type Description Default
geometry InputGeometry Geometry containing curve to simulate None
selection InputBoolean Which points to simulate on the curve True
substeps InputInteger Number of substeps to simulate for each frame of the animation (higher is slower but more accurate) 5
force InputVector Additional forces to be applied to the simulation None
drag InputFloat Drag force for how quickly velocity should dissipate in the simulation. 0 is no drag and higher values dissipate quicker. 1.0
point_radius InputFloat Radius for each point which is used for calculating collisions between points 0.04
point_alpha InputFloat Point alpha 0.0
curve_points InputInteger Number of points to check in each direction to maintain straightness of curve 1
curve_straightness InputFloat Curve Straightness 0.9
curve_segment_length InputFloat Curve Segment Length 0.1
curve_alpha InputFloat Curve alpha 0.0
hook_selection InputBoolean Hook Selection False
hook_target InputVector Hook Target None
hook_decay InputFloat Hook Decay 0.5
pin_selection InputBoolean Pin Selection False
pin_target InputVector Pin Target None

Inputs

Name Type Description
i.geometry GeometrySocket Geometry containing curve to simulate
i.selection BooleanSocket Which points to simulate on the curve
i.substeps IntegerSocket Number of substeps to simulate for each frame of the animation (higher is slower but more accurate)
i.force VectorSocket Additional forces to be applied to the simulation
i.drag FloatSocket Drag force for how quickly velocity should dissipate in the simulation. 0 is no drag and higher values dissipate quicker.
i.point_radius FloatSocket Radius for each point which is used for calculating collisions between points
i.point_alpha FloatSocket Point alpha
i.curve_points IntegerSocket Number of points to check in each direction to maintain straightness of curve
i.curve_straightness FloatSocket Curve Straightness
i.curve_segment_length FloatSocket Curve Segment Length
i.curve_alpha FloatSocket Curve alpha
i.hook_selection BooleanSocket Hook Selection
i.hook_target VectorSocket Hook Target
i.hook_decay FloatSocket Hook Decay
i.pin_selection BooleanSocket Pin Selection
i.pin_target VectorSocket Pin Target

Outputs

Name Type Description
o.geometry GeometrySocket Geometry

Simulate Elastic Network

nodes.geometry.SimulateElasticNetwork(
    mesh=None,
    selection=True,
    substeps=5,
    force=None,
    drag=0.1,
    edge_length_source='Original',
    edge_length=0.1,
    edge_alpha=0.0,
    particle_radius=0.005,
    particle_alpha=0.0,
    hook_selection=False,
    hook_target=None,
    hook_decay=2.0,
    pin_selection=False,
    pin_target=None,
)

GUI reference: Simulate Elastic Network.

Parameters

Name Type Description Default
mesh InputGeometry Mesh None
selection InputBoolean Selection True
substeps InputInteger Substeps 5
force InputVector Force None
drag InputFloat Drag 0.1
edge_length_source InputMenu | Literal['Original', 'Custom'] Edge Length Source 'Original'
edge_length InputFloat Edge Length 0.1
edge_alpha InputFloat Edge alpha 0.0
particle_radius InputFloat Particle Radius 0.005
particle_alpha InputFloat Particle alpha 0.0
hook_selection InputBoolean Hook Selection False
hook_target InputVector Hook Target None
hook_decay InputFloat Hook Decay 2.0
pin_selection InputBoolean Pin Selection False
pin_target InputVector Pin Target None

Inputs

Name Type Description
i.mesh GeometrySocket Mesh
i.selection BooleanSocket Selection
i.substeps IntegerSocket Substeps
i.force VectorSocket Force
i.drag FloatSocket Drag
i.edge_length_source MenuSocket Edge Length Source
i.edge_length FloatSocket Edge Length
i.edge_alpha FloatSocket Edge alpha
i.particle_radius FloatSocket Particle Radius
i.particle_alpha FloatSocket Particle alpha
i.hook_selection BooleanSocket Hook Selection
i.hook_target VectorSocket Hook Target
i.hook_decay FloatSocket Hook Decay
i.pin_selection BooleanSocket Pin Selection
i.pin_target VectorSocket Pin Target

Outputs

Name Type Description
o.geometry GeometrySocket Geometry

Simulate on Faces

nodes.geometry.SimulateOnFaces(
    points=None,
    selection=True,
    substeps=5,
    force=None,
    drag=0.1,
    faces=None,
    alpha=0.0,
    particle_radius=0.0,
    particle_alpha=0.0,
    hook_selection=False,
    hook_target=None,
    hook_decay=2.0,
    pin_selection=False,
    pin_target=None,
)

GUI reference: Simulate on Faces.

Parameters

Name Type Description Default
points InputGeometry Points None
selection InputBoolean Selection True
substeps InputInteger Substeps 5
force InputVector Force None
drag InputFloat Drag 0.1
faces InputGeometry Faces None
alpha InputFloat alpha 0.0
particle_radius InputFloat Particle Radius 0.0
particle_alpha InputFloat Particle alpha 0.0
hook_selection InputBoolean Hook Selection False
hook_target InputVector Hook Target None
hook_decay InputFloat Hook Decay 2.0
pin_selection InputBoolean Pin Selection False
pin_target InputVector Pin Target None

Inputs

Name Type Description
i.points GeometrySocket Points
i.selection BooleanSocket Selection
i.substeps IntegerSocket Substeps
i.force VectorSocket Force
i.drag FloatSocket Drag
i.faces GeometrySocket Faces
i.alpha FloatSocket alpha
i.particle_radius FloatSocket Particle Radius
i.particle_alpha FloatSocket Particle alpha
i.hook_selection BooleanSocket Hook Selection
i.hook_target VectorSocket Hook Target
i.hook_decay FloatSocket Hook Decay
i.pin_selection BooleanSocket Pin Selection
i.pin_target VectorSocket Pin Target

Outputs

Name Type Description
o.geometry GeometrySocket Geometry
o.normal VectorSocket Normal of the face the current point is nearest