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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

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

Message 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 ? :(
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

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

Message 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
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

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

Message par kelebrindae »

Super, c'est beaucoup plus clair pour moi maintenant.
Merci beaucoup! :D
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Répondre