Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2014-09-13 16:36:46 +0400
committerLukas Tönne <lukas.toenne@gmail.com>2015-01-20 11:30:00 +0300
commit5322def57cdbb81d38c5ba8e8e617c697791d22b (patch)
tree9f3b042615975de2cc076dae9f6f2c8e9fc24f08 /source/blender
parent1c8a33ab92ce8935165be29d2fc93e459c191286 (diff)
Moved the cloth solver code into a new subfolder/library inside Blender
code. The implicit solver itself should remain agnostic to the specifics of the Blender data (cloth vs. hair). This way we could avoid the bloated data conversion chain from particles/hair to derived mesh to cloth modifier to implicit solver data and back. Every step in this chain adds overhead as well as rounding errors and a possibility for bugs, not to speak of making the code horribly complicated. The new subfolder is named "physics" since it should be the start of a somewhat "unified" physics systems combining all the various solvers in the same place and managing things like synchronized time steps.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/CMakeLists.txt1
-rw-r--r--source/blender/blenkernel/BKE_cloth.h13
-rw-r--r--source/blender/blenkernel/CMakeLists.txt6
-rw-r--r--source/blender/blenkernel/intern/cloth.c2
-rw-r--r--source/blender/physics/BPH_mass_spring.h38
-rw-r--r--source/blender/physics/CMakeLists.txt51
-rw-r--r--source/blender/physics/intern/BPH_mass_spring.cpp0
-rw-r--r--source/blender/physics/intern/ConstrainedConjugateGradient.h (renamed from source/blender/blenkernel/intern/ConstrainedConjugateGradient.h)0
-rw-r--r--source/blender/physics/intern/implicit.h (renamed from source/blender/blenkernel/intern/implicit.h)6
-rw-r--r--source/blender/physics/intern/implicit_blender.c (renamed from source/blender/blenkernel/intern/implicit.c)4
-rw-r--r--source/blender/physics/intern/implicit_eigen.cpp (renamed from source/blender/blenkernel/intern/implicit_eigen.cpp)4
-rw-r--r--source/blender/render/intern/source/voxeldata.c3
12 files changed, 104 insertions, 24 deletions
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
--- /dev/null
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
diff --git a/source/blender/blenkernel/intern/ConstrainedConjugateGradient.h b/source/blender/physics/intern/ConstrainedConjugateGradient.h
index 2d4389f6766..2d4389f6766 100644
--- a/source/blender/blenkernel/intern/ConstrainedConjugateGradient.h
+++ b/source/blender/physics/intern/ConstrainedConjugateGradient.h
diff --git a/source/blender/blenkernel/intern/implicit.h b/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
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
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);
}
}