Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Mini Moteur 3D
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Mini Moteur 3D

Posté le 09/08/2024 02:48

Hello les gens ! Ça fait un moment ! Comme certains le savent déjà, je travaille depuis un certain temps sur un moteur de jeu, et plus précisément sur un moteur 3D. Cela m'a conduit à effectuer de nombreux essais. Aujourd'hui, je suis ravi de vous partager les sources d'une version miniature de ce moteur, qui est destinée à remplacer celui de TOTN à l'avenir.

Le code est ultra minimaliste, ce qui le rend facile à comprendre. Si vous avez des suggestions d'améliorations (optimisations ou autres), n'hésitez pas à me les faire savoir.

Si vous souhaitez tester le moteur, voici les touches utiles à connaître :

Croix directionnelle : avancer, reculer, aller à droite, aller à gauche
8 : monter
2 : descendre
4 : rotation vers la gauche
6 : rotation vers la droite
7 : rotation vers le haut
1 : rotation vers le bas
MENU : quitter

Les sources sont jointes à ce topic.


Fichier joint


Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 19/10/2024 15:49 | #


Mb88 a écrit :
D'ailleurs est ce que tu fais du backface culling, ça pourrait aider aussi.

Yep ! Il le fait grâce à la normal
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 19/10/2024 15:56 | #


Tiens j'en profite pour mettre un @Rdp
(Je crois que c'est comme ça qu'il faut faire)
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 21/03/2025 20:25 | #



Petite vidéo d'un prototype, ça tourne à 2 fps en overclocké (et à 1 sans), mais pour information là je n'ai pas encore fait de système de culling, cela veut dire que toutes les faces, les 3158 faces sont dessinées à chaque instant. Donc 2 FPS pour 3158 faces sans culling avec texture UV, perso ça me va .
(il y a quelques petits glitchs par ci par là que je dois encore corriger)
Et pour information, je peux tourner la caméra dans tous les sens sans vraiment impacter les FPS.
Et le modèle 3D est un .obj converti en binaire.
Je publierai une démo téléchargeable quand j'aurai fixé les bugs.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24961 Défis: 174 Message

Citer : Posté le 21/03/2025 21:21 | #


3158 faces pour ce modèle c'est hi-tech dis donc.
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 21/03/2025 21:50 | #


Eh bien je suis figure toi que pas tant que ça quand on le regarde sur Blender, moi aussi ça m'a paru énorme mais j'ai vérifié.


"La créativité est contagieuse faites la tourner"
Albert Einstein
Slyvtt Hors ligne Maître du Puzzle Points: 2521 Défis: 17 Message

Citer : Posté le 22/03/2025 10:05 | #


C'est très joli, bravo.

Si tu veux avoir un truc qui tourne bien, va falloir que tu optimises ton moteur.
La 3D, ça reste un sujet chaud sur fxCG50. Y'a de joli choses qui tournent (notamment Minecraft), mais ça reste quand même un sujet touchy.

J'avais commencé de regarder (c'est un des sujets que j'ai encore sous le coude) pour faire un minimoteur, et j'en étais arrivé à la conclusion qu'un truc décent serait de se limiter à du "flat color shading" avec ces triangles en couleur et gestion de la luminosité, sans gradients et sans textures, quite à avoir plus de triangles avec un bon backculling.

L'avalanche de calculs supplémentaires liés soit à la gestion des textures (en particulier la correction de perspective en 1/Z ou la gestion des ombres/lumières de manière diffuse via un gradient) fait qu'on passe très rapidement de peu à vraiment beaucoup de calculs par frame. Y'a une balance à trouver entre beaucoup de "flat" triangles et peu de "textured" triangles certainement.

En tout cas joli, c'est très propres.
Je suppose que les optimisations classiques fixed point, lookup tables, ...) sont déjà faites dans ton moteur.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 22/03/2025 16:02 | #


Merci !
Ouais tout ce que tu as dit, je le confirme, je suis à plus de 40 fps pour les 3158 faces sans les textures (uniquement avec la couleur). Le souci, c'est que je cherche à remplacer le moteur de ZTOTN donc je n'ai pas le choix de faire avec les UV, mais de toutes mes tentatives celle-ci reste de loin la meilleure.
Surtout que, comme tu as dit, j'ai utilisé en masse fixed point et des versions approximatives de Cos et Sin.
Mais la plus grosse opti c'est d'utiliser les Quad au lieu des triangles (même si je peux aussi en dessiner)
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24961 Défis: 174 Message

Citer : Posté le 23/03/2025 09:58 | #


Farhi a écrit :
Eh bien je suis figure toi que pas tant que ça quand on le regarde sur Blender, moi aussi ça m'a paru énorme mais j'ai vérifié.

Ce que je veux dire c'est que no way y'a besoin d'autant de détail géométrique sur une tête. xD En tous cas à notre résolution. La raison pour laquelle ça peut être une remarque pertinente c'est que du coup tu benchmarkes que des triangles/quads minuscules, qui seront pas forcément représentatifs des décors etc. que tu trouveras dans les jeux et qui prennent la majorité de la surface.

Tu dessines un quad comment si tu le fais pas en deux triangles ?
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 23/03/2025 15:30 | #


Sur ce modèle 3D, il n’y a pas beaucoup de petites faces, à part les oreilles et la bouche. Le reste est composé de grandes surfaces.

Une face triangulaire n’a qu’une seule fonction dans le moteur, tandis que les quads en ont quatre.
Lorsqu’il affiche un quad, le moteur vérifie s’il s’agit d’un rectangle, d’un parallélogramme horizontal ou vertical, ou d’un quad quelconque.
En fonction de cela, le calcul des bordures et des UV peut être plus ou moins allégé. Ce n’est que dans le cas d’un quad quelconque qu’il le divise en deux triangles pour l’affichage.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Fcalva Hors ligne Membre Points: 618 Défis: 10 Message

Citer : Posté le 23/03/2025 17:27 | #


Fahri a écrit :
Sur ce modèle 3D, il n’y a pas beaucoup de petites faces, à part les oreilles et la bouche. Le reste est composé de grandes surfaces.

Je crois que ce qu'il voulait dire c'est qu'ils sont rendus très petits. Sur ta vidéo c'est clair qu'ils ne sont rendus que en une poignée de pixels pour la plupart.
Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Farhi Hors ligne Membre Points: 1419 Défis: 0 Message

Citer : Posté le 24/03/2025 15:09 | #



@Rdp
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24961 Défis: 174 Message

Citer : Posté le 24/03/2025 15:11 | #


Nice (Avec un nombre de faces plus standard !)
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2025 | Il y a 169 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd