Difference between revisions of "LlSetRot/fr"

From Second Life Wiki
Jump to navigation Jump to search
(Localized to french)
 
(big proofreading + exemples + link llGetRootRotation)
Line 1: Line 1:
{{LSL_Function/fr
{{LSL_Function/fr
|func_id=61|func_sleep=0.2|func_energy=10.0|func=llSetRot
|func_id=61|func_sleep=0.2|func_energy=10.0|func=llSetRot
|p1_type=rotation|p1_name=rot
|p1_type=rotation|p1_name=rot|p1_desc rotation
|func_desc=Applique la rotation '''rot''' à la prim contenant le script.
|func_desc=*règle la rotation du prim contenant le script à la rotation '''rot'''.
|return_text|spec
|return_text|spec
|sort=SetRot
|sort=SetRot
|caveats=*Si la prim est attachée, alors la fonction applique un décalage en fonction de la rotation de l’avatar.
|caveats=*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 [[Viewer coordinate frames/fr#Local|référentiel local : les attachements]] et la fonction ajoute la rotation de l'avatar.
*Si la prim n’est pas la prim racine, alors la rotation est décalée par celle du [[Viewer coordinate frames/fr#Local|référentiel local]] de la prim racine. Le calcul consiste alors à diviser la rotation par celle de la prim racine.
*Si la prim n’est pas la prim racine, la rotation est appliquée dans le référentiel local du prim racine [[Viewer coordinate frames/fr#Local|référentiel local : Les prims filles]] et la fonction ajoute la rotation du prim racine.<br/>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 par celle de la 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 par la rotation de la 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 préférable d’utiliser [[llSetLocalRot/fr|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 est plus simple d’utiliser [[llSetLocalRot/fr|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 [[Viewer coordinate frames/fr#Local|référentiel local]] de la prim racine d’un objet attaché (autre que de faire communiquer la rotation par la prim racine)
**Il n’y a aucune solution simple permettant d’obtenir la rotation du [[Viewer coordinate frames/fr#Local|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, il y a un limite basée sur la durée entre les changements. Elle ne semble plus être restreinte par la règle des 6degrés.
*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.
|spec
|spec
|constants
|constants
|examples=Placez ce script dans une prim pour avoir une rotation incrémentale de 1deg.
|examples=Réglage de la rotation d'un prim fille par rapport a la prim racine :
<pre>
<lsl>
// l'instruction suivante est placée dans un prim fille d'un objet non attaché
llSetRot(ZERO_ROTATION/llGetRootRotation()); // Mets la rotation du prim fille a ZERO_ROTATION dans le repere local
                                            // ==> Dans le repere global le prim fille va prendre exactement la meme rotation que le prim racine.
</lsl>
Réglage de la rotation d'un prim fille par rapport au repère global :
<lsl>
// l'instruction suivante est placée dans un prim fille d'un objet non attaché
llSetRot(ZERO_ROTATION/llGetRootRotation()/llGetRootRotation()); // Mets la rotation du prim fille a ZERO_ROTATION dans le repere global
                                                                // ==> Dans le repere global le 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 un prim racine).
<lsl>
rotation rot_xyzq;
rotation rot_xyzq;


Line 22: Line 34:
     state_entry()
     state_entry()
     {
     {
         vector xyz_angles = <0,1.0,0>; // defini la variation de 1deg.
         vector xyz_angles = <0,1.0,0>; // Rotation de 1 deg selon l'axe y en représentation de Euler (type vecteur)
         vector angles_in_radians = xyz_angles*DEG_TO_RAD; // converti en radians
         vector angles_in_radians = xyz_angles*DEG_TO_RAD; // convertion en radians
         rot_xyzq = llEuler2Rot(angles_in_radians); // calcul la rotation
         rot_xyzq = llEuler2Rot(angles_in_radians); // conversion en représentation sous forme de quaternion (type rotation)
     }
     }
     touch_start(integer s)
     touch_start(integer s)
     {
     {
         llSetRot(llGetRot()*rot_xyzq); //applique la rotation...
         llSetRot(llGetRot()*rot_xyzq); // Recupere la rotation actuelle par llGetRot()
 
                                      // lui ajoute une rotation de un degré par ()*rot_xyzq
                                      // et applique la rotation obtenue
     }
     }
}
}
</pre>
</lsl>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llGetRot/fr|llGetRot]]|Renvoie la rotation actuelle.}}
{{LSL DefineRow||[[llGetRot/fr|llGetRot]]|Renvoie la rotation actuelle.}}
{{LSL DefineRow||[[llSetLocalRot/fr|llSetLocalRot]]|Applique une nouvelle rotation}}
{{LSL DefineRow||[[llSetLocalRot/fr|llSetLocalRot]]|Applique une nouvelle rotation}}
{{LSL DefineRow||[[llGetRootRotation/fr|llGetRootRotation]]|Renvoie la rotation du prim racine.}}
|also_tests
|also_tests
|also_events
|also_events

Revision as of 15:07, 22 July 2008

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 a la prim racine : <lsl> // l'instruction suivante est placée dans un prim fille d'un objet non attaché llSetRot(ZERO_ROTATION/llGetRootRotation()); // Mets la rotation du prim fille a ZERO_ROTATION dans le repere local

                                            // ==> Dans le repere global le prim fille va prendre exactement la meme rotation que le prim racine.

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

                                                                // ==> Dans le repere global le 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 un prim racine). <lsl> rotation rot_xyzq;

default {

   state_entry()
   {
       vector xyz_angles = <0,1.0,0>; // Rotation de 1 deg selon l'axe y en représentation de 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); // Recupere la rotation actuelle par llGetRot()
                                      // lui ajoute une rotation de un degré 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 du prim racine.
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.