
Detecter le visiteur
Il existe de nombreux moyens pour detecter le visiteur et ses actions,ce qui
permet d'interagir avec le monde virtuel et les objets qu'il contient.
PlaneSensor
Il cree un "tapis de souris virtuel" en deux dimensions x et y.Il convertit
le deplacement du pointeur en eventOut SFVect3f translation_changed.
PlaneSensor {
enabled TRUE #planeSensor actif
maxPosition -1 -1 #valeurs par defaut
minPosition 0 0
}
eventOut SFVec3f translation_changed
maxPosition et MinPosition donne les valeurs maxi et mini que pourra prendre
translation_changed.
CylinderSensor
Il fonctionne de la meme facon que PlaneSensor sauf que l'eventOut est un
SFRotation sur l'axe y seulement.
CylinderSensor {
enabled TRUE
maxAngle -1
minAngle 0
}
eventOut SFRotation rotation_changed
SphereSensor
Comme CylinderSensor sauf qu'il fonctionne sur les trois axes x y et z.
SphereSensor {
enabled TRUE
}
eventOut SFRotation rotation_changed
sensor.wrl
Code source PlaneSensor
sensor2.wrl
Code source CylinderSensor
sensor1.wrl
Code source SphereSensor
ProximitySensor
Il permet de savoir si le visiteur entre, sort ou se deplace dans une zone
delimitee.Cette zone a la forme d'une boite, les informations sont les suivantes:
ProximitySensor {
center 0 0 0 #positionne la zone de detection
size 0 0 0 #taille de la zone x y z
enabled TRUE #sensor actif
}
eventOut SFVect3f position_changed #nouvelle position du visiteur dans la zone
eventOut SFRotation orientation_changed #nouvelle orientation du visiteur
eventOut SFTime enterTime #"heure" d'entree dans la zone
eventOut SFTime exitTime #"heure" de sortie de la zone
TouchSensor
Il donne une information temps lorsqu'on clic sur l'objet surveille.Ideal
pour les interrupteurs.
TouchSensor {
enabled TRUE
}
eventOut SFTime touchTime #"heure" du clic sur l'objet
event.wrl
Code source
VisibilitySensor
Il detecte si une zone rectangulaire est visible ou non par le visiteur.
Il est generalement utilise pour activer ou desactiver des animations afin
d'ameliorer les performances.
VisibilitySensor {
center 0 0 0 #position de la zone
size 0 0 0 #taille de la zone
}
eventOut SFTime enterTime #zone visible depuis time
eventOut SFTime exitTime #zone invisible depuis time
La zone est visible quand enterTime > exitTime
TimeSensor
Il genere des evenements en fonction du temps qui passe.Il est utilise pour
demarrer ou arreter des animations periodiques, un reveil matin par exemple.
TimeSensor {
cycleInterval 1 #duree du cycle en secondes
enabled TRUE
loop TRUE #cycles en boucles
startTime 0 #de 0 a 1 depart du cycle (0 = debut)
stopTime 0 #fin du cycle (desactive si < a startTime)
}
eventOut SFTime cycleTime #temps du cycle
eventOut SFFloat fraction_changed #de 0 a 1, deroulement du cycle
eventOut SFTime time #temps absolu