View | This node adds different types of camera view to the scene. | |
Camera | This node provides a simple camera with position and direction properties. | |
Orbit | This node provides a camera with target, distance and rotation properties. | |
LookAt | This node provides a camera with target and position properties. |
During Rasterization, the View Matrix is responsible for simulating the position and orientation of a virtual camera. In conjunction with the Projection Node, it expresses the characteristics of a virtual camera. The View node takes a 4x4 matrix and applies it to the rendering pipeline for all children in its subtree of the scene Hierarchy. In contrast to most 3D programs, there is no explicit camera object in Ventuz and there are no restrictions where in the scene hierarchy a View node can be used. So within a subtree rendered from one cameras position, there can be a subtree containing a totally different camera position and orientation for its respective children.
When dragging the View node to the Hierarchy Editor, a dialog opens that offers possible matrix provider for this node. By pressing the ESC key, this dialog can be canceled. Otherwise the selected provider will be added to the Content Editor and bound to the View node.
There are three nodes that can be used to generate common view matrix cases. The Camera node has a position and orientation as Input Properties and provides the respective 4x4 matrix as an Output Property.
The Orbit node is similar to the Camera node but always looks at the specified Target coordinates. Its degree of freedom is to move closer or father away from the target and/or rotate around it.
Finally, the LookAt node is also always orientated towards the Target coordinates, however its Position is specified as another set of coordinates instead of orientation and distance as in the case of the Orbit node.
All view matrix providers have an additional CoordinatesSystem input property that can be used to change the handedness of the coordinate system. By default, Ventuz (same as DirectX) use a left-handed system (positive X-axis to the right, positive Y-axis up, positive Z-axis going away from the user "into the screen") but a lot of application rather use a right-handed system (Z-Axis is "coming out of the screen" towards the user). Most users can safely ignores this property.