#0 

03-11-2009 20:49:08

Zorian
Correcteur
Date d'inscription: 12-05-2009
Messages: 19
Corrections: 181

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é smile.

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.


Real Programmers Don't Document - If it was hard to write, it should be hard to understand.

Hors ligne


#1 

03-11-2009 21:25:04

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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  wink


Force et sagesse...

Hors ligne


#2 

04-11-2009 00:38:53

lucky56
Petit nouveau
Date d'inscription: 21-06-2007
Messages: 4

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


#3 

04-11-2009 09:42:56

Zorian
Correcteur
Date d'inscription: 12-05-2009
Messages: 19
Corrections: 181

Voilà mon carré :
0________1
|               |
|               |
|               |
2________3

Et voilà mon code :

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

Code:

u16 indices[] = {0,1,2, 1,2,3};

devient

Code:

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)


Real Programmers Don't Document - If it was hard to write, it should be hard to understand.

Hors ligne


#4 

04-11-2009 11:57:05

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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 wink

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 wink


Force et sagesse...

Hors ligne


#5 

04-11-2009 13:26:32

Zorian
Correcteur
Date d'inscription: 12-05-2009
Messages: 19
Corrections: 181

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)


Real Programmers Don't Document - If it was hard to write, it should be hard to understand.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
121 invités en ligne
Aucun membre connecté
RSS Feed