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);
}