CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Création de moteur 3d

yophil7
yophil7
Niveau 6
12 novembre 2006 à 17:51:17

Salut je travaille présentement sur un rpg 3D (c++) et (quand le projet n´était encore qu´une idée) je pensais prendre un moteur 3d préconcu, mais plus j´avance dans le concept (plus communément game desing) plus je réalise qu´il serait plus simple de programmé mon propre moteur 3D, car mon projet a un concept particulier de pour les graphismes. Je m´explique. Pour les personnages et pour certains objets (pierre, plante, buisson, arbres, etc...) les annimations se feront par sprites 2D contenant en tout 10 points de vue contennant chacun un nombre d´animations variables (ex : un personnage d´une race jouable compertera plus d´animations qu´un requin). Pour ce qui est de la modélisation, cela ce ferait avec des tiles de 4 pouces par 4 pouces (traduit en pixel cela équivaut à 406x433 pixels) (non officiel) pouvants etres placées en diagonales ainsi qu´etre affichés a moitié et avoirs en effet de transparence (ex: dire au logiciel que quand il voit une teinete particuliere de rose, de ne pas l´affichée et de simplement la rendre transparente).

Donc voila ma question. Pour mon projet me conseillez vous de prendre un moteur 3D déja fait ou d´en fabriquer un de toutes pieces ?

Si vous n´avez pas compris quelque chose, n´hésitez pas a me le dire.

Merci d´avance.

yophil7
yophil7
Niveau 6
12 novembre 2006 à 19:37:25

J´ai oublié de préciser, puisque la modélisation se ferait avec des tiles, tout serait modeliser avec le logiciel de Level Desing.

yophil7
yophil7
Niveau 6
16 novembre 2006 à 00:14:46

Aussi, si vous voulez d´autre exemple, n´hésitez pas a me le demandez (en passant, désolé pour le triple post).

Fvirtman
Fvirtman
Niveau 10
16 novembre 2006 à 09:27:45

Fait le toi meme, c´est plus rigolo :)
Tu te fais un heighmap, et tu te promenes dessus :)

pasdebol37
pasdebol37
Niveau 10
16 novembre 2006 à 11:23:29

A propos de heighmaps, une question que je me pose depuis longtemps maintenant. Je profite donc de ce topic pour la poser (désolé yophil7, je squate le temps de la question :o)) )

Est-il préférable de générer une carte par heighmap ou en chargeant un mesh 3D afin d´utiliser le moins de ressources possible?
Est-ce que ce genre de choix se pose en fonction de la taille de la carte, ou bien la réponse est tellement triviale que la question ne se pose pas?

Fvirtman
Fvirtman
Niveau 10
16 novembre 2006 à 11:58:14

Moi je serais partisant de répondre qu´il est préférable de le générer a partir d´un BMP, et non d´importer un Mesh de Heigmap.
Je m´explique :

Si tu le generes toi meme, tu assures une régularité parfaite entre les points : ce qui n´est pas le cas avec un Mesh importé : tu peux tres bien avoir une anarchie de triangles.
Les avantages quand le mesh est bien généré :
- Calcul immédiat du quad de triangle ou tu es (2 divisions suffisent)
- De la, calcul immédiat du sol (calcul de barycentre)
Autrement, en rien de temps, pour un x/y donné, tu connais ta position Z. Alors qu´avec un mesh importé : ouch !
- optimisations tres tres rapides : comme le mesh est tres régulier, pas besoin de faire de BSP ou d´octree pour classer les triangles : ils sont déja classés, donc un frustrum culling se fait plus simplement.

pasdebol37
pasdebol37
Niveau 10
16 novembre 2006 à 12:46:02

Merci pour ces précisions :)

Je me posais la question parce que, autant dans des types de jeux genre, sport, course ou action, une map enièrement "meshé" me semble logique ... autant dans un environnement plus grand du genre, MMORPG, RPG ouvert (Neverwinter Nights, Oblivion), gunfights et simulations d´avions, le choix entre un grand mesh ou une heightmap me semblait plus discutable (vu que la topologie des cartes est alors beaucoup plus basique).

Fvirtman
Fvirtman
Niveau 10
16 novembre 2006 à 14:24:31

Les programmeurs utilisent plein d´astuces pour éviter le Mesh quelconque.

Quelques exemples :
TombRaider : QUE des cubes. Une sorte de bitmap 3D. En 3 divisions, on sait sur quel cube est lara Croft.
Certains cubes sont coupés pour faire des pentes, mais c´est en 2 passes : y´a d´abord un cube tres cubique, et associé, un type "pente"
Quand Lara détecte ce type de cube, elle glisse... Mais pour la machine, ça reste un cube tres normal qui a la particularité de glisser, et d´etre rendu différemment :)

Pour TrackMania, ou beaucoup d´autres jeux de voiture, c´est des segments de routes placés, pareil, dans un monde dait de gros cubes régulierement placés.
Pour savoir ou est la route, c´est simple : on calcule d´abord dans quel cube elle est. Ensuite, on regarde quel type de route est contenu dans ce cube, ou alors aucun segment de route :)
Ensuite, selon le segment, on travail en local...

Mais dans ces cas la, en AUCUN cas c´est un gros mesh anarchique. Car on ne peut pas faire grand chose d´un mesh anarchique...
(sauf dans les FPS récents, ou on crée un BSP tree a l´initialisation)
Et je ne te parle pas de doom qui n´est pas autre chose qu´une "illusion", un jeu 2D dans lequel on a dessiné que des trapezes droits... Toute une histoire...

pasdebol37
pasdebol37
Niveau 10
16 novembre 2006 à 14:49:42

Donc si je comprend bien, plus une map est "découpée", hiérarchisée, mieux c´est.

Maintenant une autre question dans la continuité. J´ai mon plan 3D avec des relief, généré par heighmap, et je veut lui mettre une texture. D´après ce que j´ai pu voir, on a généralement la heighmap en niveaux de gris et une autre map en couleur pour la texture qui est donc projetée verticalement selon l´axe Z. Ca explique pourquoi sur des pentes abruptes, on voit souvent une texture étirée.

Ma question est donc, hormis trafiquer la texture de base (tasser sur la map2D afin que lors de l´étirement ça ne se voit plus), est-il possible sur un mesh généré par heighmap de projeter la texture selon la normale de chaque face?
On vois très souvent ce genre d´étirement dans les jeux, donc ça doit être assez compliqué ou impossible j´imagine, de faire une texture régulière malgré les variations de hauteur de terrain.

Je suis assez curieux de ce genre de chose, qui doit être propre à la programmation je suppose, étant donné qu´en infographie3D le problème ne se pose pas trop finallement.

Fvirtman
Fvirtman
Niveau 10
16 novembre 2006 à 15:49:21

Je t´avoue que je n´ai jamais pensé a palier ce probleme.
Mais ça me parait trreeeeeeees compliqué.
En effet, si pour un meme X, tu as une partie droite, puis, plus loin (mais toujours sur le meme Y, tu as une forte pente, et que tu veux donc ne pas trop étirer, ça veut dire que dans le bitmap de texture, il faut jouer la dessus : et surtout qu´il est irrégulier !

Un peu comme si tu as un carré de baudruche, que tu mets a plat, et que tu décide d´appuyer avec ton doigts a un endroit précis (pour faire une montagne).
La distance verticale sera différente a une abscisse donnée et une autre...

Fort fort complexe...

Je dirais que c´est pour ça que sur les planisphere, le Groenland est toujours représenté plus grand qu´il l´est en réalité...

Dur dur probleme... A mon avis, il faut traiter le bitmap avant (en faisant des distortions diverses dans le bitmap),
un peu comme cette image
http://www.tokai.be/images/Products/160asfin/16042asfin%20distortion.jpg

Fvirtman
Fvirtman
Niveau 10
16 novembre 2006 à 16:03:42

Autre solution a essayer :

tu as donc ton heightmap nu, et ta texture.
Tu calcules les points u,v sur la texture qui vont coincider aux vertex du heihtmap.
Au départ, ces points sont régulierement placés.

L´idée est donc, pour chaque point du vertex, calculer sa distance verticale et horizontale par rapport au bord, en tenant compte du relief : un perimetre de polyline si tu veux.
En fonction de la distance divisée par la longueur totale de la polyline sur laquelle tu travailles, tu décales horizontalement, puis verticalement, ton point u,v
Ainsi, tu remap tous tes points u,v, de façon a ce que le résultat soit régulier une fois posé.

A tenter...

yophil7
yophil7
Niveau 6
16 novembre 2006 à 16:21:18

Merci pour vos conseils, mais j´ai une question, sa signifi quoi "mesh" (je m´y connais plus en game desing qu´en graphisme).

Merci d´avance.

Fvirtman
Fvirtman
Niveau 10
16 novembre 2006 à 16:55:34

un mesh c´est un ensemble de polygones : un "dessin 3D" sans textures :)

nikko45
nikko45
Niveau 9
16 novembre 2006 à 17:04:41

Pour ce probleme de texturing de heightmaps tu peux utiliser des petits bmp puis utiliser la technique de texture splatting.

mais bon comme m´a dit un jour un bon informaticien, t´agace pas a faire des superbes effets sur tes terrains car tu vas y coller des batiments, de l´herbe, etc... personne ne fera attention aux défauts de texture ! :p

Ca m´arrive de jouer a GW et si on regarde de pret, tres pret le terrain, on découvre qu´en fait il est composé d´un grand nombre de petits bmps collés les uns aux autres. ca permet en plus de ne pas charger sauvagement la mémoire de texture des cartes graphiques !

++
Nico.

yophil7
yophil7
Niveau 6
16 novembre 2006 à 17:22:22

"Ca m´arrive de jouer a GW et si on regarde de pret, tres pret le terrain, on découvre qu´en fait il est composé d´un grand nombre de petits bmps collés les uns aux autres. ca permet en plus de ne pas charger sauvagement la mémoire de texture des cartes graphiques !"

C´est éxactement pour ca que j´utilise la technique explqiqué plus haut, pour faire en sorte que mon projet fonctionne sur la pluspart des machines. D´ailleurs, pour revenir au sujet du moteur, je vais essayer de le programmer (bon, c´est sur que je serai pas le seul programmeur dans mon projet, car je m´y connais pas trop en programmation, et aussi que je suis le seul game designer de mon équipe en plus d´etre chef d´équipe et scénariste principal) de facon a faire en sorte que le jeu soit considerer par la carte graphique comme un jeu 2D.

nikko45
nikko45
Niveau 9
16 novembre 2006 à 17:42:19

parles tu de billboarding ?

c´est une technique qui consiste a afficher une image 2D dans un espace 3d en l´ajustant suivant la caméra...

Ou bien l´autre technique qui melange la 3d et la 2d, le shader script. Genre plutot que de gerer une explosion d´un objet 3d via un effet de particules tres couteux en mémoire, on le gere via une animation d´images 2d pour créer l´illusion...

nikko45
nikko45
Niveau 9
16 novembre 2006 à 17:44:41

re, dsl

par contre je vois un truc louche.... exemple tu as un perso a un instant t du jeu avec des fringues, armes, etc. Donc ce perso est généré via une image 2d animée... tu auras autant d´animations et images 2d que de possibilités de combinaisons d´armes et vêtements ?? ?
je pense délirer la et ne pas comprendre ton systeme (enfin j´espère ! :p)

yophil7
yophil7
Niveau 6
16 novembre 2006 à 18:23:56

Enfait, pour ce qui est de l´annimation au lieu de tout combiner les possibilités, on prendra (ex: un vetement) et on fera tous les annimation qu´il peut y avoir avec, ensuite durant le jeu tout es combiné, mais pour le fait que le jeu soit considéré comme 2D par la carte graphique, ce que je voulais dire c´est que puisque le jeu n´utilise des ressources 2D, le moteur se cargera de créer une "illusion", mais du coté technique ca peut toujours changer (pour l´instant, je travaille sur le concept) et pour ce qui est de la camera, ce sera a la premiere personne.

pasdebol37
pasdebol37
Niveau 10
16 novembre 2006 à 18:46:49

Merci Fvirtman pour toutes ces précisions :)

LGV
LGV
Niveau 28
16 novembre 2006 à 19:25:00

"il est préférable de le générer a partir d´un BMP, et non d´importer un Mesh de Heigmap"

tearing sur les zones de fortes pentes, avec une grille reguliere

pour une heightmap basique, ca fait l´affaire, et on n´est pas trop regardant sur la qualite..

pour des choses un peu plus fines:
- re-parametrisation des splines de coupe du terrain (arc-length param, niveau + gradient, etc.)
- import de mesh (si si)
- voxel & marching cubes (> extraction d´iso surfaces)
- "volume material"
- etc.

faire un terrain de bonne qualite est qqch de COMPLIQUE ; mais on peut s´en tirer a peu de frais si on se satisfait de solutions simples

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware