Historique des modifications - Message

Message #10997

Sujet: Adapté mon algo à mon code


TypeDateAuteurContenu
Dernière modification02-12-2012 19:00:03johnplayer
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 message02-12-2012 18:59:09johnplayer
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
79 invités en ligne
membre en ligne: -
RSS Feed