I have a 3D point in space. The point's exact orientation/position is expressed through a 4x4 transformation matrix.
I want to draw a billboard (3D Sprite) to this point. I know the projected position (i.e. 3D->2D) of the point; the billboard is facing the camera so that's very helpful too. What I don't know is the scaling that the billboard should have!
To make things more complex, the 4x4 matrix may have all sorts of transformations: 3D rotation, 3D scaling, 3D transposition. Assume that the camera is as simple as it can be: position at (0,0,0), no rotation.
So, can I "extract" the scaling of the billboard sprite from this 4x4 matrix?
-
WAS:
I have a 3D affine transformation 4x4 matrix. I need to convert it (project) to a 2D affine transformation 3x3 matrix, which looks like this:
3D rotations are irrelevant and if present may be discarded; I am only interested in translation and most importantly scaling.
Can anyone help with the equations for each of the six 4 values? (lets say tx, ty are also known)
Additional info:
The Matrix3D is the global transformation of a 3D point, say (0,0,0). Its purpose is to be projected on a 2D plane (the computer screen).
I know how to project a 3D point to 2D space, what I am looking for is to preserve additional transformation information beyond position, i.e. scaling: as you may know, the scaling property is also altered when projecting the point on a 2D plane.
I also forgot to mention that the perspective projection properties are also known, i.e.:
field of view (single value)
focal length (single value)
projection center (viewpoint position - 2D value)