Création d'un moteur 3D en partant de rien

poiuytrez3 Messages postés 150 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 17 mars 2009 - 24 nov. 2005 à 15:24
poiuytrez3 Messages postés 150 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 17 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.



Merci de votre aide.

5 réponses

nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
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...
1
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
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...
0
poiuytrez3 Messages postés 150 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 17 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.
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
poiuytrez3 Messages postés 150 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 17 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.
0
Rejoignez-nous