#1 

13-08-2013 13:01:48

IssamB
Membres
Date d'inscription:
Messages: 11
IP: 89.90.107.173
Courriel

Salut à tous, désolé si le message n'est pas dans la bonne catégorie mais je ne savais pas où le mettre.

J'aimerais savoir quelle est la différence entre le Mesh et le MeshBuffer.
Ce que j'avais cru comprendre, c'est que le MeshBuffer faisait "parti" du Mesh, et que donc , si je voulais déplacer des points du Mesh, je devais modifier le MeshBuffer.
Est-ce que ça marche comme ça? Si oui, comment modifier le MeshBuffer et changer celui du Mesh après modification?

Si ça ne marche pas du tout comme ça, est-ce que vous pourriez m'expliquer? big_smile


Hors ligne


#2 

13-08-2013 22:07:21

Gehogor
Membres
Avatar de Gehogor
Date d'inscription:
Messages: 130
IP: 92.145.209.7
Courriel

Oui, un maillage (mesh) est composé de plusieurs sous-maillages appellés chez Irrlicht "meshBuffer".

Souvent, attention, je suis loin d'être un pro, les maillages que j'importe sont composés de plusieurs "material" qui sont clairement des "meshBuffer" :

  • -> IMeshBuffer* irr::scene::IMesh::getMeshBuffer(const video::SMaterial & material)


Chez Irrlicht, je ne sais pas pour les autres moteurs graphiques, un maillage ne peut pas dépasser 65564 "index", c'est pourquoi il est pratique de composer un maillage complexe en une composition de plusieurs sous maillages ou plusieurs "material".

Donc, si tu veux modifier le maillage lui même, il faut attaquer ses sous maillages. S'il n'en y a qu'un, tu peux attaquer le sous maillage toujours présent en index "0" avec :
  • -> IMeshBuffer* irr::scene::IMesh::getMeshBuffer(u32 nr)const


Hou là là, j'espère ne pas avoir dit de bêtises, j'attends des précisions de mes sensei... Je sais qu'ils veillent toujours.


Et hop... wink

Hors ligne


#3 

14-08-2013 00:36:13

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 37.220.49.82
Courriel  Site web

c'est ça en résumer
une fois que tu a modifier t'est mesh buffer tu call setDirty (EBT_VERTEX_AND_INDEX, EBT_VERTEX ou EBT_INDEX) suivent ce que tu a modifier

pour modifier les mesh buffers très simple ...

Code c++ :


for(irr::u32 i = 0; i<mesh->getMeshBufferCount(); ++i)
    for(irr::u32 j = 0; j<mesh->getMeshBuffer(i)->getVertexCount(); ++j)
        mesh->getMeshBuffer(i)->getPosition(j).Y = 0;
mesh->setDirty(EBT_VERTEX);


note IMesh et IMeshBuffer ont tout deux setDirty, l'un va renvoyer toute les données au gpu l'autre seulement une parti
ne pas oublier setHardwareMappingHint

ps: http://irrlicht.sourceforge.net/docu/classirr_1_1scene_1_1_i_mesh_buffer.html

Hors ligne


#4 

14-08-2013 07:30:39

IssamB
Membres
Date d'inscription:
Messages: 11
IP: 89.90.107.173
Courriel

Merci beaucoup pour vos réponses!
Entre temps, j'avais partiellement répondu à ma question.
Maintenant je vais pouvoir avancer mon programme

Merci big_smile


Hors ligne


#5 

14-08-2013 10:46:46

IssamB
Membres
Date d'inscription:
Messages: 11
IP: 89.90.107.173
Courriel

Une dernière question.
Comment faire pour rendre un vertice particulier invisible?


Hors ligne


#6 

14-08-2013 15:02:41

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 37.220.49.82
Courriel  Site web

tu parcour les indices 3 par 3 et si tu rencontre l'indice équivalent au n° du vertice que tu veut suprimer tu vire les 3
après si tu veut le suprimmer du tableau des vertices, il te faut reconstruire des indices et décrémenter tout les indices > à celui que tu a suprimer
passe par SMeshBuffer tu aura access à

Code c++ :


00283         core::array<T> Vertices; // T = S3DVertex
00285         core::array<u16> Indices;

ça te simplifira la tâche

Hors ligne


#7 

14-08-2013 20:16:02

IssamB
Membres
Date d'inscription:
Messages: 11
IP: 89.90.107.173
Courriel

Merci beaucoup!!!!


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
162 invités en ligne
membre en ligne: -
RSS Feed