[Bf-blender-cvs] [c0e853d7f32] refactor-mesh-position-generic: Merge branch 'master' into refactor-mesh-position-generic

Hans Goudey noreply at git.blender.org
Mon Jan 9 16:30:01 CET 2023


Commit: c0e853d7f32150f8adf4e769b9b9683b20f1dbe0
Author: Hans Goudey
Date:   Fri Jan 6 11:43:45 2023 -0500
Branches: refactor-mesh-position-generic
https://developer.blender.org/rBc0e853d7f32150f8adf4e769b9b9683b20f1dbe0

Merge branch 'master' into refactor-mesh-position-generic

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



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

diff --cc source/blender/blenkernel/intern/collision.c
index 312a19ef5dc,095666e7eac..9ff9ec08816
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@@ -708,18 -697,10 +697,10 @@@ static int cloth_collision_response_sta
                                        w3);
      }
  
-     collision_compute_barycentric(collpair->pb,
-                                   collmd->current_xnew[collpair->bp1],
-                                   collmd->current_xnew[collpair->bp2],
-                                   collmd->current_xnew[collpair->bp3],
-                                   &u1,
-                                   &u2,
-                                   &u3);
- 
      collision_interpolateOnTriangle(v2,
 -                                    collmd->current_v[collpair->bp1].co,
 -                                    collmd->current_v[collpair->bp2].co,
 -                                    collmd->current_v[collpair->bp3].co,
 +                                    collmd->current_v[collpair->bp1],
 +                                    collmd->current_v[collpair->bp2],
 +                                    collmd->current_v[collpair->bp3],
                                      u1,
                                      u2,
                                      u3);
@@@ -1053,6 -1020,23 +1020,23 @@@ static void cloth_collision(void *__res
      collpair[index].flag = 0;
  
      data->collided = true;
+ 
+     /* Compute barycentric coordinates for both collision points. */
+     collision_compute_barycentric(pa,
+                                   verts1[tri_a->tri[0]].tx,
+                                   verts1[tri_a->tri[1]].tx,
+                                   verts1[tri_a->tri[2]].tx,
+                                   &collpair[index].aw1,
+                                   &collpair[index].aw2,
+                                   &collpair[index].aw3);
+ 
+     collision_compute_barycentric(pb,
 -                                  collmd->current_xnew[tri_b->tri[0]].co,
 -                                  collmd->current_xnew[tri_b->tri[1]].co,
 -                                  collmd->current_xnew[tri_b->tri[2]].co,
++                                  collmd->current_xnew[tri_b->tri[0]],
++                                  collmd->current_xnew[tri_b->tri[1]],
++                                  collmd->current_xnew[tri_b->tri[2]],
+                                   &collpair[index].bw1,
+                                   &collpair[index].bw2,
+                                   &collpair[index].bw3);
    }
    else {
      collpair[index].flag = COLLISION_INACTIVE;
@@@ -1217,6 -1218,20 +1218,20 @@@ static void hair_collision(void *__rest
      collpair[index].flag = 0;
  
      data->collided = true;
+ 
+     /* Compute barycentric coordinates for the collision points. */
+     collpair[index].aw2 = line_point_factor_v3(
+         pa, verts1[edge_coll->v1].tx, verts1[edge_coll->v2].tx);
+ 
+     collpair[index].aw1 = 1.0f - collpair[index].aw2;
+ 
+     collision_compute_barycentric(pb,
 -                                  collmd->current_xnew[tri_coll->tri[0]].co,
 -                                  collmd->current_xnew[tri_coll->tri[1]].co,
 -                                  collmd->current_xnew[tri_coll->tri[2]].co,
++                                  collmd->current_xnew[tri_coll->tri[0]],
++                                  collmd->current_xnew[tri_coll->tri[1]],
++                                  collmd->current_xnew[tri_coll->tri[2]],
+                                   &collpair[index].bw1,
+                                   &collpair[index].bw2,
+                                   &collpair[index].bw3);
    }
    else {
      collpair[index].flag = COLLISION_INACTIVE;



More information about the Bf-blender-cvs mailing list