DLC #113
Comment coder un mini moteur 3D fil de fer sans rien comprendre aux maths
J’ai adoré le jeu Elite en 1984, ou encore le jeu de tank en 3D Battlezone de 1980.
Leurs modèles 3D en fils de fer me fascinaient.
J’ai décidé de coder un mini moteur de 3D fil de fer maison, avec quasiment aucune math, et le résultat est fun !
Je te montre comment faire la même chose.
Je code avec : Lua/Love2D (Le principe est transposable dans tout langage de programmation).
Je partage mon écran et je te montre tout.
🎁 BONUS CLUB :
Une Fiche Pratique de 9 pages accompagne cette leçon avec toutes les explications, antisèches et schémas nécessaires pour reproduire le principe seul, sans copier mon code ! Ainsi que le code source au complet.
- Langage : Lua
- Framework : Love2D
Vous n'êtes pas membre du Club Privé et n'avez pas accès aux bonus
En tant que membre du Club Privé Gamecodeur vous pourriez télécharger le code source de ce DLC ainsi qu'une Fiche Pratique complète, contenant les fondamentaux enseignés ainsi que des antisèches pour pouvoir reproduire le concept enseigné de manière autonome.
5 réflexions au sujet de “DLC 113 : Programmer un mini moteur 3D fil de fer”
Reste à résoudre le problème des faces à l’arrière qu’il faudrait cacher.
On ne peut pas avec un moteur de ce type (vertex). Il faut passer sur des polygones (triangles), et calculer la normale de chaque polygone pour déterminer son orientation etc. Ca dépasse mes compétences pour l’instant :).
1
Pour les faces arrières la théorie est assez simple, la pratique plus compliqué :
– Ne pas dessiner les faces qui tournent le dos à la caméra.
– Chaque face possède une normale (vecteur perpendiculaire à la face).
– On prend trois sommets de la face (ABC) on crée deux vecteurs AB et AC on en fait le produit vectoriel N = (AB.AC)
– La caméra regarde le fond de l’écran elle est donc aligné avec l’axe z. Son vecteur est noté V.
– Il suffit de faire le produit scalaire (N.V) et comparer le résultat : 90°: face avant, =90°: de profil.
C’est après que ça se complique pour un rendu parfait. Ils faut stocker les vertices et les faces dans des tables. Utiliser des table.sort, et dessiner des lignes dans le bon ordre en recréant une fonction polygone maison.
Pour ce dernier point renseignez vous sur l’algorithme du peintre ça aide.
Le correcteur d’orthographe à modifier mon com c’est bien:
– inférieur à 90°: face arrière.
– supérieur à 90°: face avant.
– égal à 90°: de profil… Pardon