2024-02-06 Nodes & Physics Module Meeting

Check the overview thread for more information about the meeting.

Present

  • Dalai Felinto
  • Hans Goudey
  • Jacques Lucke
  • Simon Thommes

Meeting Topics

  • Final check of 4.1 targets.
  • Sampling nodes with group ID inputs
    • Simon urged making this a short-term target for the module.
    • Right now there are too many required workarounds.
    • There is no current design at the moment, but Jacques and Simon can look at that.
  • Rotate rotation node design
    • Bring back the space dropdown (global/local).
  • Vector rotate node
    • It doesn’t have the new rotation socket yet.
    • In the future it should really be a node group, but we should get Append & Re-use Embed working before that.
    • The node is also used in shader nodes, so it would need to be updated there as well. The rotation socket isn’t supported in shader nodes though.
3 Likes

Is there any chance of the Axes to Rotation node landing in 4.1?

Introducing Quaternions properly into Geometry nodes is fantastic, but in my experience working with Quaternions, creating a Quaternion via two axes in this way is the most common operation, and I think it’s really important to have this node.

1 Like

4.1 is feature-locked unfortunately. But maybe we can get it into 4.2.

Thank you for the reply, I hope we can get that node in 4.2! :slight_smile:

Although 4.1 is feature locked, there seem to be lots of inconsistencies with rotation sockets, that I hope can be improved before release:

We have Quaternions now, but the term “Rotation” is being used to refer to Eulers and Quaternions interchangeably which doesn’t make sense.

It looks like most of the nodes have been updated to officially refer to the new Quaternion type as “Quaternion” which I think is good, but the following nodes still call it a “Rotation” socket type:

  • Simulation input / output
  • Repeat Zone input / output
  • Mix
  • Switch
  • Group Input
  • Group Output

The following nodes use the new pink Quaternion socket, but the default value inputs and outputs are Eulers each with XYZ inputs in degrees:

  • Rotate Vector
  • Rotate Rotation
  • Rotation to Axis Angle
  • Rotation to Euler
  • Rotation to Quaternion

Other feedback:

Align Euler to Vector - the input and output sockets are called “Rotation” but they are both still using the Vector type. Should these sockets be renamed to “Euler” instead of “Rotation”? (Euler to Rotation node already uses this convention).

I feel like “Rotation to Quaternion”, should be called Separate Quaternion or Spearate WXYZ
and “Quaternion to Rotation” should be called Combine Quaternion or Combine WXYZ

I think we need a Constant Quaternion node to match the other constants
It would be nice to get a Quaternion option in the Random Value node

Vector Rotate node should have a quaternion mode.

Also, question: does the Mix nodes blend via Linear Interpolation or Spherical Linear Interpolation (Lerp vs Slerp)?

1 Like

This is Slerp, yes. Here is used function: blender/BLI_math_quaternion.hh at main - blender - Blender Projects

1 Like

“Rotation” is the name of the socket type. It’s designed so that you don’t have to know how rotations are stored internally. And in the future it might even depend on which formats are fastest for each computation.

The rotation sockets still have XYZ Euler controls on input sockets because that’s usually the most intuitive way to control the values by hand, and we had to choose something.

The attribute type is “Quaternion” because for attributes it’s important to be specific about the actual type used for storage.

“Align Euler to Vector” indeed doesn’t have an equivalent yet.

2 Likes