Identity | This node creates an identity matrix. | |
Zero | This node creates a matrix containing only zeros. | |
Matrix View | This node creates a View Matrix from user friendly inputs. Best used with the Camera Node. | |
Matrix Projection | This node creates a Projection Matrix from user friendly inputs. Best used with the Camera Node. | |
Manual | This node provides a matrix where every element can be set manually. | |
Transformation | This node provides a matrix to transform along the X, Y and Z axis, combining the Rotation, Scaling and Translation in a single Node. | |
Matrix Switch | This node switches between one of eight input matrices and passes it to the output. | |
Matrix Morph | This node interpolates linearly between two input matrices. | |
Matrix Operation | This node multiplies, divides, add or subtracts two or more 4x4 matrices. | |
Vector Transform | This node transforms a vector (X,Y,Z,W) by a 4x4 matrix and optionally de-homogenizes the result. |
The Matrix Nodes provide special types of matrices that can be used as Input Properties for the World Transformation or View and Projection of the Camera. In the following collapsed container you see an overview of the options of Projection and View Matrices.
Projection simulates the effect of perspective shortening (i.e. objects farther away appear smaller). This is often defined by specifying a view angle (also called field of view). When a more schematic look is required, this can also be an orthogonal instead of a perspective projection which does not have any perspective shortening at all.
Both, Field of View and Orthogonal have Center input properties X and Y that can be used to shift the center of the projection. The projection also specifies the Near and Far planes, who define the Z value of the closest and farthest point that is still rendered as part of the view frustum.
Field of View defines the camera viewing field by the angle between two opposite sides of the viewing frustum. The Fov input property specifies that angle, FovAxis specifies if those are the left and right (horizontal) or the top and bottom (vertical) sides. The angle between the other two sides is automatically calculated based on the Aspect and AspectRelation properties:
If there is no camera node in the scene, Ventuz will use a default projection which is the equivalent of a 45 degrees Field of View projection with the aspect ratio implied by the output resolution set in the Project Properties.
Orthogonal is a special projection that has no perspective shortening at all. It is often used for schematic views or other situations where perspective shortening would be confusing. The Input Properties Width and Height define the width and height of a 3D space volume that will be displayed in the render output. The orthogonal projection basically cuts out this volume straight out of the World/View space and flattens it along the Z-axis.
Matrix can be used to set up or connect a custom projection matrix. A custom matrix could for example be calculated manually or delivered by a third party device.
The view matrix is responsible for simulating the position and orientation of a virtual camera. The Camera Node has different capabilities to set up the view matrix:
The Matrix Operation node is usually used to multiply matrices and thus perform a concatenation of matrix transformations. It can, however, also perform element-wise division, addition or subtraction. Each input operand as well the result matrix can be optionally inverted and/or transposed.
Matrix multiplication is a non-commutative operation and the result of multiplying A * B is in general different from B * A.
The Vector Transform node can be used to multiply a vector with a matrix. This is often used to transform coordinates from one space into another. For example, an object-space coordinate can be transformed to the view-space by multiplication with the World matrix as provided by the Get World node.
Realtime 3D graphics use 4-component vectors and matrices to be able to perform operations like projection which are not possible by just using the 3 components x/y/z. Oversimplified, a homogenous coordinate w of 1 indicates that the vector represents a point in 3D space, a value of 0 indicates a direction vector and other values usually only arise as the result of multiplying a vector with a projection matrix. To get the actual result of the projection, the vector has to be de-homogenized by dividing all components by w. This is automatically done if the Dehomo property is checked.
For more information on vector transformations and spaces, the reader is referred to a linear algebra text book or introductory 3D graphics programming books like Realtime Rendering by Möller and Haines.