private void ComputeIndices() { foreach (Triangulo t in m_ArrayTriangulos) { for (int i=0; i<3; i++) { bool encontrado = false; foreach (VerticeFinal vf in m_ListaVerticesFinal) { if (vf.x == t.vert[i].x && vf.y == t.vert[i].y && vf.z == t.vert[i].z && vf.nx == t.nor[i].nx && vf.ny == t.nor[i].ny && vf.nz == t.nor[i].nz && vf.u == t.tex[i].u && vf.v == t.tex[i].v) { encontrado = true; break; } } if (!encontrado) { VerticeFinal temp = new VerticeFinal(); temp.x = t.vert[i].x; temp.y = t.vert[i].y; temp.z = t.vert[i].z; temp.nx = t.nor[i].nx; temp.ny = t.nor[i].ny; temp.nz = t.nor[i].nz; temp.u = t.tex[i].u; temp.v = t.tex[i].v; m_ListaVerticesFinal.Add(temp); int a = m_ListaVerticesFinal.Count - 1; Xtrace.Log("O3D Ver {0}: ({1}, {2}, {3})", a, temp.x, temp.y, temp.z); Xtrace.Log("O3D Tex {0}: ({1}, {2})", a, temp.u, temp.v); Xtrace.Log("O3D Nor {0}: ({1}, {2}, {3})", a, temp.nx, temp.ny, temp.nz); } } } foreach (Triangulo t in m_ArrayTriangulos) { for (int i = 0; i < 3; i++) { bool encontrado = false; ushort verticeID = 0; foreach (VerticeFinal vf in m_ListaVerticesFinal) { if (vf.x == t.vert[i].x && vf.y == t.vert[i].y && vf.z == t.vert[i].z && vf.nx == t.nor[i].nx && vf.ny == t.nor[i].ny && vf.nz == t.nor[i].nz && vf.u == t.tex[i].u && vf.v == t.tex[i].v) { encontrado = true; break; } verticeID++; } if (encontrado) { m_ListaIndicesFinal.Add(verticeID); } else { ///--- algo va mal Xtrace.Log("!**** Error: no se encontró un vértice al computar índices"); } } Xtrace.Log("O3D Ind {0}: ({1}, {2}, {3})", m_ListaIndicesFinal.Count / 3, m_ListaIndicesFinal[m_ListaIndicesFinal.Count - 3], m_ListaIndicesFinal[m_ListaIndicesFinal.Count - 2], m_ListaIndicesFinal[m_ListaIndicesFinal.Count - 1]); } }
private void ComputeIndices() { foreach (Triangulo t in m_ArrayTriangulos) { for (int i = 0; i < 3; i++) { bool encontrado = false; foreach (VerticeFinal vf in m_ListaVerticesFinal) { if (vf.x == t.vert[i].x && vf.y == t.vert[i].y && vf.z == t.vert[i].z && vf.nx == t.nor[i].nx && vf.ny == t.nor[i].ny && vf.nz == t.nor[i].nz && vf.u == t.tex[i].u && vf.v == t.tex[i].v) { encontrado = true; break; } } if (!encontrado) { VerticeFinal temp = new VerticeFinal(); temp.x = t.vert[i].x; temp.y = t.vert[i].y; temp.z = t.vert[i].z; temp.nx = t.nor[i].nx; temp.ny = t.nor[i].ny; temp.nz = t.nor[i].nz; temp.u = t.tex[i].u; temp.v = t.tex[i].v; m_ListaVerticesFinal.Add(temp); int a = m_ListaVerticesFinal.Count - 1; Xtrace.Log("O3D Ver {0}: ({1}, {2}, {3})", a, temp.x, temp.y, temp.z); Xtrace.Log("O3D Tex {0}: ({1}, {2})", a, temp.u, temp.v); Xtrace.Log("O3D Nor {0}: ({1}, {2}, {3})", a, temp.nx, temp.ny, temp.nz); } } } foreach (Triangulo t in m_ArrayTriangulos) { for (int i = 0; i < 3; i++) { bool encontrado = false; ushort verticeID = 0; foreach (VerticeFinal vf in m_ListaVerticesFinal) { if (vf.x == t.vert[i].x && vf.y == t.vert[i].y && vf.z == t.vert[i].z && vf.nx == t.nor[i].nx && vf.ny == t.nor[i].ny && vf.nz == t.nor[i].nz && vf.u == t.tex[i].u && vf.v == t.tex[i].v) { encontrado = true; break; } verticeID++; } if (encontrado) { m_ListaIndicesFinal.Add(verticeID); } else { ///--- algo va mal Xtrace.Log("!**** Error: no se encontró un vértice al computar índices"); } } Xtrace.Log("O3D Ind {0}: ({1}, {2}, {3})", m_ListaIndicesFinal.Count / 3, m_ListaIndicesFinal[m_ListaIndicesFinal.Count - 3], m_ListaIndicesFinal[m_ListaIndicesFinal.Count - 2], m_ListaIndicesFinal[m_ListaIndicesFinal.Count - 1]); } }