Blender Git Loki
Git Commits -> Revision cb0aa46
Revision cb0aa46 by Ken Hughes (master) July 31, 2008, 18:37 (GMT) |
Tools ----- New boolean merge algorithm. The current code often does a poor job of merging tris and quads after the operation, resulting in many unnecessary faces. This commit add a new algorithm which takes advantage of topology information saved in the interal BOP structures. The file intern/boolop/intern/BOP_Misc.h has two #defines which control which algorithm(s) are compiled. They are set now to compile both, with the new algorithm as the default. The original algorithm can be enabled by setting the "rt" debugging button on the Scene panel (F10) to 100. One note: the current boolean code still occasionally creates a non-manifold mesh from an operation on two manifold meshes. The original merge algorithm would sometimes "close" these meshes and sometimes not. The new algorithms behaves the same way, but sometimes closes a mesh the original would not and sometimes leaves open a mesh the original would close. My fairly extensive tests did not indicate any significant difference in the percentage of final non-manifold meshes. |
Commit Details:
Full Hash: cb0aa467cd7acb1392897bf436d808de5b40e552
SVN Revision: 15899
Parent Commit: d664499
Lines Changed: +1135, -2
2 Added Paths:
/intern/boolop/intern/BOP_Merge2.cpp (+944, -0) (View)
/intern/boolop/intern/BOP_Merge2.h (+99, -0) (View)
/intern/boolop/intern/BOP_Merge2.h (+99, -0) (View)
8 Modified Paths:
/intern/boolop/intern/BOP_Edge.cpp (+28, -0) (Diff)
/intern/boolop/intern/BOP_Edge.h (+8, -0) (Diff)
/intern/boolop/intern/BOP_Interface.cpp (+29, -1) (Diff)
/intern/boolop/intern/BOP_Merge.cpp (+3, -0) (Diff)
/intern/boolop/intern/BOP_Merge.h (+5, -0) (Diff)
/intern/boolop/intern/BOP_Mesh.cpp (+7, -0) (Diff)
/intern/boolop/intern/BOP_Misc.h (+11, -0) (Diff)
/intern/boolop/intern/BOP_Tag.h (+1, -1) (Diff)
/intern/boolop/intern/BOP_Edge.h (+8, -0) (Diff)
/intern/boolop/intern/BOP_Interface.cpp (+29, -1) (Diff)
/intern/boolop/intern/BOP_Merge.cpp (+3, -0) (Diff)
/intern/boolop/intern/BOP_Merge.h (+5, -0) (Diff)
/intern/boolop/intern/BOP_Mesh.cpp (+7, -0) (Diff)
/intern/boolop/intern/BOP_Misc.h (+11, -0) (Diff)
/intern/boolop/intern/BOP_Tag.h (+1, -1) (Diff)