EVA : Extra – Vehicular Activity

Bonjour à tous !

Notre groupe, composé de Victor Fourgeoux, Quentin Dubois et Mathieu Laisné, tous étudiants en PEiP-2, a réalisé une station spatiale en réalité virtuelle afin d’expérimenter l’Activité Extra-Véhiculaire (ou Extra-Vehicular Activity en anglais).

Pour ce faire, nous avons utilisé le moteur de jeu Unity3D ainsi que le langage de programmation C#.

    OBJECTIFS

Notre objectif principal était de réaliser une station spatiale, semblable à l’ISS, afin de pouvoir la visiter à l’intérieur, comme à l’extérieur. Au fil du projet, nous nous sommes rajoutés de nouveaux objectifs afin de rendre le projet plus interactif et immersif.

Nous devions aussi :

  • Faire un menu au démarrage du jeu permettant d’évoluer à l’intérieur ou l’extérieur.
  • Permettre le déplacement du joueur en extérieur en s’agrippant à des poignée.
  • Permettre la réparation de pièce cassée à l’extérieur de la station.
  • Permettre le déplacement entre l’extérieur et l’intérieur de la station.
  • Donner vie à l’intérieur de la station.
    Vue Extérieure de la station

    Vue Extérieure de la station

      CRÉATION DE L’INTÉRIEUR

    Afin de créer l’intérieur de la station, nous avons créer une première scène. Une scène, dans Unity, est semblable à un niveau dans un jeu-vidéo; on peut y placer différents objets, programme, personnages, etc.
    Pour former l’intérieur, nous nous sommes basé sur un plan que nous avons au préalable réalisé sur papier. Ensuite, en utilisant des “packages” nous avons assemblé des modules. Les packages sont des ressources (modèle 3D, 2D, ou programmes) réalisés et mis à disposition par les utilisateurs du moteur. Le package que nous avons utilisé nous a été fournit par Paul Richard.

    Nouveau couloir

    Nouveau Couloir

    Après cela, viens l’agencement de l’intérieur et la création de patrouille dans la station. Nous avons utilisé des personnages pré-fait (Astrella et Adam) qui sont disponibles dans l’Asset Store d’Unity. Nous y avons ensuite ajouté des programmes les dictant une routine à réaliser.

    Hall Intérieur

    Hall Intérieur avec les personnages


    Ensuite nous avons du rajouter la réalité virtuelle, qui est gérée par un package fournit par Oculus, afin de permettre l’intégration du casque Oculus Rift. Ce package est suffisant pour gérer les mouvements en présence de gravité et permet aussi d’attraper les objets que l’on désigne “grabbable”.

    Enfin, nous avons créé un script en C# permettant de sortir de la station en rentrant en contact avec une combinaison. Celà se traduisait par un changement entre la scène “Intérieur” et “Extérieur”.

    Combinaison pour sortir

    Combinaison pour sortir

      CRÉATION DE L’EXTÉRIEUR

    Extérieur de la station

    Extérieur de la station


    Pour créer l’extérieur de la station nous avons créé une seconde scène. Dans cette dernière nous avons importé des packages fourni contenant des modules de station. Nous avons ensuite dessiné un plan sur papier pour choisir la forme que prendrait notre station. Ensuite, nous avons dû placer tout les modules disponibles en suivant notre plan pour créé notre vaisseau.

    Ensuite, pour permettre le mouvement sans gravité par le biais de jets packs, nous avons dû modifier les programmes fournis par Oculus. Nous y avons aussi ajouté la gestion des réservoirs d’oxygène ainsi que de carburant. De cette manière, l’oxygène diminue en fonction du temps jusqu’à un seuil critique, et le carburant diminue quand le joueur utilise les joysticks. Cette perte est visualisable grâce à deux barres, semblables aux barres de vie dans les jeux-vidéos.

    Barres d'oxygène (en haut) et de carburant (en bas)

    Barres d’oxygène (en haut) et de carburant (en bas)

    Finalement, nous avons créé un script permettant de s’accrocher à des poignées afin de se tirer le long de la station, ainsi que plusieurs script permettant la réparation de pièces ou leurs remplacement dans l’espace après avoir appuyer sur une touche.

    Une partie du script gérant les poignées

    Script appliqué aux poignées, permettant leur utilisation

    Concernant l’EVA, nous avons permis au joueur de pouvoir remplacer des panneaux solaires cassés autour de la station. Pour les réparer le joueur doit s’en approcher, puis une instruction s’affiche et indique au joueur de rester appuyer sur un bouton des Controllers. Et après 2 secondes, le panneau se répare.

      GESTION DES COLLISIONS

    Enfin, nous avons dû gérér les collisions. Les collisions sont une partie très importante dans la conception de jeux-vidéos. En effets, des collisions mal gérées peuvent créer des bugs, notamment le joueur traversant les objets et le sol.
    Normalement, lors de la création de modèles 3D avec des logiciels tel que 3ds Max, un Mesh est créé. Ce mesh, qui est donc un ensemble de triangles dans l’espace, permet ensuite de faire un collider. Le collider permet donc la collision soit en extérieur (en convexe) soit en intérieur, comme avec des couloirs.

    Collider d'un Module

    Collider d’un Module

      MENUS ET CHARGEMENT

    Pour finir, nous avons relié l’intérieur et l’extérieur avec un menu permettant de choisir si nous voulons lancer le jeu dans l’intérieur, dans l’extérieur ou quitter.

    Menu au lancement

    Menu au lancement


    Ceci consistait à créer une nouvelle scène de menu en 2D, qui permettait au joueur de cliquer avec sa souris sur les 3 options qui lui était proposé. Après avoir choisit l’espace où il allait évoluer, le joueur n’as plus qu’à enfiler le casque Oculus Rift et la simulation commence !

    photo eva

      CONCLUSION

    Notre résultat final est assez conforme à nos attentes et à nos buts. Malgré quelques “bugs” autour du déplacement grâce aux poignées, tout les mouvements en 0G sont semblables à la réalité. L’implémentation de l’Oculus Rift est aussi réussie, ainsi que les différents changements d’environnement (menu, intérieur & extérieur). Nous remercions M.RICHARD pour son aide apportée à notre projet.