[Bf-blender-cvs] [3832a09ea8f] temp-fracture-modifier-2.8: bring back carve as boolean alternative for FM 2.8 (and boolean modifier too)

Martin Felke noreply at git.blender.org
Sat Mar 9 20:40:53 CET 2019


Commit: 3832a09ea8f4e019da01c859cede41c7287c978a
Author: Martin Felke
Date:   Sat Mar 9 20:40:29 2019 +0100
Branches: temp-fracture-modifier-2.8
https://developer.blender.org/rB3832a09ea8f4e019da01c859cede41c7287c978a

bring back carve as boolean alternative for FM 2.8 (and boolean modifier too)

Users should keep the solver as choice, since Bmesh boolean is not finished yet.

===================================================================

M	CMakeLists.txt
M	build_files/cmake/config/blender_full.cmake
A	build_files/cmake/config/blender_full.cmake.orig
M	build_files/cmake/config/blender_lite.cmake
A	build_files/cmake/config/blender_lite.cmake.orig
M	build_files/cmake/config/blender_release.cmake
A	build_files/cmake/config/blender_release.cmake.orig
M	build_files/cmake/macros.cmake
M	extern/CMakeLists.txt
A	extern/carve/CMakeLists.txt
A	extern/carve/LICENSE.GPL2
A	extern/carve/LICENSE.GPL3
A	extern/carve/README.blender
A	extern/carve/bundle.sh
A	extern/carve/carve-capi.cc
A	extern/carve/carve-capi.h
A	extern/carve/carve-util.cc
A	extern/carve/carve-util.h
A	extern/carve/files.txt
A	extern/carve/include/carve/aabb.hpp
A	extern/carve/include/carve/aabb_impl.hpp
A	extern/carve/include/carve/carve.hpp
A	extern/carve/include/carve/cbrt.h
A	extern/carve/include/carve/classification.hpp
A	extern/carve/include/carve/collection.hpp
A	extern/carve/include/carve/collection/unordered.hpp
A	extern/carve/include/carve/collection/unordered/boost_impl.hpp
A	extern/carve/include/carve/collection/unordered/fallback_impl.hpp
A	extern/carve/include/carve/collection/unordered/libstdcpp_impl.hpp
A	extern/carve/include/carve/collection/unordered/std_impl.hpp
A	extern/carve/include/carve/collection/unordered/tr1_impl.hpp
A	extern/carve/include/carve/collection/unordered/vcpp_impl.hpp
A	extern/carve/include/carve/collection_types.hpp
A	extern/carve/include/carve/colour.hpp
A	extern/carve/include/carve/config.h
A	extern/carve/include/carve/convex_hull.hpp
A	extern/carve/include/carve/csg.hpp
A	extern/carve/include/carve/csg_triangulator.hpp
A	extern/carve/include/carve/debug_hooks.hpp
A	extern/carve/include/carve/djset.hpp
A	extern/carve/include/carve/edge_decl.hpp
A	extern/carve/include/carve/edge_impl.hpp
A	extern/carve/include/carve/exact.hpp
A	extern/carve/include/carve/face_decl.hpp
A	extern/carve/include/carve/face_impl.hpp
A	extern/carve/include/carve/faceloop.hpp
A	extern/carve/include/carve/geom.hpp
A	extern/carve/include/carve/geom2d.hpp
A	extern/carve/include/carve/geom3d.hpp
A	extern/carve/include/carve/geom_impl.hpp
A	extern/carve/include/carve/gnu_cxx.h
A	extern/carve/include/carve/heap.hpp
A	extern/carve/include/carve/input.hpp
A	extern/carve/include/carve/interpolator.hpp
A	extern/carve/include/carve/intersection.hpp
A	extern/carve/include/carve/iobj.hpp
A	extern/carve/include/carve/kd_node.hpp
A	extern/carve/include/carve/math.hpp
A	extern/carve/include/carve/math_constants.hpp
A	extern/carve/include/carve/matrix.hpp
A	extern/carve/include/carve/mesh.hpp
A	extern/carve/include/carve/mesh_impl.hpp
A	extern/carve/include/carve/mesh_ops.hpp
A	extern/carve/include/carve/mesh_simplify.hpp
A	extern/carve/include/carve/octree_decl.hpp
A	extern/carve/include/carve/octree_impl.hpp
A	extern/carve/include/carve/pointset.hpp
A	extern/carve/include/carve/pointset_decl.hpp
A	extern/carve/include/carve/pointset_impl.hpp
A	extern/carve/include/carve/pointset_iter.hpp
A	extern/carve/include/carve/poly.hpp
A	extern/carve/include/carve/poly_decl.hpp
A	extern/carve/include/carve/poly_impl.hpp
A	extern/carve/include/carve/polyhedron_base.hpp
A	extern/carve/include/carve/polyhedron_decl.hpp
A	extern/carve/include/carve/polyhedron_impl.hpp
A	extern/carve/include/carve/polyline.hpp
A	extern/carve/include/carve/polyline_decl.hpp
A	extern/carve/include/carve/polyline_impl.hpp
A	extern/carve/include/carve/polyline_iter.hpp
A	extern/carve/include/carve/random/random.h
A	extern/carve/include/carve/rescale.hpp
A	extern/carve/include/carve/rtree.hpp
A	extern/carve/include/carve/spacetree.hpp
A	extern/carve/include/carve/tag.hpp
A	extern/carve/include/carve/timing.hpp
A	extern/carve/include/carve/tree.hpp
A	extern/carve/include/carve/triangle_intersection.hpp
A	extern/carve/include/carve/triangulator.hpp
A	extern/carve/include/carve/triangulator_impl.hpp
A	extern/carve/include/carve/util.hpp
A	extern/carve/include/carve/vcpp_config.h
A	extern/carve/include/carve/vector.hpp
A	extern/carve/include/carve/vertex_decl.hpp
A	extern/carve/include/carve/vertex_impl.hpp
A	extern/carve/include/carve/win32.h
A	extern/carve/lib/carve.cpp
A	extern/carve/lib/convex_hull.cpp
A	extern/carve/lib/csg.cpp
A	extern/carve/lib/csg_collector.cpp
A	extern/carve/lib/csg_collector.hpp
A	extern/carve/lib/csg_data.hpp
A	extern/carve/lib/csg_detail.hpp
A	extern/carve/lib/face.cpp
A	extern/carve/lib/geom2d.cpp
A	extern/carve/lib/geom3d.cpp
A	extern/carve/lib/intersect.cpp
A	extern/carve/lib/intersect_classify_common.hpp
A	extern/carve/lib/intersect_classify_common_impl.hpp
A	extern/carve/lib/intersect_classify_edge.cpp
A	extern/carve/lib/intersect_classify_group.cpp
A	extern/carve/lib/intersect_common.hpp
A	extern/carve/lib/intersect_debug.cpp
A	extern/carve/lib/intersect_debug.hpp
A	extern/carve/lib/intersect_face_division.cpp
A	extern/carve/lib/intersect_group.cpp
A	extern/carve/lib/intersect_half_classify_group.cpp
A	extern/carve/lib/intersection.cpp
A	extern/carve/lib/math.cpp
A	extern/carve/lib/mesh.cpp
A	extern/carve/lib/octree.cpp
A	extern/carve/lib/pointset.cpp
A	extern/carve/lib/polyhedron.cpp
A	extern/carve/lib/polyline.cpp
A	extern/carve/lib/tag.cpp
A	extern/carve/lib/timing.cpp
A	extern/carve/lib/triangulator.cpp
A	extern/carve/mkfiles.sh
A	extern/carve/patches/clang_is_heap_fix.patch
A	extern/carve/patches/face_hole_merge_workaround.patch
A	extern/carve/patches/files/config.h
A	extern/carve/patches/files/random.h
A	extern/carve/patches/gcc46.patch
A	extern/carve/patches/includes.patch
A	extern/carve/patches/interpolator_reorder.patch
A	extern/carve/patches/memory_leak_fix.patch
A	extern/carve/patches/mesh_iterator.patch
A	extern/carve/patches/mesh_simplify_dissolve_edges.patch
A	extern/carve/patches/mesh_simplify_uninitialized_var.patch
A	extern/carve/patches/msvc_fix.patch
A	extern/carve/patches/random.patch
A	extern/carve/patches/series
A	extern/carve/patches/strict_flags.patch
A	extern/carve/patches/win32.patch
M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	release/scripts/startup/bl_ui/properties_physics_fracture.py
M	source/blender/blenkernel/BKE_boolean.h
M	source/blender/blenkernel/BKE_fracture_util.h
M	source/blender/blenkernel/CMakeLists.txt
M	source/blender/blenkernel/intern/boolean.c
M	source/blender/blenkernel/intern/fracture_util.c
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesrna/intern/rna_fracture.c
M	source/blender/makesrna/intern/rna_modifier.c
M	source/blender/modifiers/intern/MOD_boolean.c
M	source/blender/python/intern/CMakeLists.txt
M	source/blender/python/intern/bpy_app_build_options.c

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c5063e2d619..d4ba88da81d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -304,6 +304,7 @@ endif()
 # Modifiers
 option(WITH_MOD_FLUID           "Enable Elbeem Modifier (Fluid Simulation)" ON)
 option(WITH_MOD_SMOKE           "Enable Smoke Modifier (Smoke Simulation)" ON)
+option(WITH_MOD_BOOLEAN         "Enable Boolean Modifier" ON)
 option(WITH_MOD_REMESH          "Enable Remesh Modifier" ON)
 # option(WITH_MOD_CLOTH_ELTOPO    "Enable Experimental cloth solver" OFF)  # this is now only available in a branch
 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
@@ -658,8 +659,9 @@ if(NOT WITH_BOOST)
 	set_and_warn(WITH_INTERNATIONAL  OFF)
 	set_and_warn(WITH_OPENVDB        OFF)
 	set_and_warn(WITH_OPENCOLORIO    OFF)
+	set_and_warn(WITH_MOD_BOOLEAN    OFF)
 elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_INTERNATIONAL OR
-       WITH_OPENVDB OR WITH_OPENCOLORIO)
+       WITH_OPENVDB OR WITH_OPENCOLORIO OR WITH_MOD_BOOLEAN)
 	# Keep enabled
 else()
 	# Disable boost if not needed.
@@ -1715,6 +1717,7 @@ if(FIRST_RUN)
 	endif()
 
 	info_cfg_text("Modifiers:")
+	info_cfg_option(WITH_MOD_BOOLEAN)
 	info_cfg_option(WITH_MOD_REMESH)
 	info_cfg_option(WITH_MOD_FLUID)
 	info_cfg_option(WITH_MOD_OCEANSIM)
diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake
index 9dffc01cf2a..e1eadbbc5cc 100644
--- a/build_files/cmake/config/blender_full.cmake
+++ b/build_files/cmake/config/blender_full.cmake
@@ -31,6 +31,7 @@ set(WITH_INTERNATIONAL       ON  CACHE BOOL "" FORCE)
 set(WITH_JACK                ON  CACHE BOOL "" FORCE)
 set(WITH_LZMA                ON  CACHE BOOL "" FORCE)
 set(WITH_LZO                 ON  CACHE BOOL "" FORCE)
+set(WITH_MOD_BOOLEAN         ON  CACHE BOOL "" FORCE)
 set(WITH_MOD_FLUID           ON  CACHE BOOL "" FORCE)
 set(WITH_MOD_REMESH          ON  CACHE BOOL "" FORCE)
 set(WITH_MOD_SMOKE           ON  CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake.orig
similarity index 100%
copy from build_files/cmake/config/blender_full.cmake
copy to build_files/cmake/config/blender_full.cmake.orig
diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake
index d440dbf2821..5b1b7175318 100644
--- a/build_files/cmake/config/blender_lite.cmake
+++ b/build_files/cmake/config/blender_lite.cmake
@@ -36,6 +36,7 @@ set(WITH_INTERNATIONAL       OFF CACHE BOOL "" FORCE)
 set(WITH_JACK                OFF CACHE BOOL "" FORCE)
 set(WITH_LZMA                OFF CACHE BOOL "" FORCE)
 set(WITH_LZO                 OFF CACHE BOOL "" FORCE)
+set(WITH_MOD_BOOLEAN         OFF CACHE BOOL "" FORCE)
 set(WITH_MOD_FLUID           OFF CACHE BOOL "" FORCE)
 set(WITH_MOD_REMESH          OFF CACHE BOOL "" FORCE)
 set(WITH_MOD_SMOKE           OFF CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake.orig
similarity index 100%
copy from build_files/cmake/config/blender_lite.cmake
copy to build_files/cmake/config/blender_lite.cmake.orig
diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake
index 74417ea3151..bba07acee3b 100644
--- a/build_files/cmake/config/blender_release.cmake
+++ b/build_files/cmake/config/blender_release.cmake
@@ -32,6 +32,7 @@ set(WITH_INTERNATIONAL       ON  CACHE BOOL "" FORCE)
 set(WITH_JACK                ON  CACHE BOOL "" FORCE)
 set(WITH_LZMA                ON  CACHE BOOL "" FORCE)
 set(WITH_LZO                 ON  CACHE BOOL "" FORCE)
+set(WITH_MOD_BOOLEAN         ON  CACHE BOOL "" FORCE)
 set(WITH_MOD_FLUID           ON  CACHE BOOL "" FORCE)
 set(WITH_MOD_REMESH          ON  CACHE BOOL "" FORCE)
 set(WITH_MOD_SMOKE           ON  CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake.orig
similarity index 100%
copy from build_files/cmake/config/blender_release.cmake
copy to build_files/cmake/config/blender_release.cmake.orig
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 40ebfd7329d..986d7285e80 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -739,6 +739,10 @@ function(SETUP_BLENDER_SORTED_LIBS)
 		list(APPEND BLENDER_SORTED_LIBS bf_intern_itasc)
 	endif()
 
+	if(WITH_MOD_BOOLEAN)
+		list(APPEND BLENDER_SORTED_LIBS extern_carve)
+	endif()
+
 	if(WITH_GHOST_XDND)
 		list(APPEND BLENDER_SORTED_LIBS extern_xdnd)
 	endif()
diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
index db8691018a7..38c37fdbfb5 100644
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@ -73,6 +73,10 @@ if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV)
 	endif()
 endif()
 
+if(WITH_MOD_BOOLEAN)
+	add_subdirectory(carve)
+endif()
+
 if(WITH_X11 AND WITH_GHOST_XDND)
 	add_subdirectory(xdnd)
 endif()
diff --git a/extern/carve/CMakeLists.txt b/extern/carve/CMakeLists.txt
new file mode 100644
index 00000000000..bb81332917e
--- /dev/null
+++ b/extern/carve/CMakeLists.txt
@@ -0,0 +1,170 @@
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The Original Code is Copyright (C) 2006, Blender Foundation
+# All rights reserved.
+#
+# The Original Code is: all of this file.
+#
+# Contributor(s): Jacques Beaurai, Erwin Coumans
+#
+# ***** END GPL LICENSE BLOCK *****
+
+# NOTE: This file is automatically generated by bundle.sh script
+#       If you're doing changes in this file, please update template
+#       in that script too
+
+set(INC
+	include
+)
+
+set(INC_SYS
+)
+
+set(SRC
+	carve-capi.cc
+	carve-util.cc
+	lib/carve.cpp
+	lib/convex_hull.cpp
+	lib/csg_collector.cpp
+	lib/csg.cpp
+	lib/face.cpp
+	lib/geom2d.cpp
+	lib/geom3d.cpp
+	lib/intersect_classify_edge.cpp
+	lib/intersect_classify_group.cpp
+	lib/intersect.cpp
+	lib/intersect_debug.cpp
+	lib/intersect_face_division.cpp
+	lib/intersect_group.cpp
+	lib/intersect_half_classify_group.cpp
+	lib/intersection.cpp
+	lib/math.cpp
+	lib/mesh.cpp
+	lib/octree.cpp
+	lib/pointset.cpp
+	lib/polyhedron.cpp
+	lib/polyline.cpp
+	lib/tag.cpp
+	lib/timing.cpp
+	lib/triangulator.cpp
+
+	carve-capi.h
+	carve-util.h
+	lib/csg_collector.hpp
+	lib/csg_data.hpp
+	lib/csg_detail.hpp
+	lib/intersect_classify_common.hpp
+	lib/intersect_classify_common_impl.hpp
+	lib/intersect_common.hpp
+	lib/intersect_debug.hpp
+
+	include/carve/aabb.hpp
+	include/carve/aabb_impl.hpp
+	include/carve/carve.hpp
+	include/carve/cbrt.h
+	include/carve/classification.hpp
+	include/carve/collection.hpp
+	include/carve/collection_types.hpp
+	include/carve/collection/unordered/boost_impl.hpp
+	include/carve/collection/unordered/fallback_impl.hpp
+	include/carve/collection/unordered.hpp
+	include/carve/collection/unordered/libstdcpp_impl.hpp
+	include/carve/collection/unordered/std_impl.hpp
+	include/carve/collection/unordered/tr1_impl.hpp
+	include/carve/collection/unordered/vcpp_impl.hpp
+	include/carve/colour.hpp
+	include/carve/convex_hull.hpp
+	include/carve/csg.hpp
+	include/carve/csg_triangulator.hpp
+	include/carve/debug_hooks.hpp
+	include/carve/djset.hpp
+	include/carve/edge_decl.hpp
+	include/carve/edge_impl.hpp
+	include/carve/exact.hpp
+	include/carve/face_decl.hpp
+	include/carve/face_impl.hpp
+	include/carve/faceloop.hpp
+	include/carve/geom2d.hpp
+	include/carve/geom3d.hpp
+	include/carve/geom.hpp
+	include/carve/geom_impl.hpp
+	include/carve/gnu_cxx.h
+	include/carve/heap.hpp
+	include/carve/input.hpp
+	include/carve/interpolator.hpp
+	include/carve/intersection.hpp
+	include/carve/iobj.hpp
+	include/carve/kd_node.hpp
+	include/carve/math_constants.hpp
+	include/carve/math.hpp
+	include/carve/matrix.hpp
+	include/carve/mesh.hpp
+	include/carve/mesh_impl.hpp
+	include/carve/mesh_ops.hpp
+	include/carve/mesh_simplify.hpp
+	include/carve/octree_decl.hpp
+	include/carve/octree_impl.hpp
+	include/carve/pointset_decl.hpp
+	include/carve/pointset.hpp
+	include/carve/pointset_impl.hpp
+	include/carve/pointset_iter.hpp
+	include/carve/poly_decl.hpp
+	include/carve/polyhedron_base.hpp
+	include/carve/polyhedron_decl.hpp
+	include/carve/polyhedron_impl.hpp
+	include/carve/poly.hpp
+	include/carve/poly_impl.hpp
+	include/carve/polyline_decl.hpp
+	include/carve/polyline.hpp
+	include/carve/polyline_impl.hpp
+	include/carve/polyline_iter.hpp
+	include/carve/rescale.hpp
+	include/carve/rtree.hpp
+	include/carve/spacetree.hpp
+	include/carve/tag.hpp
+	include/carve/timing.hpp
+	include/carve/tree.hpp
+	include/carve/triangle_intersection.hpp
+	include/carve/triangulator.hpp
+	include/carve/triangulator_impl.hpp
+	include/carve/util.hpp
+	include/carve/vcpp_config.h
+	include/carve/vector.hpp
+	include/carve/vertex_decl.hpp
+	include/carve/vertex_impl.hpp
+	include/carve/win32.h
+)
+
+if(WITH_BOOST)
+	if(NOT MSVC)
+		# Boost is setting as preferred collections library in the Carve code when using MSVC compiler
+		add_definitions(
+			-DHAVE_BOOST_UNORDERED_COLLECTIONS
+		)
+	endif()
+
+	add_definitions(
+		-DCARVE_SYSTEM_BOOST
+		-DHAVE_BOOST_LIBRARY
+	)
+
+	list(APPEND INC_SYS
+		${BOOST_INCLUDE_DIR}
+	)
+endif()
+
+blender_add_lib(extern_carve "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/extern/carve/LICENSE.GPL2 b/extern/carve/LICENSE.GPL2
new file mode 100644
index 00000000000..792acb92f6a
--- /dev/null
+++ b/extern/carve/LICENSE.GPL2
@@ -0,0 +1,361 @@
+                    GNU GENERAL PUBLIC LICENSE
+
+ The Qt GUI Toolkit is Copyright (C) 1994-2008 Trolltech ASA.
+
+ You may use, distrib

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list