De rien, le fait que ça vous interesse me fait plaisir, autant partager
J'ai refais l'archive avec les sources réorganisées, spécifiées et un poil modifiées, ça devrait être beaucoup plus lisible.
Toujours le même lien : http://ns.gratteur.free.fr/Autre/Moteur3D.zip
Cpl.Bator je suis interessé par ce que tu as fais puisque je n'ai pas encore attaqué les déplacements ni les déplacements de caméra (les matrices me répugnent un peu), tu as implémenté le clipping 3D pour éviter d'afficher ce qui est derrière la caméra et ce qui te tape dans l'oeil (vive les divisions par 0, ceux qui ont essayé de la projection comprendront) ?
Edit : Je viens de résoudre un petit bug qui foutait en l'air les éclairages, le résultat est désormais plutot pas mal et le lissage des facettes fonctionne enfin, regardez plutot :
non , je n'ai pas implémenté le clipping, à vrai dire je ne l'ai jamais vraiment fait, c'était plus de la bidouille qu'autre chose ^^
je testais le point moyen d'une face[z=(P1->Z + P2->Z + P3->Z)] , et si <0 je ne l'affiche pas.
je met les sources au propre se week end pour les caméras et je balance ici.
Dans ce code tu as deux sinus et cosinus pour le même angle... Sinon il est possible d'apporter des optimisations supplémentaires en assembleur, avec par exemple l'instruction du FPU qui calcule le cosinus et le sinus en même temps...
FSIN et FCOS prennent au mieux 257 cycles processeur et au pire 354.
Si on doit calculer Sin et Cos d'un angle ca fait au mieux 514 cycles.
Si on utilise FSINCOS on aura toujours au pire 365 cycles.
Voila mes sources, cepandant ca déconne un peu au niveau du rendu du terrain en Flat, je défini mal les faces (Terrain.pbi)
le rendu se fait dans "Camera.pbi" , les opérations sur les mesh dans mesh.pbi
je vous laisse jetez un oeil, si vous z'avez des questions, j'chui là ^^
Dri, essaye , si tu peut de voir comment adaptez ton code asm dans les procédure Matrice_rotateXYZ(x,y,z) , j'ai 3 variables en paramètre (4 avec la matrice pointée)
merci, j'ai essayé de faire au plus simple, pour les cos/sin précalculé j'y ai pensé mais ca déconne lors des rotations, je vais voir ce qe je peut faire
P.S. Avec une table de valeur précalculé, c'est impossible d'avoir de la précision. À moins d'être hyper chanceux et de tomber toujours sur des valeurs entières pour les angles. Dès l'instant que l'on a besoin d'un angle du genre : 25.5° on a toujours +/- 0.5° d'erreur qui s'accumule.