Travaux Pratiques : Mise en Place d’une Application Immersive

Alexis Paljic, Avril 2012 alexis.paljic(AT)mines-paristech.fr

Lieu des Visites :

  • Mines ParisTech
  • 60 boulevard Saint Michel Paris
  • RER Luxembourg
  • Salle L018

Ces séances de travaux pratiques ont pour objectif de vous permettre de mettre en place une application immersive dans la salle de réalité virtuelle de l’Ecole des Mines de Paris. Le contenu et les modes d’interaction seront ceux que vous aurez choisis. Ce document a pour objet de vous guider dans cette mise en place, il se divise en trois parties :

  1. une présentation sommaire de l’outil de réalité virtuelle que nous utilisons,
  2. une formation à cet outil par quelques exemples, et enfin
  3. une aide à la mise en place de votre application immersive.

La limite de licences Virtools nous impose de former des groupes (2 personnes ou plus). La partie mise en place de l’application immersive commence dès que possible.

1. Introduction à Virtools

C’est un logiciel de création d'applications 3D temps réel. Il comprend plusieurs volets :

  • « Authoring application » : une interface d’édition de contenu (objets, environnements, textures). Virtools n’est pas un modeleur 3D (type 3DSMax, Blender, Maya), ou encore CATIA (Conception industrielle), ceux-ci sont utilisés en amont pour la création de contenu.
  • « Behavioral Engine » : un moteur “comportemental” permettant d’éditer et exécuter un ou des programmes gérant le comportement des objets, aussi et surtout, l’interaction entre l’utilisateur et l’environnement virtuel.
  • « Render Engine » : un moteur de rendu, dédié au calcul et à l’affichage des images en temps réel.

Utilisation en Réalité Virtuelle. Un système immersif met en jeu des technologies variées :

  • Stéréoscopie
  • Périphériques de suivi de mouvements
  • Affichage multiples et synchronisés (par exemple les 5 écrans d’un système de type CAVE)
  • Gestion de Grappe de PC (Distribution et synchronisation des données)

La gestion de ce type de problématique est techniquement non triviale, et nécessite, si l’on désire mettre en place une solution de type «open source» beaucoup de travail. Virtools est (une des) solutions commerciales permettant de s’affranchir des considérations matérielles pour se concentrer sur le contenu et l’interaction. Vous l’utiliserez en ce sens dans le cadre de ce cours / TP. Pour l’implémentation des comportements différents langages de programmation sont disponibles :

  • Scripts Virtools : programmation « visuelle » consistant à relier des blocs de comportement (building blocks). C’est ce que vous utiliserez aujourd’hui.
  • D’autres langages sont disponibles
  • VSL : langage de scripts, spécifique à Virtools, mais très proche du C.
  • SDK : C++
  • Shaders : HLSL (Nvidia), CG (ATI)

Présentation de l’interface

  • 3D Layout : Vue 3D
  • Level Manager : Tous les objets de la scène : géométries, textures, caméras, groupes…
  • Building Blocks : ensemble de fonctions pour la mise en place de comportements
  • Hierachy Manager : Edition de l’arbre de scène

Outil de base des scripts Virtools : Building Block (noté BB dans la suite) :

IMAGE

L’entrée « Behavior in » sert à exécuter le bloc, lorsqu’il y’en a plusieurs, l’aide du bloc (clic droit sur le bloc>html help) explicite leur fonction. La sortie « Behavior out » s’active lorsque le bloc a terminé l’exécution. Il peut comporter des paramètres d’entrée (objet à laquelle s’applique la fonction, paramètres de type vecteur de déplacement, autres…), ou des paramètres de sortie (résultat d’une recherche d’objet dans la scène ou résultat d’un calcul). Les blocs peuvent être placés séquentiellement pour effectuer une série d’actions, et également exécutés à chaque pas d’exécution (ou Frame). Ceci est souvent le cas puisque la gestion des interactions se fait en temps réel, cette gestion se fait donc par des boucles s’exécutant à des fréquences suffisamment élevées (de l’ordre de 100Hz). Vous pouvez assurer de deux façons différentes qu’un ensemble de fonctions soit exécuté à chaque frame : Soit en utilisant le bloc « Keep Active », soit en rebouclant une série de blocs sur le premier, en reliant le dernier « behavior out » au « behavior in » du premier Builing Block.

3D Layout L’interface vous permettant de déplacer les objets de la scène, ainsi que des éléments de base (Référentiels 3D/ 3D frames, sources de lumière) se présente comme ceci :

Elle comprend également des boutons création de matériaux, textures et autres objets.

Level Manager Le Level Manager est une interface à laquelle vous aurez beaucoup recours car elle donne accès à l’ensemble des objets de la scène (les Objets 3D mais également les sources de lumière, caméras, référentiels 3D, textures) :

Vous aurez probablement à placer les objets dans la scène de façon précise, et/ou à changer leur échelle. Le placement exact d’un objet se fait au travers de son interface propre (3D Object Setup, 3D Frame Setup…) accessible soit par clic droit directement sur l’objet dans la vue 3D, soit par double clic (gauche) sur l’objet listé dans le « level manager ». Cette interface présente les paramètres de positionnement de l’objet.

La mise en place d’une application 3D temps réel sous Virtools consiste donc, au travers des ces différentes interfaces, à mettre en place un ensemble d’objets, leur associer des comportements et sauvegarder l’ensemble dans une « composition » Virtools (extension de fichier .cmo). La simulation se lance depuis Virtools grâce au bouton « Play » situé en bas à droite de la fenêtre Virtools.

2. Virtools par l’exemple

Composition 1. « petit système solaire »

L’objectif de ce premier exemple est de mettre en place un petit système planétaire :

Mots clés : Création Objets dans la scène, Scripts, Textures, Hiérarchie

Mise en place de la scène : Chargement de Ressources : Resources>Open Data Resource> C:\Program Files\Virtools\Virtools 4.0\Documentation\VirtoolsResources.rsc Ajouter une sphère (hi-resolution) dans la scène (glisser-déposer depuis l’onglet Virtools Resources) Dupliquer la sphère (full dependencies), placer les 2 sphères à distance Augmenter l’échelle de la sphère placée en 0,0,0 Définir les conditions initiales (Set IC)

Les conditions initiales (Virtools IC) : Un des points importants d’une simulation est l’état initial des tous les objets et paramètres de la scène. Vous voulez maîtriser l’état dans lequel la simulation démarre. Vous voulez également, lors de l’édition de votre scène, dans le cas où vous avez déplacé un objet par erreur ou qu’il a subi une translation à l’infini suite à une erreur de calcul, pouvoir le remettre dans une configuration nominale. Ceci s’effectue en fixant les conditions initiales du/des objets qui vous intéressent. Un clic droit sur un objet > On Object > Set IC permet de le faire, une sélection de plusieurs objets dans la scène 3D, ou dans le Level permet de fixer ces conditions pour un groupe d’objets. Lorsque vous faites Play puis Pause, les objets sont stoppés (si tant est qu’il y ait des objets mobiles dans votre scène) dans leur état courant. Un clic sur le bouton « Restore Initial Conditions » situé à gauche du bouton Play, les replace dans leurs conditions initiales, si vous en avez attribué.

Textures Chercher des textures ex : http://planetpixelemporium.com/earth.html Créer 2 textures dans Virtools (Create Texture) Charger les textures (Texture Setup>Replace Slot) Drag and Drop des textures (du Level Manager vers les objets dans le 3D layout) Edition des Matériaux (ambient, diffuse, specular, emissive) Placer une source lumineuse dans le soleil Créer un environnement (BB Sky Around) Importer les 6 textures d’environnement (Virtools resources>Textures>Sky Around). Appliquer les 6 textures en entrée du BB Sky Around

Cliquer sur « Play » pour voir le résultat du mapping d’environnement Cliquer sur « Pause » pour revenir à l’édition de la scène

Mouvements

  • Level Manager (clic droit)>Create Script
  • 3 buildings blocks à utiliser : BB Rotate around, BB Rotate, BB Keep active.

Insertion des Buildings Blocs dans les scripts :

Vous pouvez trouver les blocs Virtools dans l’onglet “Building Blocks” de l’interface Virtools dans la catégorie qui vous paraît appropriée puis en faisant un Glisser Déposer dans votre script (Onglet Schematic). Une seconde méthode, pour trouver les Buildongs Blocks, si vous en connaissez le nom, consiste à invoquer la liste complète des Buildings Blocs directement dans votre script : en effectuant un double clic dans la zone d’édition graphique de votre script (Onglet Schematic) tout en maintenant la touche CTRL. Cette dernière méthode rend beaucoup plus rapide l’édition de scripts une fois que vous connaissez le nom des principaux Building Blocks. Par exemple, si vous désirez insérer le BB Keep Active : CTRL+(double clic) > une zone de saisie de texte apparaît > Tapez les premières lettres de « Keep Active » vous pouvez faire défiler et sélectionner par clic souris ou Entrée sur le BB qui vous intéresse. Le BB apparaît dans votre script, prêt à être relié au reste de vos BBs.

  • Appliquer un « rotate around » de l’objet terre autour de l’objet soleil
  • Appliquer un « rotate » à la terre

Cliquer sur « Play » pour voir le résultat du mapping d’environnement Cliquer sur « Pause » pour revenir à l’édition de la scène

Le script terminé peut ressembler à ceci :

Composition 2 : « Interaction avec Rayon Virtuel de Sélection »

Mots clés : sélection d’objets 3D, manipulation.

L’objectif de cette composition est de mettre en place une méthode d’interaction très souvent utilisée en réalité virtuelle : la manipulation/sélection d’objets virtuels à l’aide d’un laser virtuel. Scénario :l’utilisateur pointe au laser un objet virtuel qu’il désire déplacer, et appuie sur une touche du clavier : l’objet ainsi sélectionné reste « accroché » au laser tant que la touche clavier est actionnée.

On indique les grandes lignes ainsi que les Building Blocks Virtools utiles à la mise en place :

  1. Créer un Laser (long cylindre, couleur et apparence à définir)
  2. Créer une scène et y disposer des objets quelconques
  3. Mettre des conditions initiales sur les objets et la caméra, Important pour les retrouver dans un même état au redémarrage, après manipulation.
  4. Utiliser la BB Ray Intersection (Ne pas utiliser la BB Collision Detection comme proposé ci-dessous, celle-ci est trop gourmande en temps de calcul) entre le laser et les objets
  5. Vous pouvez déplacer le laser à la souris (par les fonctions de sélection et de déplacement de l’interface Virtools)
  6. Mettre en place la sélection, le déplacement et la désélection. On pourra utiliser la BB Set Parent

Vous pouvez utiliser les Building Blocks suivantes : Ray Intersection, Keep Active, Key Event, Set Parent, la BB Specific Bool Event n'est pas nécessaire, vous pouvez directement utliser la sortie de Key event pour parenter à la sélection.

Le script terminé peut ressembler à ceci :

Une fonctionnalité Utile pour les scripts Virtools , la Gestion des Raccourcis : Le raccourci s’effectue en sélectionnant une sortie à copier, puis en la copiant (CTRL +C), puis en effectuant un CTRL+SHIFT+V (ou clic droit > Paste as Shortcut). Ceci permet d’afficher une sortie dont la valeur vous intéresse (pour vérification de votre algorithme), ou pour l’utiliser dans un autre script (les raccourcis d’un script à un autre sont possibles). Une fonctionnalité utile pour la vérification de vos scripts est également la fonction « Trace » (bouton « Trace » visible ci-dessus), celle-ci permet de voir l’évolution de l’activation des liens ainsi que la valeur des Variables, au cours de l’exécution. Pour afficher la valeur d’un raccourci ou d’une variable locale lors de l’exécution, la sélectionner, et appuyer sur la touche espace, vous verrez les différents types d’affichage de variables (nom/valeur, ou les 2).

3. Mise en place d’une application dans la salle immersive

La salle immersive étant une ressource commune, vous devez mettre en place vos applications immersives en deux phases : une phase de développement sur station, une phase de travail en salle immersive. Si ce TP a lieu à l'école des Mines, vous pourrez faire des allers-retours station/salle immersive. Dans le cas contraire il faudra tout faire en simulation sur station et découvrir la version immersive lors de la visite aux Mines.

Pour ceci, nous avons mis en place une « composition » Virtools sur laquelle vous allez vous baser. Celle-ci gère tous les aspects matériels (suivi des mouvements de l’utilisateur, gestion de la stéréoscopie). C’est cette composition que vous éditerez (vous pouvez en faire une copie et changer son nom pour garder une copie non modifiée). Il vous suffira de rajouter un contenu et des scripts supplémentaires correspondant à l’activité que vous aurez choisie.

METHODE DE TRAVAIL SUR STATION

Télécharger ici le répertoire VR Interactions : vrinteractions.rar

Le décompresser dans le répertoire de travail de votre choix. Le fichier VRInteractions_Base.cmo, est la composition de base, vide de contenu 3D et d'interactions, qui gère cependant la simulation, sur station, des mouvements de la main de l'utilisateur et les appuis sur les touches d'un boitier (en l'occurence une wiimote Nintento). Dupliquer ce fichier et travailler sur une copie afin de préserver la version originale. Attention, ce fichier doit rester dans le répertoire VR Interactions pour pouvoir fonctionner correctement.

C'est à vous maintenant d'intégrer dans cette composition vide un contenu 3D et les interactions que vous aurez choisies. Parler cependant à l'encadrant de votre projet pour en évaluer la faisabilité en 3 demi journées. N'oubliez pas le jour de la viste dans la salle Immersive d'apporter ce fichier, ou mieux, de le rendre disponible en ligne.

Vous pouvez ouvrir cette composition dans l’interface Virtools et vérifier qu’elle fonctionne bien, en particulier les fonctionnalités de simulation : REMARQUE : la composition doit rester dans le répertoire VRInteractions pour fonctionner. Vous pouvez en faire une copie sous un autre nom, mais cette copie doit également rester dans le même répertoire.

Les interactions que vous allez mettre en place mettent en jeu (probablement, vous restez libres de vos décisions) le tracking (suivi des mouvements) de la main de l’utilisateur, ainsi que les boutons du boitier « wiimote ». Ces dispositifs sont disponibles dans la salle immersive, mais pas sur votre station de travail. Pour vous permettre de travailler sur station, la particularité de la composition Virtools sur laquelle vous allez vous baser, est de vous permettre de simuler, avec le clavier et la souris, les fonctionnalités disponibles dans la salle immersive. Vous pouvez à l’aide des combinaisons de touches indiquées ici déplacer le rayon (appelé WAND plus loin) de sélection, déplacer le point de vue de l’utilisateur dans la scène, et simuler les actions sur les boutons de la Wiimote (le boîtier issu de la console de jeu Nintendo Wii, que nous utilisons comme simple boîte à boutons sans fil, pour son ergonomie et son faible coût).

Si vous souhaitez utiliser les fonctionnalités wiimote supplémentaires (autres que les boutons : vibrations, nunchuk) vous devrez copier cette dll wiitools.dll.zip dans le répertoire Building Blocks de votre répertoire Virtools. Ces fonctionnalités de simulation sont accessibles à partir du moment où vous avez appuyé sur la touche « S » :

Wand Controls

  • Move wand left/right/forward/back CTRL+MOUSE MOVEMENT
  • Move wand left/right/up/down SHIFT+MOUSE MOVEMENT
  • Rotate wand left/right/up/down ALT+MOUSE MOVEMENT
  • Roll wand left INSERT
  • Roll wand right HOME
  • Reset wand P

Head Controls

  • Move left LEFT ARROW
  • Move right RIGHT ARROW
  • Move forward UP ARROW
  • Move backward DOWN ARROW
  • Move up SHIFT+UP ARROW
  • Move down SHIFT+DOWN ARROW
  • Rotate left ALT+LEFT ARROW
  • Rotate right ALT+RIGHT ARROW
  • Rotate up ALT+UP ARROW
  • Rotate down ALT+DOWN ARROW
  • Reset head P

Les référentiels importants de la composition sont listés ci-dessus. Si vous décidez de mettre en place une interaction de type « déplacement dans la scène » vous aurez probablement à déplacer le VRNR Center. Les fonctionnalités de simulation de la composition fournie permettent de déplacer ces référentiels en particulier VRNR Wand qui représente les mouvements de la main de l’utilisateur, détectés en salle immersive par le système de tracking. Image © 3Dvia Virtools

Mise en place d’un contenu

La première étape est de mettre en place une scène ou des objets dans votre composition, sur station, à l’échelle, et bien placés par rapport à l’utilisateur. Vous pouvez piocher des objets existants (formats 3ds ou 3dxml) sur http://www.3dvia.com/ (l’import de fichiers 3dxml nécessite la mise à jour de Virtools, me demander les fichiers de MAJ si votre version de Virtools est < à 4.0.0.94 voir dans Help>About…)

Echelle L’unité que nous avons choisi d’utiliser est le mètre. La taille des objets, que vous pouvez contrôler dans le champ «Scale » du « 3D Object Setup » de vos objets, est donc exprimée en mètres. Le système immersif est réglé de manière à ce que la taille apparente (au sens de la vision en relief rendue par le système) des objets soit au plus proche de celle spécifiée dans leur représentation géométrique.

Positionnement Il s’agit de positionner vos données par rapport à l’écran, pour cela, une représentation visuelle de l’écran physique dans la scène est très utile. Pour un système de type CAVE, on peut représenter les écrans physiques par des géométries dans la scène pour prévisualiser la situation de l’ensemble (Utilisateur+Ecrans) par rapport à la scène virtuelle.

Images © Clarte, © 3dvia Virtools

Dans le cas de notre salle immersive, il y’ a un seul écran, et nous vous fournissons une représentation géométrique, à l’échelle, placée au mêmes coordonnées que de l’écran physique. Le placement de vos données relativement à celui-ci se retrouvera lors de l’immersion. Le fichier screen.nmo que vous trouverez ici screen.nmo.zip est un 3D Sprite, positionné par rapport à l’origine du système de tracking (référentiel représenté par un coin noir au sol de la salle immersive devant l’écran). Vous pouvez importer ce fichier dans votre composition et rendre le 3D sprite « screen » visible pour positionner vos données. Pensez à faire un « set IC » sur vos données une fois placées.

Une fois le placement effectué, sauvegardez votre composition, vous êtes prêts pour aller la tester en immersif.

Ajout d’Interactions

Les tâches en environnement immersif sont classifiables en 4 catégories :

  • Navigation
  • Sélection
  • Manipulation
  • Contrôle d’application

Un article récent que vous trouverez ici, fait un état de l’art des méthodes d’interaction en Environnement Virtuel. Vous pouvez vous en inspirer pour mettre en place une interaction de votre choix.

Voici une liste de propositions si vous êtes à court d’idées :

  • Déplacements dans la scène à l’aide de mouvements de la main + boutons de la wiimote
  • Sélection/déplacement par rayon
  • Menu simple pour le changement de paramètres sur un modèle (véhicule ou autre) : changement de couleurs, textures, environnement au travers d’un menu apparaissant
  • Mise en place d’une interaction de type « Orbit Around » d’un modèle (plus cohérent que la « sélection/déplacement » pour la visualisation d’un objet dont la nature est de rester au sol) : l’utilisateur « saisit » son point de vue actuel et le fait tourner autour de l’objet. La caméra reste toujours dirigée vers l’objet.
 
users/alexispaljic/teaching/imara.txt · Last modified: 2012/04/05 11:10 by PALJIC Alexis
Recent changes · Show pagesource · Login