Blender Git Loki
Git Commits -> Revision e81f285
Revision e81f285 by Sergey Sharybin (master) January 16, 2012, 16:46 (GMT) |
Carve booleans library integration ================================== Merging Carve library integration project into the trunk. This commit switches Boolean modifier to another library which handles mesh boolean operations in much stable and faster way, resolving old well-known limitations of intern boolop library. Carve is integrating as alternative interface for boolop library and which makes it totally transparent for blender sources to switch between old-fashioned boolop and new Carve backends. Detailed changes in this commit: - Integrated needed subset of Carve library sources into extern/ Added script for re-bundling it (currently works only if repo was cloned by git-svn). - Added BOP_CarveInterface for boolop library which can be used by Boolean modifier. - Carve backend is enabled by default, can be disabled by WITH_BF_CARVE SCons option and WITH_CARVE CMake option. - If Boost library is found in build environment it'll be used for unordered collections. If Boost isn't found, it'll fallback to TR1 implementation for GCC compilers. Boost is obligatory if MSVC is used. Tested on Linux 64bit and Windows 7 64bit. NOTE: behavior of flat objects was changed. E.g. Plane-Sphere now gives plane with circle hole, not plane with semisphere. Don't think it's really issue because it's not actually defined behavior in such situations and both of ways might be useful. Since it's only known "regression" think it's OK to deal with it. Details are there http://wiki.blender.org/index.php/User:Nazg-gul/CarveBooleans Special thanks to: - Ken Hughes: author of original carve integration patch. - Campbell Barton: help in project development, review tests. - Tobias Sargeant: author of Carve library, help in resolving some merge stoppers, bug fixing. |
Commit Details:
Full Hash: e81f2853c8785b0a84ecebf7c4db433af434c5c8
SVN Revision: 43428
Parent Commit: c150d00
Lines Changed: +30725, -88
122 Added Paths:
/extern/carve/bundle.sh (+123, -0) (View)
/extern/carve/CMakeLists.txt (+166, -0) (View)
/extern/carve/files.txt (+107, -0) (View)
/extern/carve/include/carve/aabb.hpp (+150, -0) (View)
/extern/carve/include/carve/aabb_impl.hpp (+423, -0) (View)
/extern/carve/include/carve/carve.hpp (+238, -0) (View)
/extern/carve/include/carve/cbrt.h (+93, -0) (View)
/extern/carve/include/carve/classification.hpp (+115, -0) (View)
/extern/carve/include/carve/collection.hpp (+51, -0) (View)
/extern/carve/include/carve/collection/unordered.hpp (+43, -0) (View)
/extern/carve/include/carve/collection/unordered/boost_impl.hpp (+45, -0) (View)
/extern/carve/include/carve/collection/unordered/fallback_impl.hpp (+40, -0) (View)
/extern/carve/include/carve/collection/unordered/libstdcpp_impl.hpp (+61, -0) (View)
/extern/carve/include/carve/collection/unordered/std_impl.hpp (+23, -0) (View)
/extern/carve/include/carve/collection/unordered/tr1_impl.hpp (+58, -0) (View)
/extern/carve/include/carve/collection/unordered/vcpp_impl.hpp (+65, -0) (View)
/extern/carve/include/carve/collection_types.hpp (+63, -0) (View)
/extern/carve/include/carve/colour.hpp (+47, -0) (View)
/extern/carve/include/carve/config.h (+12, -0) (View)
/extern/carve/include/carve/convex_hull.hpp (+52, -0) (View)
/extern/carve/include/carve/csg.hpp (+498, -0) (View)
/extern/carve/include/carve/csg_triangulator.hpp (+434, -0) (View)
/extern/carve/include/carve/debug_hooks.hpp (+97, -0) (View)
/extern/carve/include/carve/djset.hpp (+134, -0) (View)
/extern/carve/include/carve/edge_decl.hpp (+68, -0) (View)
/extern/carve/include/carve/edge_impl.hpp (+23, -0) (View)
/extern/carve/include/carve/exact.hpp (+702, -0) (View)
/extern/carve/include/carve/faceloop.hpp (+103, -0) (View)
/extern/carve/include/carve/face_decl.hpp (+208, -0) (View)
/extern/carve/include/carve/face_impl.hpp (+140, -0) (View)
/extern/carve/include/carve/geom.hpp (+363, -0) (View)
/extern/carve/include/carve/geom2d.hpp (+403, -0) (View)
/extern/carve/include/carve/geom3d.hpp (+310, -0) (View)
/extern/carve/include/carve/geom_impl.hpp (+651, -0) (View)
/extern/carve/include/carve/gnu_cxx.h (+4, -0) (View)
/extern/carve/include/carve/heap.hpp (+425, -0) (View)
/extern/carve/include/carve/input.hpp (+251, -0) (View)
/extern/carve/include/carve/interpolator.hpp (+332, -0) (View)
/extern/carve/include/carve/intersection.hpp (+267, -0) (View)
/extern/carve/include/carve/iobj.hpp (+106, -0) (View)
/extern/carve/include/carve/kd_node.hpp (+308, -0) (View)
/extern/carve/include/carve/math.hpp (+60, -0) (View)
/extern/carve/include/carve/math_constants.hpp (+33, -0) (View)
/extern/carve/include/carve/matrix.hpp (+262, -0) (View)
/extern/carve/include/carve/mesh.hpp (+845, -0) (View)
/extern/carve/include/carve/mesh_impl.hpp (+1015, -0) (View)
/extern/carve/include/carve/mesh_ops.hpp (+975, -0) (View)
/extern/carve/include/carve/mesh_simplify.hpp (+1574, -0) (View)
/extern/carve/include/carve/octree_decl.hpp (+193, -0) (View)
/extern/carve/include/carve/octree_impl.hpp (+79, -0) (View)
/extern/carve/include/carve/pointset.hpp (+24, -0) (View)
/extern/carve/include/carve/pointset_decl.hpp (+61, -0) (View)
/extern/carve/include/carve/pointset_impl.hpp (+36, -0) (View)
/extern/carve/include/carve/pointset_iter.hpp (+18, -0) (View)
/extern/carve/include/carve/poly.hpp (+24, -0) (View)
/extern/carve/include/carve/polyhedron_base.hpp (+149, -0) (View)
/extern/carve/include/carve/polyhedron_decl.hpp (+184, -0) (View)
/extern/carve/include/carve/polyhedron_impl.hpp (+287, -0) (View)
/extern/carve/include/carve/polyline.hpp (+24, -0) (View)
/extern/carve/include/carve/polyline_decl.hpp (+151, -0) (View)
/extern/carve/include/carve/polyline_impl.hpp (+160, -0) (View)
/extern/carve/include/carve/polyline_iter.hpp (+198, -0) (View)
/extern/carve/include/carve/poly_decl.hpp (+25, -0) (View)
/extern/carve/include/carve/poly_impl.hpp (+25, -0) (View)
/extern/carve/include/carve/rescale.hpp (+100, -0) (View)
/extern/carve/include/carve/rtree.hpp (+501, -0) (View)
/extern/carve/include/carve/spacetree.hpp (+264, -0) (View)
/extern/carve/include/carve/tag.hpp (+44, -0) (View)
/extern/carve/include/carve/timing.hpp (+96, -0) (View)
/extern/carve/include/carve/tree.hpp (+324, -0) (View)
/extern/carve/include/carve/triangulator.hpp (+175, -0) (View)
/extern/carve/include/carve/triangulator_impl.hpp (+851, -0) (View)
/extern/carve/include/carve/util.hpp (+31, -0) (View)
/extern/carve/include/carve/vcpp_config.h (+17, -0) (View)
/extern/carve/include/carve/vector.hpp (+163, -0) (View)
/extern/carve/include/carve/vertex_decl.hpp (+111, -0) (View)
/extern/carve/include/carve/vertex_impl.hpp (+24, -0) (View)
/extern/carve/include/carve/win32.h (+53, -0) (View)
/extern/carve/lib/aabb.cpp (+29, -0) (View)
/extern/carve/lib/carve.cpp (+29, -0) (View)
/extern/carve/lib/convex_hull.cpp (+100, -0) (View)
/extern/carve/lib/csg.cpp (+93, -0) (View)
/extern/carve/lib/csg_collector.cpp (+371, -0) (View)
/extern/carve/lib/csg_collector.hpp (+24, -0) (View)
/extern/carve/lib/csg_data.hpp (+52, -0) (View)
/extern/carve/lib/csg_detail.hpp (+71, -0) (View)
/extern/carve/lib/edge.cpp (+23, -0) (View)
/extern/carve/lib/face.cpp (+278, -0) (View)
/extern/carve/lib/geom2d.cpp (+260, -0) (View)
/extern/carve/lib/geom3d.cpp (+164, -0) (View)
/extern/carve/lib/intersect.cpp (+1668, -0) (View)
/extern/carve/lib/intersection.cpp (+92, -0) (View)
/extern/carve/lib/intersect_classify_common.hpp (+46, -0) (View)
/extern/carve/lib/intersect_classify_common_impl.hpp (+362, -0) (View)
/extern/carve/lib/intersect_classify_edge.cpp (+820, -0) (View)
/extern/carve/lib/intersect_classify_group.cpp (+220, -0) (View)
/extern/carve/lib/intersect_common.hpp (+83, -0) (View)
/extern/carve/lib/intersect_debug.cpp (+65, -0) (View)
/extern/carve/lib/intersect_debug.hpp (+29, -0) (View)
/extern/carve/lib/intersect_face_division.cpp (+1709, -0) (View)
/extern/carve/lib/intersect_group.cpp (+232, -0) (View)
/extern/carve/lib/intersect_half_classify_group.cpp (+199, -0) (View)
/extern/carve/lib/math.cpp (+347, -0) (View)
/extern/carve/lib/mesh.cpp (+1203, -0) (View)
/extern/carve/lib/octree.cpp (+399, -0) (View)
/extern/carve/lib/pointset.cpp (+59, -0) (View)
/extern/carve/lib/polyhedron.cpp (+1103, -0) (View)
/extern/carve/lib/polyline.cpp (+67, -0) (View)
/extern/carve/lib/tag.cpp (+24, -0) (View)
/extern/carve/lib/timing.cpp (+436, -0) (View)
/extern/carve/lib/triangulator.cpp (+1211, -0) (View)
/extern/carve/LICENSE.GPL2 (+361, -0) (View)
/extern/carve/mkfiles.sh (+4, -0) (View)
/extern/carve/patches/files/config.h (+12, -0) (View)
/extern/carve/patches/files/random.hpp (+773, -0) (View)
/extern/carve/patches/includes.patch (+84, -0) (View)
/extern/carve/patches/mesh_iterator.patch (+21, -0) (View)
/extern/carve/patches/series (+4, -0)
/extern/carve/patches/strict_flags.patch (+46, -0) (View)
/extern/carve/patches/win32.patch (+29, -0) (View)
/extern/carve/SConscript (+22, -0) (View)
/intern/boolop/intern/BOP_CarveInterface.cpp (+403, -0) (View)
/extern/carve/CMakeLists.txt (+166, -0) (View)
/extern/carve/files.txt (+107, -0) (View)
/extern/carve/include/carve/aabb.hpp (+150, -0) (View)
/extern/carve/include/carve/aabb_impl.hpp (+423, -0) (View)
/extern/carve/include/carve/carve.hpp (+238, -0) (View)
/extern/carve/include/carve/cbrt.h (+93, -0) (View)
/extern/carve/include/carve/classification.hpp (+115, -0) (View)
/extern/carve/include/carve/collection.hpp (+51, -0) (View)
/extern/carve/include/carve/collection/unordered.hpp (+43, -0) (View)
/extern/carve/include/carve/collection/unordered/boost_impl.hpp (+45, -0) (View)
/extern/carve/include/carve/collection/unordered/fallback_impl.hpp (+40, -0) (View)
/extern/carve/include/carve/collection/unordered/libstdcpp_impl.hpp (+61, -0) (View)
/extern/carve/include/carve/collection/unordered/std_impl.hpp (+23, -0) (View)
/extern/carve/include/carve/collection/unordered/tr1_impl.hpp (+58, -0) (View)
/extern/carve/include/carve/collection/unordered/vcpp_impl.hpp (+65, -0) (View)
/extern/carve/include/carve/collection_types.hpp (+63, -0) (View)
/extern/carve/include/carve/colour.hpp (+47, -0) (View)
/extern/carve/include/carve/config.h (+12, -0) (View)
/extern/carve/include/carve/convex_hull.hpp (+52, -0) (View)
/extern/carve/include/carve/csg.hpp (+498, -0) (View)
/extern/carve/include/carve/csg_triangulator.hpp (+434, -0) (View)
/extern/carve/include/carve/debug_hooks.hpp (+97, -0) (View)
/extern/carve/include/carve/djset.hpp (+134, -0) (View)
/extern/carve/include/carve/edge_decl.hpp (+68, -0) (View)
/extern/carve/include/carve/edge_impl.hpp (+23, -0) (View)
/extern/carve/include/carve/exact.hpp (+702, -0) (View)
/extern/carve/include/carve/faceloop.hpp (+103, -0) (View)
/extern/carve/include/carve/face_decl.hpp (+208, -0) (View)
/extern/carve/include/carve/face_impl.hpp (+140, -0) (View)
/extern/carve/include/carve/geom.hpp (+363, -0) (View)
/extern/carve/include/carve/geom2d.hpp (+403, -0) (View)
/extern/carve/include/carve/geom3d.hpp (+310, -0) (View)
/extern/carve/include/carve/geom_impl.hpp (+651, -0) (View)
/extern/carve/include/carve/gnu_cxx.h (+4, -0) (View)
/extern/carve/include/carve/heap.hpp (+425, -0) (View)
/extern/carve/include/carve/input.hpp (+251, -0) (View)
/extern/carve/include/carve/interpolator.hpp (+332, -0) (View)
/extern/carve/include/carve/intersection.hpp (+267, -0) (View)
/extern/carve/include/carve/iobj.hpp (+106, -0) (View)
/extern/carve/include/carve/kd_node.hpp (+308, -0) (View)
/extern/carve/include/carve/math.hpp (+60, -0) (View)
/extern/carve/include/carve/math_constants.hpp (+33, -0) (View)
/extern/carve/include/carve/matrix.hpp (+262, -0) (View)
/extern/carve/include/carve/mesh.hpp (+845, -0) (View)
/extern/carve/include/carve/mesh_impl.hpp (+1015, -0) (View)
/extern/carve/include/carve/mesh_ops.hpp (+975, -0) (View)
/extern/carve/include/carve/mesh_simplify.hpp (+1574, -0) (View)
/extern/carve/include/carve/octree_decl.hpp (+193, -0) (View)
/extern/carve/include/carve/octree_impl.hpp (+79, -0) (View)
/extern/carve/include/carve/pointset.hpp (+24, -0) (View)
/extern/carve/include/carve/pointset_decl.hpp (+61, -0) (View)
/extern/carve/include/carve/pointset_impl.hpp (+36, -0) (View)
/extern/carve/include/carve/pointset_iter.hpp (+18, -0) (View)
/extern/carve/include/carve/poly.hpp (+24, -0) (View)
/extern/carve/include/carve/polyhedron_base.hpp (+149, -0) (View)
/extern/carve/include/carve/polyhedron_decl.hpp (+184, -0) (View)
/extern/carve/include/carve/polyhedron_impl.hpp (+287, -0) (View)
/extern/carve/include/carve/polyline.hpp (+24, -0) (View)
/extern/carve/include/carve/polyline_decl.hpp (+151, -0) (View)
/extern/carve/include/carve/polyline_impl.hpp (+160, -0) (View)
/extern/carve/include/carve/polyline_iter.hpp (+198, -0) (View)
/extern/carve/include/carve/poly_decl.hpp (+25, -0) (View)
/extern/carve/include/carve/poly_impl.hpp (+25, -0) (View)
/extern/carve/include/carve/rescale.hpp (+100, -0) (View)
/extern/carve/include/carve/rtree.hpp (+501, -0) (View)
/extern/carve/include/carve/spacetree.hpp (+264, -0) (View)
/extern/carve/include/carve/tag.hpp (+44, -0) (View)
/extern/carve/include/carve/timing.hpp (+96, -0) (View)
/extern/carve/include/carve/tree.hpp (+324, -0) (View)
/extern/carve/include/carve/triangulator.hpp (+175, -0) (View)
/extern/carve/include/carve/triangulator_impl.hpp (+851, -0) (View)
/extern/carve/include/carve/util.hpp (+31, -0) (View)
/extern/carve/include/carve/vcpp_config.h (+17, -0) (View)
/extern/carve/include/carve/vector.hpp (+163, -0) (View)
/extern/carve/include/carve/vertex_decl.hpp (+111, -0) (View)
/extern/carve/include/carve/vertex_impl.hpp (+24, -0) (View)
/extern/carve/include/carve/win32.h (+53, -0) (View)
/extern/carve/lib/aabb.cpp (+29, -0) (View)
/extern/carve/lib/carve.cpp (+29, -0) (View)
/extern/carve/lib/convex_hull.cpp (+100, -0) (View)
/extern/carve/lib/csg.cpp (+93, -0) (View)
/extern/carve/lib/csg_collector.cpp (+371, -0) (View)
/extern/carve/lib/csg_collector.hpp (+24, -0) (View)
/extern/carve/lib/csg_data.hpp (+52, -0) (View)
/extern/carve/lib/csg_detail.hpp (+71, -0) (View)
/extern/carve/lib/edge.cpp (+23, -0) (View)
/extern/carve/lib/face.cpp (+278, -0) (View)
/extern/carve/lib/geom2d.cpp (+260, -0) (View)
/extern/carve/lib/geom3d.cpp (+164, -0) (View)
/extern/carve/lib/intersect.cpp (+1668, -0) (View)
/extern/carve/lib/intersection.cpp (+92, -0) (View)
/extern/carve/lib/intersect_classify_common.hpp (+46, -0) (View)
/extern/carve/lib/intersect_classify_common_impl.hpp (+362, -0) (View)
/extern/carve/lib/intersect_classify_edge.cpp (+820, -0) (View)
/extern/carve/lib/intersect_classify_group.cpp (+220, -0) (View)
/extern/carve/lib/intersect_common.hpp (+83, -0) (View)
/extern/carve/lib/intersect_debug.cpp (+65, -0) (View)
/extern/carve/lib/intersect_debug.hpp (+29, -0) (View)
/extern/carve/lib/intersect_face_division.cpp (+1709, -0) (View)
/extern/carve/lib/intersect_group.cpp (+232, -0) (View)
/extern/carve/lib/intersect_half_classify_group.cpp (+199, -0) (View)
/extern/carve/lib/math.cpp (+347, -0) (View)
/extern/carve/lib/mesh.cpp (+1203, -0) (View)
/extern/carve/lib/octree.cpp (+399, -0) (View)
/extern/carve/lib/pointset.cpp (+59, -0) (View)
/extern/carve/lib/polyhedron.cpp (+1103, -0) (View)
/extern/carve/lib/polyline.cpp (+67, -0) (View)
/extern/carve/lib/tag.cpp (+24, -0) (View)
/extern/carve/lib/timing.cpp (+436, -0) (View)
/extern/carve/lib/triangulator.cpp (+1211, -0) (View)
/extern/carve/LICENSE.GPL2 (+361, -0) (View)
/extern/carve/mkfiles.sh (+4, -0) (View)
/extern/carve/patches/files/config.h (+12, -0) (View)
/extern/carve/patches/files/random.hpp (+773, -0) (View)
/extern/carve/patches/includes.patch (+84, -0) (View)
/extern/carve/patches/mesh_iterator.patch (+21, -0) (View)
/extern/carve/patches/series (+4, -0)
/extern/carve/patches/strict_flags.patch (+46, -0) (View)
/extern/carve/patches/win32.patch (+29, -0) (View)
/extern/carve/SConscript (+22, -0) (View)
/intern/boolop/intern/BOP_CarveInterface.cpp (+403, -0) (View)
23 Modified Paths:
/build_files/scons/tools/btools.py (+2, -1) (Diff)
/CMakeLists.txt (+8, -1) (Diff)
/extern/CMakeLists.txt (+4, -0) (Diff)
/extern/SConscript (+3, -0) (Diff)
/intern/boolop/CMakeLists.txt (+65, -37) (Diff)
/intern/boolop/intern/BOP_BSPNode.cpp (+3, -4) (Diff)
/intern/boolop/intern/BOP_BSPNode.h (+2, -2) (Diff)
/intern/boolop/intern/BOP_BSPTree.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Edge.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Face.h (+2, -3) (Diff)
/intern/boolop/intern/BOP_Indexs.h (+2, -3) (Diff)
/intern/boolop/intern/BOP_Interface.cpp (+16, -16) (Diff)
/intern/boolop/intern/BOP_MathUtils.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Merge.h (+2, -2) (Diff)
/intern/boolop/intern/BOP_Merge2.h (+2, -2) (Diff)
/intern/boolop/intern/BOP_Mesh.h (+4, -4) (Diff)
/intern/boolop/intern/BOP_Segment.cpp (+2, -2) (Diff)
/intern/boolop/intern/BOP_Segment.h (+1, -2) (Diff)
/intern/boolop/intern/BOP_Splitter.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Triangulator.cpp (+0, -1) (Diff)
/intern/boolop/SConscript (+18, -3) (Diff)
/source/blender/modifiers/intern/MOD_boolean.c (+0, -1) (Diff)
/source/creator/CMakeLists.txt (+4, -0) (Diff)
/CMakeLists.txt (+8, -1) (Diff)
/extern/CMakeLists.txt (+4, -0) (Diff)
/extern/SConscript (+3, -0) (Diff)
/intern/boolop/CMakeLists.txt (+65, -37) (Diff)
/intern/boolop/intern/BOP_BSPNode.cpp (+3, -4) (Diff)
/intern/boolop/intern/BOP_BSPNode.h (+2, -2) (Diff)
/intern/boolop/intern/BOP_BSPTree.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Edge.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Face.h (+2, -3) (Diff)
/intern/boolop/intern/BOP_Indexs.h (+2, -3) (Diff)
/intern/boolop/intern/BOP_Interface.cpp (+16, -16) (Diff)
/intern/boolop/intern/BOP_MathUtils.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Merge.h (+2, -2) (Diff)
/intern/boolop/intern/BOP_Merge2.h (+2, -2) (Diff)
/intern/boolop/intern/BOP_Mesh.h (+4, -4) (Diff)
/intern/boolop/intern/BOP_Segment.cpp (+2, -2) (Diff)
/intern/boolop/intern/BOP_Segment.h (+1, -2) (Diff)
/intern/boolop/intern/BOP_Splitter.cpp (+0, -1) (Diff)
/intern/boolop/intern/BOP_Triangulator.cpp (+0, -1) (Diff)
/intern/boolop/SConscript (+18, -3) (Diff)
/source/blender/modifiers/intern/MOD_boolean.c (+0, -1) (Diff)
/source/creator/CMakeLists.txt (+4, -0) (Diff)