コード例 #1
0
ファイル: ObjHandler.cs プロジェクト: seasailor/designscript
        internal static MeshData Import(String filePath)
        {
            StreamReader  fileStream  = new StreamReader(filePath);
            MeshData      meshData    = new MeshData();
            List <string> invalidData = new List <string>();

            while (!fileStream.EndOfStream)
            {
                String line = fileStream.ReadLine().Trim();
                if (String.IsNullOrEmpty(line) || line[0] == '#')
                {
                    continue;
                }
                String[] data = line.Split(new[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries);
                if (data.Length < 2)
                {
                    invalidData.Add(line);
                    continue;
                }
                KeyValuePair <string, string> parsedLineData = new KeyValuePair <string, string>(data[0], data[1]);
                switch (parsedLineData.Key)
                {
                case "v":
                    //vertex
                    if (!meshData.AddVertex(parsedLineData.Value))
                    {
                        invalidData.Add(line);
                    }
                    break;

                case "f":
                    //face
                    if (!meshData.AddFace(parsedLineData.Value))
                    {
                        invalidData.Add(line);
                    }
                    break;

                case "g":
                    //group
                    if (!meshData.AddGroup(parsedLineData.Value))
                    {
                        invalidData.Add(line);
                    }
                    break;

                case "vn":
                    //vertex normal
                    if (!meshData.AddNormal(parsedLineData.Value))
                    {
                        invalidData.Add(line);
                    }
                    break;

                case "vt":
                    //texture
                    if (!meshData.AddTexture(parsedLineData.Value))
                    {
                        invalidData.Add(line);
                    }
                    break;

                case "mtllib":
                    //material library
                    if (!meshData.AddMaterial(parsedLineData.Value))
                    {
                        invalidData.Add(line);
                    }
                    break;

                case "usemtl":
                    //use material library
                    meshData.SetMaterial(parsedLineData.Value);
                    break;

                default:
                    invalidData.Add(line);
                    break;
                }
            }
            return(meshData);
        }
コード例 #2
0
ファイル: ObjHandler.cs プロジェクト: samuto/designscript
 internal static MeshData Import(String filePath)
 {
     StreamReader fileStream = new StreamReader(filePath);
     MeshData meshData = new MeshData();
     List<string> invalidData = new List<string>();
     while (!fileStream.EndOfStream)
     {
         String line = fileStream.ReadLine().Trim();
         if (String.IsNullOrEmpty(line) || line[0] == '#')
             continue;
         String[] data = line.Split(new[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries);
         if (data.Length < 2)
         {
             invalidData.Add(line);
             continue;
         }
         KeyValuePair<string, string> parsedLineData = new KeyValuePair<string, string>(data[0], data[1]);
         switch (parsedLineData.Key)
         {
             case "v":
                 //vertex
                 if (!meshData.AddVertex(parsedLineData.Value))
                     invalidData.Add(line);
                 break;
             case "f":
                 //face
                 if (!meshData.AddFace(parsedLineData.Value))
                     invalidData.Add(line);
                 break;
             case "g":
                 //group
                 if (!meshData.AddGroup(parsedLineData.Value))
                     invalidData.Add(line);
                 break;
             case "vn":
                 //vertex normal
                 if (!meshData.AddNormal(parsedLineData.Value))
                     invalidData.Add(line);
                 break;
             case "vt":
                 //texture
                 if (!meshData.AddTexture(parsedLineData.Value))
                     invalidData.Add(line);
                 break;
             case "mtllib":
                 //material library
                 if (!meshData.AddMaterial(parsedLineData.Value))
                     invalidData.Add(line);
                 break;
             case "usemtl":
                 //use material library
                 meshData.SetMaterial(parsedLineData.Value);
                 break;
             default:
                 invalidData.Add(line);
                 break;
         }
     }
     return meshData;
 }