begin process at 2012 05 30 12:09:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Structure d'un moteur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Structure d'un moteur

jeudi 25 janvier 2007 à 18:48:39 | Structure d'un moteur

Skyffer3

Membre Club

   Bonjour à tous. Je suis un debutant en c++ et en programmation 3d, mais j'avance très vite grâce à d'excellents sites que j'ai trouvé. Sinon je programmais déjà en java donc je ne suis pas un neophyte complet en programmation . Voici pour l'intro.

   Voulant progresser dans les domaines c++ et programmation 3d j'ai décidé de faire moi même un moteur 3d, qui resterait très modeste, rassurez vous je ne compte pas refaire ogre en mieux lol.
Eh oui, je pense que réinventer la roue est très utile pour progresser en c++ et pour ensuite mieux se servir d'un véritable moteur 3d performant, ou pour coder des jeux 3d très basiques simplement grâce à un moteur que je connaîterais par coeur puisque c'est moi qui l'aurait codé .
    Mon moteur serait codé en 3d avec opengl puisque j''ai trouvé d'excellents tutoriaux dessus, de plus il serait en accord parfait avec la sdl pour l'implementation de opengl, en effet les deux sont portables.

   Venons aux problèmes : j'ai cherché de la documentation sur comment bien structurer un moteur 3d et je n'ai trouvé que peu d'informations qui m'ont conduit à la structure et l'organisation suivante de mon moteur. En effet je ne veux pas commencer à coder sans savoir clairement où je vais, sinon je risquerais de me planter à un moment et de devoir tout refaire parce que je n'avais pas prévu un truc.

    Structure du moteur en très résumé :  (la vrai structure du moteur est plus complète que ça sur papier rassurez vous (texture, lumiere,...)

une classe principal nommé Rendu serait le gestionnaire de base du moteur. Ce serait le noeud principal qui comprendrait donc des coordonnées et une orientation précise dans l'espace. Cette classe dériverait d'autres classes comme celle de la gestion de la caméra ou la classe Affichage. En clair, je cree un noeud (une instance de la classe Rendu), je le place, je creer un cube par ex à cet endroit avec une camera, et des que je bouge les coordonnes de ma classe rendu, je redessine tous les objets liees à ma classe (mon noeud),  la camera et le cube bougent donc en meme temps.

Le problème se situe au niveau de ma classe que j'ai nommé Affichage. En clair elle récupéreait des vertex qui formeraient des polygones pour faire des objets 3d. Mais comment les envoyer à ma classe Rendu (mon noeud) pour qu'elle affiche ces solides. Sous forme de tableau à 3 dimensions (x y z) ou bien sous forme de structure struct Vertex et struct Polygon.

De plus une fonction renvoyant une structure n'existe pas, ou bien comment faire ?
Enfin si je fais un AfficheCube(largeur,longueur,profondeur,...) pour afficher un cube par exemple, et que j'arrive à renvoyer les coordonnées à Rendu, qui les stockeraient dans une structure ou un tableau pour els afficher, si je fais une deuxieme fois un AfficheCube(largeur,...), il va supprimmer le premier et le remplacer par le deuxieme; puisque je n'aurais qu'une seule structure ou tableau à 3 dimensions dans rendu où seront enregistrées les coordonnées.


Où alors peut etre que ma structure du moteur est totalement erroné, dans ce cas si vous pouviez m'aiguiller vers une bonne structure pour un moteur 3d, car la doc la dessus est tres dur a trouver même en anglais.

Merci d'avoir pris le temps de tout lire, je sais sûrement que je n'ai pas dû être clair sur certains points mais mon problème est dur à expliquer.

Merci d'avance à ceux qui prendront le temps de me répondre

++ et bonne prog

jeudi 25 janvier 2007 à 19:06:14 | Re : Structure d'un moteur

laurent1024

Membre Club
je sais pas si tu as deja vu ce lien http://loulou.developpez.com/tutoriels/moteur3d/ mais ca peut t'aider je pense. bon courage pour la programmation de ton moteur.
++
jeudi 25 janvier 2007 à 19:19:07 | Re : Structure d'un moteur

Skyffer3

Membre Club
Effectivement je connais ce lien, mais malheureusement je pense qu'il est encore d'un niveau trop élevé pour moi. J'ai regardé pour m'inspirer de certaines classes et un peu de la structure mais il m'aidera beaucoup plus un peu plus tard, quand j'aurais plus d'experience avec la programmation 3d.

Merci quand même

++ et bonne prog

jeudi 25 janvier 2007 à 20:11:06 | Re : Structure d'un moteur

yann_lo_san

Salut,
Tu dis :
"De plus une fonction renvoyant une structure n'existe pas, ou bien comment faire ?"
On peut bien sur renvoyer une struct par valeur ou par ref (pointeur).

En général tu aura une classe Objet3d contenant les vertices, les positions, les distances, les vitesses ect...
Et une fonction de rendu qui bouclera sur tous les objets Objet3d et les affichera après les avoir trié.
Donc tu aura un tableau d'objet3d[] dans ta classe Affichage.

Si tu es intéressé par un mini moteur d'affichage sans lib externes (tout fait à la main) :
http://www.cppfrance.com/codes/VIEWER3D-CPLUSPLUS-WIN32-LIT-FICHIERS-ASE-3DSMAX_39484.aspx


Ce n'est pas un moteur pour faire des jeux mais d'affichage simplement.

jeudi 25 janvier 2007 à 20:32:28 | Re : Structure d'un moteur

Skyffer3

Membre Club
Cette idée est bonne comme je disais, mais le problème reste de renvoyer à la classe Rendu les positions les distances les coordonnées,... 
avec un tableau [] d'objet3d comme tu dis, mais on ne connait pas sa taille puisque l'utilisateur pourra rajouter autant d'objet qu'il le souhaite, alors comment l'initialiser ? En lui donnant une valeur limite comme 50 objets maximum ou existe-t-il des tableaux dynamiques en c++

Enfin ces tableaux d'objets 3d pointeront sur des structure de vertex ou sur des tableaux 3d contenant les coordonnees x, y et z des vertex ? Je pense que les structures sont plus pratiques à utiliser mais j'attends vos avis



++ et bonne prog

PS : si tu pouvais me donner un exemple de code renvoyant un nouveau pointeur sur une structure dès que la fonction est appelé

par ex: dès que affichecube est appelé, il crée une nouvelle instance d'une structure struct vertex  et y stocke les vertex, ...

Parce que le problème est que des que affichecube sera appelé deux fois, il creera le meme pointeur vers la structure, et donc on ne resout pas le probleme puisqu'on supprimme l'ancien pointeur pour mettre les coordonnes du nouveau solide dans le nouveau pointeur de la structure

Ou alors j'ai vraiment rien compris au principe (mais c'est pas grave je suis la pour apprendre lol

jeudi 25 janvier 2007 à 20:52:40 | Re : Structure d'un moteur

yann_lo_san

Je pense que tu fais une erreur de logique dans ton raisonnement.
afficheCube ne doit pas exister !


// construit un objet 3d (cube ou sphere ou n'importe)
Objet3d monObjet3d(x, y, z, ect....);

et :

afficheObjet(monObjet3d); // n'importe quel objet

Sur la base d'une struct ou class

struct objet3d
{
      int nombreFace;
      VERTEX vertices;
      int x, y, z;
      float dist;
      ect...
};

jeudi 25 janvier 2007 à 21:02:22 | Re : Structure d'un moteur

Skyffer3

Membre Club
Donc en fait je cree une structure nouvel objet que je cree si j'ai bien compris ?

Merci beaucoup, si c'est ca je vais m'orienter vers cette piste

++ et bonne prog

jeudi 25 janvier 2007 à 21:07:52 | Re : Structure d'un moteur

yann_lo_san

Non, elle est créée qu'une seule fois !
Ses attributs interne changent, mais pas l'instance de cette struct.
C'est le principe d'un objet à état changeant.

jeudi 25 janvier 2007 à 21:14:17 | Re : Structure d'un moteur

Skyffer3

Membre Club
Mais si je cree un cube que j'affiche, puis je modifie les attributs internes de mon instance de la structure, j'affiche une sphere maintenant , et maintenant j'aimerais afficher le premier cube en changeant juste la position, je dois tout reecrire puis que j'ai modifié ses attributs avec le deuxieme objet que j'ai affiche

Je ne peux plus retrouve toutes ses valeurs ?

++ et bonne prog

jeudi 25 janvier 2007 à 21:20:45 | Re : Structure d'un moteur

yann_lo_san

Mais non,
y'a une instance de la struct pour 1 cube, une instance pour une sphere, une instance pour n'importe quel objet ect....

objet3d mesObjets[1000];

mesObjets[0] = cube;
mesObjets[1] = sphere;

afficheObjetUnitaire(mesObjet[0])
{
      // affiche le cube
}

afficheObjetUnitaire(mesObjet[1])
{
      // affiche sphere
}

modifi le cube :  mesObjets[0].coord.x = 10;

afficheObjetUnitaire(mesObjets[0])
{
      // affiche cube modifié
}


1 2

Cette discussion est classée dans : 3d, classe, structure, moteur, rendu


Répondre à ce message

Sujets en rapport avec ce message

Moteur 3D, gestion des collisions [ par fabienGL ] Bonjour, je vous écris car j'ai 2 question :1)OpenGL c'est une librairies graphiques, pourtant entends-t-on parler de moteurs 3D j'aurais aimé savoir comment faire un moteur 3d [ par 33roumi ] je voudrai savoir les base pour faire un moteur 3Den open gl ou direct Xcar j'ai bo lire vo message mais j'i comprend riendites moi o moin la directiv moteur 3d [ par FleXus ] Bonjour Je suis à la recherche d'un moteur 3d capable de génererdu "3d landscape rendering" ( comme truevision3d www.truvision3dsdk.com ) mais étant c Moteur 3d OpenGL [ par Stormy ] Salut. Je recherche des personnes motives pour travailler sur un moteur 3d sous OpenGL. Les bases sont deja etablies (Detection de collisions, sons, m Moteur 3D isométrique [ par cyberlewis ] Slt,J'ai réalisé le début d'un moteur de jeu 3D isométrique (tiles 64x32), mais je n'arrive pas du tout à gérer le scrolling ...Ou puis-je trouve svp Structure dans une classe [ par briscard ] Hello world!!A ton le droit de passer une structure du type: struct { char *Gamma = new char[3]; char *Phase = new char[3]; }donnee;dans u Moteur 3d [ par xarier ] Please est ce quelqu'un a un lien au une doc ou je peut trouvé comment réalisé un moteur 3d en opengl doc +source qs merciXarier@hotmail.comhttp://ww 3D ENGINE [ par xarier ] SALUT VOILA j'ai deux question la premiere c comment realiser un moteur 3d c vous avez des cours c simpa et surtot avec opengl 2eme question est ce qu ca existe un moteur 3d directx en C et pas C++? [ par yerick ] j'ai beau cherché je ne trouve pas.meme pas une petite librairie.ya pas quelqu'un qui pourrait pondre un petit moteur 3d (meme tres simple) qui utilis


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,500 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales