Sommaire Page precedente Page suivante page 16


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