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 - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Tutorial] La 3D (bis)
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

[Tutorial] La 3D (bis)

Posté le 18/09/2012 22:13

La 3D (bis)


Aux touts débuts de planète casio, Neuronix nous fournit un tutoriel sur la rotation d'un objet 3D autour d'un point. Tutoriel que voici.
Or notre cher Neuronix dit
Neuronix a écrit :
On dirait un carré et pas un cube car on n'a pas ajouté d'effet de fuite. On fera ça plus tard, pour le moment on va faire tourner le cube sur lui meme.

Seulement, après avoir lu le tuto en entier, on ne reparle plus de cet effet de fuite, et on ne fait que dessinner le cube en perspective cavalière, concrètement juste en utilisant X et Y.

Mais qu'en est-il de Z?
La liste des coordonnées Z est bien présente et témoigne de la nature 3D de l'objet malgé qu'elle ne soit pas prise en compte pendant l'affichage.
Or tout l'aspect "3D" de la scène repose sur l'existance de ces coordonées Z, et ce qu'on obtient après le tutoriel de neuronix n'a de 3D que l'objet en mémoire.

En même temps, Neuronix le dit:
Neuronix a écrit :
Si vous etes un programmeur courageux et ambitieux passez votre chemin, regardez mes progs Util 3D et graph 3D sans regarder le code et cherchez vous meme.
En d'autres termes, il dit que si on cherche, on finit par trouver.

Seulement, je sais que nombre d'entre nous n'ont pas trouvé comment aller plus loin, et je propose donc de partager mes recherches sur le rendu 3D avec la gestion de la profondeur.


Bon, normalement, si vous avez lu jusqu'ici, vous aurez donc sur votre calculatrice le code permettant de faire pivoter un cube autour de lui-même.


Pour ce qui est du rendu 3D, voici comment j'ai procédé.

L'oeil fonctionne de façon très simple. On a crée, il y a bien longtemps, un procédé qui mime son fonctionnement.
Vous l'aurez sans doute vu en cour de physique: il s'agite de la chambre noire.

Ou plus concrètement:


On va donc considérer que le trou de notre chambre noire ne peut laisser passer qu'un seul rayon (et non un faisceau, ce qui poserai problème et nécessiterai une mise au point, d'où le cristallin de l'oeil et la lentille de l'appareil photo). Si on modélise ceci par une situation mathématique on a donc:

Mettons que nous cherchons à tracer l'image du point A.
Nous cherchons donc D'A'
On a donc: AD/DO = A'D'/D'O
un peu de math de collège: A'D' = D'O*(AD/DO)

Et c'est tout.
C'est tout ce dont nous avons besoin pour implémenter notre profondeur Z.

Seulement, le gros problème que nous avons pour l'instant, c'est que la caméra est à l'interieur de l'objet. Or, si on éloigne l'objet, il tournera autour de la caméra, et non l'inverse. La solution consiste donc à:
1) faire tourner l'objet
2) l'éloigner de la caméra
3) faire le rendu
4) afficher
5) remettre l'objet au milieu
6) faire tourner l'objet

Ainsi on fait tourner l'objet à par rapport à l'origine, puis on l'écarte pour le prendre en photo.

Maintenant, au programme:


Nous avions donc précédemment:

View-Window -4,4,0,-2,2,0
S-WindMan
ClrGraph
{1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1}List 1
{-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1}List 2
{-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1}List 3
S-Grph1 DrawOn,xyLine,List1,List2,1,Dot
Do
6 -> A~C
Cls
List 1 * cos A - List 2 * sin A -> List 4
List 1 * sin A + List 2 * cos A -> List 2
List 4 -> List 1
List 2 * cos B - List 3 * sin B -> List 4
List 2 * sin B + List 3 * cos B -> List 3
List 4 -> List 2
List 1 * cos C - List 3 * sin C -> List 4
List 1 * sin C + List 3 * cos C -> List 3
List 4 -> List 1
Cls
Drawstat
Lpwhile 1



On ajoute donc nos petites modifications: écarter l'objet, faire l'équation de collège, remettre l'objet. Puis on adapte le reste du code:


View-Window -4,4,0,-2,2,0
S-WindMan
ClrGraph
{1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1}List 1
{-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1}List 2
{-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1}List 3
S-Grph1 DrawOn,xyLine,List4,List5,1,Dot //4 et 5 au lieu de 1 et 2
"Objectif-écran"? -> D //plus cette valeur est grande, plus le zoom est important
"Objectif-objet"? -> E //plus cette valeur est grande, plus la caméra est loin de la scène
Do
6 -> A~C
Cls
List 1 * cos A - List 2 * sin A -> List 4
List 1 * sin A + List 2 * cos A -> List 2
List 4 -> List 1
List 2 * cos B - List 3 * sin B -> List 4
List 2 * sin B + List 3 * cos B -> List 3
List 4 -> List 2
List 1 * cos C - List 3 * sin C -> List 4
List 1 * sin C + List 3 * cos C -> List 3
List 4 -> List 1
List 1 / (List 3 + E) * D -> List 4 //pour les X
List 2 / (List 3 + E) * D -> List 5 //pour les Y
Cls
Drawstat
Lpwhile 1


Et voilà

Pour une bonne démonstration je conseille comme valeurs 6 et 6.
J'ai encore des tas de choses à dire mais il est tard et j'ai du boulot sur les bras. J'éditerai plus tard.
Sur ce bonne nuit.


Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 19/09/2012 21:02 | #


Bon donc je suppose que tout le monde savait déjà comment faire et que mon tutoriel ne sert donc à rien... ¬¬
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 19/09/2012 21:06 | #


ton tuto est tres interressant, mais tout le monde est occupé avec le concours, donc on ne fait pas trop de test 3D pour le moment (en tout cas pour moi) mais apres le concours, je vais peut-etre me mettre a la 3D...
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 19/09/2012 21:07 | #


Intéressant, mais j'ai déjà codé un peu de 3D, je connais le principe.
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message
Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

Citer : Posté le 19/09/2012 22:03 | #


J'aime bien ce tuto
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 19/09/2012 23:22 | #


deux trois erreurs d'orthographe quand même

je le modifierai plus tard quand j'ajouterai la deuxième partie du tuto qui expliquera comment procéder avec des faces pleines et faire un rendu pixel par pixel

(sauf si un gentil nadministrateur passe par là =] )
Vdragon.b Hors ligne Membre Points: 1401 Défis: 0 Message

Citer : Posté le 22/09/2012 23:09 | #


ha les faces pleines! j'attends ça avec impatience!
there are many incredible things in the world...So,believe in yours dreams!
I own a graph 3575+.

Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 23/09/2012 00:59 | #


De même,c'est le tuto que j'attendais Par contre détail un peu plus tes calculs, pourquoi ce calcul ?
C'est thalès si je ne me trompe pas.
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 23/09/2012 01:48 | #


Siapran a écrit :
Bon donc je suppose que tout le monde savait déjà comment faire et que mon tutoriel ne sert donc à rien... ¬¬

je pense que tu n'a pas besoins de me demander si je le sais
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-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


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 01/10/2012 22:03 | #


C'est plutôt destiné au C ou au LuaFX, mais je ne savais pas où le poster.

Apparemment, voici un bon tutoriel sur le RayCasting qui a grandement aidé l'un de nos confrères de TI-Planet.
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 02/10/2012 21:29 | #


j'ai prévu de rajouter du contenu sur ce tutoriel (rotations autour d'une droite, gestion de caméra, création de modèles 3D, etc)
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 04/10/2012 21:20 | #


Siapran a écrit :
j'ai prévu de rajouter du contenu sur ce tutoriel (rotations autour d'une droite, gestion de caméra, création de modèles 3D, etc)

Il va falloir que je me dépêche de finir mon minecraft, sinon il risque de bien-tôt devenir obsolete
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-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


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 04/10/2012 21:44 | #


bon et c'est moi qui était vraiment bourré ce soir-là ou quelqu'un samuse à rajouter des fautes d'orthographe douteuses?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 16:10 | #


??? tu veux dire quoi siap?
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-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


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 06/10/2012 16:23 | #


il s'agite de la chambre noire.

t'enlève la seconde partie de la phrase et ça devient vraiment douteux
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 16:28 | #


boarf, c'est bon, faut vraiment avoir l’esprit tordu pour penser des trucs pareils, t'a juste fait une faute de frappe, t'en veux pas.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-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


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 06/10/2012 16:31 | #


ouais enfin niveau lape-suce révélateur c'est quand même pas mal
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 16:40 | #


je vais éviter de te relancer vu ce que tu viens de dire (et en passant, je suis sur l'IRC).
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-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


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 07/10/2012 20:44 | #


O putaing, on a encore l'IRC? Oo"
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 07/10/2012 22:41 | #


oui même si ya deux trois trucs à régler suite à une connerie d'un camarade de classe

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 328 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