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:
authorJens Ole Wund <bjornmose@gmx.net>2006-10-20 02:01:06 +0400
committerJens Ole Wund <bjornmose@gmx.net>2006-10-20 02:01:06 +0400
commit57f01fdb46d8a764858b8e1f7678be7c1a00b572 (patch)
treedfdc6cd4a61dd563c35090d7ee8741cecdebfcf2
parent1730b7b41d163be80d53347968320adc58005202 (diff)
more softbody goodies:
SB collision targets may be picked up from modifier stack works fine with static targets having subsurf and/or array mofifiers see--> http://www.wund.homepage.t-online.de/hidden/Mstack.blend http://www.wund.homepage.t-online.de/hidden/Mstack_II.blend however when calulating the SB object dynamics the vertices of the 'deform only' m-stack result are used so SB <-> SB may look strange subsuf modifier is applied to SB object after doing SB dynamics (that is: colliding mesh is subsurfed, SB is not ) subsurfed SB cubes colliding link --> http://www.wund.homepage.t-online.de/hidden/ColSelfMod.blend or may give unwanted results subsuf and array modifier is applied to SB object after doing SB dynamics link --> http://www.wund.homepage.t-online.de/hidden/ColSelfMod_nobug.blend last, modifiers that change vertex locations in time (like waves) suffer from not beeing seen at needed time resolution (SBs see colliders static in a frame) well but that's beyond the limits of the current dep-graph use and needs to be resolved on design level anyhoo have fun BM
-rw-r--r--source/blender/blenkernel/intern/softbody.c6
-rw-r--r--source/blender/makesdna/DNA_object_force.h1
-rw-r--r--source/blender/src/buttons_object.c2
3 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index d0658b9329a..f2c94306243 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -448,10 +448,10 @@ void ccd_build_deflector_cache(Object *vertexowner)
DerivedMesh *dm= NULL;
int dmNeedsFree;
- if(1) { /* so maybe someone wants overkill to collide with subsurfed */
- dm = mesh_get_derived_deform(ob, &dmNeedsFree);
- } else {
+ if(ob->softflag & OB_SB_COLLFINAL) { /* so maybe someone wants overkill to collide with subsurfed */
dm = mesh_get_derived_final(ob, &dmNeedsFree);
+ } else {
+ dm = mesh_get_derived_deform(ob, &dmNeedsFree);
}
if(dm){
DispListMesh *disp_mesh= NULL;
diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h
index 567e1d7c42f..7ecff33e165 100644
--- a/source/blender/makesdna/DNA_object_force.h
+++ b/source/blender/makesdna/DNA_object_force.h
@@ -135,6 +135,7 @@ typedef struct SoftBody {
#define OB_SB_SELF 512
#define OB_SB_COLLISIONSET 1024
#define OB_SB_EDGECOLL 2048
+#define OB_SB_COLLFINAL 4096
#ifdef __cplusplus
}
diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c
index bbec565f7e0..eac032640fb 100644
--- a/source/blender/src/buttons_object.c
+++ b/source/blender/src/buttons_object.c
@@ -2268,6 +2268,7 @@ static void object_softbodies_II(Object *ob)
uiDefButBitS(block, TOG, 1, B_REDR, "Deflection",10,50,150,20, &ob->pd->deflect, 0, 0, 0, 0, "Makes this object visible to softbody objects");
if(ob->pd->deflect) {
uiDefButF(block, NUM, B_DIFF, "Damping:", 160,50,150,20, &ob->pd->pdef_sbdamp, 0.0, 1.0, 10, 0, "Amount of damping during soft body collision");
+ uiDefButBitS(block, TOG,OB_SB_COLLFINAL , B_DIFF, "Ev.M.Stack",10,30,150,20, &ob->softflag, 0, 0, 0, 0, "Pick collision object from modifier stack");
uiDefButF(block, NUM, B_DIFF, "Inner:", 160,30,150,20, &ob->pd->pdef_sbift, 0.001, 1.0, 10, 0, "Inner face thickness");
uiDefButF(block, NUM, B_DIFF, "Outer:", 160,10,150,20, &ob->pd->pdef_sboft, 0.001, 1.0, 10, 0, "Outer face thickness");
}
@@ -2298,6 +2299,7 @@ static void object_softbodies_II(Object *ob)
uiDefButBitS(block, TOG, 1, B_REDR, "Deflection",10,50,150,20, &ob->pd->deflect, 0, 0, 0, 0, "Makes this object visible to other softbody objects");
if(ob->pd->deflect) {
uiDefButF(block, NUM, B_DIFF, "Damping:", 160,50,150,20, &ob->pd->pdef_sbdamp, 0.0, 1.0, 10, 0, "Amount of damping during soft body collision");
+ uiDefButBitS(block, TOG,OB_SB_COLLFINAL , B_DIFF, "Ev.M.Stack",10,30,150,20, &ob->softflag, 0, 0, 0, 0, "Pick collision object from modifier stack");
uiDefButF(block, NUM, B_DIFF, "Inner:", 160,30,150,20, &ob->pd->pdef_sbift, 0.001, 1.0, 10, 0, "Inner face thickness");
uiDefButF(block, NUM, B_DIFF, "Outer:", 160,10,150,20, &ob->pd->pdef_sboft, 0.001, 1.0, 10, 0, "Outer face thickness");
}