IMT - Lille Douai | ||
Les sources nécessaires au TP sont disponibles ici.
Vous avez à disposition une interface écrite en JavaFX qui permet d’afficher des objets 3D et supporte une interaction multitouch réelle ou simulée à la souris. La classe MultiTouch3D
permet d’afficher un cube et d’obtenir les informations des points de contact grâce aux méthodes setOnTouchXXX
. Si vous utilisez la souris, un clic gauche permet de créer ou déplacer un point de contact alors qu’un clic droit permet de supprimer des points de contact (la classe BlobQueue
gère ces informations).
Familiarisez-vous avec le code. Notamment, essayer de comprendre ce qu'il se passe lorsqu'un point de contact est ajouté/supprimé et surtout lorsqu'un blob/point de contact est déplaçé pour decider si celui-ci avait initialement été ajouté au Cube 3D ou pas.
Q 1. Ajoutez et initialisez dans la classe BlobQueue un attribut de type HashMap
Q 2.
Implémentez la Z-technique décrite dans l’article "The Design and Evaluation of 3D Positioning Techniques for Multi-touch Displays": lorsqu’un premier doigt est posé sur un objet, les déplacements ultérieurs de ce doigt permettent de translater l’objet dans un plan parallèle à l’écran (il ne doit pas y avoir de déplacement relatif entre le doigt et l’objet translaté). Quand un second doigt est posé en dehors de cet objet, les déplacements haut/bas (ou avant/arrière, en fonction l’orientation) servent à contrôler les déplacements en profondeur de cet objet.
Indications: Lors d’un événement souris PickResult contient des informations sur l’objet présent sous le pointeur, dont le point d’intersection avec l’objet, défini dans le repère local de l’objet. Utilisez la méthode localToParent pour exprimer ces coordonnées dans le repère global.
Q 3. Ajoutez une technique de trackball virtuelle pour orienter l’objet quand 2 doigts sont en contact sur celui-ci. Une classe Quaternion est mise à votre disposition pour calculer correctement les rotations. Faire une rotation relative d’un objet d’un angle donné autour d’un axe donné revient à calculer le produit du quaternion associé par le quaternion représentant la rotation courante de l’objet.
Ce document a été traduit de LATEX par HEVEA