void save_colored_obj_pool_receptive_field()

in GraphSampling/meshPooler_visualizer.h [66:117]


    void save_colored_obj_pool_receptive_field(const string &filename, Mesh mesh, vector<vector<int>> receptive_map)
    {
        cout<<"save colored obj for visualizing pooling receptive field\n";
        vector<vector< Vec3<float> >> points_colors;
        points_colors.resize(mesh.points.size());


        for (int i=0;i<receptive_map.size();i++)
        {
            vector<int> connection_lst = receptive_map[i];
            float r = rand() / (float)RAND_MAX  ;
            float g = rand() / (float)RAND_MAX  ;
            float b = rand() / (float)RAND_MAX  ;
            Vec3<float> color = Vec3<float>(r,g,b);
            //cout<<connection_lst.size()<<"\n";
            for(int j=0;j<connection_lst.size();j++)
            {
                int q = connection_lst[j];
                points_colors[q].push_back(color);
            }
        }

        vector< Vec3<float> > colors;
        colors.resize(mesh.points.size());

        for(int i=0;i<points_colors.size();i++)
        {
            vector<Vec3<float>> point_colors = points_colors[i];
            Vec3<float> color=Vec3<float>(0,0,0);
            for (int j=0;j<point_colors.size();j++)
            {
                color = color + point_colors[j];
            }
            color = color / float(point_colors.size());
            colors[i] = color;
        }

        //set center to red

        /*
        for(int i =0;i<receptive_map.size();i++)
        {
            int center_id = receptive_map[i][0];
            colors[center_id] = Vec3<float>(1,0,0);
        }*/




        mesh.SaveOBJ(filename, mesh.points, colors, mesh.triangles);

    }