Game programmer
BlackHole Simulation

À propos
BlackHole Simulation est une modélisation interactive de l'impact du champ gravitationnel d'un trou noir sur la lumière reçue par l'observateur. L'utilisateur peut personnaliser de nombreux paramètres, tels que le nombre d'étoiles, le rayon des étoiles, la qualité du disque d'accrétion... pour explorer visuellement ce phénomène astrophysique complexe.
Mon rôle
J’ai travaillé seul sur ce projet, codant entièrement la simulation et son optimisation. J’ai développé les algorithmes de calcul de trajectoires lumineuses, la gestion dynamique des ressources mémoire, ainsi que le rendu 2D personnalisé des objets. J’ai aussi mis en place un système de pooling pour améliorer les performances et minimiser l’impact sur la mémoire.
Objectif du projet
Ce projet a été conçu dans le cadre de mon examen de mathématiques en Bac2 Q1 à la Haute École Albert Jacquard. L'objectif de cet examen visait à nous faire appliquer des équations de mouvement complexes. J’ai choisi d’aller plus loin en créant une simulation scientifique complète afin d’approfondir mes connaissances en algorithmique, mathématique et physique.
Fonctionnalités principales
-
Simulation 2D sur un canvas avec rendu dynamique des maillages calculés en temps réel
-
Navigation autour du trou noir avec calculs de perspective pour simuler un effet 3D via la variation des tailles
-
Paramétrage avancé : nombre d’étoiles, affichage des disques d’accrétion, positionnement du trou noir, etc.
-
Calculs basés sur des modèles physiques et des données issues de la NASA et d'autres références scientifiques
-
Gestion manuelle de la mémoire liée à la création dynamique des meshs, optimisée pour éviter les fuites
Technologies utilisées
-
Unity 2022.3
-
Langage C#
-
3D simulé sur un canvas 2D


Exemples de différents paramétrages permettant de visualiser différents aspects visuels concernant les trous noirs et leur impact sur la perception de la lumière.
Défis rencontrés et solutions
Le principal défi a été de gérer efficacement la mémoire et les performances, puisque tous les meshs sont calculés dynamiquement dans le code. J’ai dû implémenter manuellement la libération des ressources et un système de pooling d’objets pour garantir la fluidité de la simulation en temps réel. Ces optimisations ont demandé une réflexion approfondie sur la gestion mémoire dans un contexte dans lequel le garbage collector d'Unity ne s’applique pas.
La première version du projet tournait entre 5 et 10 fps avec une configuration de paramètres basse. La version actuelle tourne en moyenne entre 60 et 120 fps pour un paramétrage moyen.
Ce que ce projet montre sur moi
Ce projet témoigne de ma motivation et de mon goût pour les défis ambitieux. Il reflète également ma capacité à apprendre de manière autonome, à approfondir mes connaissances scientifiques et techniques, ainsi que mon sens de l’optimisation et de la rigueur dans le code.
Réflexion personnelle et apprentissage
J’ai beaucoup appris sur la gestion fine de la mémoire et sur l’optimisation des calculs en temps réel. Ce projet m’a aussi sensibilisé à l’importance d’une approche méthodique dans la conception et le développement, ce qui influence désormais positivement ma manière de travailler sur d’autres projets complexes.
Liens / Téléchargement
Pour le moment, la simulation n’est pas disponible en téléchargement public. Je prévois d’intégrer une interface utilisateur interactive, plus instinctive et facile à utiliser, afin de rendre l’expérience encore plus accessible et immersive. Je souhaite aussi me pencher encore plus loin côté optimisation dans le but de rendre la simulation la plus fluide possible, peu importe les paramètres utilisés.