DEBUT DE MODELEUR 3D

dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 1 juin 2006 à 21:14
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 3 juin 2006 à 11:04
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

dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
3 juin 2006 à 11:04
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.
Mattpbem Messages postés 46 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 31 juillet 2006
3 juin 2006 à 09:06
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
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
1 juin 2006 à 21:14
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!
Rejoignez-nous