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); }
public Face(int vCount, int position) { Vertice = new Vertex[vCount]; this.position = position; for (int i = 0; i < vCount; i++) Vertice[i] = new Vertex(); }
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); }