FAQ GameMaker 3D
Traduit et modifié par daminetreg pour:
http://www.gamemaker.fr/
http://www.lecbna.org/
Ecrite par:
http://www.gamemaker.nl
http://forums.gamemaker.nl

(c) 2006-2007 - Le CBNA

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

  Questions Générales:
 
 

FAQ

 
Comment fonctionne la FAQ?
Pourquoi la FAQ est-elle violette?!
 

La 3d en général:

 
Quelle est la différence entre 2d et 3d?
Qu'est une Skybox ou un Skydome?
Qu'est ce qu'un panneau ou plan?
Où puis-je trouver plus d'informations sur la 3d?
Qu'est ce qu'un polygone ?
 

Capacités de GameMaker

 
Quels types de jeux en 3d peut réaliser GameMaker avec ses fonctions pré - conçues?
 

Créer des jeux en 3d:

 
Par quoi commencer?
Qu'est ce que 'z'?
Qu'est ce que sont les collisions?
Comment puis-je optimiser mon jeu?
  Questions entre versions 5 et 6:  
Ais-je besoin d'être enregistré GM6.x pour utiliser les fonctions 3d pré-conçues?
Quels attributs seront ajoutés dans la prochaine version de GM?
Quand sortira la prochaine version de GM?
Où puis-je faire un rapport d'erreur? Où puis-je suggérer de nouvelles fonctions pour GM?
  Questions sur l'enregistrement:  
Ais-je besoin d'être enregistré GM6.x pour utiliser les fonctions 3d pré-conçues?
  Questions sur les fichiers d'aide:  
Où puis-je trouver des codes pour la 3d? Où puis-je trouver des fichiers d'aide pour créer des jeux 3d?
  Questions sur les lumières:
 
Comment ajouter une lumière ambiante?
Pourquoi mon sol est-il si sombre?
Comment fonctionnent les lumières par point et directionnelles?
  Questions sur les Graphismes:
 
Est-il possible d'ajouter des effets de particule en 3d?
Comment afficher des choses sur l'écran? Qu'est ce qu'une projection orthographique? Comment puis-je faire un Hud en 2d?
Comment utiliser plusieurs vue en 3d? Comment réaliser un écran splitté?
     
Comment faire une vue suivant la souris?
Comment créer des FPS?
Comment ajouter des tirs à mon jeu?
Comment faire pour donner une rotation à mes objets/formes en 3d?
Comment faire pointer mon arme vers la souris?
Où puis-je trouver des ressources graphiques pour mon jeu en 3d?
     
Comment puis-je convertir les coordonées 3d en 2d et vice versa?
Comment ajouter une lumière ambiante?
Comment ajouter une Skybox ou un Skydome?
Comment charger des modèles 3d dans GM?
     
Quel Modeleur 3d recommandez vous?
Comment puis-je créer des ombres?
Comment créer un panneau ou plan? (Qui fait face à la caméra)
Comment éviter l'étirement ou le clignotement des murs?
  Questions sur les modèles:
 
Comment charger des modèles 3d dans GM?
Comment puis-je faire pointer mon arme là où je le désire?
Quels types de modèles sont compatibles avec GM?
Comment charger un modèle exporté par Marzipan?
  Questions sur les mouvements:
 
Comment gérer l'inclinaison du terrain? Comment obtenir l'angle entre deux points?
Comment faire sauter mon personnage?
  Questions sur les librairies:
 
Où puis-je trouver les librairies d'action 3d?