The Rotation operator allows you to control particle orientations.
Inherit previous: uses the current value of a particle’s orientation as the start value.
Random 3D: uses a random orientation as the start value.
Random horizontal: uses a random orientation around the world’s Z-Axis as the start value.
World space: uses a world-aligned orientation as the start value.
Travel direction: uses an orientation aligned to the particle’s velocity as the start value.
Custom vector direction: uses an orientation aligned to a custom data channel as the start value.
Object align: uses an orientation aligned to the transform of the closest scene object as the start value.
Spline align: uses an orientation aligned to the curve of the closest spline as the start value.
Surface align: uses an orientation aligned to the closest point on a scene object’s surface mesh as the start value.
Parent align: uses an orientation aligned to the parent of each particle, if the particle has a parent.
Sibling align: uses an orientation aligned to the adjacent sibling of each particle, if such a sibling exists.
Look-at: uses an orientation directed towards the closest point on an input object as the start value.
Align to neighbors: uses an orientation directed towards the particle’s neighbors as the start value.
Align to binding neighbors: the orientation will be derived using a closest-fit approach to match the layout of the particle’s binding neighbors relative to their layout on the previous frame.
When doing a grain simulation, the Particle Bind Solver will adjust particle positions based on their bindings network, but will not adjust particle rotations at all. This is by design since the Particle Bind Solver is a simple mass-spring solver that does not take rotations into consideration. However, this means that while the overall structures of particles may rotate during the solve, individual particle orientations will not change. This can look strange in closeup. By enabling “Align to binding neighbors”, the Rotation operator will attempt to match the orientation of particles to the relative orientation of the cloud of particles they are bound to. This is a fairly effective way of keeping particle positions and orientations in sync when utilizing the Particle Bind Solver. Note: particles require at least 3 active bindings on current and prior frames in order for the alignment algorithm to activate on any given frame.
A particle must have at least 2 binding neighbors in order to be affected by the binding neighbors mode.
Closest edge on shape: the orientation will be derived from the vector defined by the closest edge on the particle shape to the particle location.
Closest face on shape: the orientation will be derived from the vector defined by the closest face normal on the particle shape to the particle location.
Shape-oriented bounds: the orientation will be derived from the oriented bounding box of the particle shape mesh. The longest axis of the bounding box will be the up vector of the rotation matrix, and the second longest axis will be the forward vector.
Disabling this setting has the effect of orientating the particle’s transform without changing the orientation of the particle’s mesh. In other words, it’s akin to rotating the particle’s pivot.
Disabling “affect particle shape orientation” can have a big impact on memory usage and performance, because each particle’s mesh will have to be manually adjusted in order to compensate for the particle’s orientation change.
X/Y/Z: controls the amount of offset applied to starting orientations, along each axis.
Divergence: controls the degrees of random divergence to apply to starting orientations.
Angle step: controls the minimum angle between divergent angles.
Increase the “angle step” value to increase the angle between random rotations. For example, a step value of 90 degrees means particles will only be randomly rotated in steps of 90 degrees. The step value works best when only a single axis of divergence is chosen.
You can use the limit parameter to ensure a particle’s orientation does not change more than a specified number of degrees, per step.
Max degrees: the maximum number of degrees a particle may be rotated, compared to its prior orientation.
Relative to travel distance: when enabled, rotation interpolation will be relative to the travel distance of particles.
Distance threshold: the threshold distance used to calculate the relative interpolation multiplier.
In some rotation modes (ex: “travel direction” mode), tiny position changes that particles undergo can result in big rotation changes, due to the way rotation vectors are calculated. The classic solution to this problem is to simply reduce the rotation interpolation value - but eliminating rotation jitter can require interpolation values that are very low, which causes particles to rotate too slowly overall. By enabling “relative to travel distance”, interpolation values will be relative to the distance a particle has traveled over time - allowing fast moving particles to update their rotations more quickly than slow moving particles whose rotation jitters would otherwise be much more noticeable. This causes tiny position changes in slow moving particles (which would normally result in a lot of rotation jittering) to be eliminated, while faster moving particles (not affected by position jittering) will rotate at full speed.
These settings apply banking when rotation type is set to travel direction
Multiplier: the amount of banking to apply to starting orientations, around the particle’s travel direction.
Smooth: the amount of temporal smoothing to apply to banking values, based on changes to the particle’s travel direction over time.
Relative to velocity magnitude: when enabled, the amount of banking applied will be relative to the specified min/max thresholds.
Min/max: the range of velocities that the banking amount will be made relative to.
These settings pertain to rotation types which rely on the input of a custom data channel.
These settings control how secondary vectors of the orientation matrix will be derived (the up vector is the main alignment vector, and the right vector is derived from the cross product between the up and forward vectors).
Auto: the forward vector of the surface alignment transforms will be automatically computed based on the orientation of the up vector.
From surface: the forward vector of surface alignment transforms will be derived from the surface itself.
From velocity: the forward vector of surface alignment transforms will be derived from each particle’s velocity direction.
From particle: the forward vector of surface alignment transforms will be derived from each particle’s transform forward vector.
From world: the forward vector of surface alignment transforms will be defined in world space.
X/Y/Z: allows users to define world-space forward vectors, when “from world” is enabled.
First edge/closest edge/closest vertex: when forward vector is derived from surface, these options control which nearest face element will be used to derive the vector.
Orthogonal: controls whether surface alignment orientations will be made orthogonal to the up vector.
Controls where to derive forward vector from, when “from surface” chosen as forward vector source.
From first edge of closest face: forward vector will be taken from first edge of closest face.
From closest edge of closest face: forward vector will be taken from closest edge on closest face.
From closest vertex of closest face: forward vector will be taken from edge containing closest vertex on closest face.
From closest explicit normal: forward vector will be taken from interpolated explicit normals of closest surface point.
From closest face normal: forward vector will be taken from face normal of closest face.
From closest vertex normal: forward vector will be taken from interpolated vertex normals of closest surface point.
Surface explicit normal: controls whether the up vector of surface alignment transforms will be derived from the nearest explicit normal.
Surface face normal: controls whether the up vector of surface alignment transforms will be derived from the nearest face normal.
Surface vertex normal: controls whether the up vector of surface alignment transforms will be derived from the nearest vertex normal.
These settings control neighbor searches in neighbor align mode.
Radius: the particle neighbor search radius. Nearby particles within this radius will be considered neighbors.
Smooth interpolation: when enabled, particle rotations will interpolate smoothly to neighbor rotations, based on proximity.
Include all particles: particles will align to neighbors from any event.
Only include this event’s particles: particles will only align to neighbors in their same event.
Exclude this event’s particles: particles will only align to neighbors from other events.
Simulation groups: controls which particle simulation groups nearby particles must match in order to be considered neighbors.
Enable clustering: controls whether alignment candidates will be determined by cluster values.
Channel: the particle data channel to get cluster values from.
These settings control binding neighbor alignment.
These settings control which objects will be sampled for various rotation types, and the proximity of their influence.
The proximity influence extends outwards from nearby objects
Distance: particles within this distance will be fully affected.
Falloff: the effect on particles beyond the base distance, but within this falloff distance, will diminish according to the inverse-square law.
Unify transform orientation: when enabled, will attempt to orient rotation transforms in a way that generally point their Y-axis vectors in the same direction. Can help to create more intuitive transform orientations in scenarios where all meshes lie flat on the same plane.
Unify transform axis direction: if the specified transform axis points away from the specified vector, the entire transform will be flipped.