main.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <igl/readOFF.h>
  2. #include <igl/viewer/Viewer.h>
  3. #include <nanogui/formhelper.h>
  4. #include <nanogui/screen.h>
  5. #include <iostream>
  6. #include "tutorial_shared_path.h"
  7. Eigen::MatrixXd V;
  8. Eigen::MatrixXi F;
  9. bool boolVariable = true;
  10. float floatVariable = 0.1f;
  11. int main(int argc, char *argv[])
  12. {
  13. // Load a mesh in OFF format
  14. igl::readOFF(TUTORIAL_SHARED_PATH "/bunny.off", V, F);
  15. // Init the viewer
  16. igl::viewer::Viewer viewer;
  17. // Extend viewer menu
  18. viewer.callback_init = [&](igl::viewer::Viewer& viewer)
  19. {
  20. // Add new group
  21. viewer.ngui->addGroup("New Group");
  22. // Expose variable directly ...
  23. viewer.ngui->addVariable("float",floatVariable);
  24. // ... or using a custom callback
  25. viewer.ngui->addVariable<bool>("bool",[&](bool val) {
  26. boolVariable = val; // set
  27. },[&]() {
  28. return boolVariable; // get
  29. });
  30. // Add a button
  31. viewer.ngui->addButton("Print Hello",[](){ std::cout << "Hello\n"; });
  32. // Add an additional bar
  33. viewer.ngui->addWindow(Eigen::Vector2i(220,10),"New Window");
  34. // Expose the same variable directly ...
  35. viewer.ngui->addVariable("float",floatVariable);
  36. // Generate menu
  37. viewer.screen->performLayout();
  38. return false;
  39. };
  40. // Plot the mesh
  41. viewer.data.set_mesh(V, F);
  42. viewer.launch();
  43. }