示例#1
0
 public Face(Vertex ind1, Vertex ind2, Vertex ind3)
 {
     Vertice = new Vertex[3];
     Vertice[0] = ind1;
     Vertice[1] = ind2;
     Vertice[2] = ind3;
     // Log.e("VboCube",Vi+"/"+Ti+"/"+Ni);
 }
示例#2
0
        public Face(int vCount, int position)
        {
            Vertice = new Vertex[vCount];
            this.position = position;

            for (int i = 0; i < vCount; i++)
                Vertice[i] = new Vertex();
        }
示例#3
0
        public static void LoadObj(ref Mesh target)
        {
            List<Vector3> PositionDataList = new List<Vector3> { };
            List<Vector3> NormalDataList = new List<Vector3> { };
            List<Vector2> TexCoordDataList = new List<Vector2> { };
            List<Face> FaceList = new List<Face> { };
            //List<Vertex> FpIndiceList = new List<Vertex> { };

            // Read the file and display it line by line.
            string line;
            System.IO.StreamReader file =
                new System.IO.StreamReader(target.URL);

            while ((line = file.ReadLine()) != null)
            {
                string[] sline = line.Split(new string[]{" "},10,StringSplitOptions.None);

                if (sline[0] == "v")
                {
                    float X = float.Parse(sline[1]);
                    float Y = float.Parse(sline[2]);
                    float Z = float.Parse(sline[3]);
                    PositionDataList.Add(new Vector3(X, Y, Z));
                }

                if (sline[0] == "vn")
                {
                    float X = float.Parse(sline[1]);
                    float Y = float.Parse(sline[2]);
                    float Z = float.Parse(sline[3]);
                    NormalDataList.Add(new Vector3(X, Y, Z));

                }

                if (sline[0] == "vt")
                {
                    float X = float.Parse(sline[1]);
                    float Y = 1-float.Parse(sline[2]);
                    TexCoordDataList.Add(new Vector2(X, Y));

                }

                if (sline[0] == "f")
                {
                    string[] segment = sline[1].Split(new string[] { "/" }, 10, StringSplitOptions.None);
                    if (segment.Length == 3)
                    {
                        Vertex fp1 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        segment = sline[2].Split(new string[] { "/" }, 10, StringSplitOptions.None);
                        Vertex fp2 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        segment = sline[3].Split(new string[] { "/" }, 10, StringSplitOptions.None);
                        Vertex fp3 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        FaceList.Add(new Face(fp1, fp2, fp3));
                    }
                    else if (segment.Length == 3)
                    {
                        Vertex fp1 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        segment = sline[2].Split(new string[] { "/" }, 10, StringSplitOptions.None);
                        Vertex fp2 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        segment = sline[3].Split(new string[] { "/" }, 10, StringSplitOptions.None);
                        Vertex fp3 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        segment = sline[4].Split(new string[] { "/" }, 10, StringSplitOptions.None);
                        Vertex fp4 = new Vertex(int.Parse(segment[0]) - 1, int.Parse(segment[1]) - 1, int.Parse(segment[2]) - 1);

                        FaceList.Add(new Face(fp1, fp2, fp3, fp4));
                    }
                }
            }

            file.Close();

            target.PositionDataList = PositionDataList;
            target.NormalDataList = NormalDataList;
            target.TexCoordDataList = TexCoordDataList;
            target.FaceList = FaceList;

            parseFaceList(ref target, false);

            generateVBO(ref target);

            meshes.Add(target);
        }