Transform, advect, and warp fields
Special nodes are available to transform fields, as well as advect and warp (or deform) them. You can think of these nodes as modifying the input positions at which a field will be sampled.
Transform fields
Transforming a field moves it so that positions are sampled at an offset from where they would normally be sampled. It is equivalent to applying the inverse transformation to the positions and then sampling the original field at the modified positions.
transform_field
applies afloat4x4
orfloat3x3
transformation to the field.scale_field
scales the field by the specified factor.rotate field
rotates the field by the specified quaternion.translate_field
translates the field by the specified vector.
Representing rotations as fields
Because fields do not support float4
values, you cannot use fields to represent rotations as quaternions or axis-angle values. However, you can use vector fields to represent rotations as "rotation vectors". Rotation vectors are 3D vectors where the direction represents the axis of rotation, and the length of the vector represents the angle in radians.
There are a few utility nodes to help you convert between rotation vectors and other representations:
euler_to_rotation_vector
quaternion_to_rotation_vector
rotation_vector_to_quaternion
For other types of rotation, you can convert them to quaternions first before converting them to rotation vectors.
Advect fields
Use advect_field
to transform a given field along a vector field representing velocities across space. This is especially useful for making fields flow during simulations.
Warp fields
The warp_field
node deforms a given field by a vector field that remaps its values to new positions. It is equivalent to sampling the warp field first to find new positions, and then using the new positions to sample the original field.