Browse Source

set_data supports #F-long data

Alec Jacobson 3 years ago
parent
commit
1f44d1e025
2 changed files with 12 additions and 4 deletions
  1. 11 1
      include/igl/opengl/ViewerData.cpp
  2. 1 3
      include/igl/opengl/ViewerData.h

+ 11 - 1
include/igl/opengl/ViewerData.cpp

@@ -285,7 +285,17 @@ IGL_INLINE void igl::opengl::ViewerData::set_data(
     igl::colormap(cmap,Eigen::VectorXd::LinSpaced(num_steps,0,1).eval(),0,1,CM);
     igl::colormap(cmap,Eigen::VectorXd::LinSpaced(num_steps,0,1).eval(),0,1,CM);
     set_colormap(CM);
     set_colormap(CM);
   }
   }
-  set_uv(((D.array()-caxis_min)/(caxis_max-caxis_min)).replicate(1,2));
+  Eigen::MatrixXd UV = ((D.array()-caxis_min)/(caxis_max-caxis_min)).replicate(1,2);
+  if(D.size() == V.rows())
+  {
+    set_uv(UV);
+  }else
+  {
+    assert(D.size() == F.rows());
+    Eigen::MatrixXi UV_F = 
+      Eigen::VectorXi::LinSpaced(F.rows(),0,F.rows()-1).replicate(1,3);
+    set_uv(UV,UV_F);
+  }
 }
 }
 
 
 IGL_INLINE void igl::opengl::ViewerData::set_data(const Eigen::VectorXd & D, igl::ColorMapType cmap, int num_steps)
 IGL_INLINE void igl::opengl::ViewerData::set_data(const Eigen::VectorXd & D, igl::ColorMapType cmap, int num_steps)

+ 1 - 3
include/igl/opengl/ViewerData.h

@@ -106,11 +106,9 @@ public:
   // Inputs:
   // Inputs:
   //   caxis_min  caxis minimum bound
   //   caxis_min  caxis minimum bound
   //   caxis_max  caxis maximum bound
   //   caxis_max  caxis maximum bound
-  //   D  #V by 1 list of scalar values
+  //   D  #V|#F by 1 list of scalar values
   //   cmap colormap type
   //   cmap colormap type
   //   num_steps number of intervals to discretize the colormap
   //   num_steps number of intervals to discretize the colormap
-  //
-  // To-do: support #F by 1 per-face data
   IGL_INLINE void set_data(
   IGL_INLINE void set_data(
     const Eigen::VectorXd & D,
     const Eigen::VectorXd & D,
     double caxis_min,
     double caxis_min,