IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

VertexArray, indices et texCoords


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut VertexArray, indices et texCoords
    salut à tous,

    Après d'intenses moments de réflexion qui ne m'ont pas vraiment aidé, je m'en remet à vous:

    Imaginons:
    J'ai un tableau de vertex (par exemple, dans le cas d'un cube, j'ai donc 8 vertices)
    J'ai également un tableau d'indices de ces vertices, qui contient 12 "faces" (ou plutot 12 triangles) avec une structure face comportant 3 int.

    Bref dans ce cas pas de pb, j'utilise les fonction glEnableClientState, glVertexPointer et glDrawElements pour dessiner la geometrie à l'aide des indices.

    Maintenant, je veux utiliser les coordonnées de textures que contient le modèle de cube:
    Le problème et qu'il n'y a plus 8 coordonnées de texture, mais 24, et que la liste des indices de texture n'est plus dutout la même (ce qui est assez logique puisqu'il n'y a plus 8 vertices)

    Dans ce cas, comment faire pour utiliser les arrays, sachant que je dispose de deux tableaux d'indices ne contenant pas les même infos et deux tableaux de vertices dont un est 4 fois plus grand que l'autre.

    Pour ceux qui n'aurait pas compris, je vous donne la partie du fichier ase du cube texturée qui nous interresse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    *MESH_NUMVERTEX 8
    		*MESH_NUMFACES 12
    		*MESH_VERTEX_LIST {
    			*MESH_VERTEX    0	-5.0000	0.0000	-5.0000
    			*MESH_VERTEX    1	5.0000	0.0000	-5.0000
    			*MESH_VERTEX    2	-5.0000	-0.0000	5.0000
    			*MESH_VERTEX    3	5.0000	-0.0000	5.0000
    			*MESH_VERTEX    4	-5.0000	-10.0000	-5.0000
    			*MESH_VERTEX    5	5.0000	-10.0000	-5.0000
    			*MESH_VERTEX    6	-5.0000	-10.0000	5.0000
    			*MESH_VERTEX    7	5.0000	-10.0000	5.0000
    		}
    		*MESH_FACE_LIST {
    			*MESH_FACE    0:    A:    0 B:    2 C:    3 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 2 	*MESH_MTLID 1
    			*MESH_FACE    1:    A:    3 B:    1 C:    0 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 2 	*MESH_MTLID 1
    			*MESH_FACE    2:    A:    4 B:    5 C:    7 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 3 	*MESH_MTLID 0
    			*MESH_FACE    3:    A:    7 B:    6 C:    4 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 3 	*MESH_MTLID 0
    			*MESH_FACE    4:    A:    0 B:    1 C:    5 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 4 	*MESH_MTLID 4
    			*MESH_FACE    5:    A:    5 B:    4 C:    0 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 4 	*MESH_MTLID 4
    			*MESH_FACE    6:    A:    1 B:    3 C:    7 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 5 	*MESH_MTLID 3
    			*MESH_FACE    7:    A:    7 B:    5 C:    1 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 5 	*MESH_MTLID 3
    			*MESH_FACE    8:    A:    3 B:    2 C:    6 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 6 	*MESH_MTLID 5
    			*MESH_FACE    9:    A:    6 B:    7 C:    3 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 6 	*MESH_MTLID 5
    			*MESH_FACE   10:    A:    2 B:    0 C:    4 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 7 	*MESH_MTLID 2
    			*MESH_FACE   11:    A:    4 B:    6 C:    2 AB:    1 BC:    1 CA:    0	 *MESH_SMOOTHING 7 	*MESH_MTLID 2
    		}
    		*MESH_NUMTVERTEX 24
    		*MESH_TVERTLIST {
    			*MESH_TVERT 0	0.6227	0.3438	0.0000
    			*MESH_TVERT 1	0.3400	0.3438	0.0000
    			*MESH_TVERT 2	0.6227	0.6264	0.0000
    			*MESH_TVERT 3	0.3400	0.6264	0.0000
    			*MESH_TVERT 4	0.3400	0.3438	0.0000
    			*MESH_TVERT 5	0.6227	0.3438	0.0000
    			*MESH_TVERT 6	0.3400	0.6264	0.0000
    			*MESH_TVERT 7	0.6227	0.6264	0.0000
    			*MESH_TVERT 8	0.3645	0.0587	0.0000
    			*MESH_TVERT 9	0.5982	0.0587	0.0000
    			*MESH_TVERT 10	0.3645	0.2925	0.0000
    			*MESH_TVERT 11	0.5982	0.2925	0.0000
    			*MESH_TVERT 12	0.3400	0.3438	0.0000
    			*MESH_TVERT 13	0.6227	0.3438	0.0000
    			*MESH_TVERT 14	0.3400	0.6264	0.0000
    			*MESH_TVERT 15	0.6227	0.6264	0.0000
    			*MESH_TVERT 16	0.3747	0.6861	0.0000
    			*MESH_TVERT 17	0.5880	0.6861	0.0000
    			*MESH_TVERT 18	0.3747	0.8993	0.0000
    			*MESH_TVERT 19	0.5880	0.8993	0.0000
    			*MESH_TVERT 20	0.3400	0.3438	0.0000
    			*MESH_TVERT 21	0.6227	0.3438	0.0000
    			*MESH_TVERT 22	0.3400	0.6264	0.0000
    			*MESH_TVERT 23	0.6227	0.6264	0.0000
    		}
    		*MESH_NUMTVFACES 12
    		*MESH_TFACELIST {
    			*MESH_TFACE 0	0	2	3
    			*MESH_TFACE 1	3	1	0
    			*MESH_TFACE 2	4	5	7
    			*MESH_TFACE 3	7	6	4
    			*MESH_TFACE 4	8	9	11
    			*MESH_TFACE 5	11	10	8
    			*MESH_TFACE 6	12	13	15
    			*MESH_TFACE 7	15	14	12
    			*MESH_TFACE 8	16	17	19
    			*MESH_TFACE 9	19	18	16
    			*MESH_TFACE 10	20	21	23
    			*MESH_TFACE 11	23	22	20
    		}
    Comment utiliser les arrays dans ce cas là ?

  2. #2
    Yno
    Yno est déconnecté
    Membre éprouvé Avatar de Yno
    Inscrit en
    Novembre 2005
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 138
    Par défaut
    Salut,

    Tu n'as pas le choix dans ce cas là, tu dois dupliquer tes sommets.

    Brève définition d'un sommet ici :
    *oops, lien temporairement mort, je le mettrai plus tard*

    Un sommet est un ensemble de données (position, texcoord, normale, ...) ; si tu as deux sommets où toutes les données sont exactement les même, alors tu peux l'indicer, sinon tu est obligé de le dupliquer intégralement. Il suffit que la moindre composante de la moindre donnée d'un sommet soit différente pour que tu sois obligé de le dupliquer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut
    dupliquer, c'est à dire, je dois dupliquer quels sommets, en fonction de quoi je les choisis ?
    Et dans ce cas, cela signifierai qu'au lieu d'avoir 8 vertices, j'en aurait 24 ?
    Et donc que l'utilisation d'indices est devenue complètement inutile.

  4. #4
    Yno
    Yno est déconnecté
    Membre éprouvé Avatar de Yno
    Inscrit en
    Novembre 2005
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 138
    Par défaut
    Citation Envoyé par fjxokt
    dupliquer, c'est à dire, je dois dupliquer quels sommets, en fonction de quoi je les choisis ?
    Et dans ce cas, cela signifierai qu'au lieu d'avoir 8 vertices, j'en aurait 24 ?
    Et donc que l'utilisation d'indices est devenue complètement inutile.
    Oui, tu en aura 24, et donc oui, dans ce cas l'utilisation d'indices est inutile.

    Citation Envoyé par fjxokt
    en fonction de quoi je les choisis ?
    En fonction de leur coordonnée de texture ? Je ne connais pas le format ASE.
    Bakura a fait un loader de meshs .ase, avec une petite recherche tu tomberas facilement dessus

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/09/2010, 00h02
  2. [LG]toujours les indices... avec precisions!!!
    Par k_ro dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2004, 21h08
  3. [LG]indice en Pascal... merci d'avance
    Par k_ro dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2004, 20h58
  4. Indication d'OS ?
    Par nguerrazzi dans le forum MFC
    Réponses: 12
    Dernier message: 11/03/2004, 09h57
  5. BDD, r-a-z index et indice primary key ?
    Par lord_paco dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/07/2003, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo