Projet 3D

Un projet 3D, il faut en être conscient, c’est plus difficile à réaliser pour différentes raisons :

  • Les ressources graphiques sont plus difficiles à trouver.

  • Il est très difficile de modifier/éditer une forme 3D, alors qu’un sprite peut être repris sous paint.

  • Il faut gérer les textures : trouver une texture adéquate et adapter sa taille.

  • Afficher un sprite nécessite une ligne de code, créer un volume et caler ses coordonnées uv, c’est quelques dizaines de lignes de code.

  • Avec la perspective, il est plus difficile de deviner à quel pixel va correspondre une coordonnée (x,y,z).

  • Il faut gérer les sous-repères 3D, les coordonnées relatives et les translations / rotations…

Si vous choisissez cette voie, il faut donc choisir des objectifs MODESTES car la 3D génère plus de travail.

Pour ces raisons, nous élargissons la thématique des projets 3D aux :

  • Applicatifs 3D

  • Jeux 2D avec une interface 3D

  • Jeux non temps/réel - jeu tour par tour

Nous présenterons divers exemples en fin de ce document.

Cadre de travail

Critères

  • Aspect esthétique : on vous demande d’avoir un graphisme lisible. Il vous sera difficile de trouver tous les assets graphiques que vous voulez, mais souvent les primitives géométriques (cylindre, sphère, cube…) peuvent grandement aider à représenter des éléments de jeu.

  • Game design : le jeu doit fonctionner

  • Durée : réalisez une application allant de 30 secondes à 1 minute d’utilisation. Inutile de faire plusieurs niveaux. On s’interèsse plus à la variété des fonctionnalités implémentées.

  • Le codage : comme toujours, structurer votre code en faisant des fonctions et des structures…

  • Mécanique : l’application doit être intuitive et plutôt facile, dans le meilleur des cas le testeur doit arriver à utiliser l’application sans assistance. Si des explications doivent être données, écrivez du texte en haut de l’écran.

  • STL : utilisez des listes dynamiques plutôt que des tableaux.

Contraintes

Avertissement

Vous devez obligatoirement :

  • Rendre un projet complet zippé et compilable en C++11.

  • Utiliser la librairie G3D.

  • N’utiliser aucune autre librairie sans demande d’autorisation préalable.

Thématiques

Les exemples dans la liste ci-dessous sont automatiquement autorisés. Ils correspondent :

  • à des jeux/applicatifs techniquement réalisables à votre niveau.

  • à des jeux utilisant peu de ressources graphiques.

Si vous avez une idée de jeu personnelle, il faut la faire valider par votre responsable de salle.

Conseils

  • Ne choisissez pas un jeu utilisant une trop grande quantité d’assets graphiques, l’objetif du projet reste la conception/programmation.

  • Vous pouvez utiliser la fonction du projet Labyrinthe permettant de créer une texture à partir d’un string. Cette option permet de réaliser des textures rapidement.

  • Les formes géométriques peuvent servir pour créer des éléments de décor.

Exemples de jeux possibles

Jeux de plateau en version 3D

On parle ici des jeux tour par tour (non accessibles depuis les projets 2D). La mécanique du jeu reste la même, mais l’interface est en 3D.

Monopoly

     

Trivial Pursuit

Les jeux 2D en 3D

Certains jeux d’arcade 2D peuvent passer à un mode de jeu 3D. Par exemple, voici des réalisations de casses-briques 3D :

     

Mais aussi :

Space Invaders

     

Danger Dash

Les jeux 3D simples

Il existe une multitude d’options simples qui permettent de réaliser des jeux 3D de qualité.

Smash it

     

Vecter

Les jeux 3D évolués

On parle ici d’un Minecraft like ou d’un Doom 2. Ces jeux vous sont accessibles mais ils necessitent plus de temps et d’investissement. Nous vous conseillons de les aborder dans le cadre de vos projets E3.

Création de surfaces de révolution

Cette application a pour objectif de construire une forme 3D à partir d’un profil d’une surface de révolution (ayant un axe de révolution vertical). Voici les différentes étapes :

  • Mise en place d’un fond avec une image servant de repère (blueprint).

  • Avec la souris, détourage du contour en dessinant une ligne polygonale avec la souris : 1 clic => 1 sommet.

  • Possibilité d’effacer le dernier sommet en appuyant sur une touche du clavier.

  • Construction d’un maillage 3D par rotation des sommets de 30° + maillage (voir ex de la sphère).

  • Application d’une texture ou rendu en couleur.

../_images/pion.png

Visualisation d’objets 3D

Ce mini-projet est très formateur car il permet de découvrir un format de sauvegarde des objets 3D appelé OBJ. Le but est de construire une petite application similaire à la visionneuse 3D de Windows.

Voic les différents objectifs :

  • Comprendre l’organisation d’un fichier OBJ : lien .

  • Lire les paramètres : v / vt / f contenu dans le fichier (au minimum).

  • Créer le maillage correspondant avec les coordonnées uv indiquées.

  • Faire une visualisation de l’objet 3D avec une animation de rotation.

  • Charger et appliquer la texture associée.

Vous pouvez faire évoluer cette application pour :

  • Gérer les normales des vertex (paramètre vn).

  • Gérer le fichier MTL pour détecter les différents fichiers textures utilisées.

  • Proposer d’autres exemples que ceux fournis ci-dessous.

Vous pouvez travailler avec les deux fichiers suivants :

../_images/avion.gif