poiuytrez3
Messages postés150Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention17 mars 2009
-
24 nov. 2005 à 15:24
poiuytrez3
Messages postés150Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention17 mars 2009
-
29 déc. 2005 à 14:21
Bonjour,
je souhaiterai créer un petit moteur 3D le plus simple possible en
partant de rien. Quelqu'un en a t il déjà fait un? Je ne souhaite pas
utiliser DirectX ni OpenGL.
nightlord666
Messages postés746Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 mai 200710 28 déc. 2005 à 21:41
J'ai vu sur developpez.com un super tutorial la dessus. Il aborde la création d'un moteur 3D (outils de log, gestionnaire de mémoire, rendering, shaders...). Je te conseillerais de regarder ça, ç'est peut-être interessant...
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 24 nov. 2005 à 16:47
Bah, je vois pas trop le problème ?
Où est-ce que tu bloques ?
Commence par faire un moteur tout bête qui n'affiche que des polygones unicolor sans aucun calcul d'eclairage.
Ensuite tu pourras ajouter des normales pour le calcul des lumières,
puis des coordonnées textures pour ..... gerer ... oui c'est ça merci,
des textures.
Enfin bref, qu'est ce qui te pose problème ?
Connais-tu le C++, as-tu déja fait un moteur 3D avec DirectX ou opengl ? Sais-tu comment ça fonctionne exactement ?
Sais-tu comment t'y prendre pour afficher des pixels à l'écran ? etc...
poiuytrez3
Messages postés150Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention17 mars 2009 24 nov. 2005 à 20:07
Je ne vois pas bien comment programmer tout ça... la camera, comment faire les calculs... enfin bon, j'ai beaucoup de mal au niveau de la conception. Je ne sais pas par où commencer, comment structurer le prog. Si tu pouvais m'aguiller ce serai sympa.
Sinon je sais comment m'y prendre pour afficher des pixel, etc.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 27 nov. 2005 à 17:38
Ce n'est pas que c'est compliqué mais il est nécessaire d'avoir de
bonnes connaissances en mathématiques, en algèbre linéaire plus
précisement.
C'est bien trop complexe pour rédiger tout ici. Je ne connais pas ton niveau.
En gros tu as ton point en 3D avec des coordonnées (x,y,z) dans le
repère local (associé à l'objet). Tu dois lui appliquer la
transformation qui te donne sa position dans le monde. Puis tu le
projetes pour récupérer les coordonnées (x,y) sur l'écran.
Regarde dans MSDN les description des matrices
D3DXMatrixPerspectiveFovLH
D3DXMatrixLookAtLH
pour la projection.
Niveau structure du programme, vu que tu n'utilises pas le hardware, tu
peux profiter de l'énorme quantité de RAM, je te conseille de séparer
les fonctions ainsi:
Tu fais une fonction qui te remplit un tableau de point 2D à partir
d'un tableau de point 3D résultants de la
projection*transformation.
Ensuite tu n'as plus qu'à gerer l'affichage avec une autre fonction.
Tu lis ton tableau de point 2D et tes faces (chacune 3 indices des
points 3D/2D) que tu affiches avec ta fonction de remplissage de
triangle.
C'est vraiment pas compliqué quand on a des bases en algèbre. Il y a même des moteurs 3D sur calculatrice (j'en ai fait un).
Le programme est trop court pour se rater dans sa structure.
Pourquoi ne veux-tu pas profiter de l'accélération matérielle que permet DirectX par exemple ?
Si tu veux devenir un daron de la 3D, commence par utiliser DirectX ou
OpenGL, fais des copier-coller, tatonne en modifiant certaines valeurs,
puis tu comprendras bien comment ça fonctionne.
Je suis sûr que tu ne voudras plus revenir sur un moteur 3D sur PC avec accélération logicielle.
PS: je crois qu'il y a des sources sur ce site qui peuvent t'interesser.
Vous n’avez pas trouvé la réponse que vous recherchez ?
poiuytrez3
Messages postés150Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention17 mars 2009 29 déc. 2005 à 14:21
Merci, je l'ai déjà lu, mais il est beaucoup trop léger... Sinon pour répondre à Gazima, je ne peux et veux pas utiliser directX car c'est un projet pour mon école d'ingénieur.