Matrix Math

https://user-images.githubusercontent.com/14288520/189597709-68ea2c85-c478-403f-9555-87fcc0096684.png

Functionality

Matrix Math node allows for various matrix operations to be performed on the input matrices, such as: Multiply, Invert, Filter, Basis.

Inputs

All inputs are vectorized and they will accept single or multiple values.

  • A

  • B [1]

  • Z [2]

Notes:

  • [1] : The second input is only available for the operations that require a second operand, like Multiply.

  • [2] : For multiple input operation (e.g. Multiply) the input sockets extend to allow arbitrary number of input matrices and their socket name progress alphabetically.

Parameters

The Operation parameter allows to select one of following operations: Multiply, Invert, Filter, Basis.

All parameters except Operation, PrePost and Filter T/R/S can be given as an external input.

Param

Type

Default

Description

Operation

Enum:

  • Multiply

  • Invert

  • Filter

  • Basis

Multiply

Multiply: A,B => C = A*B [1]

  • Invert: A => C = A^-1

  • Filter: A => C = [AT]*[AR]*[AS]

  • Basis: A => X, Y, Z

PrePost

Enum:

  • Pre

  • Post

Pre

Determines the order the operands [2]

Filter T

Bool

False

Filter out the Translation component [3]

Filter R

Bool

False

Filter out the Rotation component [3]

Filter S

Bool

False

Filter out the Scale component [3]

A

Matrix

identity

First matrix input

B

Matrix

identity

Second matrix input [4]

Notes:

  • [1] : The order of multiplication is given by the PrePost setting.

  • [2] : The PrePost setting is only available for the Multiply operation.

  • [3] : The Filter T/R/S toggle settings are only available for the Filter operation.

  • [4] : Second input is only available for Multiply operation.

Operations

Multiply The multiplication of the 4x4 homogeneous matrices result in a composite 4x4 homogeneous matrix having a composed Translation, a composed Rotation and a composed Scale. The order of multiplication is given by the PrePost setting, which is set to PRE-multiplication by default (C = A*B). The POST multiplication reverses the order of multiplication (C = B*A).

Note: When using a PRE multiply composition A*B to transform a mesh, essentially the overall operation is equivalent to applying the matrix B to the mesh first, then matrix A.

For this operation the node allows for an arbitrary number of input matrices to be multiplied together: A * B * .. * Z (PRE or POST).

Filter A 4x4 homogeneous matrix is composed by a translation (T), rotation (R) and a scale (S) matrix and is defined as: T*R*S. The filter operation allows you to set the individual components T, R and/or S to the identity matrix so that they are filtered out of the output composite matrix.

Note: filtering out all components will result in an identity matrix output.

Invert The inversion of a 4x4 homogeneous matrix A is a 4x4 homogeneous matrix A’ for which A * A’ is the identity matrix.

Basis This operation extacts the basis vector from the rotation part of the 4x4 homogeneous matrix. Essentially these are the vectors the XYZ ortho-normal axes of a coordinate system would be if transformed by the 4x4 homogeneous matrix.

Outputs

  • Matrix

Outputs will be generated when connected.

  • X

  • Y

  • Z

These outputs are available only for the Basis operation and will be generated when connected.

Example of usage