IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Comment réaliser une "carte" en 3D?


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut Comment réaliser une "carte" en 3D?
    Bonjour,

    Je souhaiterais concevoir un jeu vidéo avec un ami et nous sommes en train de nous poser quelque question en ce qui concerne la carte sur laquelle évolue les personnage.

    En effet, nous aimerions avoir des cartes avec un certain relief, et nous voulions savoir si vous connaissiez déjà des techniques qui existent pour réaliser ce genre de chose. Histoire d'avoir vraiment l'impression que le personnage se déplace aussi selon la hauteur et pas seulement selon un plan horizontale.

    Au début on a pensé à des courbes mathématiques, mais des que nous avons un relief qui varient beaucoup, le nombre de courbes à stocker est énorme...

    Avez vous des idées?

  2. #2
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Il faut penser terrain non?

    Dans ce cas, si on veut un terrain décent, c'est qu'il nous faut beaucoup de détails tout près de la caméra ( du joueur ), mais beaucoup moins au loin où on ne distinguera pas de toutes façons. Un système de level of detail, dans le screen on voit du geomipmapping, mais d'autres techniques y sont à choisir / réfléchir.



    Dans ce cas, les collisions on les fera que sur ce qui nous entoure seulement, vu qu'on a les carrés de X*X triangles autour de la caméra.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    D'accord, mais donc, cela veut dire que l'on modélise son terrain tel qu'on le souhaiterais, et on gère les colisions, triangles par triangles. Par exemple, avec un fonction qui nous renvoie la hauteur de l'endroit où on se trouve?
    Cela veut dire qu'il faut garder une trace de tout le terrain via des courbes par exemples, où alors, il faut soit même modéliser que des rectangles... que l'on affine après avec d'autre algo pour rendre quelque chose de lisse?

  4. #4
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Dans la plupart des jeux, le terrain est stocké de manière explicite.
    C'est à dire sous forme d'une grille 2D contenant effectivement les hauteurs (Z) par coordonnée (X,Y). Tu peux voir ça comme une texture ou une image mais contenant des hauteurs plutot que des couleurs.

    Pour trouver à quelle hauteur tu te trouves c'est explicite puisque ton tableau 2D qui peut aussi servir de base à l'affichage te donne directement la hauteur. Donc il suffit de lire la hauteur pour ton point de coordonnée courant. Si tu tombes entre deux coordonnées (ou entre quatre points sur ta grille), il faut interpoler. Suivant les cas, tu peux faire une interpolation linéaire, bicubique, ou avec des surfaces polynomiales ou rationnelles plus compliquées (mais aussi plus couteuses en calcul).

    Bref c'est un vaste sujet mais ce qui est à retenir, c'est que pour la création elle-meme tu utilises l'algo que tu veux. En général c'est fait en off-line par un outil spécial et tu peux remodeler le produit final pour ajouter des éléments de gameplay (routes, batiments, etc.). Pour l'affichage il faut charger la partie courante (tu peux stocker des bouts de terrain que tu charges en fonction de l'endroit où tu te trouves) et tu convertis tout en polygones pour ta carte 3D..

    Après il y a plein d'optimisations pour les moteurs de terrains, en général.. C'était un sujet un peu trop creusé (par rapport à l'utilité réelle) il y a quelques années mais après tout dépend de tes attentes, de ton niveau et du temps que tu veux y passer..

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Points : 349
    Points
    349
    Par défaut
    Juste un petit détail pour zuzuu, le tableau 2D qui te donne les Z dont te parle LeGreg on appelle ça généralement une "heightmap", si tu cherches ça sur google tu auras plein d'infos.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    D'accord, je me disais aussi que garder les hauteurs dans un tableau devait être sympa. C'était surtout la question de comment faire... Si il fallait tout faire à la main les triangles et en déduire les hauteurs à placer...
    Donc, il faudrait mettre en place un éditeur de carte...

    Merci pour vos réponses, je vais continuer de chercher... En fait, c'est vrai que je voudrais faire un jeu, mais de plus en plus, je me rend compte que je voudrais savoir tout ce qu'il y a vraiment derrière... Y'a vraiment beaucoup de chose...

  7. #7
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Pour mon tutorial de Moteur de terrain par voxel, j'avais utilisé World machine et Terragen pour générer la carte de hauteur et la texture (couleur). Ce sont deux outils assez bien fait et dont les données peuvent être importés assez facilement.

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  8. #8
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    La heigtmap se fait facilement à la main avec une simple image bitmap en niveau de gris. La valeur de gris de chaque pixel représente une hauteur.

    Pour le rendu il y a beaucoup de façons de faire.

    Le plus facile: gérer un simple tapis de quads de 2 triangle chacun qui est mis à jour comme une tilemap (même raisonnement que pour un scrolling en 2d)

    Après on peut aller beaucoup plus loin pour optimiser, mettre à jour le niveau de détail, faire du culling d'occlusion...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    D'accord, merci pour vos réponses, j'y vois déjà beaucoup plus clair !

  10. #10
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    d'une maniere générale, les cartes au sols sont qualifiés de MNT (Modele Numérique de Terrain)... y'a des masses de doc sur le sujet... et sur l'optimisation (quadtree, LOD, simplification...)

    amuse toi bien ^^
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

Discussions similaires

  1. Comment réaliser une telle carte en HTML ?
    Par pdtor dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/10/2010, 10h16
  2. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  3. [FLASH MX] Comment réaliser une forme dentelée
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 04/11/2004, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo