@JSoftware: Are you serious? :? I've been working with D3D matrices for some time and as far as i know it's as follows:
If you don't transpose any matrices, it would be like this:
Mat._41 = Translate_X;
Mat._42 = Translate_Y;
Mat._43 = Translate_Z;
The upper-left 3x3 matrix (from _11 to _33) is for both rotation and scaling, so:
Mat._11 = Scale_X;
Mat._22 = Scale_Y;
Mat._33 = Scale_Z;
You shouldn't touch the (_14,_24,_34,_44) vector because that is used to transform the W component for each vertex. These value's should be 0,0,0,1 like the identity matrix. W is for perspective correction and should be 1.0.
A dumb suggestion of mine is to multiply the existing scaling value's with a scaling factor. Like:
[pascal]
d3dTransposedMat._11 := d3dTransposedMat._11 * scale.x();
d3dTransposedMat._22 := d3dTransposedMat._22 * scale.y();
d3dTransposedMat._33 := d3dTransposedMat._33 * scale.z();
[/pascal]
Or try multiplying with a scale matrix. This way you preserve the existing rotation, while effectivly scaling your billboard.
It might work, but i could be wrong. I'm not a math-monster. :razz:
Bookmarks