Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] How to read .OFF file color information ?

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] How to read .OFF file color information ?


Chronological Thread 
  • From: "J. Scheurich" <>
  • To:
  • Subject: Re: [cgal-discuss] How to read .OFF file color information ?
  • Date: Sat, 25 Jan 2020 10:06:46 +0000
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Autocrypt: ; keydata= mDMEXh1qZxYJKwYBBAHaRw8BAQdAnDvPncAfJyzZ1Gqfe9FAo+qv1kLiruHdfRa9G7T3ojq0 HUouIFNjaGV1cmljaCA8bXVmdGkxMUB3ZWIuZGU+iJYEExYIAD4WIQQ0fd/NRbtl/Kcuut6W vYE4WACw3QUCXh1qZwIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCWvYE4 WACw3SZ7AP9Sm9tp6TzzzZKCMe/VAR3v02XCXCg5dVywM1K8w/xTowD9FQXY0xWZNpgVVOJR oFsqTLi8q7DKgHRuXZZ+st274wO4OAReHWpnEgorBgEEAZdVAQUBAQdA9Of412y6u4PmDumH 5Rzxkr8BoGV28QAxtOKrhDB340MDAQgHiH4EGBYIACYWIQQ0fd/NRbtl/Kcuut6WvYE4WACw 3QUCXh1qZwIbDAUJCWYBgAAKCRCWvYE4WACw3QozAQD0Jmrx+TARFCtjkFTSFjKpVRSMaSn4 5BDWoN7w0DFjRQEA5/pBpvxfQ9J+sNf5bwP+7WP13Yn7+cbn5oeWqSTU3wc=
  • Ironport-phdr: 9a23:3Zcd+B95nqotvv9uRHKM819IXTAuvvDOBiVQ1KB41egcTK2v8tzYMVDF4r011RmVBNmdsa0P0rOe8/i5HzBZutDZ6DFKWacPfidNsd8RkQ0kDZzNImzAB9muURYHGt9fXkRu5XCxPBsdMs//Y1rPvi/6tmZKSV3wOgVvO+v6BJPZgdip2OCu4Z3TZBhDiCagbb9oIxi6sArcutMIjYZgJao91wbFqWZMd+hK2G9kP12ekwvy68uq4JJv7yFcsO89+sBdVqn3Y742RqFCAjQ8NGA16szrtR3dQgaK+3ARTGYYnAdWDgbc9B31UYv/vSX8tupmxSmVJtb2QqwuWTSj9KhkVhnlgzoaOjEj8WHXjstwjL9HoB+kuhdyzZLYbJ2TOfFjeK7WYNEUSndbXstJSiJPHI28YYsMAeQPM+lXoIvyqEcBoxalGQmjH/nixiNUinL436A31fkqHwHc3AwnGtIDqHrYotHvOKwPTO660KnIwiveb/NM2Dfy9IjIfh48qvyLWLJwbMTRyVUuFw/Yk1mdsoLkMC2O2egXrmeU8fNtWOSygGAprAFxpyKgxsYqioTRiIIV0U3E+T9nz4koON21TlNwb928EJZIqS2WKpV6Ttk8T212uis20KAKtJ6hcCUF0JgqxwTTZ+GIfoWJ+B7vSeKcLSliiH57Zr6zmRC/+lW6xOLmTMm7ylNKozJFktbSsnAN0ATe6s2ASvtg4ketwziO2B7I5e1ePE87i7LXK58nwrEuipoeqVrPEjLolEnskqOaaEcp9vK15+nneLnrqYeQN4puhQH/NqQulNa/AeM9MgUWWmib5Oq81KHi/UHkXblHlfM3nbfCv5zAOMsUuLa1AxVJ3YY79xa/EzCm3cwEknkINl1FfAuLgJXoO1HVPP/4EOy/g0+3nTdwx/HGO6XhDY/XInjClrfhZ7d95FRGxAo919AMr65TX7oOKfa2Vk7qv8HDFTc4NRa1yqDpEoZTzIQbDCitROeiO6PfrEWJ7eJla72JeYEJuW+kA+co7bjigClqyhcmYaC10M5POziDFfN8LhDBOCu+spI6CW4P+zEGYqnvgVyGXyRUYibgQK82oD02Wtv/UdXzA7u1ibnE5x+VW4VMbzAUFV2GV3vlJd3dBqU8LRmKK8okqQQqELisT4h4jkOrsxLmjaVqJKzY939AuA==


> Your test data does not have any color per vertex, they are all per
> face. In the SO message you refer to, it is written
> "[...] If there are colors per face you can access it similarly but by
> searching for the property map called "f:color". [...]"
>
> So you should use a property map like that :
>   SurfaceMesh::Property_map<SurfaceMesh::Face_index, CGAL::Color>
> fcolors =
>         mesh->property_map<SurfaceMesh::Face_index, CGAL::Color >
>         ("f:color").first;

I changed the test program to Face_Index, but still get "color do not
exist" 8-(

$ cat readoff.cpp
    // compile:   g++ -g -O0 readoff.cpp -lCGAL
    // test data: https://people.sc.fsu.edu/~jburkardt/data/off/facecube.off
    // output:
    // $ ./a.out
    // facecube.off: Success
    // color do not exist

    #include <CGAL/Simple_cartesian.h>
    typedef CGAL::Simple_cartesian<double> Kernel;
    #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
    #include <CGAL/Surface_mesh.h>
    #include <CGAL/Polygon_mesh_processing/corefinement.h>
    #include <CGAL/Polygon_mesh_processing/self_intersections.h>
    #include <CGAL/Polygon_mesh_processing/triangulate_faces.h>
    #include <CGAL/boost/graph/dijkstra_shortest_paths.h>
    #include <CGAL/exceptions.h>
    #include <CGAL/IO/Color.h>
    #include <boost/graph/prim_minimum_spanning_tree.hpp>
    #include <boost/foreach.hpp>
    typedef Kernel::Point_3 Point;
    typedef CGAL::Surface_mesh<Point> Surface;
    typedef CGAL::Surface_mesh<Point> SurfaceMesh;
    typedef CGAL::Color Color;
    typedef Surface::Vertex_index vertex_index;
    typedef boost::graph_traits<Surface>::vertex_descriptor
vertex_descriptor;
    typedef boost::graph_traits<Surface>::face_descriptor face_descriptor;
    typedef boost::graph_traits<Surface>::halfedge_descriptor
    halfedge_descriptor;
    std::vector<Point> verts;
    std::vector<Color> cols;

    int main(int argc, char **argv)
    {
         const char *filename = "facecube.off";
         std::ifstream input(filename);
         SurfaceMesh *mesh = new SurfaceMesh();

         if (!input || !(input >> *mesh)) {
             perror(filename);
         }

         SurfaceMesh::Property_map<SurfaceMesh::Face_index, CGAL::Color>
    vcolors =
             mesh->property_map<SurfaceMesh::Face_index, CGAL::Color >
             ("v:color").first;

         bool colorExists = mesh->property_map
             <SurfaceMesh::Face_index, CGAL::Color>("v:color").second;
         if (colorExists )
             printf("color exists\n");
         else
             printf("color do not exist\n");
    }

Any idears ?

so long
MUFTI



Archive powered by MHonArc 2.6.18.

Top of Page