#1 

06-11-2006 01:36:47

Zac
Membres
Date d'inscription:
Messages: 5
IP: 24.202.8.221
Courriel

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


#2 

06-11-2006 07:10:00

kedu
Modérateurs
Avatar de kedu
Date d'inscription:
Messages: 155
IP: 212.194.234.246
Courriel

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


#3 

06-11-2006 10:52:32

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.5.162.149
Courriel  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


#4 

06-11-2006 14:14:08

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.5.162.149
Courriel  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


#5 

06-11-2006 18:32:09

kedu
Modérateurs
Avatar de kedu
Date d'inscription:
Messages: 155
IP: 86.64.79.165
Courriel

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


Hors ligne


#6 

06-11-2006 20:03:33

Zac
Membres
Date d'inscription:
Messages: 5
IP: 132.203.130.90
Courriel

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


#7 

06-11-2006 20:10:57

kedu
Modérateurs
Avatar de kedu
Date d'inscription:
Messages: 155
IP: 86.64.79.165
Courriel

Volontier, on pourra comparer comme ça smile


Hors ligne


#8 

06-11-2006 21:53:39

Zac
Membres
Date d'inscription:
Messages: 5
IP: 24.202.8.221
Courriel

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

        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 ]


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