Atelier VRML : Création d'une porte (3)

Pré requis : Utilisation de DEF et USE, ROUTE, TimeSensor, OrientatonInterpolator, Création d'une porte (1)

Vous avez vu dans Création d'une porte (1) comment gérer une porte qui s'ouvre puis se referme à partir d'un clique de l'utilisateur par translation.
L'objectif de cet atelier est d'ouvrir et de fermer de la porte automatiquement, à l'approche de l'utilisateur. L'utilisateur s'approche de la porte, la porte s'ouvre sans aucun clique de l'utilisation.

Nous allons utiliser le noeud proximitySensor qui permet, entre autre, de repérer l'entrée et la sortie d'une utilisateur dans une zone définie.

Lancement de l'animation grâce au proximitySensor :

Nous repartons du fichier VRML de la Création d'une porte (1). Nous remplaçons simplement le touchSensor par un proximitySensor.
Le champs size du proximitySensor définit la taille de la zone autour de la porte.
L'événement "enterTime" du proximitySensor est lancé lorsque l'utilisateur entre dans sa zone. "enterTimer" est relié au "startTime" du timeSensor.
Le timeSensor gère l'animation.

Voir le résultat - Voir la source

Ici, la porte de referme 7 secondes après le début de l'animation, même si l'utilisateur reste sous la porte.

enterTime et exitTime

On va créer maintenant deux animations : Une qui va ouvrir la porte et l'autre qui va la fermer. Associé à ces deux animations, on crée deux timeSensors.
Ensuite on associe l'événement d'entrée dans le proximitySensor (enterTime) au lancement de l'animation d'ouverture et l'événement de sortie de la zone (exitTime) à l'animation de fermeture.

Voir le résultat - Voir la source

Ici, la porte restera ouverture tant que l'utilisateur restera près de cette porte.

Petit exercice

Reprenez le script d'ouverture de porte par rotation et ajoutez-y la gestion du proximitySensor.

Il faut :

  • Créer deux animations à partir d'une seule (ouverture / fermeture)
  • Créer les deux timeSensors et gèrer correctement le lien entre les timeSensors et les orientationInterpolators
  • Créer les liens entre les événements du proximitySensor et les timeSensors

La solution :

Voir le résultat - Voir la source


 

19 internaute(s) sur Web3d-fr
Copyright Web3d-fr 2001-2004