Skip to main content
This lesson covers the logic behind the Z Rotation block and how to extend it to create a variable Twist. In field-driven design, rotation isn’t about moving an object; it’s about remapping the coordinate system so the object “calculates” its new orientation.

1. The Logic: 2D Rotation Mapping

To rotate a field about the Z-axis, we only need to transform the x and y coordinates. The z-coordinate remains unchanged, ensuring the rotation occurs within horizontal planes. Rotation angle about Z Drag to twist the body in the XY plane. Remap field inputs:

new x = cos(0°) · x − sin(0°) · y

1.00·x − 0.00·y

new y = sin(0°) · x + cos(0°) · y

0.00·x + 1.00·y z = z unchanged The Z Rotation block uses a standard rotation matrix. Because we are remapping a field, we apply the inverse rotation to the coordinates: Z Rotation.ntop xnew=x⋅cos⁡(θ)+y⋅sin⁡(θ) ynew=−x⋅sin⁡(θ)+y⋅cos⁡(θ) The Custom Block is built upon:
  • Sin & Cos: These are calculated using the negative of the input angle to correctly handle field remapping.
  • Remap Field: This block takes your original Scalar Field and looks for its values at the calculated new x and new y positions.

2. Implementing the Remap

The Remap Field block is the engine of this transformation. It requires three coordinate inputs to redefine the space: Follow Along: Twist Example This example uses a Ramp to gradually change the Twist value from Start to End.