Browse Source

- removed wrappers from viewer.h
- fixed links in tutorial.md
- uploaded compiled tutorial.html


Former-commit-id: 65d308d85115ef553303125e125b0dcc2c74efe0

Daniele Panozzo 11 years ago
parent
commit
d8dd116b18
40 changed files with 187 additions and 332 deletions
  1. 2 92
      include/igl/viewer/Viewer.cpp
  2. 0 45
      include/igl/viewer/Viewer.h
  3. 1 1
      tutorial/102_DrawMesh/main.cpp
  4. 5 5
      tutorial/103_Events/main.cpp
  5. 2 2
      tutorial/104_Colors/main.cpp
  6. 5 5
      tutorial/105_Overlays/main.cpp
  7. 5 5
      tutorial/201_Normals/main.cpp
  8. 2 2
      tutorial/202_GaussianCurvature/main.cpp
  9. 4 4
      tutorial/203_CurvatureDirections/main.cpp
  10. 3 3
      tutorial/204_Gradient/main.cpp
  11. 5 5
      tutorial/205_Laplacian/main.cpp
  12. 2 2
      tutorial/301_Slice/main.cpp
  13. 2 2
      tutorial/302_Sort/main.cpp
  14. 2 2
      tutorial/303_LaplaceEquation/main.cpp
  15. 3 3
      tutorial/304_LinearEqualityConstraints/main.cpp
  16. 2 2
      tutorial/305_QuadraticProgramming/main.cpp
  17. 4 4
      tutorial/401_BiharmonicDeformation/main.cpp
  18. 4 4
      tutorial/402_PolyharmonicDeformation/main.cpp
  19. 6 6
      tutorial/403_BoundedBiharmonicWeights/main.cpp
  20. 5 5
      tutorial/404_DualQuaternionSkinning/main.cpp
  21. 4 4
      tutorial/405_AsRigidAsPossible/main.cpp
  22. 5 5
      tutorial/406_FastAutomaticSkinningTransformations/main.cpp
  23. 5 5
      tutorial/501_HarmonicParam/main.cpp
  24. 5 5
      tutorial/502_LSCMParam/main.cpp
  25. 5 5
      tutorial/503_ARAPParam/main.cpp
  26. 7 7
      tutorial/504_NRosyDesign/main.cpp
  27. 28 28
      tutorial/505_MIQ/main.cpp
  28. 24 24
      tutorial/506_FrameField/main.cpp
  29. 4 4
      tutorial/507_PolyVectorField/main.cpp
  30. 9 9
      tutorial/508_ConjugateField/main.cpp
  31. 12 12
      tutorial/509_Planarization/main.cpp
  32. 2 2
      tutorial/602_Matlab/main.cpp
  33. 1 1
      tutorial/604_Triangle/main.cpp
  34. 3 3
      tutorial/605_Tetgen/main.cpp
  35. 3 3
      tutorial/606_AmbientOcclusion/main.cpp
  36. 3 3
      tutorial/607_Picking/main.cpp
  37. 2 2
      tutorial/608_LIM/main.cpp
  38. 0 5
      tutorial/compile_example.sh
  39. 0 5
      tutorial/compile_example_xcode.sh
  40. 1 1
      tutorial/tutorial.md.REMOVED.git-id

+ 2 - 92
include/igl/viewer/Viewer.cpp

@@ -415,7 +415,7 @@ namespace igl
     scroll_position = 0.0f;
 
     // Per face
-    set_face_based(false);
+    data.set_face_based(false);
 
     // C-style callbacks
     callback_pre_draw     = 0;
@@ -555,11 +555,6 @@ namespace igl
     return true;
   }
 
-  void Viewer::clear()
-  {
-    data.clear();
-  }
-
   bool Viewer::key_down(unsigned char key, int modifiers)
   {
     if (callback_key_down)
@@ -869,7 +864,7 @@ namespace igl
   void TW_CALL Viewer::set_face_based_cb(const void *param, void *clientData)
   {
     Viewer *viewer = static_cast<Viewer *>(clientData);
-    viewer->set_face_based(*((bool *) param));
+    viewer->data.set_face_based(*((bool *) param));
   }
 
   void TW_CALL Viewer::get_face_based_cb(void *param, void *clientData)
@@ -887,91 +882,6 @@ namespace igl
     static_cast<Viewer *>(clientData)->load_mesh_from_file(fname.c_str());
   }
 
-  void Viewer::set_face_based(bool newvalue)
-  {
-    data.set_face_based(newvalue);
-  }
-
-  void Viewer::compute_normals()
-  {
-    data.compute_normals();
-  }
-
-  void Viewer::align_camera_center()
-  {
-    core.align_camera_center(data.V,data.F);
-  }
-
-  void Viewer::set_mesh(const Eigen::MatrixXd& V, const Eigen::MatrixXi& F)
-  {
-    data.set_mesh(V,F);
-    core.align_camera_center(V,F);
-  }
-
-  void Viewer::set_vertices(const Eigen::MatrixXd& V)
-  {
-    data.set_vertices(V);
-  }
-
-  void Viewer::set_normals(const Eigen::MatrixXd& N)
-  {
-    data.set_normals(N);
-  }
-
-  void Viewer::set_colors(const Eigen::MatrixXd &C)
-  {
-    data.set_colors(C);
-  }
-
-  void Viewer::set_uv(const Eigen::MatrixXd& UV)
-  {
-    data.set_uv(UV);
-  }
-
-  void Viewer::set_uv(const Eigen::MatrixXd& UV_V, const Eigen::MatrixXi& UV_F)
-  {
-    data.set_uv(UV_V,UV_F);
-  }
-
-
-  void Viewer::set_texture(
-    const Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic>& R,
-    const Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic>& G,
-    const Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic>& B)
-  {
-    data.set_texture(R,G,B);
-  }
-
-  void Viewer::set_points(
-    const Eigen::MatrixXd& P,
-    const Eigen::MatrixXd& C)
-  {
-    data.set_points(P,C);
-  }
-
-  void Viewer::add_points(const Eigen::MatrixXd& P,  const Eigen::MatrixXd& C)
-  {
-    data.add_points(P,C);
-  }
-
-  void Viewer::set_edges(
-    const Eigen::MatrixXd& P,
-    const Eigen::MatrixXi& E,
-    const Eigen::MatrixXd& C)
-  {
-    data.set_edges(P,E,C);
-  }
-
-  void Viewer::add_edges(const Eigen::MatrixXd& P1, const Eigen::MatrixXd& P2, const Eigen::MatrixXd& C)
-  {
-    data.add_edges(P1,P2,C);
-  }
-
-  void Viewer::add_label(const Eigen::VectorXd& P,  const std::string& str)
-  {
-    data.add_label(P,str);
-  }
-
   int Viewer::launch(std::string filename)
   {
     GLFWwindow* window;

+ 0 - 45
include/igl/viewer/Viewer.h

@@ -74,51 +74,6 @@ namespace igl
     // Keep track of the global position of the scrollwheel
     float scroll_position;
 
-    // Wrappers for ViewerCore functions
-    void align_camera_center();
-
-    // Wrappers for ViewerData functions
-
-    void clear();
-    void compute_normals();
-    void set_face_based(bool newvalue);
-    void set_mesh(const Eigen::MatrixXd& V, const Eigen::MatrixXi& F);
-    void set_vertices(const Eigen::MatrixXd& V);
-    void set_normals(const Eigen::MatrixXd& N);
-    void set_colors(const Eigen::MatrixXd &C);
-    void set_uv(const Eigen::MatrixXd& UV);
-    void set_uv(const Eigen::MatrixXd& UV_V, const Eigen::MatrixXi& UV_F);
-    void set_texture(
-                      const Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic>& R,
-                      const Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic>& G,
-                      const Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic>& B);
-
-    // Sets points given a list of point vertices. In constrast to `set_points`
-    // this will (purposefully) clober existing points.
-    //
-    // Inputs:
-    //   P  #P by 3 list of vertex positions
-    //   C  #P|1 by 3 color(s)
-    void set_points(
-      const Eigen::MatrixXd& P,  
-      const Eigen::MatrixXd& C);
-    void add_points(const Eigen::MatrixXd& P,  const Eigen::MatrixXd& C);
-    // Sets edges given a list of edge vertices and edge indices. In
-    // constrast
-    // to `add_edges` this will (purposefully) clober existing edges.
-    //
-    // Inputs:
-    //   P  #P by 3 list of vertex positions
-    //   E  #E by 2 list of edge indices into P
-    //   C  #E|1 by 3 color(s)
-    void set_edges(
-      const Eigen::MatrixXd& P, 
-      const Eigen::MatrixXi& E, 
-      const Eigen::MatrixXd& C);
-    void add_edges (const Eigen::MatrixXd& P1, const Eigen::MatrixXd& P2, const Eigen::MatrixXd& C);
-    void add_label (const Eigen::VectorXd& P,  const std::string& str);
-
-
     // UI Enumerations
     enum MouseButton {IGL_LEFT, IGL_MIDDLE, IGL_RIGHT};
     enum MouseMode { NOTHING, ROTATION, ZOOM, PAN, TRANSLATE} mouse_mode;

+ 1 - 1
tutorial/102_DrawMesh/main.cpp

@@ -11,6 +11,6 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.launch();
 }

+ 5 - 5
tutorial/103_Events/main.cpp

@@ -10,16 +10,16 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   if (key == '1')
   {
     // Clear should be called before drawing the mesh
-    viewer.clear();
+    viewer.data.clear();
     // Draw_mesh creates or updates the vertices and faces of the displayed mesh.
     // If a mesh is already displayed, draw_mesh returns an error if the given V and
     // F have size different than the current ones
-    viewer.set_mesh(V1, F1);
+    viewer.data.set_mesh(V1, F1);
   }
   else if (key == '2')
   {
-    viewer.clear();
-    viewer.set_mesh(V2, F2);
+    viewer.data.clear();
+    viewer.data.set_mesh(V2, F2);
   }
 
   return false;
@@ -36,6 +36,6 @@ int main(int argc, char *argv[])
   // Register a keyboard callback that allows to switch between
   // the two loaded meshes
   viewer.callback_key_down = &key_down;
-  viewer.set_mesh(V1, F1);
+  viewer.data.set_mesh(V1, F1);
   viewer.launch();
 }

+ 2 - 2
tutorial/104_Colors/main.cpp

@@ -13,7 +13,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
 
   // Use the x coordinate as a scalar field over the surface
   Eigen::VectorXd Z = V.col(2);
@@ -22,7 +22,7 @@ int main(int argc, char *argv[])
   igl::jet(Z,true,C);
 
   // Add per-vertex colors
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 
   // Launch the viewer
   viewer.launch();

+ 5 - 5
tutorial/105_Overlays/main.cpp

@@ -44,14 +44,14 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
 
   // Plot the corners of the bounding box as points
-  viewer.add_points(V_box,Eigen::RowVector3d(1,0,0));
+  viewer.data.add_points(V_box,Eigen::RowVector3d(1,0,0));
 
   // Plot the edges of the bounding box
   for (unsigned i=0;i<E_box.rows(); ++i)
-    viewer.add_edges
+    viewer.data.add_edges
     (
       V_box.row(E_box(i,0)),
       V_box.row(E_box(i,1)),
@@ -61,10 +61,10 @@ int main(int argc, char *argv[])
   // Plot labels with the coordinates of bounding box vertices
   std::stringstream l1;
   l1 << m(0) << ", " << m(1) << ", " << m(2);
-  viewer.add_label(m,l1.str());
+  viewer.data.add_label(m,l1.str());
   std::stringstream l2;
   l2 << M(0) << ", " << M(1) << ", " << M(2);
-  viewer.add_label(M,l2.str());
+  viewer.data.add_label(M,l2.str());
 
   // Launch the viewer
   viewer.launch();

+ 5 - 5
tutorial/201_Normals/main.cpp

@@ -19,13 +19,13 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   switch(key)
   {
     case '1':
-      viewer.set_normals(N_faces);
+      viewer.data.set_normals(N_faces);
       return true;
     case '2':
-      viewer.set_normals(N_vertices);
+      viewer.data.set_normals(N_vertices);
       return true;
     case '3':
-      viewer.set_normals(N_corners);
+      viewer.data.set_normals(N_corners);
       return true;
     default: break;
   }
@@ -50,8 +50,8 @@ int main(int argc, char *argv[])
   igl::Viewer viewer;
   viewer.callback_key_down = &key_down;
   viewer.core.show_lines = false;
-  viewer.set_mesh(V, F);
-  viewer.set_normals(N_faces);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_normals(N_faces);
   std::cout<<
     "Press '1' for per-face normals."<<std::endl<<
     "Press '2' for per-vertex normals."<<std::endl<<

+ 2 - 2
tutorial/202_GaussianCurvature/main.cpp

@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
-  viewer.set_colors(C);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_colors(C);
   viewer.launch();
 }

+ 4 - 4
tutorial/203_CurvatureDirections/main.cpp

@@ -38,23 +38,23 @@ int main(int argc, char *argv[])
   H = 0.5*(PV1+PV2);
 
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
 
 
   // Compute pseudocolor
   MatrixXd C;
   igl::jet(H,true,C);
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 
   // Average edge length for sizing
   const double avg = igl::avg_edge_length(V,F);
 
   // Draw a blue segment parallel to the minimal curvature direction
   const RowVector3d red(1,0,0),blue(0,0,1);
-  viewer.add_edges(V + PD1*avg, V - PD1*avg, blue);
+  viewer.data.add_edges(V + PD1*avg, V - PD1*avg, blue);
 
   // Draw a red segment parallel to the maximal curvature direction
-  viewer.add_edges(V + PD2*avg, V - PD2*avg, red);
+  viewer.data.add_edges(V + PD2*avg, V - PD2*avg, red);
 
   // Hide wireframe
   viewer.core.show_lines = false;

+ 3 - 3
tutorial/204_Gradient/main.cpp

@@ -32,14 +32,14 @@ int main(int argc, char *argv[])
   const VectorXd GU_mag = GU.rowwise().norm();
 
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
 
   // Compute pseudocolor for original function
   MatrixXd C;
   igl::jet(U,true,C);
   // // Or for gradient magnitude
   //igl::jet(GU_mag,true,C);
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 
   // Average edge length divided by average gradient (for scaling)
   const double max_size = igl::avg_edge_length(V,F) / GU_mag.mean();
@@ -47,7 +47,7 @@ int main(int argc, char *argv[])
   MatrixXd BC;
   igl::barycenter(V,F,BC);
   const RowVector3d black(0,0,0);
-  viewer.add_edges(BC,BC+max_size*GU, black);
+  viewer.data.add_edges(BC,BC+max_size*GU, black);
 
   // Hide wireframe
   viewer.core.show_lines = false;

+ 5 - 5
tutorial/205_Laplacian/main.cpp

@@ -67,9 +67,9 @@ int main(int argc, char *argv[])
         return false;
     }
     // Send new positions, update normals, recenter
-    viewer.set_vertices(U);
-    viewer.compute_normals();
-    viewer.align_camera_center();
+    viewer.data.set_vertices(U);
+    viewer.data.compute_normals();
+    viewer.core.align_camera_center(V,F);
     return true;
   };
 
@@ -81,8 +81,8 @@ int main(int argc, char *argv[])
 
   // Initialize smoothing with base mesh
   U = V;
-  viewer.set_mesh(U, F);
-  viewer.set_colors(C);
+  viewer.data.set_mesh(U, F);
+  viewer.data.set_colors(C);
   viewer.callback_key_down = key_down;
 
   cout<<"Press [space] to smooth."<<endl;;

+ 2 - 2
tutorial/301_Slice/main.cpp

@@ -34,7 +34,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
-  viewer.set_colors(C);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_colors(C);
   viewer.launch();
 }

+ 2 - 2
tutorial/302_Sort/main.cpp

@@ -32,7 +32,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
-  viewer.set_colors(C);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_colors(C);
   viewer.launch();
 }

+ 2 - 2
tutorial/303_LaplaceEquation/main.cpp

@@ -64,8 +64,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.core.show_lines = false;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
   viewer.launch();
 }

+ 3 - 3
tutorial/304_LinearEqualityConstraints/main.cpp

@@ -71,9 +71,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.core.show_lines = false;
-  viewer.set_colors(data.C);
+  viewer.data.set_colors(data.C);
 
   viewer.callback_key_down = 
     [](igl::Viewer& viewer,unsigned char key,int mod)->bool
@@ -82,7 +82,7 @@ int main(int argc, char *argv[])
       {
         Data & data = *static_cast<Data*>(viewer.callback_key_down_data);
         static bool toggle = true;
-        viewer.set_colors(toggle?data.C_const:data.C);
+        viewer.data.set_colors(toggle?data.C_const:data.C);
         toggle = !toggle;
         return true;
       }else

+ 2 - 2
tutorial/305_QuadraticProgramming/main.cpp

@@ -23,7 +23,7 @@ void solve(igl::Viewer &viewer)
   // Pseudo-color based on solution
   Eigen::MatrixXd C;
   igl::jet(Z,0,1,C);
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 }
 
 bool key_down(igl::Viewer &viewer, unsigned char key, int mod)
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.core.show_lines = false;
   viewer.callback_key_down = &key_down;
 

+ 4 - 4
tutorial/401_BiharmonicDeformation/main.cpp

@@ -35,8 +35,8 @@ bool pre_draw(igl::Viewer & viewer)
   {
     igl::harmonic(V,F,b,U_bc_anim,2,U);
   }
-  viewer.set_vertices(U);
-  viewer.compute_normals();
+  viewer.data.set_vertices(U);
+  viewer.data.compute_normals();
   return false;
 }
 
@@ -108,9 +108,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(U, F);
+  viewer.data.set_mesh(U, F);
   viewer.core.show_lines = false;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
   viewer.core.trackball_angle << 0,sqrt(2.0),0,sqrt(2.0);
   viewer.core.trackball_angle.normalize();
   viewer.callback_pre_draw = &pre_draw;

+ 4 - 4
tutorial/402_PolyharmonicDeformation/main.cpp

@@ -24,8 +24,8 @@ bool pre_draw(igl::Viewer & viewer)
     resolve = false;
   }
   U.col(2) = z_max*Z;
-  viewer.set_vertices(U);
-  viewer.compute_normals();
+  viewer.data.set_vertices(U);
+  viewer.data.compute_normals();
   if(viewer.core.is_animating)
   {
     z_max += z_dir;
@@ -92,9 +92,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(U, F);
+  viewer.data.set_mesh(U, F);
   viewer.core.show_lines = false;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
   viewer.core.trackball_angle << -0.58,-0.03,-0.03,0.81;
   viewer.core.trackball_angle.normalize();
   viewer.callback_pre_draw = &pre_draw;

+ 6 - 6
tutorial/403_BoundedBiharmonicWeights/main.cpp

@@ -71,9 +71,9 @@ bool pre_draw(igl::Viewer & viewer)
     MatrixXi BET;
     igl::deform_skeleton(C,BE,T,CT,BET);
     
-    viewer.set_vertices(U);
-    viewer.set_edges(CT,BET,sea_green);
-    viewer.compute_normals();
+    viewer.data.set_vertices(U);
+    viewer.data.set_edges(CT,BET,sea_green);
+    viewer.data.compute_normals();
     anim_t += anim_t_dir;
     anim_t_dir *= (anim_t>=1.0 || anim_t<=0.0?-1.0:1.0);
   }
@@ -84,7 +84,7 @@ void set_color(igl::Viewer &viewer)
 {
   Eigen::MatrixXd C;
   igl::jet(W.col(selected).eval(),true,C);
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 }
 
 bool key_down(igl::Viewer &viewer, unsigned char key, int mods)
@@ -145,9 +145,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(U, F);
+  viewer.data.set_mesh(U, F);
   set_color(viewer);
-  viewer.set_edges(C,BE,sea_green);
+  viewer.data.set_edges(C,BE,sea_green);
   viewer.core.show_lines = false;
   viewer.core.show_overlay_depth = false;
   viewer.core.line_width = 1;

+ 5 - 5
tutorial/404_DualQuaternionSkinning/main.cpp

@@ -75,9 +75,9 @@ bool pre_draw(igl::Viewer & viewer)
     MatrixXi BET;
     igl::deform_skeleton(C,BE,T,CT,BET);
     
-    viewer.set_vertices(U);
-    viewer.set_edges(CT,BET,sea_green);
-    viewer.compute_normals();
+    viewer.data.set_vertices(U);
+    viewer.data.set_edges(CT,BET,sea_green);
+    viewer.data.compute_normals();
     if(viewer.core.is_animating)
     {
       anim_t += anim_t_dir;
@@ -129,8 +129,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(U, F);
-  viewer.set_edges(C,BE,sea_green);
+  viewer.data.set_mesh(U, F);
+  viewer.data.set_edges(C,BE,sea_green);
   viewer.core.show_lines = false;
   viewer.core.show_overlay_depth = false;
   viewer.core.line_width = 1;

+ 4 - 4
tutorial/405_AsRigidAsPossible/main.cpp

@@ -66,8 +66,8 @@ bool pre_draw(igl::Viewer & viewer)
       }
     }
     igl::arap_solve(bc,arap_data,U);
-    viewer.set_vertices(U);
-    viewer.compute_normals();
+    viewer.data.set_vertices(U);
+    viewer.data.compute_normals();
   if(viewer.core.is_animating)
   {
     anim_t += anim_t_dir;
@@ -121,8 +121,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(U, F);
-  viewer.set_colors(C);
+  viewer.data.set_mesh(U, F);
+  viewer.data.set_colors(C);
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.core.is_animating = false;

+ 5 - 5
tutorial/406_FastAutomaticSkinningTransformations/main.cpp

@@ -97,9 +97,9 @@ bool pre_draw(igl::Viewer & viewer)
         break;
       }
     }
-    viewer.set_vertices(U);
-    viewer.set_points(bc,sea_green);
-    viewer.compute_normals();
+    viewer.data.set_vertices(U);
+    viewer.data.set_points(bc,sea_green);
+    viewer.data.compute_normals();
     if(viewer.core.is_animating)
     {
       anim_t += anim_t_dir;
@@ -203,8 +203,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::Viewer viewer;
-  viewer.set_mesh(U, F);
-  viewer.add_points(igl::slice(V,b,1),sea_green);
+  viewer.data.set_mesh(U, F);
+  viewer.data.add_points(igl::slice(V,b,1),sea_green);
   viewer.core.show_lines = false;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;

+ 5 - 5
tutorial/501_HarmonicParam/main.cpp

@@ -12,12 +12,12 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
 {
   if (key == '1')
     // Plot the 3D mesh
-    viewer.set_mesh(V,F);
+    viewer.data.set_mesh(V,F);
   else if (key == '2')
     // Plot the mesh in 2D using the UV coordinates as vertex coordinates
-    viewer.set_mesh(V_uv,F);
+    viewer.data.set_mesh(V_uv,F);
 
-  viewer.compute_normals();
+  viewer.data.compute_normals();
 
   return false;
 }
@@ -43,8 +43,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
-  viewer.set_uv(V_uv);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_uv(V_uv);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe

+ 5 - 5
tutorial/502_LSCMParam/main.cpp

@@ -13,12 +13,12 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
 
   if (key == '1')
     // Plot the 3D mesh
-    viewer.set_mesh(V,F);
+    viewer.data.set_mesh(V,F);
   else if (key == '2')
     // Plot the mesh in 2D using the UV coordinates as vertex coordinates
-    viewer.set_mesh(V_uv,F);
+    viewer.data.set_mesh(V_uv,F);
 
-  viewer.compute_normals();
+  viewer.data.compute_normals();
 
   return false;
 }
@@ -47,8 +47,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
-  viewer.set_uv(V_uv);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_uv(V_uv);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe

+ 5 - 5
tutorial/503_ARAPParam/main.cpp

@@ -23,11 +23,11 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     V_uv = initial_guess;
 
   if (show_uv)
-    viewer.set_mesh(V_uv,F);
+    viewer.data.set_mesh(V_uv,F);
   else
-    viewer.set_mesh(V,F);
+    viewer.data.set_mesh(V,F);
 
-  viewer.compute_normals();
+  viewer.data.compute_normals();
 
   return false;
 }
@@ -69,8 +69,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
-  viewer.set_uv(V_uv);
+  viewer.data.set_mesh(V, F);
+  viewer.data.set_uv(V_uv);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe

+ 7 - 7
tutorial/504_NRosyDesign/main.cpp

@@ -51,8 +51,8 @@ void representative_to_nrosy(const MatrixXd& V, const MatrixXi& F, const MatrixX
 void plot_mesh_nrosy(igl::Viewer& viewer, MatrixXd& V, MatrixXi& F, int N, MatrixXd& PD1, VectorXd& S, VectorXi& b)
 {
   // Clear the mesh
-  viewer.clear();
-  viewer.set_mesh(V,F);
+  viewer.data.clear();
+  viewer.data.set_mesh(V,F);
 
   // Expand the representative vectors in the full vector set and plot them as lines
   double avg = igl::avg_edge_length(V, F);
@@ -67,22 +67,22 @@ void plot_mesh_nrosy(igl::Viewer& viewer, MatrixXd& V, MatrixXi& F, int N, Matri
     for(unsigned j=0; j<N; ++j)
       Be.row(i*N+j) = B.row(i);
 
-  viewer.add_edges(Be,Be+Y*(avg/2),RowVector3d(0,0,1));
+  viewer.data.add_edges(Be,Be+Y*(avg/2),RowVector3d(0,0,1));
 
   // Plot the singularities as colored dots (red for negative, blue for positive)
   for (unsigned i=0; i<S.size();++i)
   {
     if (S(i) < -0.001)
-      viewer.add_points(V.row(i),RowVector3d(1,0,0));
+      viewer.data.add_points(V.row(i),RowVector3d(1,0,0));
     else if (S(i) > 0.001)
-      viewer.add_points(V.row(i),RowVector3d(0,1,0));
+      viewer.data.add_points(V.row(i),RowVector3d(0,1,0));
   }
 
   // Highlight in red the constrained faces
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
     C.row(b(i)) << 1, 0, 0;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 }
 
   // It allows to change the degree of the field when a number is pressed
@@ -120,7 +120,7 @@ int main(int argc, char *argv[])
   key_down(viewer, '4', 0);
 
   // Plot the mesh
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe

+ 28 - 28
tutorial/505_MIQ/main.cpp

@@ -73,38 +73,38 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   if (key <'1' || key >'8')
     return false;
 
-  viewer.clear();
+  viewer.data.clear();
   viewer.core.show_lines = false;
   viewer.core.show_texture = false;
 
   if (key == '1')
   {
     // Cross field
-    viewer.set_mesh(V, F);
-    viewer.add_edges (B, B + global_scale*X1 ,Eigen::RowVector3d(1,0,0));
-    viewer.add_edges (B, B + global_scale*X2 ,Eigen::RowVector3d(0,0,1));
+    viewer.data.set_mesh(V, F);
+    viewer.data.add_edges(B, B + global_scale*X1 ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(B, B + global_scale*X2 ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '2')
   {
     // Bisector field
-    viewer.set_mesh(V, F);
-    viewer.add_edges (B, B + global_scale*BIS1 ,Eigen::RowVector3d(1,0,0));
-    viewer.add_edges (B, B + global_scale*BIS2 ,Eigen::RowVector3d(0,0,1));
+    viewer.data.set_mesh(V, F);
+    viewer.data.add_edges(B, B + global_scale*BIS1 ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(B, B + global_scale*BIS2 ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '3')
   {
     // Bisector field combed
-    viewer.set_mesh(V, F);
-    viewer.add_edges (B, B + global_scale*BIS1_combed ,Eigen::RowVector3d(1,0,0));
-    viewer.add_edges (B, B + global_scale*BIS2_combed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.set_mesh(V, F);
+    viewer.data.add_edges(B, B + global_scale*BIS1_combed ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(B, B + global_scale*BIS2_combed ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '4')
   {
     // Singularities and cuts
-    viewer.set_mesh(V, F);
+    viewer.data.set_mesh(V, F);
 
     // Plot cuts
     int l_count = Seams.sum();
@@ -124,15 +124,15 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
       }
     }
 
-    viewer.add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
+    viewer.data.add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
 
     // Plot the singularities as colored dots (red for negative, blue for positive)
     for (unsigned i=0; i<singularityIndex.size();++i)
     {
       if (singularityIndex(i) < 2 && singularityIndex(i) > 0)
-        viewer.add_points(V.row(i),Eigen::RowVector3d(1,0,0));
+        viewer.data.add_points(V.row(i),Eigen::RowVector3d(1,0,0));
       else if (singularityIndex(i) > 2)
-        viewer.add_points(V.row(i),Eigen::RowVector3d(0,1,0));
+        viewer.data.add_points(V.row(i),Eigen::RowVector3d(0,1,0));
     }
 
   }
@@ -141,9 +141,9 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   {
     // Singularities and cuts, original field
     // Singularities and cuts
-    viewer.set_mesh(V, F);
-    viewer.add_edges (B, B + global_scale*X1_combed ,Eigen::RowVector3d(1,0,0));
-    viewer.add_edges (B, B + global_scale*X2_combed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.set_mesh(V, F);
+    viewer.data.add_edges(B, B + global_scale*X1_combed ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(B, B + global_scale*X2_combed ,Eigen::RowVector3d(0,0,1));
 
     // Plot cuts
     int l_count = Seams.sum();
@@ -163,48 +163,48 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
       }
     }
 
-    viewer.add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
+    viewer.data.add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
 
     // Plot the singularities as colored dots (red for negative, blue for positive)
     for (unsigned i=0; i<singularityIndex.size();++i)
     {
       if (singularityIndex(i) < 2 && singularityIndex(i) > 0)
-        viewer.add_points(V.row(i),Eigen::RowVector3d(1,0,0));
+        viewer.data.add_points(V.row(i),Eigen::RowVector3d(1,0,0));
       else if (singularityIndex(i) > 2)
-        viewer.add_points(V.row(i),Eigen::RowVector3d(0,1,0));
+        viewer.data.add_points(V.row(i),Eigen::RowVector3d(0,1,0));
     }
   }
 
   if (key == '6')
   {
     // Global parametrization UV
-    viewer.set_mesh(UV, FUV);
-    viewer.set_uv(UV);
+    viewer.data.set_mesh(UV, FUV);
+    viewer.data.set_uv(UV);
     viewer.core.show_lines = true;
   }
 
   if (key == '7')
   {
     // Global parametrization in 3D
-    viewer.set_mesh(V, F);
-    viewer.set_uv(UV,FUV);
+    viewer.data.set_mesh(V, F);
+    viewer.data.set_uv(UV,FUV);
     viewer.core.show_texture = true;
   }
 
   if (key == '8')
   {
     // Global parametrization in 3D with seams
-    viewer.set_mesh(V, F);
-    viewer.set_uv(UV_seams,FUV_seams);
+    viewer.data.set_mesh(V, F);
+    viewer.data.set_uv(UV_seams,FUV_seams);
     viewer.core.show_texture = true;
   }
 
-  viewer.set_colors(Eigen::RowVector3d(1,1,1));
+  viewer.data.set_colors(Eigen::RowVector3d(1,1,1));
 
   // Replace the standard texture with an integer shift invariant texture
   Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic> texture_R, texture_G, texture_B;
   line_texture(texture_R, texture_G, texture_B);
-  viewer.set_texture(texture_R, texture_B, texture_G);
+  viewer.data.set_texture(texture_R, texture_B, texture_G);
 
   return false;
 }

+ 24 - 24
tutorial/506_FrameField/main.cpp

@@ -72,14 +72,14 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   if (key <'1' || key >'6')
     return false;
 
-  viewer.clear();
+  viewer.data.clear();
   viewer.core.show_lines = false;
   viewer.core.show_texture = false;
 
   if (key == '1')
   {
     // Frame field constraints
-    viewer.set_mesh(V, F);
+    viewer.data.set_mesh(V, F);
 
     MatrixXd F1_t = MatrixXd::Zero(FF1.rows(),FF1.cols());
     MatrixXd F2_t = MatrixXd::Zero(FF2.rows(),FF2.cols());
@@ -92,7 +92,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
       F2_t.row(b(i)) = bc2.row(i);
     }
 
-    viewer.set_colors(C);
+    viewer.data.set_colors(C);
 
     MatrixXd C1,C2;
     VectorXd K1 = F1_t.rowwise().norm();
@@ -100,71 +100,71 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     igl::jet(K1,true,C1);
     igl::jet(K2,true,C2);
 
-    viewer.add_edges (B - global_scale*F1_t, B + global_scale*F1_t ,C1);
-    viewer.add_edges (B - global_scale*F2_t, B + global_scale*F2_t ,C2);
+    viewer.data.add_edges(B - global_scale*F1_t, B + global_scale*F1_t ,C1);
+    viewer.data.add_edges(B - global_scale*F2_t, B + global_scale*F2_t ,C2);
   }
 
   if (key == '2')
   {
     // Frame field
-    viewer.set_mesh(V, F);
+    viewer.data.set_mesh(V, F);
     MatrixXd C1,C2;
     VectorXd K1 = FF1.rowwise().norm();
     VectorXd K2 = FF2.rowwise().norm();
     igl::jet(K1,true,C1);
     igl::jet(K2,true,C2);
 
-    viewer.add_edges (B - global_scale*FF1, B + global_scale*FF1 ,C1);
-    viewer.add_edges (B - global_scale*FF2, B + global_scale*FF2 ,C2);
+    viewer.data.add_edges(B - global_scale*FF1, B + global_scale*FF1 ,C1);
+    viewer.data.add_edges(B - global_scale*FF2, B + global_scale*FF2 ,C2);
 
     // Highlight in red the constrained faces
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
     for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-    viewer.set_colors(C);
+    viewer.data.set_colors(C);
 
   }
 
   if (key == '3')
   {
     // Deformed with frame field
-    viewer.set_mesh(V_deformed, F);
-    viewer.add_edges (B_deformed - global_scale*FF1_deformed, B_deformed + global_scale*FF1_deformed ,Eigen::RowVector3d(1,0,0));
-    viewer.add_edges (B_deformed - global_scale*FF2_deformed, B_deformed + global_scale*FF2_deformed ,Eigen::RowVector3d(0,0,1));
-    viewer.set_colors(RowVector3d(1,1,1));
+    viewer.data.set_mesh(V_deformed, F);
+    viewer.data.add_edges(B_deformed - global_scale*FF1_deformed, B_deformed + global_scale*FF1_deformed ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(B_deformed - global_scale*FF2_deformed, B_deformed + global_scale*FF2_deformed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.set_colors(RowVector3d(1,1,1));
   }
 
   if (key == '4')
   {
     // Deformed with cross field
-    viewer.set_mesh(V_deformed, F);
-    viewer.add_edges (B_deformed - global_scale*X1_deformed, B_deformed + global_scale*X1_deformed ,Eigen::RowVector3d(0,0,1));
-    viewer.add_edges (B_deformed - global_scale*X2_deformed, B_deformed + global_scale*X2_deformed ,Eigen::RowVector3d(0,0,1));
-    viewer.set_colors(RowVector3d(1,1,1));
+    viewer.data.set_mesh(V_deformed, F);
+    viewer.data.add_edges(B_deformed - global_scale*X1_deformed, B_deformed + global_scale*X1_deformed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(B_deformed - global_scale*X2_deformed, B_deformed + global_scale*X2_deformed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.set_colors(RowVector3d(1,1,1));
   }
 
   if (key == '5')
   {
     // Deformed with quad texture
-    viewer.set_mesh(V_deformed, F);
-    viewer.set_uv(V_uv,F_uv);
-    viewer.set_colors(RowVector3d(1,1,1));
+    viewer.data.set_mesh(V_deformed, F);
+    viewer.data.set_uv(V_uv,F_uv);
+    viewer.data.set_colors(RowVector3d(1,1,1));
     viewer.core.show_texture = true;
   }
 
   if (key == '6')
   {
     // Deformed with quad texture
-    viewer.set_mesh(V, F);
-    viewer.set_uv(V_uv,F_uv);
-    viewer.set_colors(RowVector3d(1,1,1));
+    viewer.data.set_mesh(V, F);
+    viewer.data.set_uv(V_uv,F_uv);
+    viewer.data.set_colors(RowVector3d(1,1,1));
     viewer.core.show_texture = true;
   }
 
   // Replace the standard texture with an integer shift invariant texture
   Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic> texture_R, texture_G, texture_B;
   line_texture(texture_R, texture_G, texture_B);
-  viewer.set_texture(texture_R, texture_B, texture_G);
+  viewer.data.set_texture(texture_R, texture_B, texture_G);
 
   return false;
 }

+ 4 - 4
tutorial/507_PolyVectorField/main.cpp

@@ -74,7 +74,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
     C.row(b(i)) << 1, 0, 0;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 
   for (int n=0; n<num; ++n)
   {
@@ -82,7 +82,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     VectorXd c = VF.rowwise().norm();
     MatrixXd C2;
     igl::jet(c,1,1+rand_factor,C2);
-    viewer.add_edges (B - global_scale*VF, B + global_scale*VF , C2);
+    viewer.data.add_edges(B - global_scale*VF, B + global_scale*VF , C2);
   }
 
 
@@ -107,9 +107,9 @@ int main(int argc, char *argv[])
 
   // Make the example deterministic
   srand(0);
-  
+
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   viewer.core.show_lines = false;
   key_down(viewer,'3',0);

+ 9 - 9
tutorial/508_ConjugateField/main.cpp

@@ -61,7 +61,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 
   if (key == '1')
   {
@@ -75,17 +75,17 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
       F2_t.row(b(i)) = bc.block(i,3,1,3);
     }
 
-    viewer.add_edges (B - global_scale*F1_t, B + global_scale*F1_t , Eigen::RowVector3d(0,0,1));
-    viewer.add_edges (B - global_scale*F2_t, B + global_scale*F2_t , Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(B - global_scale*F1_t, B + global_scale*F1_t , Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(B - global_scale*F2_t, B + global_scale*F2_t , Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '2')
   {
     // Interpolated result
-    viewer.add_edges (B - global_scale*smooth_pvf.block(0,0,F.rows(),3),
+    viewer.data.add_edges(B - global_scale*smooth_pvf.block(0,0,F.rows(),3),
                       B + global_scale*smooth_pvf.block(0,0,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
-    viewer.add_edges (B - global_scale*smooth_pvf.block(0,3,F.rows(),3),
+    viewer.data.add_edges(B - global_scale*smooth_pvf.block(0,3,F.rows(),3),
                       B + global_scale*smooth_pvf.block(0,3,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
   }
@@ -93,10 +93,10 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   if (key == '3')
   {
     // Conjugate field
-    viewer.add_edges (B - global_scale*conjugate_pvf.block(0,0,F.rows(),3),
+    viewer.data.add_edges(B - global_scale*conjugate_pvf.block(0,0,F.rows(),3),
                       B + global_scale*conjugate_pvf.block(0,0,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
-    viewer.add_edges (B - global_scale*conjugate_pvf.block(0,3,F.rows(),3),
+    viewer.data.add_edges(B - global_scale*conjugate_pvf.block(0,3,F.rows(),3),
                       B + global_scale*conjugate_pvf.block(0,3,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
   }
@@ -139,7 +139,7 @@ int main(int argc, char *argv[])
   VectorXi isConstrained = VectorXi::Constant(F.rows(),0);
   for (unsigned i=0; i<b.size(); ++i)
     isConstrained(b(i)) = 1;
-  
+
   igl::conjugate_frame_fields(*csdata, isConstrained, conjugate_pvf, conjugate_pvf, conjIter, lambdaOrtho, lambdaInit, lambdaMultFactor, doHardConstraints,
                               &lambdaOut);
 
@@ -148,7 +148,7 @@ int main(int argc, char *argv[])
   viewer.core.invert_normals = true;
   viewer.core.show_lines = false;
   viewer.core.show_texture = false;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   key_down(viewer,'3',0);
   viewer.launch();

+ 12 - 12
tutorial/509_Planarization/main.cpp

@@ -35,7 +35,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   if (key == '1')
   {
     // Draw the triangulated quad mesh
-    viewer.set_mesh(VQC, FQCtri);
+    viewer.data.set_mesh(VQC, FQCtri);
 
     // Assign a color to each quad that corresponds to its planarity
     VectorXd planarity;
@@ -44,20 +44,20 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     igl::jet(planarity, 0, 0.01, Ct);
     MatrixXd C(FQCtri.rows(),3);
     C << Ct, Ct;
-    viewer.set_colors(C);
+    viewer.data.set_colors(C);
 
     // Plot a line for each edge of the quad mesh
-    viewer.add_edges (PQC0, PQC1, Eigen::RowVector3d(0,0,0));
-    viewer.add_edges (PQC1, PQC2, Eigen::RowVector3d(0,0,0));
-    viewer.add_edges (PQC2, PQC3, Eigen::RowVector3d(0,0,0));
-    viewer.add_edges (PQC3, PQC0, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC0, PQC1, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC1, PQC2, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC2, PQC3, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC3, PQC0, Eigen::RowVector3d(0,0,0));
   }
 
   // Plot the planarized quad mesh
   if (key == '2')
   {
     // Draw the triangulated quad mesh
-    viewer.set_mesh(VQCplan, FQCtri);
+    viewer.data.set_mesh(VQCplan, FQCtri);
 
     // Assign a color to each quad that corresponds to its planarity
     VectorXd planarity;
@@ -66,13 +66,13 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     igl::jet(planarity, 0, 0.01, Ct);
     MatrixXd C(FQCtri.rows(),3);
     C << Ct, Ct;
-    viewer.set_colors(C);
+    viewer.data.set_colors(C);
 
     // Plot a line for each edge of the quad mesh
-    viewer.add_edges (PQC0plan, PQC1plan, Eigen::RowVector3d(0,0,0));
-    viewer.add_edges (PQC1plan, PQC2plan, Eigen::RowVector3d(0,0,0));
-    viewer.add_edges (PQC2plan, PQC3plan, Eigen::RowVector3d(0,0,0));
-    viewer.add_edges (PQC3plan, PQC0plan, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC0plan, PQC1plan, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC1plan, PQC2plan, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC2plan, PQC3plan, Eigen::RowVector3d(0,0,0));
+    viewer.data.add_edges(PQC3plan, PQC0plan, Eigen::RowVector3d(0,0,0));
   }
 
   return false;

+ 2 - 2
tutorial/602_Matlab/main.cpp

@@ -29,7 +29,7 @@ void plotEV(igl::Viewer& viewer, int id)
     C.row(i) << r,g,b;
   }
 
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
 }
 
 // This function is called every time a keyboard button is pressed
@@ -71,7 +71,7 @@ int main(int argc, char *argv[])
   // Plot the mesh
   igl::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
 
   // Plot the first non-trivial eigenvector
   plotEV(viewer,1);

+ 1 - 1
tutorial/604_Triangle/main.cpp

@@ -32,6 +32,6 @@ int main(int argc, char *argv[])
 
   // Plot the generated mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V2,F2);
+  viewer.data.set_mesh(V2,F2);
   viewer.launch();
 }

+ 3 - 3
tutorial/605_Tetgen/main.cpp

@@ -47,9 +47,9 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
       F_temp.row(i*4+3) << (i*4)+1, (i*4)+2, (i*4)+3;
     }
 
-    viewer.clear();
-    viewer.set_mesh(V_temp,F_temp);
-    viewer.set_face_based(true);
+    viewer.data.clear();
+    viewer.data.set_mesh(V_temp,F_temp);
+    viewer.data.set_face_based(true);
   }
 
 

+ 3 - 3
tutorial/606_AmbientOcclusion/main.cpp

@@ -22,7 +22,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   {
     case '1':
       // Show the mesh without the ambient occlusion factor
-      viewer.set_colors(color);
+      viewer.data.set_colors(color);
       break;
     case '2':
     {
@@ -30,7 +30,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
       MatrixXd C = color.replicate(V.rows(),1);
       for (unsigned i=0; i<C.rows();++i)
         C.row(i) *= AO(i);//std::min<double>(AO(i)+0.2,1);
-      viewer.set_colors(C);
+      viewer.data.set_colors(C);
       break;
     }
     case '.':
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
 
   // Show mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   key_down(viewer,'2',0);
   viewer.core.show_lines = false;

+ 3 - 3
tutorial/607_Picking/main.cpp

@@ -41,7 +41,7 @@ bool mouse_down(igl::Viewer& viewer, int button, int modifier)
   {
     cerr << "Picked face(vertex): " << fid << " (" << vid << ")" << endl;
     C.row(vid) << 1,0,0;
-    viewer.set_colors(C);
+    viewer.data.set_colors(C);
     return true;
   }
 
@@ -62,9 +62,9 @@ int main(int argc, char *argv[])
 
   // Show mesh
   igl::Viewer viewer;
-  viewer.set_mesh(V, F);
+  viewer.data.set_mesh(V, F);
   viewer.callback_mouse_down = &mouse_down;
-  viewer.set_colors(C);
+  viewer.data.set_colors(C);
   viewer.core.show_lines = false;
   viewer.launch();
 }

+ 2 - 2
tutorial/608_LIM/main.cpp

@@ -48,7 +48,7 @@ bool key_down(igl::Viewer& viewer,unsigned char key,int modifier)
       igl::lim(V1,V0,F,C,b,energyType,1e-8,100,true,true,barriersEnabled,true,-1,-1);
 
     // set mesh
-    viewer.set_vertices(V1);
+    viewer.data.set_vertices(V1);
 
     return true;
   }
@@ -106,7 +106,7 @@ int main(int argc, char *argv[])
   // Show mesh
   igl::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.set_mesh(V1, F);
+  viewer.data.set_mesh(V1, F);
   viewer.core.show_lines = true;
   viewer.core.lighting_factor = 0.0f;
   viewer.launch();

+ 0 - 5
tutorial/compile_example.sh

@@ -1,5 +0,0 @@
-rm -fr build
-mkdir build
-cd build
-cmake ../ $@
-make

+ 0 - 5
tutorial/compile_example_xcode.sh

@@ -1,5 +0,0 @@
-rm -fr buildXcode
-mkdir buildXcode
-cd buildXcode
-cmake -GXcode ../
-open buildXcode/*.xcodeproj

+ 1 - 1
tutorial/tutorial.md.REMOVED.git-id

@@ -1 +1 @@
-6127a47b15b72e4b970070dd6a839024e28b0dd6
+c2b00846b35bc5ed258bf4cc23820f1037b69e33