Rotate#

https://user-images.githubusercontent.com/14288520/191327226-e148b848-dd01-4678-9d25-6a9b0d32b26b.png

Functionality#

This node is used to make general rotation over geometry. It works directly over vertices, not with matrixes. Just like Blender, it offers 3 different types of rotation:

Axis Rotation

Based on axis (X, Y, Z) and a rotation angle (W)

Type of Rotation

Description

Axis Rotation

Based on axis (X, Y, Z) and a rotation angle (W)

Euler Rotation

Using Euler Gimbal: 3 axis with a hierarchical relationship between them

Quaternion rotation

Based on four values (X, Y, Z, W). W value will avoid X, Y, Z rotation

If you want to learn deeply about all this types of rotation, visit this link: http://wiki.blender.org/index.php/User:Pepribal/Ref/Appendices/Rotation

Axis Rotation#

This mode let us define an axis (X, y, Z), a center point and a rotation angle (W), in degrees, around the defined axis.

Inputs#

All inputs are vectorized and they will accept single or multiple values. There is four inputs:

  • Vertices

  • Center

  • Axis

  • Angle

Parameters#

All parameters except Vertices has a default value. Angle can be given by the node or an external input.

Param

Type

Default

Description

Vertices

Vertices

none

vertices to rotate

Center

Vertices

(0.0, 0.0, 0.0)

point to place the rotation axis

Axis

Vector

(0.0, 0.0, 1.0)

axis around which rotation will be done

Angle

Float

0.00

angle in degrees to make rotation

Outputs#

Vertices.

Example of usage#

AxisRotationDemo1.PNG

In this example we use axis rotation to rotate a torus around the X axis 45 degrees .

Euler Rotation#

This mode is used to perform Euler rotations, referred to an Eular gimbal. A gimbal is a set of 3 axis that have a hierarchical relationship between them.

Inputs#

All inputs are vectorized and they will accept single or multiple values. There is four inputs:

  • Vertices

  • X

  • Y

  • Z

Parameters#

All parameters except Vertices has a default value. X, Y and Z can be given by the node or an external input.

Param

Type

Default

Description

Vertices

Vertices

none

vertices to rotate

X

Float

0.00

value to X axis rotation

Y

Float

0.00

value to Y axis rotation

Z

Float

0.00

value to Z axis rotation

Order

Enum

XYZ

order of the hierarchical relationship between axis

Outputs#

Vertices

Example of usage#

EulerRotationDemo1.PNG
EulerRotationDemo2.PNG

In the first example we use Euler rotation rotate the vertices of a line to create a 3d spiral The second is more complex, with multiple inputs in Y and Z to create a complex geometry from just one line.

Quaternion Rotation#

In this mode rotation is defined by 4 values (X, Y, Z, W), but it works in a different way than Axis Rotation. The important thing is the relation between all four values. For example, X value rotate the object around X axis up to 180 degrees. The effect of W is to avoid that rotation and leave the element with zero rotation. The final rotation is a combination of all four values.

Inputs#

All inputs are vectorized and they will accept single or multiple values. There is five inputs:

  • Vertices

  • X

  • Y

  • Z

  • W

Parameters#

All parameters except Vertices has a default value. X, Y, Z and W can be given by the node or an external input.

Param

Type

Default

Description

Vertices

Vertices

none

vertices to rotate

X

Float

0.00

value to X axis rotation

Y

Float

0.00

value to Y axis rotation

Z

Float

0.00

value to Z axis rotation

W

Float

1.00

value to Z axis rotation

Outputs#

Vertices.

Example of usage#

QuatRotationDemo1.PNG

As we can see in this example, we try to rotate the plan 45 degrees and then set W with multiple values, each higher than before, but the plane is never get to rotate 180 degrees.

Advanced Parameters#

In the N-Panel (and on the right-click menu) you can find:

  • Output NumPy: Output NumPy arrays in stead of regular lists (makes the node faster when you input one rotation value for each set of vertices)

  • List Match: Define how list with different lengths should be matched