#include <Transformable.h>
Public Member Functions | |
| void | reset () |
| void | translate (f32 x, f32 y, f32 z) |
| void | translate (vec3f v) |
| void | scale (f32 x, f32 y, f32 z) |
| void | scale (vec3f v) |
| void | scale (f32 uniform) |
| void | rotate (f32 angle, f32 x, f32 y, f32 z) |
| void | rotate (f32 angle, vec3f v) |
| void | rotateX (f32 angle) |
| void | rotateY (f32 angle) |
| void | rotateZ (f32 angle) |
| void | setTranslate (f32 x, f32 y, f32 z) |
| void | setTranslate (vec3f v) |
| void | setScale (f32 x, f32 y, f32 z) |
| void | setScale (vec3f v) |
| void | setScale (f32 uniform) |
| void | setRotate (f32 angle, f32 x, f32 y, f32 z) |
| void | setRotate (f32 angle, vec3f v) |
| void | setRotateX (f32 angle) |
| void | setRotateY (f32 angle) |
| void | setRotateZ (f32 angle) |
| mat3f | getRotation () |
| vec3f | getTranslation () |
| vec3f | getScale () |
| mat4f | getTranslationMatrix () |
| mat4f | getRotationMatrix () |
| mat4f | getScaleMatrix () |
| mat4f | getTranslationMatrixInverse () |
| mat4f | getRotationMatrixInverse () |
| mat4f | getScaleMatrixInverse () |
| mat4f | getTranslationRotationMatrix () |
| mat4f | getLocalMatrix () |
| mat4f | getLocalMatrixInverse () |
| mat4f | getWorldMatrix () |
| mat4f | getWorldMatrixInverse () |
| mat3f | getWorldNormalMatrix () |
| vec3f | getLocalFront () |
| vec3f | getLocalUp () |
| vec3f | getLocalRight () |
| vec3f | getWorldFront () |
| vec3f | getWorldUp () |
| vec3f | getWorldRight () |
| void | lookAt (vec3f front_vec, vec3f up_vec) |
| void | lookAt (vec3f front_vec) |
| vec3f | getWorldPosition (vec3f pos) |
| vec3f | getWorldPosition () |
| bool | isTransformable () |
| void | setFreeze (bool do_freeze) |
Static Public Member Functions | |
| static void | registerCommands () |
Public Attributes | |
| Group * | axis |
Protected Member Functions | |
| Transformable (const char *nname, NodeType_t ntype) | |
| void | detached () |
| void | logTransformableInfo () |
Protected Attributes | |
| mat3f | R |
| vec3f | T |
| vec3f | S |
| mat4f | worldMatrix |
| mat4f | worldMatrixInverse |
| i32 | transformTime |
| i32 | parentWorldTime |
| i32 | worldTime |
| i32 | worldInvTime |
| i32 | parentWorldInvTime |
| bool | frozen |
Friends | |
| class | SceneGraph |
| class | World |
| class | Camera |
| class | Geometry |
Defines a Transformable node. Inherits from Node.
A transformation M is composed of rotation, translation and scale. We define M as:
M = T * R * S
Transformations are hierachical. This means that every transformable child node will inherit the transformations of its parent. Let's say for instance, that there are two nodes A and B. A is the parent of B and both are transformable. The local transformation of A is denoted Ma and for B its Ma. The matrix that brings nodes A and B to world space is denoted Wa and Wa. The resulting transformations for the nodes will then be:
Ma = Ta * Ra * Sa Mb = Tb * Rb * Sb
Wa = Ma = Ta * Ra * Sa Wb = Ma * Mb = (Ta * Ra * Sa) * (Ta * Rb * Sb)
The MB matrix will then, in turn, be recursively be applied to any children of node B to construct new model->world matrices, in the same manner as in the example above.
Transform point from model space to world space. It's faster to fetch the world-transform and perform the mult on the host side if multiple points should be transformed.
| vec3f Transformable::getWorldPosition | ( | ) |
Get the world position of point (0, 0, 0) in model space transformed in to world space
LookAt
Note 1: Function will exit if front_vec is (close to) parallel to the Y-axis; supply your own up_vec if this is the case. Note 2: Not fully bug-tested, use at own risk...
Example: Make camera look at 'my_node'. Note that world space positions are used. camera->lookAt( my_node->getWorldPosition() - camera->getWorldPosition() );
LookAt
Note 1: Function will exit if front_vec is (close to) parallel to the Y-axis; supply your own up_vec if this is the case. Note 2: Not fully tested, use at own risk...
Example: Make camera look at 'my_node'. Note that world space positions are used. camera->lookAt( my_node->getWorldPosition() - camera->getWorldPosition() );
1.7.2