3.0 KiB
TP Interaction
Ce TP a pour but de vous faire coder des interactions avec un modèle 3D. Pour cela, vous implémenterez en Javascript des interactions avec la souris et avec les touches du clavier qui permettent de changer de point de vue, c'est à dire, de mettre à jour la position et l'orientation de la caméra (Partie 1), et ensuite d'enregistrer de tels points de vues pour permettre une navigation plus haut niveau (Partie 2).
Ce TP sera fait pendant les séances consacrées (un TP jeudi 9, un TP jeudi 16).
Cloner le repository
git clone https://gitea.tforgione.fr/tforgione/tp-interaction
Lancer le server
python -m SimpleHTTPServer
Vous pouvez ensuite aller sur la page localhost:8000
pour lancer l'interface. Pour voir la console vous pouvez cliquer sur F12
,
ce qui vous permettra de debugger plus facilement.
Sujet
Partie 1 : interaction clavier / souris
L'objectif de cette premiere partie est d'implémenter les interactions type free fly camera. Nous vous proposons de mettre à jour les interactions avec la souris pour tourner la caméra et avec le clavier pour la deplacer.
L'utilisateur peut appuyer sur les flèches du clavier pour déplacer la caméra :
- flèche en haut (ou touche z) pour avancer
- flèche du bas (ou touche s) pour reculer
- flèche de gauche (ou touche q) pour se translater vers la gauche
- flèche de droite (ou touche d) pour se translater vers la droite
Ces directions seront définies à partir de l'orientation de la caméra, donnée
par 2 angles theta
et delta
.
Vous pouvez trouver des exemples de coordonnées sphériques sur wikipedia.
Attention : dans THREE.js, l'axe des y est celui qui va vers le haut.
Pour cette partie, vous aurez besoin de compléter les TODO Part 1 du fichier
js/main.js
.
Partie 2 : interaction via point de vue
L'objectif de cette deuxième partie est d'utiliser les points de vue
enregistrés pour faciliter l'interaction. Pour commencer, vous pouvez
décommenter les lignes 236 à 239 du fichier js/main.js
pour faire apparaitre
un point de vue. Vous devez ensuite compléter les TODO Part 2 pour permettre
à un utilisateur de cliquer sur un point de vue pour s'y déplacer.
Les vecteurs dans THREE.js
Ce TP utilise le moteur de rendu THREE.js. Puisque javascript ne permet pas la
surcharge d'opérateurs, il est impossible d'écrire x + y
quand x
et y
sont des vecteurs de THREE.js. Ansi, THREE.js définit des méthodes pour
effectuer ces opérations :
Avec opérateurs | En THREE.js |
---|---|
a += b |
a.add(b) |
a = b + c |
a.addVectors(b, c) |
a -= b |
a.sub(b) |
a *= l |
a.multiplyScalar(l) |
a = b |
a.copy(b) |
a + b |
a.clone().add(b) |
a = a ^ b (produit vectoriel) |
a.cross(b) |
a = b ^ c |
a.crossVectors(b, c) |
... | ... |