Blender rotation repére local
Bonjour.
J'utilise Blender 2.46 sous Linux.
Dans un script Python comment fait on pour appliquer à un objet une rotation dans son
repére local.
Exemple: Sur un plan incliné à 30° selon l'axe x, je veux poser un parallélépipède rectangle
en diagonnalle, angle de 45°.
Si j'utilise la fonction:
Citation:
setEuler(euler)
Sets the object's localspace rotation according to the specified Euler angles.
Il me faut appliquer les valeurs suivantes en radians:
[0.251899, 0.244267, -0.754317]
Et pas:
[ PI*30/180, 0, PI*45/180]
Voir mon fichier exemple01.blend
Probléme je ne sais pas comment calculer ces valeurs et je n'ai pas trouvé dans
l'API python de blender 2.46 de fonctions pour effectuer des rotations dans le
repére local d'un objet.
A blenderclan... , je pensais avoir trouvé mon bonheur:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
RotationMatrix = Blender.Mathutils.RotationMatrix
MatrixRepresentation = RotationMatrix( 30, 3, 'x' )
MatrixRepresentation *= RotationMatrix( 0, 3, 'y' )
MatrixRepresentation *= RotationMatrix( 45, 3, 'z' )
QuaternionRepresentation = Blender.Mathutils.Matrix( MatrixRepresentation ).toQuat()
print QuaternionRepresentation, "\n"
print QuaternionRepresentation.toEuler() |
Malheureusement l'exécution donne:
Code:
1 2 3 4
|
[0.892399, 0.239118, 0.099046, 0.369644](quaternion)
[30.000000, -0.000000, 45.000000](euler) |
Les rotations se font dans le repére global.