Exemplo n.º 1
0
void Element::SetVertices(const int *ind)
{
   int i, n, *v;

   n = GetNVertices();
   v = GetVertices();

   for (i = 0; i < n; i++)
      v[i] = ind[i];
}
Exemplo n.º 2
0
bool TMMesh::SaveVRML2(std::ofstream &fout, const Material & material)
{
    if (fout.is_open())
    {
        size_t nV = m_vertices.GetSize();
        size_t nT = m_triangles.GetSize();
        fout <<"#VRML V2.0 utf8" << std::endl;
        fout <<"" << std::endl;
        fout <<"# Vertices: " << nV << std::endl;
        fout <<"# Triangles: " << nT << std::endl;
        fout <<"" << std::endl;
        fout <<"Group {" << std::endl;
        fout <<"	children [" << std::endl;
        fout <<"		Shape {" << std::endl;
        fout <<"			appearance Appearance {" << std::endl;
        fout <<"				material Material {" << std::endl;
        fout <<"					diffuseColor "      << material.m_diffuseColor.X()      << " "
             << material.m_diffuseColor.Y()      << " "
             << material.m_diffuseColor.Z()      << std::endl;
        fout <<"					ambientIntensity "  << material.m_ambientIntensity      << std::endl;
        fout <<"					specularColor "     << material.m_specularColor.X()     << " "
             << material.m_specularColor.Y()     << " "
             << material.m_specularColor.Z()     << std::endl;
        fout <<"					emissiveColor "     << material.m_emissiveColor.X()     << " "
             << material.m_emissiveColor.Y()     << " "
             << material.m_emissiveColor.Z()     << std::endl;
        fout <<"					shininess "         << material.m_shininess             << std::endl;
        fout <<"					transparency "      << material.m_transparency          << std::endl;
        fout <<"				}" << std::endl;
        fout <<"			}" << std::endl;
        fout <<"			geometry IndexedFaceSet {" << std::endl;
        fout <<"				ccw TRUE" << std::endl;
        fout <<"				solid TRUE" << std::endl;
        fout <<"				convex TRUE" << std::endl;
        if (GetNVertices() > 0) {
            fout <<"				coord DEF co Coordinate {" << std::endl;
            fout <<"					point [" << std::endl;
            for(size_t v = 0; v < nV; v++)
            {
                TMMVertex & currentVertex = m_vertices.GetData();
                fout <<"						" << currentVertex.m_pos.X() << " "
                     << currentVertex.m_pos.Y() << " "
                     << currentVertex.m_pos.Z() << "," << std::endl;
                currentVertex.m_id = v;
                m_vertices.Next();
            }
            fout <<"					]" << std::endl;
            fout <<"				}" << std::endl;
        }
        if (GetNTriangles() > 0) {
            fout <<"				coordIndex [ " << std::endl;
            for(size_t f = 0; f < nT; f++)
            {
                TMMTriangle & currentTriangle = m_triangles.GetData();
                fout <<"						" << currentTriangle.m_vertices[0]->GetData().m_id << ", "
                     << currentTriangle.m_vertices[1]->GetData().m_id << ", "
                     << currentTriangle.m_vertices[2]->GetData().m_id << ", -1," << std::endl;
                m_triangles.Next();
            }
            fout <<"				]" << std::endl;
        }
        fout <<"			}" << std::endl;
        fout <<"		}" << std::endl;
        fout <<"	]" << std::endl;
        fout <<"}" << std::endl;
    }
    return true;
}