Historique des modifications - Message

Message #571

Sujet: Irrlicht .NET CP (C#) et Trimesh ODE


Type Date Auteur Contenu
Dernière modification 06-11-2006 22:27:37 Zac
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 ]
Création du message 06-11-2006 21:53:39 Zac
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 ]

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