Historique des modifications - Message

Message #10997

Sujet: Adapté mon algo à mon code


Type Date Auteur Contenu
Dernière modification 02-12-2012 19:00:03 johnplayer
SMeshBuffer est un typedef de CMeshBuffer<S3DVertex>. Tu peux accéder librement au vertices et au indices. un cube, c'est 6 face de 2 triangles. Il te faut les 8 positions des coins, ensuite tu créés 3 vertices + 3 indices par triangles.

Voici un exemple:

Code c++ :


SMeshBuffer* buffer = new SMeshBuffer();

// les 8 positions
vector3df pos[8];
// les 4 coins inférieurs
pos[0] = vector3df(-100,-100,-100);
pos[1] = vector3df( 100,-100,-100);
pos[2] = vector3df(-100,-100, 100);
pos[3] = vector3df( 100,-100, 100);
// les 4 coins supérieurs
pos[4] = vector3df(-100, 100,-100);
pos[5] = vector3df( 100, 100,-100);
pos[6] = vector3df(-100, 100, 100);
pos[7] = vector3df( 100, 100, 100);

// quelques variables
vector3df normale;
SColor blanc = SColor(255,255,255,255);
u32 index_vertices = 0;

// face supérieure
  // 1 - ajout des 4 vertices (avec coordonnées de textures : 1 face est remplie par la texture complète)
  normale = vector3df(0,1,0);
  index_vertices = buffer->Vertices.size();
  buffer->Vertices.push_back( S3DVertex (pos[4], normale, blanc, vector2df(0,0)) );
  buffer->Vertices.push_back( S3DVertex (pos[5], normale, blanc, vector2df(0,1)) );
  buffer->Vertices.push_back( S3DVertex (pos[6], normale, blanc, vector2df(1,1)) );
  buffer->Vertices.push_back( S3DVertex (pos[7], normale, blanc, vector2df(1,0)) );
  // 2 - ajout des indices (2 triangles)
  buffer->Indices.push_back(index_vertices); buffer->Indices.push_back(index_vertices+1); buffer->Indices.push_back(index_vertices+2); // tri 1
  buffer->Indices.push_back(index_vertices); buffer->Indices.push_back(index_vertices+2); buffer->Indices.push_back(index_vertices+3); // tri 2



Petite note : le code n'a pas été testé les vertices et les indices ne sont pas forcément dans le bon ordre donc les triangles seront certainement à l'envers.
Les vertices d'un triangle se dessine dans le sens horaire (lorsque l'on regarde la face visible du triangle).

Fais des tests et tu comprendras le fonctionnement.
Création du message 02-12-2012 18:59:09 johnplayer
SMeshBuffer est un typedef de CMeshBuffer<S3DVertex>. Tu peux accéder librement au vertices et au indices. un cube, c'est 6 face de 2 triangles. Il te faut les 8 positions des coins, ensuite tu créés 3 vertices + 3 indices par triangles.

Voici un exemple:

Code c++ :


SMeshBuffer* buffer = new SMeshBuffer();

// les 8 positions
vector3df pos[8];
// les 4 coins inférieurs
pos[0] = vector3df(-100,-100,-100);
pos[1] = vector3df( 100,-100,-100);
pos[2] = vector3df(-100,-100, 100);
pos[3] = vector3df( 100,-100, 100);
// les 4 coins supérieurs
pos[4] = vector3df(-100, 100,-100);
pos[5] = vector3df( 100, 100,-100);
pos[6] = vector3df(-100, 100, 100);
pos[7] = vector3df( 100, 100, 100);

// quelques variables
vector3df normale;
SColor blanc = SColor(255,255,255,255);
u32 index_vertices = 0;

// face supérieure
  // 1 - ajout des 4 vertices (avec coordonnées de textures : 1 face est remplie par la texture complète)
  normale = vector3df(0,1,0);
  index_vertices = buffer->Vertices.size();
  buffer->Vertices.push_back( S3DVertex (pos[4], normale, blanc, vector2df(0,0)) );
  buffer->Vertices.push_back( S3DVertex (pos[5], normale, blanc, vector2df(0,1)) );
  buffer->Vertices.push_back( S3DVertex (pos[6], normale, blanc, vector2df(1,1)) );
  buffer->Vertices.push_back( S3DVertex (pos[7], normale, blanc, vector2df(1,0)) );
  // 2 - ajout des indices (2 triangles)
  buffer->Indices.push_back(index_vertices); buffer->Indices.push_back(index_vertices+1); buffer->Indices.push_back(index_vertices+2); // tri 1
  buffer->Indices.push_back(index_vertices); buffer->Indices.push_back(index_vertices+2); buffer->Indices.push_back(index_vertices+3); // tri 2



Petite note : le code n'a pas été testé les vertices et les indices ne sont pas forcément dans le bon ordre donc les triangles seront certainement à l'envers.
Les vertices d'un triangle se dessine dans le sens horaire (lorsque l'on regarde la face visible du triangle).

Fais des tests et tu comprendras le fonctionnement.

Retour

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
195 invités en ligne
membre en ligne: -
RSS Feed