public Triangulo(int a) { vert = new VerticeTemporal[3]; tex = new TexturaTemporal[3]; nor = new NormalTemporal[3]; for (int i = 0; i < 3; i++) { vert[i] = new VerticeTemporal(); tex[i] = new TexturaTemporal(); nor[i] = new NormalTemporal(); } }
public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3) { vert1 = v1; vert2 = v2; vert3 = v3; tex1 = new TexturaTemporal(); tex2 = new TexturaTemporal(); tex3 = new TexturaTemporal(); nor1 = new NormalTemporal(); nor2 = new NormalTemporal(); nor3 = new NormalTemporal(); }
public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3) { vert = new VerticeTemporal[3]; tex = new TexturaTemporal[3]; nor = new NormalTemporal[3]; vert[0] = v1; vert[1] = v2; vert[2] = v3; for (int i = 0; i < 3; i++) { tex[i] = new TexturaTemporal(); nor[i] = new NormalTemporal(); } }
public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3) { vert = new VerticeTemporal[3]; tex = new TexturaTemporal[3]; nor = new NormalTemporal[3]; vert[0] = v1; vert[1] = v2; vert[2] = v3; for (int i=0; i<3; i++) { tex[i] = new TexturaTemporal(); nor[i] = new NormalTemporal(); } }
//-------------------------------------------------------------------- // Función: ReadObject // Propósito: // Fecha: miércoles, 08 de noviembre de 2006, 21:01:35 //-------------------------------------------------------------------- private void ReadObject(StreamReader sr) { m_bHasNormals = false; m_ListaVerticesFinal.Clear(); m_ListaIndicesFinal.Clear(); String currentLine = sr.ReadLine(); while (!currentLine.Contains("*MESH_NUMVERTEX")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); String[] parse = currentLine.Split(' '); m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])]; Xtrace.Log("ASE Vértices: {0}", m_VerticesArrayTemp.Length); while (!currentLine.Contains("*MESH_NUMFACES")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])]; for (int h=0; h<m_ArrayTriangulos.Length; h++) m_ArrayTriangulos[h] = new Triangulo(0); Xtrace.Log("ASE Triángulos: {0}", m_ArrayTriangulos.Length); while (!currentLine.Contains("*MESH_VERTEX ")) { currentLine = sr.ReadLine(); } int i = 0; while (currentLine.Contains("*MESH_VERTEX ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("ASE Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y, m_VerticesArrayTemp[i].z); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_FACE ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_FACE ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); int a = Int32.Parse(parse[3]); int b = Int32.Parse(parse[5]); int c = Int32.Parse(parse[7]); m_ArrayTriangulos[i].vert[0] = m_VerticesArrayTemp[a]; m_ArrayTriangulos[i].vert[1] = m_VerticesArrayTemp[b]; m_ArrayTriangulos[i].vert[2] = m_VerticesArrayTemp[c]; Xtrace.Log("ASE Tri {0}: ({1}, {2}, {3})", i, a, b, c); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_NUMTVERTEX")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])]; while (!currentLine.Contains("*MESH_TVERT ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_TVERT ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("ASE Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_TFACE ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_TFACE ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_ArrayTriangulos[i].tex[0] = m_VerticesTexTemp[Int32.Parse(parse[2])]; m_ArrayTriangulos[i].tex[1] = m_VerticesTexTemp[Int32.Parse(parse[3])]; m_ArrayTriangulos[i].tex[2] = m_VerticesTexTemp[Int32.Parse(parse[4])]; currentLine = sr.ReadLine(); i++; } //if (this.checkBoxSubdirs.Checked) { while (!currentLine.Contains("*MESH_VERTEXNORMAL ")) { currentLine = sr.ReadLine(); if (currentLine == null) break; } if (currentLine != null) { i = 0; int t = 0; while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL ")) { if (currentLine.Contains("*MESH_FACENORMAL ")) { currentLine = sr.ReadLine(); continue; } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); NormalTemporal n = new NormalTemporal(); n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("ASE Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz); m_bHasNormals = true; m_ArrayTriangulos[i].nor[t] = n; t++; if (t == 3) { i++; t = 0; } currentLine = sr.ReadLine(); } } } ComputeIndices(); }
//-------------------------------------------------------------------- // Función: ReadObject // Propósito: // Fecha: miércoles, 08 de noviembre de 2006, 21:01:35 //-------------------------------------------------------------------- private void ReadObject(StreamReader sr) { String currentLine = sr.ReadLine(); while (!currentLine.Contains("*MESH_NUMVERTEX")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); String[] parse = currentLine.Split(' '); m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])]; Xtrace.Log("Vértices: {0}", m_VerticesArrayTemp.Length); while (!currentLine.Contains("*MESH_NUMFACES")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])]; Xtrace.Log("Triángulos: {0}", m_ArrayTriangulos.Length); while (!currentLine.Contains("*MESH_VERTEX ")) { currentLine = sr.ReadLine(); } int i = 0; while (currentLine.Contains("*MESH_VERTEX ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y, m_VerticesArrayTemp[i].z); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_FACE ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_FACE ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); int a = Int32.Parse(parse[3]); int b = Int32.Parse(parse[5]); int c = Int32.Parse(parse[7]); m_ArrayTriangulos[i].vert1 = m_VerticesArrayTemp[a]; m_ArrayTriangulos[i].vert2 = m_VerticesArrayTemp[b]; m_ArrayTriangulos[i].vert3 = m_VerticesArrayTemp[c]; Xtrace.Log("Tri {0}: ({1}, {2}, {3})", i, a, b, c); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_NUMTVERTEX")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])]; while (!currentLine.Contains("*MESH_TVERT ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_TVERT ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_TFACE ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_TFACE ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_ArrayTriangulos[i].tex1 = m_VerticesTexTemp[Int32.Parse(parse[2])]; m_ArrayTriangulos[i].tex2 = m_VerticesTexTemp[Int32.Parse(parse[3])]; m_ArrayTriangulos[i].tex3 = m_VerticesTexTemp[Int32.Parse(parse[4])]; currentLine = sr.ReadLine(); i++; } if (this.checkBox1.Checked) { while (!currentLine.Contains("*MESH_VERTEXNORMAL ")) { currentLine = sr.ReadLine(); } i = 0; int t = 0; while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL ")) { if (currentLine.Contains("*MESH_FACENORMAL ")) { currentLine = sr.ReadLine(); continue; } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); NormalTemporal n = new NormalTemporal(); n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz); switch (t) { case 0: { m_ArrayTriangulos[i].nor1 = n; break; } case 1: { m_ArrayTriangulos[i].nor2 = n; break; } case 2: { m_ArrayTriangulos[i].nor3 = n; break; } } t++; if (t == 3) { i++; t = 0; } currentLine = sr.ReadLine(); } } }
//-------------------------------------------------------------------- // Función: ReadObject // Propósito: // Fecha: miércoles, 08 de noviembre de 2006, 21:01:35 //-------------------------------------------------------------------- private void ReadObject(StreamReader sr) { m_bHasNormals = false; m_ListaVerticesFinal.Clear(); m_ListaIndicesFinal.Clear(); String currentLine = sr.ReadLine(); while (!currentLine.Contains("*MESH_NUMVERTEX")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); String[] parse = currentLine.Split(' '); m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])]; Xtrace.Log("ASE Vértices: {0}", m_VerticesArrayTemp.Length); while (!currentLine.Contains("*MESH_NUMFACES")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])]; for (int h = 0; h < m_ArrayTriangulos.Length; h++) { m_ArrayTriangulos[h] = new Triangulo(0); } Xtrace.Log("ASE Triángulos: {0}", m_ArrayTriangulos.Length); while (!currentLine.Contains("*MESH_VERTEX ")) { currentLine = sr.ReadLine(); } int i = 0; while (currentLine.Contains("*MESH_VERTEX ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("ASE Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y, m_VerticesArrayTemp[i].z); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_FACE ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_FACE ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); int a = Int32.Parse(parse[3]); int b = Int32.Parse(parse[5]); int c = Int32.Parse(parse[7]); m_ArrayTriangulos[i].vert[0] = m_VerticesArrayTemp[a]; m_ArrayTriangulos[i].vert[1] = m_VerticesArrayTemp[b]; m_ArrayTriangulos[i].vert[2] = m_VerticesArrayTemp[c]; Xtrace.Log("ASE Tri {0}: ({1}, {2}, {3})", i, a, b, c); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_NUMTVERTEX")) { currentLine = sr.ReadLine(); } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])]; while (!currentLine.Contains("*MESH_TVERT ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_TVERT ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("ASE Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v); currentLine = sr.ReadLine(); i++; } while (!currentLine.Contains("*MESH_TFACE ")) { currentLine = sr.ReadLine(); } i = 0; while (currentLine.Contains("*MESH_TFACE ")) { currentLine = FormatString(currentLine); parse = currentLine.Split(' '); m_ArrayTriangulos[i].tex[0] = m_VerticesTexTemp[Int32.Parse(parse[2])]; m_ArrayTriangulos[i].tex[1] = m_VerticesTexTemp[Int32.Parse(parse[3])]; m_ArrayTriangulos[i].tex[2] = m_VerticesTexTemp[Int32.Parse(parse[4])]; currentLine = sr.ReadLine(); i++; } //if (this.checkBoxSubdirs.Checked) { while (!currentLine.Contains("*MESH_VERTEXNORMAL ")) { currentLine = sr.ReadLine(); if (currentLine == null) { break; } } if (currentLine != null) { i = 0; int t = 0; while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL ")) { if (currentLine.Contains("*MESH_FACENORMAL ")) { currentLine = sr.ReadLine(); continue; } currentLine = FormatString(currentLine); parse = currentLine.Split(' '); NormalTemporal n = new NormalTemporal(); n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci); n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci); n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci); Xtrace.Log("ASE Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz); m_bHasNormals = true; m_ArrayTriangulos[i].nor[t] = n; t++; if (t == 3) { i++; t = 0; } currentLine = sr.ReadLine(); } } } ComputeIndices(); }