Weaving geodesic foliations

SIGGRAPH 2019


Reviews

Information

  • Paper topic: Geometry
  • Software type: Code
  • Able to run a replicability test: True
  • Replicability score: 3
  • Software language: C++
  • License: Mozilla Public License 2.0
  • Build mechanism: cmake
  • Dependencies: libigl
  • Documentation score {0,1,2}: 2
  • Reviewer: David Coeurjolly <david.coeurjolly@liris.cnrs.fr>
  • Time spent for the test (build->first run, timeout at 100min): 20min

Source code information

Comments

The code is pretty easy to compile. I only have to edit few files to update the LibIGL viewer API (see diff below). From the code, one can optimize some rod structres (many of the strucres presented in the paper are given as examples). However, the direction field part of the paper does not seem to be presented in the code (the author mentions another, no-yet-available, project for the field design.


diff --git a/RodsHook.cpp b/RodsHook.cpp
index ae8de98..11c6d49 100644
--- a/RodsHook.cpp
+++ b/RodsHook.cpp
@@ -144,8 +144,8 @@ void RodsHook::drawGUI(igl::opengl::glfw::imgui::ImGuiMenu &menu)
     menu.callback_draw_custom_window = [&]()
     {
         // Define next window position + size
-        ImGui::SetNextWindowPos(ImVec2(180.f * menu.menu_scaling(), 10), ImGuiSetCond_FirstUseEver);
-        ImGui::SetNextWindowSize(ImVec2(0, 0), ImGuiSetCond_FirstUseEver);
+      ImGui::SetNextWindowPos(ImVec2(180.f * menu.menu_scaling(), 10), ImGuiCond_FirstUseEver);
+      ImGui::SetNextWindowSize(ImVec2(0, 0), ImGuiCond_FirstUseEver);
         ImGui::Begin(
             "Stats", nullptr,
             ImGuiWindowFlags_NoSavedSettings
@@ -190,9 +190,9 @@ bool RodsHook::mouseClicked(igl::opengl::glfw::Viewer &viewer, int button)
     Eigen::Vector3f bc;
     // Cast a ray in the view direction starting from the mouse position
     double x = viewer.current_mouse_x;
-    double y = viewer.core.viewport(3) - viewer.current_mouse_y;
-    if (igl::unproject_onto_mesh(Eigen::Vector2f(x, y), viewer.core.view,
-        viewer.core.proj, viewer.core.viewport, this->Q, this->F, fid, bc))
+    double y = viewer.core().viewport(3) - viewer.current_mouse_y;
+    if (igl::unproject_onto_mesh(Eigen::Vector2f(x, y), viewer.core().view,
+        viewer.core().proj, viewer.core().viewport, this->Q, this->F, fid, bc))
     {
         int prevId = 0;
         int nextId = 0;
@@ -1531,7 +1531,7 @@ void RodsHook::renderRenderGeometry(igl::opengl::glfw::Viewer &viewer)
         viewer.data().set_points(Eigen::MatrixXd(0, 3), Eigen::MatrixXd(0, 3));
     }

-    viewer.core.lighting_factor = 0.;
+    viewer.core().lighting_factor = 0.;
     viewer.data().set_colors(faceColors);

     if(constraintEdges.rows() > 0)
diff --git a/main.cpp b/main.cpp
index 39dc709..d99844f 100755
--- a/main.cpp
+++ b/main.cpp
@@ -72,10 +72,10 @@ int main(int argc, char *argv[])

     hook = new RodsHook();

-    viewer.core.background_color = Eigen::Vector4f(.9, .9, .7, 1);
+    viewer.core().background_color = Eigen::Vector4f(.9, .9, .7, 1);^M

     viewer.data().set_face_based(true);
-    viewer.core.is_animating = true;
+    viewer.core().is_animating = true;^M
     viewer.callback_key_pressed = keyCallback;
     viewer.callback_mouse_down = mouseDownCallback;
     viewer.callback_pre_draw = drawCallback;

If you want to contribute with another review, please follow these instructions.

Please consider to cut/paste/edit the raw JSON data attached to this paper.