# Applications > Dveloppement 2D, 3D et Jeux > Moteurs 3D >  Comment fonctionne les moteurs 3D

## ManusDei

Bonjour,

je n'ai aucune intention d'utiliser un jour un moteur 3D (pour coder), mais je me pose une question sur comment a marche.
Si je prend l'exemple des jeux, quand on fait un Puissance4 ou autre Tetris, on peut tout  fait modliser l'espace avec une matrice.
Et quand on modlise un environnement 3D/2D plus complexe qu'une simple matrice (un simple jeu avec scrolling  la R-Typ), que des objets se dplacent dans cet environnement, comment a marche ?
J'imagine que l'environnement n'est pas modlis pixel par pixel (avec une grosse matrice), et les objets ?

Bref, pour ma culture gnrale, quels sont les principes utiliss par les moteurs 3D/2D ?

----------


## skeud

Bonjour, alors, tout d'abord il ne faut surtout pas confondre moteur 2D/3D avec moteur de jeux.
Moteur de jeux: contient toute la mcanique d'un jeu, les rgle de gestion, les actions possibles .....
Moteur 2D/3D: effectue une reprsentation d'un monde  l'cran.

La gestion des actions (comme par exemple appuie sur la barre espace entraine un tir) est gr par le moteur de jeu.
Le dplacement d'un joueur dans l'univers est gr par le moteur de jeu.
le moteur 2D/3D n'effectue qu'un rendu  un instant T d'un ensemble de figure dfinis par le moteur de jeu.

Prenons un exemple de jeu 3D:
Le moteur de jeu contiendra la position des joueurs.
Le moteur 3D affichera le joueur  la position dfinis par le moteur de jeu.

La plupart des moteur 2D/3D utilisent des mesh, c'est en ensemble de petit triangle modlisant une figure (joueur, arbre ....).
Lorsque tu demande au moteur d'affich l'image, il va effectu une projection de l'univers sur l'cran.
Pour cela, plusieurs solution existe, le raytracing (long et gourmand en ressource, mais c'est celui que je connais le mieux).
Et l'affichage grace au vertex et ces petits triangles dont je te parlais.
En raytracing, un rayon est envoy pour chaque pixel de l'cran et va aller regarder l'intersection la plus proche avec un objet. Puis calculer la couleur de ce pixel en fonction de la reflection etc....

Pour l'autre mthode avec les vertex etc... je ne saurais l'expliqu, je n'ais pas suffisamment de connaissance.



Ensuite pour les moteur 2D:
Ils s'occupent d'afficher des images  un endroit prcis et peuvent detect les collision de plusieurs manire:
_ Lorsque deux image viennent  se superposer (en regardant pixel par pixel)
_ Lorsque deux rectangle de collision sont dfinis par le moteur de jeu comme tant le rectangle de collision.

Tu t'apperois donc que les moteur 2D/3D ne sont qu'un simple cran permettant le dialogue entre les donnes brut du jeu (position d'un joueur, couleur de l'herbe, image d'un vaisseau) et l'utilisateur (clique de souris, appuie sur une touche du clavier ....).

Voila j'espre que a t'aidera et si tu as d'autre question sur les moteur 2D et raytracing, je me ferais une joie de te rpondre  ::): .
Pour les moteurs 3D, je laisserais des membres plus expriments te rpondre.

----------


## LittleWhite

Bonjour,

Pour expliquer comment fonctionne la rasterization (mthode des triangles) : http://jeux.developpez.com/videos/JS...g-webgl-dance/

@ManusDei : Pouvez vous prciser votre question et nous dire si skeud rpond  votre question, je ne l'avais pas compris sous ce sens  ::aie::

----------


## ManusDei

Effectivement, c'est pas ce que je demandais, mais avec sa rponse je peux reposer la question avec les bons mots  ::): 
La vido m'a aussi fourni quelques lments de rponse.

Donc je m'intresse au fonctionnement des moteurs 2D/3D.

Comment un environnement est-il modlis ? 
J'imagine qu'on ne positionne pas les points de l'environnement un  un (il y en aurait trop), et d'aprs la vido on positionne des points et les liens entre les points (ou des cubes selon la mthode ? il y a plusieurs mthodes ?), puis on utilise des transformations (interpolations ?) pour lisser le tout.

Et quand on positionne un objet dans l'environnement, comment on le "pose" ? Dans une matrice pour le puissance 4, le nombre de coordonnes est simple, mais dans un environnement 3D, c'est beaucoup plus vaste. Mais a j'ai plus ou moins compris avec l'explication sur les vertex, on rflchit sur plusieurs niveaux, un pour l'endroit o est l'objet, un pour l'orientation de l'objet, et un pour l'orientation de la camra (et donc l'affichage).

----------


## LittleWhite

Je vois et je vais tenter de rpondre.

Dernirement, les environnements 3D sont fait dans des logiciels de modlisation 3D, du type de Blender ou 3DS Max. Ensuite, l'environnement entier (je parle du niveau, sans les objets dedans) est pos dans la scne (technique, il est pos  l'origine aux coordonnes (0, 0, 0). Ensuite, on place une camra permettant de visualiser la scne, d'un point bien prcis (gnralement, la camra suit le joueur).
Ensuite, dans ce niveau, on peut rajouter des caisses, des lampadaires, des trucs, pour rajouter du dcor et faire que cela soit un peu plus consistent. Pour cela, on va prendre un diteur graphique style celui que l'on trouve dans Unity, UDK, CryEngine, Project Anarchy, le niveau va y tre plac (avec un glisser/dposer), puis les dcors, seront placs de la mme manire et dans cet diteur, vous pouvez dplacer les lments, les tourner, les redimensionner.
D'un point de vue technique, la reprsentation de la position d'un objet 3D, c'est un vecteur 3D (par exemple : (0, 0, 0)). vident, je l'accorde. Mais, nous, on vaut aussi la rotation et la mise  l'chelle (redimensionnement). Et bah, les mathmatiques sont nos amis (enfin pour certains) et dans une matrice 4x4, on peut stocker tout cela. C'est d'ailleurs bien expliqu ici : http://jeux.developpez.com/tutoriels...el-3-matrices/

----------


## ManusDei

C'tait a que je voulais, merci  ::):

----------


## guitz

> Bonjour,
> 
> Pour expliquer comment fonctionne la rasterization (mthode des triangles) : http://jeux.developpez.com/videos/JS...g-webgl-dance/
> 
> @ManusDei : Pouvez vous prciser votre question et nous dire si skeud rpond  votre question, je ne l'avais pas compris sous ce sens


Excellente vido merci

----------

