[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14977] branches/cloth/blender/source/ blender/blenkernel/intern/collision.c: -= Collisions =-

Daniel Genrich daniel.genrich at gmx.net
Mon May 26 12:36:14 CEST 2008


Revision: 14977
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14977
Author:   genscher
Date:     2008-05-26 12:36:14 +0200 (Mon, 26 May 2008)

Log Message:
-----------
-= Collisions =-
1. fix for collisions (were working better with selfcolls enabled, now generally better)

Modified Paths:
--------------
    branches/cloth/blender/source/blender/blenkernel/intern/collision.c

Modified: branches/cloth/blender/source/blender/blenkernel/intern/collision.c
===================================================================
--- branches/cloth/blender/source/blender/blenkernel/intern/collision.c	2008-05-26 09:50:46 UTC (rev 14976)
+++ branches/cloth/blender/source/blender/blenkernel/intern/collision.c	2008-05-26 10:36:14 UTC (rev 14977)
@@ -1458,7 +1458,7 @@
 	long i=0, j = 0, k = 0, numfaces = 0, numverts = 0;
 	unsigned int result = 0, rounds = 0; // result counts applied collisions; ic is for debug output;
 	ClothVertex *verts = NULL;
-	int ret = 0;
+	int ret = 0, ret2 = 0;
 	ClothModifierData *tclmd;
 	int collisions = 0, count = 0;
 
@@ -1484,6 +1484,7 @@
 	do
 	{
 		result = 0;
+		ret2 = 0;
 
 		// check all collision objects
 		for ( base = G.scene->base.first; base; base = base->next )
@@ -1512,6 +1513,7 @@
 							continue;
 
 						ret += cloth_bvh_objcollisions_do ( clmd, collmd, step, dt );
+						ret2 += ret;
 					}
 				}
 			}
@@ -1522,6 +1524,7 @@
 					continue;
 
 				ret += cloth_bvh_objcollisions_do ( clmd, collmd, step, dt );
+				ret2 += ret;
 			}
 		}
 		rounds++;
@@ -1624,6 +1627,7 @@
 							VECSUB ( verts[i].tx, verts[i].tx, temp );
 						}
 						ret = 1;
+						ret2 += ret;
 					}
 					else
 					{
@@ -1640,7 +1644,7 @@
 			////////////////////////////////////////////////////////////
 			// SELFCOLLISIONS: update velocities
 			////////////////////////////////////////////////////////////
-			if ( ret )
+			if ( ret2 )
 			{
 				for ( i = 0; i < cloth->numverts; i++ )
 				{
@@ -1653,7 +1657,7 @@
 			////////////////////////////////////////////////////////////
 		}
 	}
-	while ( result && ( clmd->coll_parms->loop_count>rounds ) );
+	while ( ret2 && ( clmd->coll_parms->loop_count>rounds ) );
 
 	return MIN2 ( ret, 1 );
 }





More information about the Bf-blender-cvs mailing list