Le projet Micro3D engine est un simple et petit moteur de rendu graphique 3D, ce projet remonte à très loin, au moment où j’étais encore étudiant, j’ai été toujours intrigué par la 3D et je voulais comprendre comment ses mécanismes fonctionnaient, le meilleur moyen pour le faire c’était d’implémenter à partir de zéro un moteur 3D. Le moteur est du type rasteriser, c’est l’algorithme le plus connu pour la 3D en temps réel. Globalement, concernant la synthèse en 3D, 2 types de rendu graphique existent, la rastérisation qui est temps réel, utilisée le plus souvent dans les jeux vidéo et la simulation 3D, et le ray tracing, qui n’est pas temps réel mais précalculé, utilisé généralement dans les films d’animation et les vidéos en images de synthèse. Le code est sur le dépôt GitHub
La vidéo en haut explique brièvement le fonctionnement et la programmation de ce moteur, le langage utilisé est langage C, néanmoins ce n’est pas le code le plus fin que vous allez trouver sur Internet, c’est fait un peu à l’arrache, avec une mauvaise structuration, pas de commentaire, l’appellation des variables peu explicite…etc. Mais le but au final du projet était de recréer un moteur de rendu à partir de zéro, la bibliothèque SDL était utilisée au minimum dans le moteur, elle a pratiquement servi que pour fournir la fonction pour dessiner un point (pixel) avec une couleur donnée, le moteur tout entier était créé en démarrant de ça, c’est pour cette raison qu’on l’appelle moteur logiciel, parce qu’il ne va utiliser aucune accélération matérielle graphique (à partir de la carte graphique), et toutes les opérations sont implémentées par programmation from scratch. Dans sa globalité, le moteur arrive à faire les opérations de base en 3D, comme la projection, la translation, la rotation, le changement d’échelle, la texturisation, l’élimination des faces cachées (back-face culling)…etc. Il lui manque principalement le Z-buffering, les transformations de la caméra, le clipping…etc.