Bonjour à tous,
Je viens de bricoler un script de pose ball pour qu'il s'adapte à plusieurs poses en fonction de la commande que j'envoie sur la canal 0. Il fonctionne très bien sauf que les poses placent l'avatar selon des angles différents sur la ball.
Par exemple la pose 1 est bien alignée et la pose 2 se trouve décalée de 180°.
Voici ma portion de script qui gère la réception des commandes pour passer d'une pose à l'autre :
else if(message == "pose1")
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(ANIMATION);
ANIMATION = "pose1";
llStartAnimation(ANIMATION);
llSitTarget(offset,llEuler2Rot(ROTATION));
}
else if(message == "pose2")
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(ANIMATION);
ANIMATION = "pose2";
llStartAnimation(ANIMATION);
llSitTarget(offset,llEuler2Rot(ROTATION));
}
...etc
J'ai essayé de modifier cette portion pour mémoriser la position avant le passage à une nouvelle position. Mais les angles deviennent n'importe quoi :
il y a une globale vector Last_ROTATION = <0,0,0>;
else if(message == "pose1")
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(ANIMATION);
ANIMATION = "pose1";
llStartAnimation(ANIMATION);
vector tmp_ROTATION = <180,0,0>;
llSetRot(llEuler2Rot((tmp_ROTATION-Last_ROTATION)* DEG_TO_RAD));
Last_ROTATION = tmp_ROTATION;
}
else if(message == "pose2")
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(ANIMATION);
ANIMATION = "pose2";
llStartAnimation(ANIMATION);
vector tmp_ROTATION = <0,0,0>;
llSetRot(llEuler2Rot((tmp_ROTATION-Last_ROTATION)* DEG_TO_RAD));
Last_ROTATION = tmp_ROTATION;
}
...etc
Auriez-vous une idée pour que je puisse contrôler la toutes les positions de ma ball ?
Merci de votre aide
Cordialement
|