Difference between revisions of "LlSetRot/fr"
Gally Young (talk | contribs) (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= | |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, | |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, | *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 | **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 | **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 | *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= | |examples=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; | rotation rot_xyzq; | ||
Line 22: | Line 34: | ||
state_entry() | state_entry() | ||
{ | { | ||
vector xyz_angles = <0,1.0,0>; // | 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; // | vector angles_in_radians = xyz_angles*DEG_TO_RAD; // convertion en radians | ||
rot_xyzq = llEuler2Rot(angles_in_radians); // | 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 | |||
} | } | ||
} | } | ||
</ | </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
LSL Portail Francophone | LSL Portail Anglophone | Fonctions | Évènements | Types | Operateurs | Constantes | Contrôle d'exécution | Bibliothèque | Tutoriels |
Description
Fonction: llSetRot( rotation rot );61 | N° de fonction |
0.2 | Delais |
10.0 | Energie |
- 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. |