DEBUT DE MODELEUR 3D

Signaler
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37810-debut-de-modeleur-3d

Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
Oui c'est difficile a expliquer comme ca...mais tu te rendras compte du probleme plus tard.

Dans des modeleurs tels que 3dsmax ou maya tu as cette implementation des groupes de lissage ( et je suppose dna stous les autres modeleurs 3d).
Et en fait les normales sont plutot associées a chaque triangle car les triangles que tu dessines ont bien souvent des sommets en commun; et si tu veux montrer a l'eclairage une rupture de pente nette comme l'arete d'un cube entre deux faces tu as necessairement besoin de 2 normales (ou plus) par sommet de l'arete...
C'est pour ca que les normales ne doivent pas etre associées aux sommets mais au sommets.
Messages postés
46
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
31 juillet 2006

je n'ai pas bien compris l'histoire du groupe de lissage mais je ferai une recherche google
pour le probléme d'éclairage c'est reglé, il fallait juste éliminer les normales en double(car le cube est fait avec des triangles)
et je fais les normales par vertex car j'utilise des tableaux de vertex(asssocié à un tableau de normals) je ne sais pas comment asssocié les normales à chaque index pourtant je vais devoir le faire pour les coordonnées de texture)
sinon j'ai implémenter un node de transformation(translation,rotation,scale) mais lors d'une rotation+scale mon cube se deforme je ne sais pas pourquoi
maintenant j'essaye de remplacer la gestion des nodes(que je faisais avec QT Xml) par ma propre gestion mais j'ai un probléme avec les strings(depassement mémoire pour des raisons inconnu)
j'updaterai le code quand tout fonctionnera correctement
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
Je ne peux pas tester pour l'instant ton appli mais il y a manifestement un probleme avec les normales de ton parallelépipède...
L'eclairage devrait etre uniforme sur chaque face et ici il y a un espece de degradé...

Cela viens sans doute du fait que pour calculer les normales des sommets tu fais la moyenne des normales des faces qui le ontient...
Ce qu'il faudrais que tu fasses c'est d'implementer des groupes de lissage c'est a dire des groupes de polygones qui dont les normales au sommets sont la moyenne des normales des faces le contenant...les sommets aux extrémités des groupes n'utilisant pas les normales des faces voisines. ( j'espere que c'est comprehensible...c'est pas evident a expliquer avec du texte! :) )

Ainsi dans le cas present tu cré un groupe de lissage par face du parallelépipède qui peuvent etre formées de un ou plusieurs polygones.

Voila bonne continuation!