Quelqu'un peu me donner du code pour convertir les mesh Irrlicht en Trimesh ODE ?
Ca fait 10 heures que j'essaye, avec ce tutorial (C++): http://thomas.webtracker.ch/jahia/Jahia/pid/481
(voir section Converting Irrlicht Meshes to ODE TriMesh)
Merci infiniment
Hors ligne
Hehe je sais que Copland va bientôt s'attaquer à cette partie et j'imagine qu'il partagera le code...
Cela dit, si tu trouves avant lui et que personne n'a répondu à ce problème entre temps, n'hésite pas à revenir ici hein
Hors ligne
Hello,
Hehe je suis dessus hein no problem j'ai quasi fini, pour l'instant ça bouge pas j'essai de comprendre pourquoi j'ai dû oublier une toute petite connerie .
@+
Hors ligne
Bon finalement ça bouge bien pour les autres objets :s.
J'ai bien une collision correcte avec mon trimesh mais uniquement si se dernier est statique...Je cherche comment faire pour que ça collisionne avec les objets qui bougent maintenant .
EDIT:C'est bon j'ai trouvé, ça marche tout simplement pas avec les Plane de ODE que j'utilisais avec mon sol .
Hors ligne
Ouaa c'est bon ça Vivement qu'on l'intègre !
Hors ligne
J'ai trouvé la réponse et ça fonctionne, je vous poste le code aussitot que j'arrive à la maison :]
Merci quand meme
Hors ligne
Volontier, on pourra comparer comme ça
Hors ligne
Alors je vous donne la solution, j'ai faite ca un peu "jobbeur" mais bon, ca fonctionne ( dans mon projet )
public TriMesh CreateTrimesh(AnimatedMesh mesh,vector3d MeshPosition)
{
int i, j, ci, cif, cv;
int indexcount = 0;
int vertexcount = 0;
Mesh omesh = mesh.GetMesh(0);
for (i = 0; i < omesh.MeshBufferCount; i++)
{
MeshBuffer mb = omesh.GetMeshBuffer(i);
indexcount += mb.IndexCount;
vertexcount += mb.VertexCount;
}
ODE.NoMDX.Vector3[] vertices = new ODE.NoMDX.Vector3[vertexcount];
int[] indices = new int[indexcount];
ci = 0;
cif = 0;
cv = 0;
for (i = 0; i < omesh.MeshBufferCount; i++)
{
MeshBuffer mb = omesh.GetMeshBuffer(i);
for (j = 0; j < mb.IndexCount; j++)
{
indices[ci] = cif + mb.GetIndex(j);
ci++;
}
cif = cif + mb.VertexCount;
if (mb.VertexType == VertexType.Standard)
{
for (j = 0; j < mb.VertexCount; j++)
{
vertices[cv].X = mb.GetVertex(j).Position.X;
vertices[cv].Y = mb.GetVertex(j).Position.Y;
vertices[cv].Z = mb.GetVertex(j).Position.Z;
cv++;
}
}
else if (mb.VertexType == VertexType.T2Coords)
{
for (j = 0; j < mb.VertexCount; j++)
{
vertices[cv].X = mb.GetVertexT2(j).Position.X;
vertices[cv].Y = mb.GetVertexT2(j).Position.Y;
vertices[cv].Z = mb.GetVertexT2(j).Position.Z;
cv++;
}
}
}
TriMesh temptrimesh;
temptrimesh = new TriMesh(vertices,indices);
return temptrimesh
}
[ edit d'izguit : merci d'utiliser les balises "code" il y a des barres de défilement et c'est plus propre ]
Dernière modification par Zac (06-11-2006 23:27:37)
Hors ligne