VRML Worlds, Mondes VRML

Membre de ClickFR, Reseau francophone Paie-Par-Click

Transformer la déplacement de la souris en un angle de rotation : Le cylinderSensor

Pré requis : Utilisation de DEF et USE, ROUTE, PlaneSensor

Type Champ Defaut Borne Utilisation
SFBool autoOffset TRUE - Mémorise ou pas la dernière position du pointeur de l'utilisateur
SFFloat DiskAngle 0.262 0 - 2PI Delta d'angle minimum envoyé par la rotation_Changed
SFBool enabled TRUE - Active le CylinderSensor
SFFloat maxAngle -1 -2PI - 2PI Limite les valeurs envoyés par le rotation_Changed
SFFloat minAngle 0 -2PI - 2PI Limite les valeurs envoyés par le rotation_Changed
SFFloat offset 0 - Permet d'ajouter des valeurs à l'événement rotation_changed.
SFBool isActive   - Envoie un événement lorsque l'utilisateur commence à déplacer son pointeur et lorsqu'il arrête de déplacer ce pointeur.
SFRotation rotation_changed   - Retourne l'angle de rotation relatif, par rapport à l'emplacement initial du pointeur
SFVect3f trackPoint_changed   - Retourne le point d'intersection entre le pointeur et de cylindre

Le CylinderSensor permet de récupérer le déplacement du pointeur de la souris sur un axe horizontal et de la transformer en angle de rotation, pour cela il utilise un cylindre (ou un disque) invisible de taille 1 sur l'axe Y ("Debout" par rapport à l'utilisateur).

Le Cylindre utilisé par le CylinderSensor est lié aux coordonnées du système dans lequel le noeud se trouve. C'est à dire que vous pouvez déplacer ou tourner ce cylindre grâce au noeud Transform.

Les événements générés par le CylinderSensor sont propagés aux noeuds du groupe et à ses fils.

Exemple 1 - Utilisation de rotation_changed

En gardant le bouton de la souris appuyé, déplacez la souris sur le cylindre. L'angle de rotation généré est appliqué au cube

Voir le résultat - Voir la source

Exemple 2 - Utilisation de trackPoint_changed

trackPoint_Changed  permet de récupérer l'intersection entre le pointeur et le cylindre utilisé par le CylinderSensor

Ici, on déplace une petite sphère à droite sur le cylindre de droite (ceci est possible grace au noeud transform, qui permet de changer le repère de la scène) pour montrer le point d'intersection entre le pointeur et le cylindre de gauche.

En gardant le bouton de la souris appuyé, déplacez le curseur sur le cylindre de gauche.

Voir le résultat - Voir la source

Utilisation de autoOffset et rotation_changed

Lorsque autoOffset est à TRUE, à la fin d'un déplacement, le translation_changed est recopié dans offset. Ainsi, une nouvelle action de l'utilisateur part au dernier angle envoyé par le rotation_changed, et non depuis 0 (voir exemple 1).

Lorsque Offset est à FALSE, offset reste toujours à 0 0 0. La rotation repart donc toujours de l'origine du clique.

L'utilisation de l'autoOffset est illustré pour le noeud PlaneSensor.

Retour au tutorials


 Accueil de VRML Worlds   CHAT 3D   Autres technologies Web3D 
 Des textures   Apprendre le VRML   Autres mondes multi-user 
 Les objets du chat   Outils pour le VRML   Autres sites 3D 

Réagir, nous proposer un site, participer ...