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: 1380 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: 1380 Défis: 0 Message

Citer : Posté le 10/08/2024 14:04 | #


C'est sans azur (pour le moment)
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 11/08/2024 04:29 | # | Fichier joint


Hello quelques update !
Maintenant si vous appuyez sur SHIFT vous pouvez changer de mode de rendu.
Il y a des ajouts de texture aussi.
Si vous pouvez jeter à nouveau sur le code pour me dire si je peux opti encore avant que je passe avec Azur
Vous pouvez tester la demo .g3a

Voici les nouvelle sources : github
"La créativité est contagieuse faites la tourner"
Albert Einstein
Fcalva Hors ligne Membre Points: 602 Défis: 10 Message

Citer : Posté le 11/08/2024 09:58 | #


Il y a clairement la méthode d'UV qui fait très mal niveau perf, je conseillerais d'aller voir autre part avant même de passer sous Azur (ici le bottleneck est la quantité absurde de maths par pixel et pas le dessin), même si c'est pas forcément propre (Tu dois pouvoir juste calculer le nombre de pixels que prend un côté et interpoler la colonne de texture que doit être le x)
Pour le quad de couleur tu peux utiliser un dhline() par ligne pour accélérer un peu
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 11/08/2024 12:05 | #


J'ai pas regardé le code, mais en voyant la réponse de Fcalva, je te conseille de regarder https://www.youtube.com/watch?v=t7Ztio8cwqM qui donne une méthode efficace pour rasteriser un triangle.
Fcalva Hors ligne Membre Points: 602 Défis: 10 Message

Citer : Posté le 11/08/2024 12:18 | #


Ici ça ne s'applique pas vraiment vu que c'est en quads et que il n'y a pas de transformations complexes
PS : Au passage leur méthode est facile a expliquer mais pas super opti non plus (Pourquoi faire une passe pour dessiner les lignes, puis une passe pour récupérer les points en VRAM et une troisième pour dessiner ?)
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 16/08/2024 22:37 | #


La vidéo parle d'elle même

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 16/08/2024 22:39 | #


Pas mal, tu exportes l'équivalent d'un .obj en code avec un plugin si j'ai bien vu ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 16/08/2024 22:40 | #


Mais dans unity tu codes en C#, non ?

Tu codes le programme séparément pour la calculatrice ?

Sinon perso je trouve ça dommage que tu fasses ça avec unity qui est un logiciel propriétaire de moins en moins apprécié à cause de ses conditions d'utilisation.
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 16/08/2024 22:44 | #


Lephenixnoir a écrit :
Pas mal, tu exportes l'équivalent d'un .obj en code avec un plugin si j'ai bien vu ?

Yep c'est exactement ça !
Mb88 a écrit :
Mais dans unity tu codes en C#, non ?

Tu codes le programme séparément pour la calculatrice ?

Sinon perso je trouve ça dommage que tu fasses ça avec unity qui est un logiciel propriétaire de moins en moins apprécié à cause de ses conditions d'utilisation.

Yep c'est avec Unity et c'est juste pour aller plus vite pour modéliser mais en soit, on peut le faire avec n'importe quoi, le code Unity est d'une simplicité. C'est juste qu'il récupère le modèle 3D et le convertit en code C++
"La créativité est contagieuse faites la tourner"
Albert Einstein
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 16/08/2024 22:54 | #


Faut vraiment que je fasse un vrai rasterizer, je pense que c'est l'effet qui m'a pris le moins de temps dans ma démo.

Fahri a écrit :
pour modéliser mais en soit, on peut le faire avec n'importe quoi, le code Unity est d'une simplicité.


Perso je trouve Blender très facile d'utilisation.

Sinon c'est cool
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 07/10/2024 05:42 | #


Petite Update avec les textures

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 07/10/2024 10:42 | #


Joli ! On est d'accord que t'as pas le dernier axe de rotation right? C'est comme dans TOTN ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 07/10/2024 14:23 | #


Si je l'ai, je peux le faire, mais les performances prennent cher. Tant que les faces sont des parallélogrammes, le rendu va vite.
Donc c'est pour ça que je bloque l'axe malgré tout.
Du coup la démo, oui c'est comme TOTN (le rendu graphique), mais le moteur n'a plus rien à voir avec celui de TOTN
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 18/10/2024 01:23 | #


Petite Update : Automatisation avec Unity, Ajout de physique et de collision, Détection du sol (avec surélévation progressive pour les pentes/escalier), Animations etc...
Regardez bien jusqu'au bout (il y a une demo sur vrai support à la fin)

"La créativité est contagieuse faites la tourner"
Albert Einstein
Redeyes Hors ligne Membre Points: 634 Défis: 7 Message

Citer : Posté le 18/10/2024 08:50 | #


Oh wow, c'est hyper impressionnant !! Bravo !
Hâte de voir la suite des avancées ! ✨
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 18/10/2024 15:06 | #


Merci !
Je pense que ma prochaine publication sera pour le concours
"La créativité est contagieuse faites la tourner"
Albert Einstein
Slyvtt Hors ligne Maître du Puzzle Points: 2401 Défis: 17 Message

Citer : Posté le 19/10/2024 10:16 | #


Bravo Farhi, c'est vraiment du beau boulot.
Je suis d'accord avec Redeyes, c'est vraiment impressionnant !!

Je comprends que pour le moment, la version G90+E fonctionne sous gint, et pas encore sous Azur.
Le framerate est vraiment correct (bon Ok il y a pas masse de choses à l'écran dans la démo), mais ça laisse de très bonnes perspectives.

Bon courage pour la suite.
Hâte d'en voir plus.

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

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


Merci Merci
Slyvtt a écrit :

Le framerate est vraiment correct (bon Ok il y a pas masse de choses à l'écran dans la démo), mais ça laisse de très bonnes perspectives.

J'ai fait des tests avec plus de choses et le frame rate est plutôt correct, il y a une limitation d'affichage de quad sur l'écran en fonction de la distance, ça aide pas mal.
Mb88 a écrit :
Le frame rate a l'air très bon! Utilises tu des nombres à virgule fixe pour les calculs ?

J'utilise les fixes pour le rendu et des floats pour la position des GameObject (qui sont convertis en fixe lors du rendu), ça permet d'avoir un compromis entre lisibilité et rapidité
"La créativité est contagieuse faites la tourner"
Albert Einstein
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Farhi Hors ligne Membre Points: 1380 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

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 - 2024 | Il y a 59 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