Magazine High tech

[Tuto] Un moteur 3D isométrique en Flash : Les bases

Publié le 27 septembre 2011 par Sébastien Cardona

[Tuto] Un moteur 3D isométrique en Flash : Les bases

Posté par : Seb - Le Mardi 27 Septembre 2011 à 11:55

Dans le cadre de mes mini-projets de fin d'année à l'ENJMIN, j'ai travaillé sur un jeu de type gestion avec une vue en 3D Isométrique. Notre contrainte était de pouvoir diffuser l'application le plus largement possible d'où la contrainte de réaliser le moteur en flash. J'ai donc égrainé le web à la recherche des recettes pour concevoir un moteur de rendu 2D Isométrique en Action Script 3 et je vais vous livrer ici quelques un des points clés du projet.


Pour commencer nous allons voir les principes qui difèrent avec un moteur de rendu "normal" de type plate-forme.

"La perspective isométrique est une méthode de représentation en perspective  dans laquelle les trois directions  de l'espace sont représentées avec la même importance, d'où le terme."

Source : Wikipedia


Dans tout moteur de rendu 2D, les éléments sont des objets rectangulaires représentés dans un espace orthonormé avec x sur l'axe horizontal et y sur l'axe vertical. Ces coordonnées permettent de placer correctement l'objet sur le plan. Lors du passage à la 2D Isométrique nous ne cherchons plus à déplacer des objets dans un plan mais à simuler un espace en trois dimensions, le repère est toujours orthonormé et les proportions ne tiennent pas compte de la distance, mais la disposition des éléments diffère.


[Tuto] Un moteur 3D isométrique en Flash : Les bases


Pour représenter l'espace on utilise alors une grille pour identifier les positions de chaque emplacement de la carte. Dans cette grille les cellules ont les mêmes dimensions, celles situées en bas étant considérées comme les plus "proches" du point de vue du joueur.


[Tuto] Un moteur 3D isométrique en Flash : Les bases


La position d'un élément sur la carte est représentée par ses valeurs en i et en j. Par exemple la case tout en bas de cette grille a pour coordonnées (4, 4). Cependant la logique n'est pas comprises par les moteurs de jeux, on applique donc un petit calcul pour traduire ces coordonnées.

//i et j sont les coordonnées de l'objet
//hauteur_cellule et largeur_cellule sont les dimensions en x et y d'une cellule
x = - ( i * largeur_cellule / 2 ) + ( j * largeur_cellule / 2 ) ;
y = hauteur_cellule / 2 + ( i * hauteur_cellule  / 2 ) + ( j * hauteur_cellule  / 2 );

Voilà pour la théorie, si vous êtes intéressés par une entrée plus en profondeur dans le code n'hésitez pas à vous manifester dans les commentaires en posant les questions qui vous posent problème.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Sébastien Cardona 218 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog