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:
Il me faut appliquer les valeurs suivantes en radians:setEuler(euler)
Sets the object's localspace rotation according to the specified Euler angles.
[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:
Malheureusement l'exécution donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
Les rotations se font dans le repére global.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [0.892399, 0.239118, 0.099046, 0.369644](quaternion) [30.000000, -0.000000, 45.000000](euler)
Partager