J'aurais besoin qu'on m'éclaire sur les indices d'un node.
Sur le modèle de l'exemple 3 du tuto officiel, j'ai voulu afficher un cube. Donc je définis mes 8 vertex à différentes positions puis je remplis les indices manuellement. Je lance mon programme et là patatras : tous les triangles ne sont pas dans le même "sens". Certains ne semblent pas avoir la même normale que les autres. Je tente donc de modifier mes normales mais le résultat est toujours le même. Dans une tentative désespérée, je retape mes indices et là oh miracle : un triangle s'est retourné .
J'en viens donc à ma question : Est-ce normal que la normale s'inverse en inversant l'ordre des indices ? (si c'est le cas alors je n'ai vraiment rien compris aux indices) J'entends par là remplacer 1,2,3 par 3,2,1 dans la liste d'indices et non interchanger leur place dans la liste.
Hors ligne
Zorian :
J'en viens donc à ma question : Est-ce normal que la normale s'inverse en inversant l'ordre des indices ?
heu oui, ou non. mais pour mieux comprendre, un bout de code serait le bienvenue, je suis sur que d'un coups d'oeil on pourrait très vite trouver
le soucis
Hors ligne
Bonjour, je crois que c'est une histoire sens horaire ou anti-horaire.
Dernière modification par lucky56 (04-11-2009 00:39:24)
Hors ligne
Voilà mon carré :
0________1
| |
| |
| |
2________3
Et voilà mon code :
//la liste d'indices u16 indices[] = {0,1,2, 1,2,3}; video::IVideoDriver *driver = SceneManager->getVideoDriver(); driver->setMaterial(Material); driver->setTransform(video::ETS_WORLD, AbsoluteTransformation); driver->drawIndexedTriangleList(&Vertices[0], 4, &indices[0], 2);
et le résultat est que les 2 triangles 0,1,2 et 1,2,3 ne sont pas dans le même sens.
Mais si
u16 indices[] = {0,1,2, 1,2,3};
devient
u16 indices[] = {0,1,2, 3,2,1};
alors là mes deux triangles sont dans le même sens
@lucky56
A voir ma figure je pense bien qu'il s'agisse d'un problème de sens horaire anti-horaire comme tu l'as si bien indiqué.
Dernière modification par Zorian (04-11-2009 09:47:52)
Hors ligne
A voir ma figure je pense bien qu'il s'agisse d'un problème de sens horaire anti-horaire comme tu l'as si bien indiqué.
sur des face 'façonnées' à la main, c'est souvent l'un des casses têtes
Sinon, si tes info sont juste, personnelement la serie d'indice {0,1,2, 1,2,3 } ne permet pas chez moi une bonne représentation. Mais dans ce cas il ne
s'agit pas vraiment d'un soucis lié aux normales mais plutôt au back face cullin, ce qui n'est pas la même chose.
La serie d'indice {0,1,2, 3,2,1} par contre fonctionne mieux
Hors ligne
Merci pour ces réponses je vais voir ce que google me dit sur le backface culling
EDIT : j'ai trouvé la solution en désactivant le backface culling les 2 faces de chaque triangle sont affichées sans prendre en compte l'ordre des sommets qui le composent
Dernière modification par Zorian (04-11-2009 21:28:29)
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 37 invités en ligne Aucun membre connecté RSS Feed |