示例#1
0
        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]);
            }
        }
示例#2
0
        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]);
            }
        }