Page 1 sur 1

Créer un mesh de zéro avec SetMeshData ?

Publié : jeu. 04/juil./2013 15:00
par kelebrindae
Bonjour,

Je crois que je ne comprends pas comment créer un mesh à partir de rien avec SetMeshData. :?

Les vertex, ça va=> La structure PB_meshVertex contient toutes les infos nécessaires: coordonnées X,Y,Z, normales, UV, couleur...
Mais les faces, je ne vois pas => la structure PB_meshFace ne contient qu'une info: un index. Un index de quoi, d'ailleurs ?

Du coup, je ne comprends pas comment on dit que la première face est composé des vertex 0, 1 et 2, que la deuxième est composé des vertex 2, 1, et 3, etc...

Quelqu'un pourrait m'expliquer un peu tout ça, SVP ? :(

Re: Créer un mesh de zéro avec SetMeshData ?

Publié : jeu. 04/juil./2013 16:46
par comtois
Je n'ai pas prévu SetMeshData() pour créer un mesh de zéro mais plutôt pour modifier un mesh existant.

Pour créer un mesh de zéro il faut utiliser les fonctions existantes : commande CreateMesh() suivie des commandes MeshVertexPosition(), etc.

Concernant l'index des faces , il dépend du choix que tu as fait pour définir ton mesh.
#PB_Mesh_TriangleList : the mesh will be composed of a list of triangles (default).
#PB_Mesh_TriangleStrip: the mesh will be composed of a list of connected triangles (vertices are shared).
#PB_Mesh_TriangleFan : the mesh will be composed of a list of triangles sharing the same central vertex point.
#PB_Mesh_PointList : the mesh will be composed of a list of points.
#PB_Mesh_LineList : the mesh will be composed of a list of lines.
#PB_Mesh_LineStrip : the mesh will be composed of a list of connected lines (vertices are shared).
Si je prends le cas le plus classique avec #PB_Mesh_TriangleList la constitution d'un triangle est définie par la succession de 3 index.
Avec ces index tu peux récupérer les datas des vertices qui constituent ton triangle.
Exemple

Code : Tout sélectionner

;Récupère les datas du Mesh 
GetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex, 0, MeshVertexCount(Mesh, 0)-1)
GetMeshData(Mesh, 0, MeshIndexData(), #PB_Mesh_Face, 0, MeshIndexCount(Mesh, 0)-1)
si tu veux connaitre les vertices qui constituent le triangle No=3

Code : Tout sélectionner

No=3
V1 = MeshIndexData(No*3)\Index ; Je multiplie par 3 car ce sont des triangles, si le mesh est constitué de lignes il faut multiplier par 2, etc
V2 = MeshIndexData(No*3+1)\Index
V3 = MeshIndexData(No*3+2)\Index
Et ensuite tu peux lire ces vertices

Code : Tout sélectionner

MeshData(V1)\x etc

Re: Créer un mesh de zéro avec SetMeshData ?

Publié : jeu. 04/juil./2013 22:21
par kelebrindae
Super, c'est beaucoup plus clair pour moi maintenant.
Merci beaucoup! :D