README 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. This is a small program that illustrates how to compute Bounded Biharmonic
  2. Weights (BBW) for a given surface mesh and skeleton description. This only
  3. supports point handles and skeleton trees (bones). Cages are not supported.
  4. This program only computes and outputs the weight function values. You should
  5. be able to load them into matlab or maya or whatever.
  6. This demo (main.cpp) is really just a skeleton of function calls that load the
  7. input and writes the output. The real "meat" of the bbw demo is conducted in
  8. the bbw function of libigl. If you only want to look at that implementation,
  9. then download libigl and jump to libigl/include/igl/mosek/bbw.h and
  10. libigl/include/igl/mosek/bbw.cpp
  11. = Dependencies =
  12. The dependencies are:
  13. libigl
  14. eigen3
  15. tetgen
  16. mosek
  17. libigl_tetgen
  18. libigl_mosek
  19. = libigl =
  20. libigl is our groups internal library. The library functions as an inlined
  21. header library and simultaneously a static library.
  22. http://igl.ethz.ch/projects/libigl/
  23. This demo depends on the libigl_tetgen and libigl_mosek extras that come with
  24. libigl. You will have to edit your libigl Makefile.conf accordingly: set
  25. IGL_WITH_TETGEN=1 and IGL_WITH_MOSEK=1 and then build the main libigl library
  26. and the extras with:
  27. make lib
  28. make extras
  29. = Eigen3 =
  30. The libigl dependencies rely on a depracted version of the Sparse Matrix
  31. suite in eigen 3. Thus you need the correct version of eigen. It's not
  32. clear how much longer this will work with the current version of Eigen.
  33. = Mosek =
  34. Mosek is free for academics and has its own installation instructions.
  35. Adjust the makefile accordingly.
  36. = Tetgen =
  37. Tetgen is also free and easy to install. Be sure to compile the library
  38. version, i.e.:
  39. make tetlib
  40. To make life a little easier, libigl include a working version of tetgen in
  41. libigl/external/tetgen/. You can go there and compile libtet.a or download
  42. the tetgen source and do that on your own. Whatever.
  43. = COMPILE =
  44. First install the dependencies (eigen, tetgen, mosek, libigl). If your on a
  45. mac, and why wouldn't you be, then you *should* with any luck and by the grace
  46. of God be able to compile with:
  47. make
  48. = RUN =
  49. Then run an example with:
  50. ./bbw_demo examples/brick.obj examples/brick.tgf
  51. This will produce at least 2 files:
  52. examples/brick-volume.mesh Tetrahedral mesh over which weights were computed
  53. examples/brick-volume.dmat Coefficients of weights defined over .mesh
  54. = File Formats =
  55. See libigl/file-formats/index.html
  56. = Zip =
  57. Package up this demo using:
  58. zip -9 -r -x=*/.hg/* -x=*un~ bbw_demo_3d.zip ../bbw
  59. = Contact =
  60. You can try to email Alec Jacobson (alecjacobson@gmail.com) with questions.
  61. Especially regarding the algorithm described in "Bounded biharmonic weights for
  62. real-time deformation" by [Jacobson et al. 2011]. However, please
  63. please
  64. please
  65. please
  66. please
  67. please
  68. please
  69. please
  70. please
  71. please
  72. please
  73. please
  74. please
  75. please
  76. please
  77. please
  78. please
  79. please
  80. try to solve compilation troubles on your own. I didn't intend for this code to
  81. be machine independent or even necessarily easy to compile. This is a quick and
  82. dirty demo because so many people requested it.
  83. Sometime in the not too distant future I still plan to release a *nice* 3d, C++
  84. demo.
  85. Love,
  86. Alec