diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 30c761b59be..ecdb1d06d38 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -508,6 +508,7 @@ macro(SETUP_BLENDER_SORTED_LIBS) bf_modifiers bf_bmesh bf_blenkernel + bf_physics bf_nodes bf_rna bf_gpu diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt index 0d309523daf..1cc232a8ed6 100644 --- a/source/blender/CMakeLists.txt +++ b/source/blender/CMakeLists.txt @@ -102,6 +102,7 @@ add_subdirectory(render) add_subdirectory(blenfont) add_subdirectory(blenloader) add_subdirectory(ikplugin) +add_subdirectory(physics) add_subdirectory(gpu) add_subdirectory(imbuf) add_subdirectory(nodes) diff --git a/source/blender/blenkernel/BKE_cloth.h b/source/blender/blenkernel/BKE_cloth.h index e0710ee7e63..3dec5c82da2 100644 --- a/source/blender/blenkernel/BKE_cloth.h +++ b/source/blender/blenkernel/BKE_cloth.h @@ -209,19 +209,6 @@ void cloth_free_contacts(ColliderContacts *collider_contacts, int totcolliders); //////////////////////////////////////////////// - -//////////////////////////////////////////////// -// implicit.c -//////////////////////////////////////////////// - -// needed for cloth.c -int implicit_init (struct Object *ob, struct ClothModifierData *clmd ); -int implicit_free (struct ClothModifierData *clmd ); -int implicit_solver (struct Object *ob, float frame, struct ClothModifierData *clmd, struct ListBase *effectors ); -void implicit_set_positions (struct ClothModifierData *clmd ); - -bool implicit_hair_volume_get_texture_data(struct Object *UNUSED(ob), struct ClothModifierData *clmd, struct ListBase *UNUSED(effectors), struct VoxelData *vd); - ///////////////////////////////////////////////// // cloth.c //////////////////////////////////////////////// diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index a560bcc8be0..28b6aaa3b7c 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -36,6 +36,7 @@ set(INC ../bmesh ../modifiers ../nodes + ../physics ../render/extern/include ../../../intern/ghost ../../../intern/guardedalloc @@ -47,7 +48,6 @@ set(INC ../../../intern/smoke/extern ../../../intern/atomic ../../../extern/libmv - ../../../extern/Eigen3 # XXX - BAD LEVEL CALL WM_api.h ../windowmanager @@ -107,10 +107,6 @@ set(SRC intern/idprop.c intern/image.c intern/image_gen.c - intern/implicit.h - intern/implicit.c - intern/implicit_eigen.cpp - intern/ConstrainedConjugateGradient.h # XXX move this to a better place intern/ipo.c intern/key.c intern/lamp.c diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index 3932a8ead2f..89ad084b59e 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -47,6 +47,8 @@ #include "BKE_modifier.h" #include "BKE_pointcache.h" +#include "BPH_mass_spring.h" + // #include "PIL_time.h" /* timing for debug prints */ /* Our available solvers. */ diff --git a/source/blender/physics/BPH_mass_spring.h b/source/blender/physics/BPH_mass_spring.h new file mode 100644 index 00000000000..2960082852f --- /dev/null +++ b/source/blender/physics/BPH_mass_spring.h @@ -0,0 +1,38 @@ +/* + * ***** 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) Blender Foundation + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Lukas Toenne + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef __BPH_MASS_SPRING_H__ +#define __BPH_MASS_SPRING_H__ + +int implicit_init (struct Object *ob, struct ClothModifierData *clmd ); +int implicit_free (struct ClothModifierData *clmd ); +int implicit_solver (struct Object *ob, float frame, struct ClothModifierData *clmd, struct ListBase *effectors ); +void implicit_set_positions (struct ClothModifierData *clmd ); + +bool implicit_hair_volume_get_texture_data(struct Object *UNUSED(ob), struct ClothModifierData *clmd, struct ListBase *UNUSED(effectors), struct VoxelData *vd); + +#endif diff --git a/source/blender/physics/CMakeLists.txt b/source/blender/physics/CMakeLists.txt new file mode 100644 index 00000000000..b08cf177f44 --- /dev/null +++ b/source/blender/physics/CMakeLists.txt @@ -0,0 +1,51 @@ +# ***** 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) 2014, Blender Foundation +# All rights reserved. +# +# The Original Code is: all of this file. +# +# Contributor(s): Lukas Toenne +# +# ***** END GPL LICENSE BLOCK ***** + +set(INC + . + intern + ../blenlib + ../blenkernel + ../imbuf + ../makesdna + ../../../intern/guardedalloc + ../../../extern/Eigen3 +) + +set(INC_SYS + +) + +set(SRC + intern/BPH_mass_spring.cpp + intern/ConstrainedConjugateGradient.h + intern/implicit.h + intern/implicit_blender.c + intern/implicit_eigen.cpp + + BPH_mass_spring.h +) + +blender_add_lib(bf_physics "${SRC}" "${INC}" "${INC_SYS}") diff --git a/source/blender/physics/intern/BPH_mass_spring.cpp b/source/blender/physics/intern/BPH_mass_spring.cpp new file mode 100644 index 00000000000..e69de29bb2d diff --git a/source/blender/blenkernel/intern/ConstrainedConjugateGradient.h b/source/blender/physics/intern/ConstrainedConjugateGradient.h similarity index 100% rename from source/blender/blenkernel/intern/ConstrainedConjugateGradient.h rename to source/blender/physics/intern/ConstrainedConjugateGradient.h diff --git a/source/blender/blenkernel/intern/implicit.h b/source/blender/physics/intern/implicit.h similarity index 95% rename from source/blender/blenkernel/intern/implicit.h rename to source/blender/physics/intern/implicit.h index 31b8069846e..edddd1b0486 100644 --- a/source/blender/blenkernel/intern/implicit.h +++ b/source/blender/physics/intern/implicit.h @@ -25,11 +25,11 @@ * ***** END GPL LICENSE BLOCK ***** */ -#ifndef __BKE_IMPLICIT_H__ -#define __BKE_IMPLICIT_H__ +#ifndef __BPH_IMPLICIT_H__ +#define __BPH_IMPLICIT_H__ /** \file implicit.h - * \ingroup bke + * \ingroup bph */ #include "stdio.h" diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/physics/intern/implicit_blender.c similarity index 99% rename from source/blender/blenkernel/intern/implicit.c rename to source/blender/physics/intern/implicit_blender.c index 9ae53293397..76b1e356299 100644 --- a/source/blender/blenkernel/intern/implicit.c +++ b/source/blender/physics/intern/implicit_blender.c @@ -26,7 +26,7 @@ */ /** \file blender/blenkernel/intern/implicit.c - * \ingroup bke + * \ingroup bph */ #include "implicit.h" @@ -50,6 +50,8 @@ #include "BKE_effect.h" #include "BKE_global.h" +#include "BPH_mass_spring.h" + #ifdef __GNUC__ # pragma GCC diagnostic ignored "-Wtype-limits" #endif diff --git a/source/blender/blenkernel/intern/implicit_eigen.cpp b/source/blender/physics/intern/implicit_eigen.cpp similarity index 99% rename from source/blender/blenkernel/intern/implicit_eigen.cpp rename to source/blender/physics/intern/implicit_eigen.cpp index 863c715a99b..230ca6f4f6a 100644 --- a/source/blender/blenkernel/intern/implicit_eigen.cpp +++ b/source/blender/physics/intern/implicit_eigen.cpp @@ -26,7 +26,7 @@ */ /** \file blender/blenkernel/intern/implicit_eigen.cpp - * \ingroup bke + * \ingroup bph */ #include "implicit.h" @@ -75,6 +75,8 @@ extern "C" { #include "BKE_collision.h" #include "BKE_effect.h" #include "BKE_global.h" + +#include "BPH_mass_spring.h" } /* ==== hash functions for debugging ==== */ diff --git a/source/blender/render/intern/source/voxeldata.c b/source/blender/render/intern/source/voxeldata.c index d360282d985..6f3c50bca62 100644 --- a/source/blender/render/intern/source/voxeldata.c +++ b/source/blender/render/intern/source/voxeldata.c @@ -380,7 +380,8 @@ static void init_frame_hair(VoxelData *vd, int UNUSED(cfra)) ParticleSystemModifierData *pmd = (ParticleSystemModifierData *)md; if (pmd->psys && pmd->psys->clmd) { - found |= implicit_hair_volume_get_texture_data(ob, pmd->psys->clmd, NULL, vd); + // XXX TODO was moved into own subfolder, figure out how to handle this (perhaps make a wrapper in BKE) +// found |= implicit_hair_volume_get_texture_data(ob, pmd->psys->clmd, NULL, vd); } }