Commit: 403b835992fece83232d3d1b5407cc6baeb3587b
Author: Luca Rood
Date:   Thu Jan 19 19:38:55 2017 -0200
Branches: cloth-improvements
https://developer.blender.org/rB403b835992fece83232d3d1b5407cc6baeb3587b

Remove unused functions in collision.c

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

M       source/blender/blenkernel/intern/collision.c

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

diff --git a/source/blender/blenkernel/intern/collision.c 
b/source/blender/blenkernel/intern/collision.c
index 5c50c0290d..43efb95500 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -1213,106 +1213,6 @@ void collision_get_collider_velocity(float vel_old[3], 
float vel_new[3], Collisi
        copy_v3_v3(vel_old, vel_new);
 }
 
-static bool cloth_points_collision_response_static(ClothModifierData *clmd, 
CollisionModifierData *collmd, PartDeflect *pd,
-                                                  CollPair *collpair, CollPair 
*collision_end, float dt)
-{
-       bool result = false;
-       float restitution = (1.0f - clmd->coll_parms->damping) * (1.0f - 
pd->pdef_sbdamp);
-       float inv_dt = 1.0f / dt;
-       Cloth *cloth1 = clmd->clothObject;
-       
-       // float w1, w2;
-       float u1, u2, u3;
-       float v1[3], v2_old[3], v2_new[3], v_rel_old[3], v_rel_new[3];
-       float epsilon2 = BLI_bvhtree_get_epsilon ( collmd->bvhtree );
-
-       for ( ; collpair != collision_end; collpair++ ) {
-               float margin_distance = (float)(collpair->distance - 
(double)epsilon2);
-               float impulse[3];
-               float mag_v_rel;
-
-               if (margin_distance > 0.0f)
-                       continue;
-
-               zero_v3(impulse);
-
-               /* only handle static collisions here */
-               if ( collpair->flag & COLLISION_IN_FUTURE )
-                       continue;
-
-               /* compute barycentric coordinates for both collision points */
-               // w1 = 1.0f - collpair->time;
-               // w2 = collpair->time;
-
-               /* was: txold */
-               collision_compute_barycentric ( collpair->pb,
-                       collmd->current_x[collpair->bp1].co,
-                       collmd->current_x[collpair->bp2].co,
-                       collmd->current_x[collpair->bp3].co,
-                       &u1, &u2, &u3 );
-
-               /* Calculate relative velocity */
-               copy_v3_v3(v1, cloth1->verts[collpair->ap1].tv);
-
-               collision_interpolateOnTriangle ( v2_new, 
collmd->current_v[collpair->bp1].co, collmd->current_v[collpair->bp2].co, 
collmd->current_v[collpair->bp3].co, u1, u2, u3 );
-               /* XXX assume constant velocity of the collider for now */
-               copy_v3_v3(v2_old, v2_new);
-
-               sub_v3_v3v3(v_rel_old, v1, v2_old);
-               sub_v3_v3v3(v_rel_new, v1, v2_new);
-
-               /* normal component of the relative velocity */
-               mag_v_rel = dot_v3v3(v_rel_old, collpair->normal);
-
-               /**** DEBUG ****/
-               BKE_sim_debug_data_add_dot(collpair->pa, 0.9, 0.2, 0.2, 
"collision", 833, collpair->face1, collpair->face2);
-               BKE_sim_debug_data_add_dot(collpair->pb, 0.2, 0.9, 0.2, 
"collision", 834, collpair->face1, collpair->face2);
-               BKE_sim_debug_data_add_line(collpair->pa, collpair->pb, 0.8, 
0.8, 0.8, "collision", 835, collpair->face1, collpair->face2);
-               /********/
-
-               if (mag_v_rel < -ALMOST_ZERO) {
-                       float v_nor_old, v_nor_new;
-                       float v_tan_old[3], v_tan_new[3];
-                       float bounce, repulse;
-                       
-                       /* Collision response based on
-                        * "Simulating Complex Hair with Robust Collision 
Handling" (Choe, Choi, Ko, ACM SIGGRAPH 2005)
-                        * 
http://graphics.snu.ac.kr/publications/2005-choe-HairSim/Choe_2005_SCA.pdf
-                        */
-                       
-                       v_nor_old = mag_v_rel;
-                       v_nor_new = dot_v3v3(v_rel_new, collpair->normal);
-                       
-                       madd_v3_v3v3fl(v_tan_old, v_rel_old, collpair->normal, 
-v_nor_old);
-                       madd_v3_v3v3fl(v_tan_new, v_rel_new, collpair->normal, 
-v_nor_new);
-                       
-                       repulse = -margin_distance * inv_dt + dot_v3v3(v1, 
collpair->normal);
-                       
-                       if (margin_distance < -epsilon2) {
-                               bounce = -v_nor_new + v_nor_old * restitution;
-                               mul_v3_v3fl(impulse, collpair->normal, 
max_ff(repulse, bounce));
-                       }
-                       else {
-                               bounce = 0.0f;
-                               mul_v3_v3fl(impulse, collpair->normal, repulse);
-                       }
-                       cloth1->verts[collpair->ap1].impulse_count++;
-                       
-                       result = true;
-               }
-               
-               if (result) {
-                       int i = 0;
-
-                       for (i = 0; i < 3; i++) {
-                               if (cloth1->verts[collpair->ap1].impulse_count 
> 0 && fabsf(cloth1->verts[collpair->ap1].impulse[i]) < fabsf(impulse[i]))
-                                       cloth1->verts[collpair->ap1].impulse[i] 
= impulse[i];
-                       }
-               }
-       }
-       return result;
-}
-
 BLI_INLINE bool cloth_point_face_collision_params(const float p1[3], const 
float p2[3], const float v0[3], const float v1[3], const float v2[3],
                                                   float r_nor[3], float 
*r_lambda, float r_w[4])
 {
@@ -1463,160 +1363,6 @@ static void 
cloth_points_objcollisions_nearcheck(ClothModifierData * clmd, Colli
        }
 }
 
-static int cloth_points_objcollisions_resolve(ClothModifierData * clmd, 
CollisionModifierData *collmd, PartDeflect *pd,
-                                              CollPair *collisions, CollPair 
*collisions_index, float dt)
-{
-       Cloth *cloth = clmd->clothObject;
-       int i = 0, mvert_num = clmd->clothObject->mvert_num;
-       ClothVertex *verts = cloth->verts;
-       int ret = 0;
-       
-       // process all collisions
-       if ( collmd->bvhtree ) {
-               bool result = cloth_points_collision_response_static(clmd, 
collmd, pd, collisions, collisions_index, dt);
-               
-               // apply impulses in parallel
-               if (result) {
-                       for (i = 0; i < mvert_num; i++) {
-                               // calculate "velocities" (just xnew = xold + 
v; no dt in v)
-                               if (verts[i].impulse_count) {
-                                       // VECADDMUL ( verts[i].tv, 
verts[i].impulse, 1.0f / verts[i].impulse_count );
-                                       VECADD ( verts[i].tv, verts[i].tv, 
verts[i].impulse);
-                                       zero_v3(verts[i].impulse);
-                                       verts[i].impulse_count = 0;
-                                       
-                                       ret++;
-                               }
-                       }
-               }
-       }
-       
-       return ret;
-}
-
-// cloth - object collisions
-int cloth_points_objcollision(Object *ob, ClothModifierData *clmd, float step, 
float dt)
-{
-       Cloth *cloth= clmd->clothObject;
-       BVHTree *cloth_bvh;
-       int rounds = 0; // result counts applied collisions; ic is for debug 
output;
-       float round_dt = dt / (float)clmd->coll_parms->loop_count;
-       unsigned int i = 0, mvert_num = 0;
-       ClothVertex *verts = NULL;
-       int ret = 0, ret2 = 0;
-       Object **collobjs = NULL;
-       unsigned int numcollobj = 0;
-       
-       verts = cloth->verts;
-       mvert_num = cloth->mvert_num;
-       
-       ////////////////////////////////////////////////////////////
-       // static collisions
-       ////////////////////////////////////////////////////////////
-       
-       // create temporary cloth points bvh
-       cloth_bvh = BLI_bvhtree_new(mvert_num, 
max_ff(clmd->coll_parms->epsilon, clmd->coll_parms->distance_repel), 4, 6);
-       /* fill tree */
-       for (i = 0; i < mvert_num; i++) {
-               float co[2][3];
-               
-               copy_v3_v3(co[0], verts[i].x);
-               copy_v3_v3(co[1], verts[i].tx);
-               
-               BLI_bvhtree_insert(cloth_bvh, i, co[0], 2);
-       }
-       /* balance tree */
-       BLI_bvhtree_balance(cloth_bvh);
-       
-       collobjs = get_collisionobjects(clmd->scene, ob, 
clmd->coll_parms->group, &numcollobj, eModifierType_Collision);
-       if (!collobjs)
-               return 0;
-       
-       /* move object to position (step) in time */
-       for (i = 0; i < numcollobj; i++) {
-               Object *collob= collobjs[i];
-               CollisionModifierData *collmd = (CollisionModifierData 
*)modifiers_findByType(collob, eModifierType_Collision);
-               if (!collmd->bvhtree)
-                       continue;
-
-               /* move object to position (step) in time */
-               collision_move_object ( collmd, step + dt, step );
-       }
-
-       do {
-               CollPair **collisions, **collisions_index;
-               
-               ret2 = 0;
-               
-               collisions = MEM_callocN(sizeof(CollPair *) *numcollobj, 
"CollPair");
-               collisions_index = MEM_callocN(sizeof(CollPair *) *numcollobj, 
"CollPair");
-               
-               // check all collision objects
-               for (i = 0; i < numcollobj; i++) {
-                       Object *collob= collobjs[i];
-                       CollisionModifierData *collmd = (CollisionModifierData 
*)modifiers_findByType(collob, eModifierType_Collision);
-                       BVHTreeOverlap *overlap = NULL;
-                       unsigned int result = 0;
-                       float epsilon;
-                       
-                       if (!collmd->bvhtree)
-                               continue;
-                       
-                       /* search for overlapping collision pairs */
-                       overlap = BLI_bvhtree_overlap(cloth_bvh, 
collmd->bvhtree, &result, NULL, NULL);
-                       epsilon = BLI_bvhtree_get_epsilon(collmd->bvhtree);
-                       
-                       // go to next object if no overlap is there
-                       if (result && overlap) {
-                               /* check if collisions really happen (costly 
near check) */
-                               cloth_points_objcollisions_nearcheck(clmd, 
collmd, &collisions[i], &collisions_index[i],
-                                                                    result, 
overlap, epsilon, round_dt);
-                               
-                               // resolve nearby collisions
-                               ret += cloth_points_objcollisions_resolve(clmd, 
collmd, collob->pd, collisions[i], collisions_index[i], round_dt);
-                               ret2 += ret;
-                       }
-                       
-                       if (overlap)
-                               MEM_freeN ( overlap );
-               }
-               rounds++;
-               
-               for (i = 0; i < numcollobj; i++) {
-                       if (collisions[i])
-                               MEM_freeN(collisions[i]);
-               }
-                       
-               MEM_freeN(collisions);
-               MEM_freeN(collisions_index);
-
-               ////////////////////////////////////////////////////////////
-               // update positions
-               // this is needed for bvh_calc_DOP_hull_moving() [kdop.c]
-               ////////////////////////////////////////////////////////////
-
-               // verts come from clmd
-               for (i = 0; i < mvert_num; i++) {
-                       if ( clmd->sim_parms->vgroup_mass>0 ) {
-                               if ( verts [i].flags & CLOTH_VERT_FLAG_PINNED ) 
{
-                                       continue;
-                               }
-                       }
-
-                       VECADD ( verts[i].tx, verts[i].txold, verts[i].tv );
-               }
-               ////////////////////////////////////////////////////////////
-       }
-       while ( ret2 && ( clmd->coll_parms->loop_count>rounds ) );
-       
-       if (collobjs)
-               MEM_freeN(collobjs);
-
-       BLI_bvhtree_free(cloth_bvh);
-
-       return 1|MIN2 ( ret, 1 );
-}
-
 void cloth_find_point_contacts(Object *ob, ClothModifierData *clmd, float 
step, float dt,
                                ColliderContacts **r_collider_contacts, int 
*r_totcolliders)
 {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to