Beispiel #1
0
        public void Export(object sender, EventArgs args)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "Supported Formats|*.bfmdl;*.fbx;*.dae; *.obj;*.csv;|" +
                         "Bfres Model|*.bfmdl|" +
                         "FBX |*.fbx|" +
                         "DAE |*.dae|" +
                         "OBJ |*.obj|" +
                         "CSV |*.csv|" +
                         "All files(*.*)|*.*";
            sfd.DefaultExt = ".bfobj";
            sfd.FileName   = Text;

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string ext = System.IO.Path.GetExtension(sfd.FileName);
                ext = ext.ToLower();

                switch (ext)
                {
                case ".bfmdl":
                    if (GetResFileU() != null)
                    {
                    }
                    else
                    {
                        Model.Export(sfd.FileName, GetResFile());
                    }
                    break;

                case ".csv":
                    CsvModel csv = new CsvModel();
                    foreach (FSHP shape in shapes)
                    {
                        STGenericObject obj = new STGenericObject();
                        obj.ObjectName = shape.Text;
                        obj.vertices   = shape.vertices;
                        obj.faces      = shape.lodMeshes[shape.DisplayLODIndex].faces;
                        csv.objects.Add(obj);

                        int CurVtx = 0;
                        foreach (Vertex v in shape.vertices)
                        {
                            if (v.boneIds[0] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[0]));
                            }
                            if (v.boneIds[1] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[1]));
                            }
                            if (v.boneIds[2] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[2]));
                            }
                            if (v.boneIds[3] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[3]));
                            }

                            CurVtx++;
                        }
                    }
                    System.IO.File.WriteAllBytes(sfd.FileName, csv.Save());
                    break;

                default:
                    List <STGenericTexture> Surfaces = new List <STGenericTexture>();
                    foreach (FSHP fshp in shapes)
                    {
                        foreach (var bntx in PluginRuntime.bntxContainers)
                        {
                            foreach (var tex in fshp.GetMaterial().TextureMaps)
                            {
                                if (bntx.Textures.ContainsKey(tex.Name))
                                {
                                    Surfaces.Add(bntx.Textures[tex.Name]);
                                }
                            }
                        }
                        foreach (var ftex in PluginRuntime.ftexContainers)
                        {
                            foreach (var tex in fshp.GetMaterial().TextureMaps)
                            {
                                if (ftex.Textures.ContainsKey(tex.Name))
                                {
                                    Surfaces.Add(ftex.Textures[tex.Name]);
                                }
                            }
                        }
                    }
                    Console.WriteLine("tex count " + Surfaces.Count);

                    AssimpData assimp = new AssimpData();
                    assimp.SaveFromModel(this, sfd.FileName, Surfaces);
                    break;
                }
            }
        }
Beispiel #2
0
        public void Export(object sender, EventArgs args)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "Supported Formats|*.bfmdl;*.fbx;*.dae; *.obj;*.csv;|" +
                         "Bfres Model|*.bfmdl|" +
                         "FBX |*.fbx|" +
                         "DAE |*.dae|" +
                         "OBJ |*.obj|" +
                         "CSV |*.csv|" +
                         "All files(*.*)|*.*";
            sfd.DefaultExt = ".bfobj";
            sfd.FileName   = Text;

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string ext = System.IO.Path.GetExtension(sfd.FileName);
                ext = ext.ToLower();

                switch (ext)
                {
                case ".bfmdl":
                    Model.Export(sfd.FileName, GetResFile());
                    break;

                case ".csv":
                    CsvModel csv = new CsvModel();
                    foreach (FSHP shape in shapes)
                    {
                        STGenericObject obj = new STGenericObject();
                        obj.ObjectName = shape.Text;
                        obj.vertices   = shape.vertices;
                        obj.faces      = shape.lodMeshes[shape.DisplayLODIndex].faces;
                        csv.objects.Add(obj);

                        int CurVtx = 0;
                        foreach (Vertex v in shape.vertices)
                        {
                            if (v.boneIds[0] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[0]));
                            }
                            if (v.boneIds[1] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[1]));
                            }
                            if (v.boneIds[2] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[2]));
                            }
                            if (v.boneIds[3] != 0)
                            {
                                obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[3]));
                            }

                            CurVtx++;
                        }
                    }
                    System.IO.File.WriteAllBytes(sfd.FileName, csv.Save());
                    break;

                default:
                    AssimpData assimp = new AssimpData();
                    assimp.SaveFromModel(this, sfd.FileName);
                    break;
                }
            }
        }