top of page
Super Hot Car Game! Unity3D
04:36

Super Hot Car Game! Unity3D

Le projet que j'ai choisi de réaliser avec le moteur de jeu Unity se nomme Super Hot Car Game. Sources d'inspiration et démarche Passionné d'automobile et de jeux de voitures de course comme Need For Speed ou encore Gran Turismo, j'ai voulu montrer mes compétences à la fois sur le plan graphique et sur le plan informatique. En effet, issu d'une formation en infographie 3D et d'une école d'ingénieur, j'ai décidé d'utiliser au maximum mes connaissances techniques afin de créer une application 3D interactive couvrant une partie des chapitres étudiés au CNAM dans l'UE MUX205. Le concept qui est mis en avant dans ce jeu vidéo est de pouvoir piloter un véhicule à l'aide d'un volant physique de type thrustmaster et d'un système de pédalier intégré. Concernant la transmission, il s'agit d'un mode de transmission automatique sans levier de changement de vitesse. Outils et technologies utilisés Il s'agit d'un jeu vidéo en 3D créé comme demandé avec le moteur de jeu Unity 3D. Comme indiqué ci-dessus, j'ai eu recours à un plugin nommé GIC Controllers qui permet de manipuler des joysticks de type "Steer Wheel Force Feedback" dans le moteur Unity. Concernant les modèles 3D, j'ai eu recours à Unity Asset Store dans lequel j'ai pu trouver l'asset Road Architect qui permet de créer des générateurs de routes. J'ai donc pu grâce à cet asset dessiner en 3D un circuit automobile. J'ai également créé une heighmap sous photoshop que j'ai ensuite exporté dans Unity pour dessiner le terrain. Concernant les véhicules, je les ai "designé" moi-même à partir de primitives existantes sous Unity. Concernant les props (herbes, végétations, barrières, tunnels, feux de signalisation, paneaux de signalisation...), je les ai trouvés dans Unity Asset Store et je les ai intégrés dans ma scène 3D. Enfin, concernant les LODS (arbres), j'avais déjà des générateurs d'arbres tout faits que j'ai trouvés dans unity asset store et que j'ai intégrés dans ma scène 3D. Concernant les textures, j'ai eu recours à l'unity asset store et au site CG Texture. Dans certains cas, j'ai été amené à retoucher certaines textures dans photoshop. Je précise que j'ai fait un baking général de toute la scène afin de précalculer les ombres, et eu recours à la global illumination afin d'avoir des effets réalistes. Je suis conscient que ce qui était demandé était simplement la mise en place d'un prototype mais j'avais envie comme évoqué prcédemment d'utiliser mes compétences graphiques sur ce projet. J'ai énormément travaillé le rendu, les éclairages, poussé les paramétres de qualité au maximum pour augmenter le plus possible le réalisme de ma scène. Ce qui d'ailleurs a posé des difficultés concernant le rendu du projet sous la forme d'une capture vidéo comme c'était demandé. En effet, en poussant les paramètres à fond, la qualité vidéo prennait plus de poids, or il était demandé de rendre une capture de moins de 70 Mo, ce qui posait problème. En conséquence, cela m'a obligé à faire une vidéo plus courte. GamePlay Au niveau de la jouabilité, l'expérience est plutôt fun! Il faut faire particulièrement attention lorsque l'utilisateur prend les virages, la voiture peut vite déraper. Avec l'utlisation d'un volant de type wheel controller force feedback, j'ai essayé de mettre en place un système qui permette à l'utilisateur de ressentir les sensations comme dans un véritable simulateur de jeu vidéo avec notamment les forces, l'haptique (les effets de resistance), la direction assistée, les vibrations du volant lorsque le conducteur roule sur une route un peu cabossée. L'utilisateur dispose également d'un limiteur de vitesse, c'est utile lorsque la piste est embouteillée. Un système de freinage puissant lui est également offert afin de ne pas heurter les autres véhicules et perdre des points en conséquence. La difficulté dans ce jeu, c'est d'essayer d'esquiver au maximum les autres véhicules et les obstacles présents sur le circuit sinon l'utilisateur perd du temps et risque de perdre des points aussi. En conclusion, j'ai essayé de développer un véritable simulateur de jeu de voitures de course, une expérience qui m'a énormément plu je dirais, aussi bien en tant que développeur qu'en tant que joueur, simulateur dans lequel j'espère que l'utilisateur éprouvera des sensations. Ce qui est tout l'intérêt du jeu!
projet Musical interactif Magic Piano  avec Processing + Mode OpenGL
14:24

projet Musical interactif Magic Piano avec Processing + Mode OpenGL

Le projet que j'ai choisi de réaliser se nomme Magic Piano. Sources d'inpiration et démarche Je me suis inspiré de jeux comme Electroplankton et d'autres encore qui font partie de la catégorie des jeux video interactifs musicaux. Etant donné que je suis issu d'une formation en école d'ingénieur ainsi que d'une formation en école d'infographie 3D, j'ai décidé d'utiliser un maximum de mes connaissances techniques à la fois sur le plan graphique et sur le plan informatique pour explorer la question de l'interaction d’un utilisateur avec une animation et du son. Technologies C'est un petit jeu vidéo en 3D basé sur l'API OpenGL et intégré directement dans processing. Pour cela, j'ai modélisé entièrement tous les modèles 3D puis je les ai exportés dans mon application OpenGL avec processing grâce au convertisseur de données SAITO capable de lire des fichiers .obj et d'afficher des triangles à l'ecran. Règles de jeu L'objectif de ce jeu est de faire tomber la clé de sol dans chaque trou des blocs circulaires de touches de piano. Il faut éviter de tomber sur la zone rouge qui est une zone interdite pour l'utilisateur. Sinon, il faut recommencer tout le niveau. Il faut donc arriver jusqu'au dernier bloc de touches de piano tout en bas de l'écran sans toucher la moindre zone rouge (il ya au total 12 blocs à franchir). Dans chaque niveau, il y a un fragment du célèbre morceau de musique du groupe rock Evanescence "My immortal" que j'ai interprêté moimême au piano. Tous les fragments de musique sont bien évidemment dans l'ordre. Le but étant de d'accéder à chaque niveau et de découvrir tous les fragments de musique. Lorsque tous les niveaux seront débloqués alors vous aurez réussi à reconstruire integralement le morceau de musique "My immortal" du groupe Evanescence. Quand vous débloquez un niveau, un menu s'affiche indiquant "you are the winner!". Il faudra alors cliquer en haut à gauche de l'écran sur le bouton menu principal pour ouvrir les autres niveaux. Dans le menu principal, tous les niveaux contiennent un fragment de la musique "My immortal". De toutes les manières vous ne pouvez pas débloquer le niveau suivant tant que vous n'avez pas résussi à atteindre le dernier bloc de touches de piano tout en bas de l'écran. Vous ne pouvez pas non plus retourner à un niveau précédent si celui-ci a été validé. Les niveaux déjà réussis apparaitront sous la forme de boutons grisés lorsque vous passerez le curseur de souris sur ces boutons dans le menu principal. Game Play D'un point de vue fonctionnel, au niveau game play, il faut pour jouer appuyer sur les touches du clavier flèche gauche et flèche droite, ce qui permet de faire tourner les blocs de touches de piano circulaires qui sont tous orientés de manière aléatoire. Lorsque la clé de sol n'est plus en collision avec le bloc de touches de piano cicrculaire, vous tombez dans un trou et vous vous retrouvez dans un autre bloc de touches de piano circulaire. Pendant que la clé de sol tombe, le son se coupe puis reprend uniquement quand la clé de sol touche les blocs de touches de piano circulaire. Vous pouvez tout à fait tomber sans toucher plusieurs blocs de touches de piano à la fois. Ce jeu impose donc d'avoir beaucoup de réflexes car lorsque la clé de sol tombe à grande vitesse, il faut faire attention à la manière d'orienter les blocs pour ne pas faire tomber la clé de sol dans la zone rouge. A vous de jouer et de débloquer tous les niveaux pour reconstruire intégralement "My immortal".
Océan ultra réaliste Blender Evee
00:11

Océan ultra réaliste Blender Evee

Court-métrage: animation d'un océan réaliste réalisé dans le cadre de mon cursus en école d'ingénieur. L' objectif de ce mini workshop était de présenter un sujet pour expliquer aux youtubers une technique de notre choix avec l'utilisation de Blender. J'avais donc choisi le thème de la réalisation de vagues réalistes en Blender 2.91. Détail des techniques utilisées : - incrustation d'une HDRI (skybox) dans le décor 3D. L'HDRI doit être correctement mappée par rapport à la caméra pour donner une impression de profondeur - système d'éclairage avec un croissant de lune en mode émission. Le rayon de lumière a été placé de manière à ce qu'il soit en cohérence avec la position de la caméra. - création de vagues avec le modificateur Wave de Blender et animation avec une keyframe sur le modificateur au niveau de l'intensité et du nombre de vagues. J'ai également ajouté des variations aléatoires concernant les plus petites vagues - ajout d'écume pour augmenter le réalisme des vagues - création de shaders avec les nodes pour gérer le matériau de l'océan. - ajout d'effet de post-production: bloom, ambiant occlusion pour faire remonter les basses lumières, depth field pour augmenter le flou directionnel + scutering + fog léger et réglages des samples pour le grain de l'image. - montage vidéo directement dans Blender pour loader toutes les séquences d'images en png - ajout de contrastes dans les shaders pour finaliser le rendu
Scene Graphique OpenGL 2 0 C++ quaternion real world
04:47

Scene Graphique OpenGL 2 0 C++ quaternion real world

Scène graphique réalisée avec OpenGL et C++. Les composants qui ont été développés sont: - L'affichage (chargement du décor dans une map), affichage d'objets comme les véhicules, ainsi que des arbres low-poly, panneaux de signalisation, lampadaires). Affichage d'un bras animé avec une arme (.obj animé). - Création d'un convertisseur de données capable d'afficher des triangles, des normals, des textures (.obj). - Création d'une skybox - Ajout de brouillard (fog) - Création d'un système de simulateur (mouvement basic pour le véhicule) - Possibilité de changer de caméra (vue à l'intérieur du véhicule, passer en mode FPS ou rester positionné derrière le véhicule). - Ajout d'ennemis (IA) qui suivent le joueur principal et s'ils le touchent, le nombre de vies du joueur principal diminue. Si l'ennemi reçoit une balle, son capital de vie diminue puis il tombe à terre (animation) et meurt. - Intégration d'un moteur mathématique (vecteur, matrice, quaternion, transformations) Ici, GLRotatef() a été remplacé par des quaternions (passage de quaternions à matrice). Explications concernant les quaternions: - implémentation de la classe quaternion() - opération sur les quaternions dont la multiplication qui nous servira plus tard - calcul de matrice de rotation - remplissage de la matrice - dérivation de la matrice à partir du quaternion - affichage de la matrice avec glMultMatrix() Le but de ce projet était de créer un moteur de jeu libre basé sur OpenGL et d'appliquer des rotations sur les objets avec des quaternions (projet réalisé dans le cadre d'une soutenance en école d'ingénieur informatique).
bottom of page