LlSetRot/fr

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Description

Fonction: llSetRot( rotation rot );
  • règle la rotation du prim contenant le script à la rotation rot.
• rotation rot

Avertissements

  • Cette fonction fait dormir le script pendant 0.2 secondes.
  • Si la prim est attachée a un avatar, la rotation est appliquée dans le référentiel local du point d'attachement : voir référentiel local : les attachements et la fonction ajoute la rotation de l'avatar.
  • Si la prim n’est pas la prim racine, la rotation est appliquée dans le référentiel local du prim racine référentiel local : Les prims filles et la fonction ajoute la rotation du prim racine.
    Pour eviter cet ajout il faut alors diviser la rotation appliquée par la rotation du prim racine :
    • Si vous essayez de régler la rotation d’une prim fille par rapport à une prim racine, alors divisez la rotation locale voulue par celle de la prim racine.
    • Si vous essayez de régler la rotation d’une prim fille comme une rotation globale, alors divisez deux fois la rotation globale voulue par celle de la prim racine.
    • Il est plus simple d’utiliser llSetLocalRot pour régler la rotation d’une prim fille, même pour une rotation globale (dans ce cas, multipliez simplement par la rotation de la prim racine)
    • Il n’y a aucune solution simple permettant d’obtenir la rotation du référentiel local de la prim racine d’un objet attaché (autre que de faire communiquer la rotation par la prim racine)
  • Pour les petites rotations successives, il y a un seuil de mise a jour qui dépends de la fréquence des changements. Ce seuil ne semble plus soumis à la règle des 6 degrés.

Exemples

Réglage de la rotation d'un prim fille par rapport à la prim racine : <lsl> // l'instruction suivante est placée dans une prim fille d'un objet non attaché llSetRot(ZERO_ROTATION/llGetRootRotation()); // Met la rotation du prim fille à ZERO_ROTATION dans le repère local

                                            // ==> Dans le repère global, la prim fille va prendre exactement la même rotation que la prim racine.

</lsl> Réglage de la rotation d'une prim fille par rapport au repère global : <lsl> // l'instruction suivante est placée dans une prim fille d'un objet non attaché llSetRot(ZERO_ROTATION/llGetRootRotation()/llGetRootRotation()); // Met la rotation de la prim fille à ZERO_ROTATION dans le repere global

                                                                // ==> Dans le repere global, la prim fille va prendre la rotation <0,0,0>.

</lsl> Exemple de script permettant une rotation incrémentale de 1 degré selon l'axe y à chaque toucher (à mettre dans une prim racine). <lsl> rotation rot_xyzq;

default {

   state_entry()
   {
       vector xyz_angles = <0.0, 1.0, 0>; // Rotation de 1 degré autour de l'axe des y en représentation d'Euler (type vecteur)
       vector angles_in_radians = xyz_angles * DEG_TO_RAD; // convertion en radians
       rot_xyzq = llEuler2Rot(angles_in_radians); // conversion en représentation sous forme de quaternion (type rotation)
   }
   touch_start(integer s)
   {
       llSetRot(llGetRot() * rot_xyzq); // Récupère la rotation actuelle par llGetRot(),
                                        // lui ajoute une rotation de un degré en multipliant
                                        // par rot_xyzq et applique la rotation obtenue
   }

} </lsl>

Voir également

Fonctions

•  llGetRot Renvoie la rotation actuelle.
•  llSetLocalRot Applique une nouvelle rotation
•  llGetRootRotation Renvoie la rotation de la prim racine.
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.