Posté le 16/03/2014 20:14
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 194 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
Citer : Posté le 16/03/2014 20:32 | #
On pourrait avoir un code d'exemple, histoire de la mettre en place ?
Ajouté le 16/03/2014 à 20:35 :
Au fait, je n'ai pas réussi trouver "Fixed".
Citer : Posté le 17/03/2014 01:53 | #
Et aussi, si je trouve ce que je cherche dans ce moteur, aurai-je le droit de l'utiliser (en te citant bien entendu) pour mon moteur 3D (qui pour le moment stagne suite a des pb relatif au C++, je dois encore apprendre pas mal de chose et aussi pour raison d'études).
Au fait, je n'ai pas réussi trouver "Fixed".
Fixed est une lib écrite par Pierotll si je me souviens bien, et c'est une lib qui permet de créer des nombres a virgule fixe enregistrés dans des int (ce qui est plus rapide au niveau proco pour les calculs qu'utiliser des float)
je la met ici:
fixed.c
fixed.h
Ajouté le 17/03/2014 à 02:08 :
Grosso modo au coup d'œil que j'ai jeté c'est une version beaucoup plus propre et optimisée (surtout au niveau de la conversion 3D->2D ou j'ai laissé des paramètres qui sont toujours égaux a 0) que les sources que je t'avais envoyé. En soit c'est une bonne chose, je suis vraiment brouillon dans mes codes sources, ce qui me fait faire des erreurs.
Je pense qu'ajouter au moins un remerciement pour christophe Heulin serait bien, c'est de lui que vient certains morceau de code de nos lib.
Dark Storm, si tu le veux bien, j’aimerais t'aider a faire ton moteur 3D en C, le mien étant orienté C++
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 17:35 | #
Je pense qu'ajouter au moins un remerciement pour christophe Heulin serait bien
En fait, je ne me suis pas trop aidé de sa doc, j'y suis allé avec un bon tas de brouillon et un stylo, mais ça ne m'étonne pas que les formules soient les mêmes
Ok pour les remerciements, ne serait-ce que pour la partie qui va venir, c'est à dire l'occlusion des faces
J'ai posté le moteur rapidement hier, et je m'excuse de n'avoir pu commenté davantage son fonctionnement.
Voici tout de même un exemple, qui affiche un cube 3D dont on peut modifier les coordonnées des sommets => http://pastebin.com/kTeMfwAN
Attention, l'occlusion des faces n'est pas encore calculée !
Théoriquement, vous devriez arriver à comprendre le code
Citer : Posté le 17/03/2014 17:43 | #
Faut que tu t’arrêtes tu vas nous transformer les caltos en smartphones après l’écran tactile, la 3D, ... ils vont finir par les interdirent en cours
Edit: en tout cas bravo
Citer : Posté le 17/03/2014 17:44 | #
Bah, ils commenceront par interdire les nSpire avant
Quoi que j'aurai bien utilisé l'émulateur de GBC
Citer : Posté le 17/03/2014 17:45 | #
Dark Storm, ton code d'exemple ne semble pas fonctionner
Il me manque la fonction setFPS.
Citer : Posté le 17/03/2014 17:47 | #
Tu peux la virer, elle ne sert à rien pour le moment
(voir le tuto sur RTC_getTicks pour cette fonction)
Ajouté le 17/03/2014 à 17:51 :
il doit manquer getFps aussi d'ailleurs
Bref, pour les infos, en haut à gauche c'est l'ID du point sélectionné, en bas à gauche c'est la focale, et en haut à droite c'est les fps
Citer : Posté le 17/03/2014 18:06 | #
C'est... spécial
Mais c'est sans conteste fonctionnel
Je ne sais pas comment tu vas faire pour utiliser ça dans Arcuz, mais je te fais confiance.
Ça devrait rendre pas mal
Citer : Posté le 17/03/2014 18:13 | #
Le truc, c'est que la gestion des faces doit être hyper souple. Donc il n'y avait qu'une solution : relier des points entre eux.
Du coup, je peux créer toutes les formes possibles et imaginables avec seulement 3 fonctions (tant que c'est composé de triangles).
Avec ce système, je peux dire que une face est blanche, qu'un de ses segments est noir, et que le sommet 1 est blanc.
Je peux aussi relier un nombre infini d’arêtes à un même point, et un nombre infini de faces à une arête.
Par contre, je reconnais que la déclaration d'un objet est un peu lourde
Citer : Posté le 17/03/2014 18:23 | # | Fichier joint
Vous parlez tout le temps d'occlusion des faces. Je ne suis pas sûr de ce que c'est, mais ce ne serait pas ce genre de truc ?
Citer : Posté le 17/03/2014 18:25 | #
C'est ça. L'occlusion, c'est dire "cette face est visible, celle-là non, celle-ci à moitié".
Et c'est pas évident à gérer...
Citer : Posté le 17/03/2014 18:25 | #
Il suffit d'ajouter une texture et d'afficher les objets dans l'ordre non ?
Citer : Posté le 17/03/2014 18:30 | #
Et l'ordre, tu le calcule comment ? Et si t'as 120 faces cachées derrière une, tu les affiches toutes puis la dernière par dessus ?
C'est pas si évident que ça
Citer : Posté le 17/03/2014 18:33 | #
Personnelement, jusqu'ici je n'utilisais que de cubes, mais comme je viens de poser de nouvelles bases, je recommence tout depuis un autre concept (encore ).
Néanmoins j'ai déjà quelques idées our savoir quelles faces sont devant, donc quelles faces sont affichées après.
Par contre, quand tu n'as que des cubes, c'est très facile. Enfin, quand tu sait afficher des textures Pour l'instant, il doit n'y avoir que LImachi qui a été jusque-là.
Citer : Posté le 17/03/2014 19:29 | #
Il suffit d'ajouter une texture et d'afficher les objets dans l'ordre non ?
ne faire que ça voudrait dire afficher plusieurs couches de points inutilement, le calcul d'occlusion tient en une seule ligne:
(ce code marche avec des faces 2D)
ou tout simplement ajouter un 4ème point perpendiculaire a chaque face et tester si Z de ce 4ème point est positif ou négatif.
Et l'ordre, tu le calcule comment ? Et si t'as 120 faces cachées derrière une, tu les affiches toutes puis la dernière par dessus ?
C'est pas si évident que ça
l'ordre est simple une fois que l'on a viré celles qui ne sont pas visibles par orientation (calcul précédent) il suffit de classer les faces par ordre de profondeur en cumulant tout les Z des points d'une face (pas besoins de moyenne si toutes les faces respectent la règle 3 sommets par face)
voilà, solutions trouvées
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 19:31 | #
Impressionnant
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 17/03/2014 19:34 | #
a quand un moteur 3D pour prizm?
Citer : Posté le 17/03/2014 19:34 | #
J'ai pas compris ta formule d'occlusion...
Tu teste quoi au juste, et t'affiche quoi en fonction du résultat ?
Ajouté le 17/03/2014 à 19:34 :
a quand un moteur 3D pour prizm?
Quand j'aurai une Prizm
Citer : Posté le 17/03/2014 19:46 | #
Tu teste quoi au juste, et t'affiche quoi en fonction du résultat ?
en gros, ce calcul regarde la position des 3 points de la face les un par rapport aux autres pour dire si ils sont dans une configuration horaire ou contre-horaire
1---2
|///
3
bon
2---1
|///
3
mauvais
(si tu veux inverser le calcul, il suffit de changer le symbole de comparaison a 0 a la fin)
par contre, ça veut dire que les faces ne peuvent pas être déclarées n'importe comment, ça doit être normalisé
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 19:48 | #
Heu, ça ne marche qu'avec des cubes
Une face seule, qu'elle soit à l'endroit ou à l'envers, est toujours affichée (on a pas le reste du cube qui la masque)