ForceMove

ForceMove (2 | 3)

Function. Simulates physics by applying forces, winds, and air resistance to a particle's position and velocity.

Each frame, the block calculates new position and velocity based on the applied forces and time delta. This is the primary block for physics-based particle motion.

Typically, you connect a particle's Position and Velocity properties as inputs, and route the outputs back to their respective updaters.

Properties & inputs:

  • Position (input): Current position to update.
  • Velocity (input): Current velocity to update.
  • Air resistance (input | property): Drag coefficient. Good values are in range [0; 5]. Zero means no drag.
  • Num. forces (property): Number of force vectors to apply.
  • Force # (input | property): A force vector. The length and direction define the acceleration applied each second (e.g., gravity: {0, -980, 0}).
  • Num. winds (property): Number of wind vectors.
  • Wind # (input | property): A wind vector. Wind only has effect when Air resistance is non-zero. It applies a force proportional to the difference between wind speed and particle speed.

A wind input does not have to be a constant. Feeding it Curl Noise gives a swirling, divergence-free flow that particles follow around obstacles rather than piling up in; the legacy Noise3 gives turbulent gusts. Attractors pull particles toward, push them away from or swirl them around spheres, cylinders and paths you place in the scene. The Emitter Guide's Movement → Forces section builds any of these for you: Add Wind... and Add Force... both offer Directed, Curl, Attractors and Turbulence (legacy). Since a wind has no effect at all while Air resistance is zero, adding a wind also fills in a small Air resistance for you — but only while it is still zero, so a value you set yourself is never overwritten.

Outputs:

  • Position: Updated position after applying physics.
  • Velocity: Updated velocity after applying physics.