Salut,
J´ai récemment décidé avec un pote de tenter un petit jeu en 3D sous Windows en utilisant Visual Studio et un logiciel 3D comme Studio Max en tant qu´environnement de travail (enfin quand je dis "jeu" je veux plutôt dire "niveau" histoire de voir plus humblement ce que ça donne...)
Je suis étudiant en IUT info (je vais rentrer dans ma deuxième année) donc j´ai de bonnes bases en C++, lui est plutôt dans le graphisme et l´infographie, les montages, etc...
Notre idée est de créer d´une part les éléments graphiques d´un niveau avec tout ce qu´ils comporte (l´architecture, les éclairages, les textures, et les personnages) avec le logiciel de 3D, et d´autre part de coder le programme en C++ pour y integrer les scripts nécessaires (on pense faire un truc du genre Doom-Like pour le gameplay.)
J´ai deux questions :
1) Comment faire pour importer les éléments 3D du logiciel en OpenGL (langage que je compte utiliser avec la librairie GLUT) pour que je n´ai pas besoin de tout redessiner mais juste d´intègrer les éléments graphiques (avec les textures, lumières et tout) à la scène ?
2) Est-ce de cette manière qu´un jeu-vidéo est "normalement" crée par des professionnels ?
PS: je ne vous cache pas que mon ami et moi avons l´ambition à long terme au final de nos études de bosser dans le jeu-vidéo (lui plus le cinéma mais bon^^)
Merci à tous ceux qui me répondront ![]()
Si tu utilisais quelque chose de moins vieux que GLUT pour amorcer openGL, tu aurais des fonctions LoadBMP pour importer les textures par exemples, déja
certains professionnels utilisent en effet OpenGL (John Carmack pour les Quake par exemple)
mais plus du tout GLUT ![]()
Ok
Je dis GLUT mais c´est pas définitif comme choix, alors si vous avez des conseils pour m´aider, quelque chose de plus utilisé à l´heure actuelle car plus fiable et polyvalent, merci de me le dire ^^
![]()
SDL
exemple :
ma carte -> mon site -> tutoC++ §3.1
(je te conseille de faire un tour par le §2.0 avant)
Merci bien JeanYvesYves
J´ai fait un tour sur ton site qui est pas mal du tout (j´avais déjà du te le dire auparavant
.) et c´est clair et très bien expliqué (au niveau des tutos.) Par contre j´ai un problème, concernant ton deuxième exemple avec la SDL, le code compile nickel sauf que l´écran qui doit afficher une image qui bouge (intitulé du tuto) est tout simplement noir et vierge : bizarre. D´autant plus qu´en insistant, j´ai fait ramer mon pc (je précise que le premier exemple de l´image fixe marche très bien par contre.)
Enfin, ma question était aussi (et surtout) de réussir à importer des éléments 3D en OpenGL.
Je sais maintenant que j´utilise la SDL dont j´ai compris le principe mais je ne sais toujours pas comment faire pour l´importation.
Encore merci ![]()
Bonjour,
malheuresement, il n´y a pas vraiment de facon simple pour importer des objets lorsque l´on est novice.
La premiere etape est de sauver l´objet 3D cree par le logiciel d´infographie dans un format que l´on sais lire.
Puis dans le code du jeu, lire le fichier pour le transformer en elements comprehensibles par OpenGL : Liste de vertexs, materials, texutres ...
Il y a peut etre sur le net des libraires concue pour importer des fichiers generés par ton logiciel d´infographie, une recherche sur google va s´imposer. Dans le cas contraire il te faudra au moins cree ta propre librairie d´importation, et au pire l´exportateur aussi.
Rien que du bon quoi !
Je te conseil tout de meme Blender, il te permettera de cree tres facilement un exportateur (via Python) histoire de faire un format de fichier facile et adapté.
Du C++, de la 3D, quoi de mieux pour progresser ?
Merci Kouic
C´est vrai que ça reste très flou pour moi et c´est rageant parce que je pourrais faire quelque chose, sachant que j´ai des notions en programmation !
alex6891 > si ton écran reste noir pendant le 2e tuto, c´est peut etre parce que tu as des problemes avec la VRAM : essaie de modifier le code pour mettre l´image en RAM.
Ou alors trace le probleme : tu dois avoir un LoadImage qui te renvoie NULL
Qui sait, peut etre as tu simplement oublié de mettre toutes les images appelées dans le bon répertoire ?
Pour l´importation des modeles 3D : comme te dit Kouic, il te faut un format que tu connaisses.
Quel format veux tu importer ? quelle est l´extention de tes modeles que tu souhaitres importer ?
Sois sur que les lib existent !
Sinon,
- si tu es capable de me dire quel modele tu veux importer (extention, et si tu as des exemples a m´envoyer bien bien)
- si tu me trouve le codage de ce type de fichiers (codage clair)
- si j´ai le temps et la patience
peut etre que je me ferai une petite classe de récupération pour tester (ce serait sympa a mettre sur mon site ça)
on verra...
Oui ça me ferais plaisir de participer à ton site JeanYvesYves
En fait le truc c´est que je ne connait pas encore de façon définitive le format que je veux importer (j´entends par là que si mon pote travaille sous 3DsMax l´export peut sans doute se faire sous plein de formats différents : une préférence pour l´un d´eux ?. ..)
Sous Blender (je n´ai moi-même pas 3DsMAX) les formats d´export sont .ase et .obj après le mieux serait d´avoir l´avis d´une personne qui a déjà procédé de cette façon pour créer un jeu histoire de savoir quel format choisir et pourquoi le choisir lui plutôt qu´un autre...
Du nouveau :
Avec mon ami, on a testé plusieurs format d´export à partir de 3DSMax et le format ASE est lisible (avec un simple éditeur de texte.) A partir de ça, comment faire pour "intégrer" tout ça dans un univers créé avec la SDL en C++ ?
N´importe quelle piste serait la bienvenue...
il te faut parser les fichiers pour y lire les infos dont tu as besoin (i.e. sommets, faces, listes de triangles, voisinnage, normales, texture mapping, et tout le reste, comme les bones pour les animations, etc.)
Tu peux alors stocker ces infos dans des structures de donnees propres a ton programme ; une fois que tu as la geometrie et les materiaux, il n´y a qu´a generer des flux de donnees intelligibles par l´API 3D que tu utilises (en gros, tu vas iterer sur tes donnees et faire des glVertex3f et autres commandes a tout bout de champs)
commence par un truc simple : geometrie basique (i.e. sommets et listes de triangles seulement), et complexifie au fur et mesure, en fonction de ce dont tu as besoin dans ton programme
J´ai récemment entendu dire (mais je n´en ai pas eu la preuve) qu´on pouvais importer directement un modèle de 3DSMax avec l´extension .mesh dans du code (en utilisant le moteur 3D Ogre)
Est-ce que certains peuvent confirmer ?
Merci
Je confirme.
Actuellement:
Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );
Crée l´entité et charge le mesh robot.mesh
Mais oui il faut bien sûr utiliser les librairies d´Ogre3D. (Lesquelles contiennent sûrement un parser/loader de mesh fait a la mano).
Un ´tit check du manuel pour voir ?
http://www.ogre3d.org/docs/manual/
Mwarf, en fait c´est vrai mais pas exact.
Il est écrit quelque part dans la doc que les mesh sont préloadés depuis ExampleApplication.h qui est le header qu´on indique au préproc. Donc a priori la création d´entité et le loading du mesh est l´affaire d´une autre fonction ailleurs.
Toujours est-il que la méthode dans ExempleApplication.h semble charger toutes les ressources situés au path précisé dans le fichier de conf. Lequel ramène au folder des meshes..
Bref, peut etre que placer le mesh voulu dans ce folder, puis appeller le nom via la fonction de création d´entité fonctionne, mais ça peut aussi etre une affaire différente ou une methode est bien distincte pour loader un mesh, chose que je n´ai pas vu puisque c´est probablement dans un autre header attaché a ExempleApplication.h et que je vais pour l´instant pas explorer toute l´API..
=/
Si tu veux juste importer des object 3D sous openGL j´ai une classe CMesh a te proposer, c´est une classe qui load et affiche un mesh au format .x
Oui tomtomClancy ça m´interesse.
...mais c´est quoi le format .x ?
C´est le format des exemple directX me semble il non ?
oui c´est aussi le format des mesh de directX, mais c´est un format generique qu´on utilise.
deepExploration te converti tes .3ds en .x
autant pour moi ruffi viens de me rappeler que la fonction c´est pour loader les .3ds et non .x ![]()
le format .X est entierement documente (et facilement extensible) dans la doc du SDK DirectX ; ecrire un parser autre que celui fournit ne presente pas de difficulte, seulement un peu de temps.