Bienvenue sur la FAQ 3d. Elle
est traduite du site officiel
et améliorée sans cesse par Le CBNA pour qu’enfin les utilisateurs
Francophone
puissent avoir accès aux connaissances des techniques de 3d pour
GameMaker. Nous
la mettons à jour sans cesse pour que vous puissiez créer de
merveilleux jeux,
que nous nous ferons une joie de tester. La Communauté Francophone sous
GameMaker vous souhaite une bonne utilisation de cet outil et vous
enjoint à le
faire découvrir. Nous espérons que vous y trouverez des réponses, sinon
vous
pouvez toujours passer sur notre forum : http://forum.lecbna.org/. La
communauté se fera une joie de
vous aider. Bonne chance pour tous vos projets…
C’est
en
regardant qu’on apprends et en aidant qu’on comprends
Rechercher Auteurs: ThatGamesGuy - shad0w - daminetreg - [TheDarkTiger] - Gab666
Question: |
Qu'est ce qu'un polygone ?
|
Réponse: |
Description :
Un polygone, c'est l'équivalent du trait en 2D.
C'est en réalité le plus petit dénominateur commun à tous les models 3D .
Il est composé de 3 coordonées, une sur chaque axes (X , Y , Z) et n'a , à la base qu'un côté ! C'est à dire que l'on ne peux le voir que sous un certain angle . Game Maker vous aide néanmoins en créant des polygones à deux côtés .
Code sous Game Maker :
Comment desiner un polygone à l'écran ? hé bien, en utilisant ce code, ou un code semblable :
d3d_primitive_begin(pr_trianglelist); d3d_vertex(-8,-8,-8); d3d_vertex(16,8,0); d3d_vertex(8,16,0); d3d_primitive_end();
bon, on vas créer un GM6 oki ?
Faites un nouveau fichier. Faites un nouvel objet .
Dans cet objet :
EVENT [create] Execute a piece of code :
("execute a piece of code"): // d'abord, initialiser la 3D d3d_start();
// puis,on crée une variable 'angle' qui contiendra l'angle de la camera angle = 0;
|
Bon, pour l'event create, c'est fini ^^ passons maintenant au plus dur :
EVENT [Draw] Execute a piece of code :
("execute a pice of code"): // Plaçons la camera ... (plus de précisions en dessous) d3d_set_projection(32*cos(degtorad(angle)),32*sin(degtorad(angle)),32,0,0,0,0,0,1);
// on fait tourner un peu la camera ... angle += 1;
// puis, on demande à dessiner en blanc. draw_set_color(c_white);
// et on dessinne notre polygone ! // on dit à GM qu'on commence à dessiner un polygone d3d_primitive_begin(pr_trianglelist); // on donne la cordonée du premier point d3d_vertex(-8,-8,-8); // du second d3d_vertex(16,8,0); // et du troisième d3d_vertex(8,16,0); // puis on dir à GM que le polygone est finit. d3d_primitive_end();
|
Mis à par la camera, c'est simple non ? en 5 lignes de code, c'est fini ...
Bon bha maintenant, vous faites une nouvelle 'room' et vous placez, en un exemplaire cet objet. (ou vous voullez, mais le plus 'logique' est en 0,0)
Lancez votre jeu et ... Tadam ! théoriquement, vous devriez voir un polygone apparaitre ^^
Si vous êtes du niveau seconde (en France, donc équivalent chez vous ...),Vous pourrez comprendre ce qui suit . Sinon, ne vous cassez pas la tête, sautez dirrectement à la fin.
revenons sur la camera... là ca se complique , à cause des 'degtorad' 'sin' et 'cos'. pour faire simple, je demande de placer la camera sur un cercle de centre 0,0,0 et de rayon 32. et pour conaitre la position d'un point d'un cercle dont on connais rayon et angle, on utilise 'cos' et 'sin' ce qui donnerait : "cos(angle),sin(angle),32" lpremier problème, GM compte ses angles en RADIANTS ( de 0 à 2*PI) et nous en DEGRÉS (de 0 à 360) donc, on doit lui dire de convertir : "cos(degtorad(angle)),sin(degtorad(angle)),32" Dernier problème, on est becoup trop près (sin et cosinus retournent des valeurs comprises entre -1 et 1) , on ne verait rien si on ne s'éloignait pas un peu ... ce qui explique le '32*' devant ... ce qui donne au final : "32*cos(degtorad(angle)),32*sin(degtorad(angle)),32"
*=== Pour ceux qui avaient commencé à sauter les explications, on atterrit ici ^^ ===*
Voila, c'est pas si compliqué ? Si ? à ce point ?
bon, on vas faire quelques exercices ... 1) Changez donc la couleur du polygone en rouge . (en anglais, ca se dir 'red' ^^)
2) Changez donc les points du polygone ...
et enfin ... 3) Rajoutez un deuxième polygone, à coté du premier !
Solutions ...
1) Allez, celui là il était simple ^^ il falair remplacer 'draw_set_color(c_white);' par 'draw_set_colore(c_red);' c'était pas plus compliqué ^^
2) bon bha là, ya pas vraiment de correction ... vous modifiez les valeurs comme bon vous semble, mais évitez de dépacer 32,32,32 ou -32,-32,-32 , sinon, vous ne verrez pas tout ...
3) Là , c'était plus dur ... il falait rajouter , après les trois coordonées du polygone, trois autres coordonées. ce qui nous donne :
("execute a piece of code"): d3d_primitive_begin(pr_trianglelist); d3d_vertex(-8,-8,-8); d3d_vertex(16,8,0); d3d_vertex(8,16,0);
d3d_vertex(8,8,8); d3d_vertex(-16,-8,0); d3d_vertex(-8,-16,0); d3d_primitive_end();
|
et voila ^^ maintenant, vous savez ce qu'est un polygonne et comment l'utiliser ^^
pour ceux qui voudraient le fichier :
Fichier
Ecrit par [TheDarkTiger] le ven 9 juin 2006 |
|