THE DOGSITTING PROJECT

ou mon projet perso

Étudiante en 3ème année à l'IMAC en spécialisation "programmation 3d", j'ai eu l'occasion de travailler sur un projet personnel. L'objectif étant d'approfondir une compétence ou un savoir-faire spécifique en lien avec ma spécialisation. J'ai ainsi décidé de réaliser une scène interactive sur Unity 3D.

Unity 3D est un moteur de jeu mondialement reconnu. Il est utilisé dans l'industrie du jeu vidéo mais aussi en ingénierie, notamment pour la création de serious games, de simulations, de formations et d'outils divers. Ce secteur m'intéressant en particulier, il était nécessaire pour moi de réaliser de nouvelles expériences avec Unity. Ce mini projet en fait partie.

C'est donc un logiciel extrêmement puissant et riche. Mon but était de créer un projet de zéro et de travailler sur divers aspects : programmation en C#, algorithmie, mathématiques (2d et 3d), shaders, particules, UI, animation, pathfinding et physique.

LE PATHFINDING

capture

Concernant le pathfinding, j'ai pu utiliser des classes de UnityEngine.IA, toutes en rapport avec la gestion du NavMesh.

Le NavMesh, pour Navigation Mesh, est une structure de données décrivant les surfaces "marchables" des objets de la scène afin de calculer un chemin d'un point A à B. Pour "builder" cette structure on parle de "bake".

Le chien, présent dans la scène en tant que GameObject, possède un component qui lui attribut le rôle d'agent. Cela permet d'exploiter des fonctions de calcul de chemin. Un agent peut éviter d'autres agents et des obstacles jusqu'à ce qu'il atteigne son but.

LES SHADERS

capture

Un point qui m'intéressait particulièrement était la création de shader HLSL.

Afin de correspondre à l'esthétique "low poly" et minimaliste de mes objets 3d j'ai voulais un shader qui donnerait un effet "toon", cel shading en d'autres termes. Ce travail m'a permis de construire le shader en différentes étapes :

1. Recevoir la lumière en se basant sur le modèle de Blinn-Phong : division du rendu en deux parties, en fonction de s'il y a réception de lumière ou non.
2. Prendre en compte la lumière ambiante (pour que la partie dans l'ombre ne soit pas d'un noir pur).
3. Ajouter la réflection specular.
4. Ajouter un contour qui simule une lumière derrière l'objet.
5. Rendre l'ombre de l'objet et qu'il soit affecté par les ombres de la scène.

UI

capture

En terme d'interface utilisateur je souhaitais tester deux choses : les barres de progrès et le drag & drop.

En m'inspirant de la simulation de besoins des Sims ou encore des Tamagotchi je voulais une UI qui évolue en temps réel. Dans mon cas chaque barre reflète un besoin particulier du chien virtuel (faim, affection, énergie, vessie).

Les icons encadrées en bas à droite permettent d'ajouter des objets 3d dans la scène.
Au "drag" l'icône se déplace sur le canvas 2d.
Au "drop" un objet apparaît dans la scène à une position correspondant à celle de la souris sur l'écran.
J'ai ainsi pu travailler avec des raycast ainsi que des fonctions liées à la caméra. Suite à cela j'ai pu facilement créer des interactions au clic (par exemple le fait de pouvoir récupérer la balle, caresser le chien, enlever les excréments).

LA PHYSIQUE

capture

La création d'une balle qui serait lancée par l'utilisateur était un bon prétexte pour toucher à la physique.
Cela impliquait de me renseigner sur le paramétrage du Rigidbody et la création de physic material qui permet de simuler le comportement de balle en réglant le degré de rebond et de friction.

Puis au niveau du code j'ai utilisé la fonction AddForce appliquée au Rigidbody. Ce dernier représente le contrôle de la position de l'objet via la simulation physique.

LES PARTICULES

capture

Concernant les particules j'ai créé des systèmes simples comme le ronflement "Zzz" quand le chien est dans sa niche, signifiant qu'il dort, ou encore les coeurs qui s'envolent quand on le caresse.

En reprenant ces bases j'ai paramétré des systèmes plus complexes. Par exemple celui des pétales de fleur, qui tombent comme emportée par le vent, et qui atterrissent au sol.
Beaucoup moins élégant mais tout de même intéressant, un système de particules est attaché aux excréments pour simuler un vol de mouches.

home-icon
Retour au portfolio