#0 

06-11-2006 02:36:47

Zac
Petit nouveau
Date d'inscription: 03-11-2006
Messages: 5

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


#1 

06-11-2006 08:10:00

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

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 wink

Hors ligne


#2 

06-11-2006 11:52:32

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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 big_smile.
@+


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

06-11-2006 15:14:08

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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 smile.

EDIT:C'est bon j'ai trouvé, ça marche tout simplement pas avec les Plane de ODE que j'utilisais avec mon sol smile.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#4 

06-11-2006 19:32:09

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Ouaa c'est bon ça smile Vivement qu'on l'intègre !

Hors ligne


#5 

06-11-2006 21:03:33

Zac
Petit nouveau
Date d'inscription: 03-11-2006
Messages: 5

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


#6 

06-11-2006 21:10:57

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Volontier, on pourra comparer comme ça smile

Hors ligne


#7 

06-11-2006 22:53:39

Zac
Petit nouveau
Date d'inscription: 03-11-2006
Messages: 5

Alors je vous donne la solution, j'ai faite ca un peu "jobbeur" mais bon, ca fonctionne ( dans mon projet smile )

Code:

        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" wink il y a des barres de défilement et c'est plus propre smile ]

Dernière modification par Zac (06-11-2006 23:27:37)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
21 invités en ligne
Aucun membre connecté
RSS Feed