Moteur 3d software sous windows (+exe)

Soyez le premier à donner votre avis sur cette source.

Vue 6 752 fois - Téléchargée 1 160 fois

Description

He ça fait plaisir de poster a nouveau!
Bon la voila le projet non terminé (mais tout de même assez avancé puisqu'il y a presque 90 ko de sources...) de moteur 3D entièrement software sous Windows (compilé avec VC++ 6)
il gère depuis la gestion de fichiers ascii 3D Studio Max jusqu'a l'affichage en gouraud. gestion de plusieurs sources de lumiere, des tranfo geometriques etc.
tout cela pourrait sembler inutile, vu qu'il existe des bib specialisees comme Direct3D ou OpenGL qui font ça très bien et utilisent les ressources matérielles spécifiques des cartes 3D (ce que mon prog ne peut pas faire), mais créer un moteur 3D de toute pièce, du simple affichage du point jusqu'au calcul des ombrages ou plaquages des textures, est très intéressant et très instructif.
Sinon c'est pas fini (de toute façon un moteur 3D n'est jamais fini), mais je pense que je reprendrai ce projet un jour ou l'autre. voila

Source / Exemple :


// tout dans le zip (sources, models, exe)

Conclusion :


Les sources sont assez commentées, donc vous derviez pas avoir trop de problèmes à vous y retrouver. Par contre, je les ai commentées en anglais...
Sous VC++, créez un projet et mettez y toutes les sources de l'archive (8 *.h, 8 *.c). Puis compilez.
Vous pouvez rajouter des objets, des sources de lumiere, ou rajouter des transfo geometriques auto (par ex, l'objet tourne autour d'un de ses axes). si vous avez un pb (les sources sont peu commentees, et un peu fouillis vu que le projet est en construction), prevenez moi, j'essaierai de vous aider

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

J'étais étonné pour les float >< double, il me semblait que c'était une idée reçue, mais pour le Pentium III en tout cas, tu sembles bien avoir raison:

"This table shows performance relative to a standard 32-bit assignment operation (value 1.00). Larger numbers indicate better performance. A value of 2.0 would be twice as fast as 32-bit assignment. A value of 0.5 would be twice as slow."

http://www.tantalon.com/pete/cppopt/appendix.htm#AppendixB

" Float operations are typically 1.5 to 2 times faster than double operations. If you can afford the loss of precision, float is the best floating-point type."

Intéressant aussi: les temps de conversions entre types (même page, appendice C)
Messages postés
1
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
25 février 2006

Bonjour. Je ne pense pas que beaucoup de gens liront ce topic, mais je tenais à dire que j'ai étudié cette source, et que la fonction chargée du remplissage des polygones peut être largement optimisée. Tout d'abord, si on veut à tout prix utiliser des nombres réels, il vaut mieux, pour le calcul des pentes du triangles, utiliser des floats au lieu de double. Deuxièmement, allouer et désallouer un tableau de repères de scanlines à chaque appel de la fonction de remplissage de polygônes est coûteux en temps machine, mieux vaut déclarer deux tableaux globaux, ou au moins les passer par adresse pour les réfractaires aux variables globales. Ensuite, on peut tout simplement se passer des nombres entiers pour ce genre d'algorithmes, en utilisant la méthode du "fixed point math" (google, "fixed point math"). Cette méthode permet d'utiliser des entiers comme si c'était des flottants, en découpant virtuellement les entiers en deux parties (partie fractionaire, partie entière). Ensuite, la fonction de traçage d'une ligne horizontale peut être inclue directement dans la routine de remplissage, on gagne en rapidité. Evidemment, le "fixed point math" peut s'appliquer à tous les calculs 3D. Je reste volontairement vague en ne fournissant pas d'exemples, car je ne suis pas sûr que ce topic intéresse quelqu'un, vue l'ancienneté du post. Si je vois que ma petite prose intéresse quelqu'un, je fournirais un exemple pratique avec SDL, afin que les utilisateurs puissent compiler mon code sous windows, linux, atari, etc ... Bonne lecture (pour ceux qui lisent). Dernier point : Je n'ai pas eu l'idée de faire ces optimisations tout seul, j'ai juste récupéré et synthétisé des infos sur le net. Dernière minute : Pour une bonne compréhension du "fixed point math", je recommande humblement de lire le code source de la bibliothèque allegro.

djulzz
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

DarkBoss ramèn pè é trankilité sur ce forum !!!
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
Pas de grossierete merci !
Messages postés
192
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
31 janvier 2007

Hey Haldwin ... TA GEULE !!! c'est bien la concurence ... ca fait des meilleures sources car ils veulent etre meilleure que l'ancienne ...
Afficher les 23 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.