CACHER LA FACE D'UN CUBE

tomart2005 Messages postés 6 Date d'inscription lundi 15 mai 2006 Statut Membre Dernière intervention 19 janvier 2007 - 25 oct. 2006 à 16:04
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 - 26 oct. 2006 à 14:13
bonjour,

j'aimerai "cacher" (ne pas afficher quoi) la face d'un cube en rotation 3d lorsque celle ci se situe derriere les faces avant. Si quelqu'un a une doc ou un algo, merci

TOM

2 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
26 oct. 2006 à 13:40
Bonjour tomart2005,

Si tu n'utilises pas de "bibliothèque avancée" telle que opengl.dll ou autre, tu peux utiliser la méthode suivante:
Pour chacune des facettes de ton objet (pour un cube tu auras probablement 6 faces), tu définis un vecteur normal à ta facette et orienté vers l'extérieur (N). Tu détermines également le vecteur reliant l'observateur au centre de la facette (OC).
L'angle entre le vecteur normal et l'axe de visée te permettra de savoir si la face est visible ou non.
Si le produit scalaire OC.N est négatif alors l'objet sera visible, il sera invisible dans le cas contraire.
Nota: si l'axe de visée est définit par le vecteur centre facette vers oeil et non le contraire, il suffit d'inverser les conditions.
Pour définir un vecteur normal à une facette tu peux calculer le produit vectoriel de deux vecteurs non parallèles et appartenant à une facette, typiquement deux côtés consécutifs d'un carré ou deux diagonales.

Si tu utilises opengl ou autre, tu peux définir des couleurs et textures différentes suivant les faces. La face non visible ne seras pas dessinée mais son revers, intérieur à l'objet pourra être vue si l'objet est transparent.

A+
0
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
26 oct. 2006 à 14:13
Rebonjour tomart2005,

J'ai fait la réponse précédente sans avoir vu que tu avais mis une nouvelle source. Je vois que tu utilises opengl couramment. J'ai fait quelques programmes avec cette bibliothèque et j'ai eu du mal à bien gérer l'éclairage des faces. En fait tout est rentré dans l'ordre quand j'ai pris le soin de bien définir les normales pour les facettes.
Dans ton cas, est-ce un problème d'orientation de face ou un problème que la face devrait être cachée par un autre.
Dans le premier cas ce peut être un problème de normale, dans l'autre c'est soit un pb de transparence (qui fait que tu vois ce qui devrait être caché) ou un pb de buffer de profondeur.
Je n'ai pas analysé ta source en détail mais j'ai vu que l'activation du buffer de profondeur
INVOKE glEnable,GL_DEPTH_TEST
ne se trouvait pas dans la procédure InitGL mais plus tard (trop tard?)
Regardes de ce côté.

A+
0
Rejoignez-nous