diff options
author | Daniel Genrich <daniel.genrich@gmx.net> | 2008-03-14 01:45:36 +0300 |
---|---|---|
committer | Daniel Genrich <daniel.genrich@gmx.net> | 2008-03-14 01:45:36 +0300 |
commit | df27557b81d8463c4274d11f4131be619da255f1 (patch) | |
tree | b769bf0edca3b5ee8dd40863fbe13440f787a28b /source/blender/blenkernel | |
parent | 2c78254f9635c20decdbdfec1266dc548916ff7e (diff) |
Cloth header cleanup, bugfix (again) in wind calculation, bugfix for not working fields mindist GUI option
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_cloth.h | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/cloth.c | 125 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/collision.c | 27 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/effect.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/implicit.c | 36 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/kdop.c | 37 |
6 files changed, 30 insertions, 207 deletions
diff --git a/source/blender/blenkernel/BKE_cloth.h b/source/blender/blenkernel/BKE_cloth.h index 181264137b3..418102aa973 100644 --- a/source/blender/blenkernel/BKE_cloth.h +++ b/source/blender/blenkernel/BKE_cloth.h @@ -35,19 +35,23 @@ #define BKE_CLOTH_H #include "float.h" -#include "BLI_editVert.h" -#include "BLI_linklist.h" -#include "BKE_collision.h" +#include "BLI_linklist.h" #include "BKE_customdata.h" #include "BKE_DerivedMesh.h" +#include "BLI_blenlib.h" +#include "BLI_arithb.h" +#include "BLI_edgehash.h" + #include "DNA_cloth_types.h" #include "DNA_customdata_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" #include "DNA_object_types.h" +#include "BKE_collision.h" + struct Object; struct Cloth; struct MFace; diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index 3d5de19c1fc..d2834571316 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -28,52 +28,22 @@ * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ - -#include <math.h> -#include <stdlib.h> -#include <string.h> - #include "MEM_guardedalloc.h" -/* types */ -#include "DNA_curve_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" +#include "BKE_cloth.h" + #include "DNA_cloth_types.h" -#include "DNA_key_types.h" #include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_lattice_types.h" #include "DNA_scene_types.h" -#include "DNA_modifier_types.h" -#include "BLI_blenlib.h" -#include "BLI_arithb.h" -#include "BLI_editVert.h" -#include "BLI_edgehash.h" -#include "BLI_linklist.h" - -#include "BKE_curve.h" #include "BKE_deform.h" #include "BKE_DerivedMesh.h" #include "BKE_cdderivedmesh.h" -#include "BKE_displist.h" #include "BKE_effect.h" #include "BKE_global.h" -#include "BKE_key.h" -#include "BKE_mesh.h" #include "BKE_object.h" -#include "BKE_cloth.h" #include "BKE_modifier.h" #include "BKE_utildefines.h" -#include "BKE_DerivedMesh.h" -#include "BIF_editdeform.h" -#include "BIF_editkey.h" -#include "DNA_screen_types.h" -#include "BSE_headerbuttons.h" -#include "BIF_screen.h" -#include "BIF_space.h" -#include "mydevice.h" #include "BKE_pointcache.h" @@ -287,97 +257,6 @@ void bvh_update_from_cloth(ClothModifierData *clmd, int moving) bvh_update(bvh, moving); } -DerivedMesh *CDDM_create_tearing ( ClothModifierData *clmd, DerivedMesh *dm ) -{ - DerivedMesh *result = NULL; - unsigned int i = 0, a = 0, j=0; - int numverts = dm->getNumVerts ( dm ); - int numfaces = dm->getNumFaces ( dm ); - - MVert *mvert = CDDM_get_verts ( dm ); - MFace *mface = CDDM_get_faces ( dm ); - - MVert *mvert2; - MFace *mface2; - EdgeHash *edgehash = NULL; - Cloth *cloth = clmd->clothObject; - ClothSpring *springs = (ClothSpring *)cloth->springs; - unsigned int numsprings = cloth->numsprings; - - // create spring tearing hash - edgehash = BLI_edgehash_new(); - - for ( i = 0; i < numsprings; i++ ) - { - if ( ( springs[i].flags & CLOTH_SPRING_FLAG_DEACTIVATE ) - && ( !BLI_edgehash_haskey ( edgehash, springs[i].ij, springs[i].kl ) ) ) - { - BLI_edgehash_insert ( edgehash, springs[i].ij, springs[i].kl, NULL ); - BLI_edgehash_insert ( edgehash, springs[i].kl, springs[i].ij, NULL ); - j++; - } - } - - // printf("found %d tears\n", j); - - result = CDDM_from_template ( dm, numverts, 0, numfaces ); - - if ( !result ) - return NULL; - - // do verts - mvert2 = CDDM_get_verts ( result ); - for ( a=0; a<numverts; a++ ) - { - MVert *inMV; - MVert *mv = &mvert2[a]; - - inMV = &mvert[a]; - - DM_copy_vert_data ( dm, result, a, a, 1 ); - *mv = *inMV; - } - - - // do faces - mface2 = CDDM_get_faces ( result ); - for ( a=0, i=0; a<numfaces; a++ ) - { - MFace *mf = &mface2[i]; - MFace *inMF; - inMF = &mface[a]; - - /* - DM_copy_face_data(dm, result, a, i, 1); - - *mf = *inMF; - */ - - if ( ( !BLI_edgehash_haskey ( edgehash, mface[a].v1, mface[a].v2 ) ) - && ( !BLI_edgehash_haskey ( edgehash, mface[a].v2, mface[a].v3 ) ) - && ( !BLI_edgehash_haskey ( edgehash, mface[a].v3, mface[a].v4 ) ) - && ( !BLI_edgehash_haskey ( edgehash, mface[a].v4, mface[a].v1 ) ) ) - { - mf->v1 = mface[a].v1; - mf->v2 = mface[a].v2; - mf->v3 = mface[a].v3; - mf->v4 = mface[a].v4; - - test_index_face ( mf, NULL, 0, 4 ); - - i++; - } - } - - CDDM_lower_num_faces ( result, i ); - CDDM_calc_edges ( result ); - CDDM_calc_normals ( result ); - - BLI_edgehash_free ( edgehash, NULL ); - - return result; -} - int modifiers_indexInObject(Object *ob, ModifierData *md_seek); int cloth_read_cache(Object *ob, ClothModifierData *clmd, float framenr) diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index f9391a0adb8..a1c49ac4655 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -30,32 +30,17 @@ * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ -#include <math.h> -#include <stdlib.h> -#include <string.h> #include "MEM_guardedalloc.h" -/* types */ -#include "DNA_curve_types.h" + +#include "BKE_cloth.h" + #include "DNA_group_types.h" #include "DNA_object_types.h" -#include "DNA_object_force.h" #include "DNA_cloth_types.h" -#include "DNA_key_types.h" #include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_lattice_types.h" #include "DNA_scene_types.h" -#include "DNA_modifier_types.h" -#include "BLI_blenlib.h" -#include "BLI_arithb.h" -#include "BLI_edgehash.h" -#include "BLI_linklist.h" -#include "BKE_curve.h" -#include "BKE_deform.h" + #include "BKE_DerivedMesh.h" -#include "BKE_cdderivedmesh.h" -#include "BKE_displist.h" -#include "BKE_effect.h" #include "BKE_global.h" #include "BKE_mesh.h" #include "BKE_object.h" @@ -63,10 +48,6 @@ #include "BKE_modifier.h" #include "BKE_utildefines.h" #include "BKE_DerivedMesh.h" -#include "DNA_screen_types.h" -#include "BSE_headerbuttons.h" -#include "BIF_screen.h" -#include "BIF_space.h" #include "mydevice.h" #include "Bullet-C-Api.h" diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 6e33805fbeb..bb228a67381 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -522,6 +522,8 @@ void pdDoEffectors(ListBase *lb, float *opco, float *force, float *speed, float if((pd->flag & PFIELD_USEMAX) && distance>pd->maxdist && pd->forcefield != PFIELD_GUIDE) ; /* don't do anything */ + else if((pd->flag & PFIELD_USEMIN) && distance<pd->mindist && pd->forcefield != PFIELD_GUIDE) + ; /* don't do anything */ else if(pd->forcefield == PFIELD_WIND) { VECCOPY(force_vec, ob->obmat[2]); diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c index 2b01f256c56..21e58f88aad 100644 --- a/source/blender/blenkernel/intern/implicit.c +++ b/source/blender/blenkernel/intern/implicit.c @@ -29,38 +29,19 @@ * * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ -#include "math.h" -#include "float.h" -#include <stdlib.h> -#include <string.h> -#include <stdio.h> + #include "MEM_guardedalloc.h" -/* types */ -#include "DNA_curve_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" + +#include "BKE_cloth.h" + #include "DNA_cloth_types.h" -#include "DNA_key_types.h" -#include "DNA_mesh_types.h" -#include "DNA_modifier_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_lattice_types.h" #include "DNA_scene_types.h" -#include "DNA_modifier_types.h" -#include "BLI_blenlib.h" -#include "BLI_arithb.h" -#include "BLI_threads.h" -#include "BKE_curve.h" -#include "BKE_displist.h" + + #include "BKE_effect.h" #include "BKE_global.h" -#include "BKE_key.h" -#include "BKE_object.h" #include "BKE_cloth.h" -#include "BKE_modifier.h" #include "BKE_utildefines.h" -#include "BKE_global.h" -#include "BIF_editdeform.h" #ifdef _WIN32 @@ -1446,6 +1427,7 @@ void cloth_calc_force(ClothModifierData *clmd, lfVector *lF, lfVector *lX, lfVec VECADDS(lF[mfaces[i].v1], lF[mfaces[i].v1], wind_normalized, 1.0 / 3.0); } + speed[0] = speed[1] = speed[2] = 0.0; pdDoEffectors(effectors, lX[mfaces[i].v2], force, speed, (float)G.scene->r.cfra, 0.0f, PE_WIND_AS_SPEED); VECCOPY(wind_normalized, speed); Normalize(wind_normalized); @@ -1458,7 +1440,8 @@ void cloth_calc_force(ClothModifierData *clmd, lfVector *lF, lfVector *lX, lfVec { VECADDS(lF[mfaces[i].v2], lF[mfaces[i].v2], wind_normalized, 1.0 / 3.0); } - + + speed[0] = speed[1] = speed[2] = 0.0; pdDoEffectors(effectors, lX[mfaces[i].v3], force, speed, (float)G.scene->r.cfra, 0.0f, PE_WIND_AS_SPEED); VECCOPY(wind_normalized, speed); Normalize(wind_normalized); @@ -1472,6 +1455,7 @@ void cloth_calc_force(ClothModifierData *clmd, lfVector *lF, lfVector *lX, lfVec VECADDS(lF[mfaces[i].v3], lF[mfaces[i].v3], wind_normalized, 1.0 / 3.0); } + speed[0] = speed[1] = speed[2] = 0.0; if(mfaces[i].v4) { pdDoEffectors(effectors, lX[i], force, speed, (float)G.scene->r.cfra, 0.0f, PE_WIND_AS_SPEED); diff --git a/source/blender/blenkernel/intern/kdop.c b/source/blender/blenkernel/intern/kdop.c index 06525449bf4..79a9559250f 100644 --- a/source/blender/blenkernel/intern/kdop.c +++ b/source/blender/blenkernel/intern/kdop.c @@ -30,49 +30,22 @@ * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ -#include <math.h> -#include <stdlib.h> -#include <string.h> #include "MEM_guardedalloc.h" -/* types */ -#include "DNA_curve_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" -#include "DNA_cloth_types.h" -#include "DNA_key_types.h" + +#include "BKE_cloth.h" + +#include "DNA_cloth_types.h" #include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_lattice_types.h" #include "DNA_scene_types.h" -#include "DNA_modifier_types.h" -#include "BLI_blenlib.h" -#include "BLI_arithb.h" -#include "BLI_edgehash.h" -#include "BLI_linklist.h" -#include "BKE_curve.h" + #include "BKE_deform.h" #include "BKE_DerivedMesh.h" #include "BKE_cdderivedmesh.h" -#include "BKE_displist.h" #include "BKE_effect.h" #include "BKE_global.h" -#include "BKE_key.h" -#include "BKE_mesh.h" #include "BKE_object.h" -#include "BKE_cloth.h" #include "BKE_modifier.h" #include "BKE_utildefines.h" -#include "BKE_DerivedMesh.h" -#include "BIF_editdeform.h" -#include "BIF_editkey.h" -#include "DNA_screen_types.h" -#include "BSE_headerbuttons.h" -#include "BIF_screen.h" -#include "BIF_space.h" -#include "mydevice.h" - -#include "BKE_utildefines.h" - #ifdef _OPENMP #include <omp.h> |