Converting Transformation Types
-
The SKP transformation is a 16 element 'RotZ' type - although the 4 entries in the right hand column of the matrix are 'unused' - indexes (#3,#7,#11,#16) =0,0,0,1.
How to convert it to another common type - 'RotY' [12 element] - which is used by some file formats, instancing-render-engines etc [that 'swap' the YZ axes, and thereby some axes' directions and all of the rotation/scale values too] ???
I think this is the correct way...
Any comments are welcometz = object.transformation.to_a ty = [tr[0],tr[8],-(tr[4]),tr[12].to_m, tr[2],tr[10],-(tr[6]),tr[14].to_m, -(tr[1]),-(tr[9]),tr[5],-(tr[13].to_m)]
Note this assumes the units are 'meters' for the three XYZ values - you simply change that from '.to_m
' to suit your needs...
The 'unused' indexes (#3,#7,#11,#16) =0,0,0,1 could be appended onto 'ty', as the last 4 additional elements of that array, if a 16 element matrix is needed instead of the 12 one that's shown.Thanks go to Smicha: we have been working together trying to resolve this transformation matrix transformation on another forum regarding instance-rendering [12 element array needed]. The final solution is down to to his herculean efforts and endurance !
EDIT:
Adjusted code after Smicha's further testing...
Advertisement