Revision: 29007
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29007
Author: blendix
Date: 2010-05-26 18:16:45 +0200 (Wed, 26 May 2010)
Log Message:
-----------
Render Branch: hair collision time stepping test. Not sure this is much
better than before but it helps in some cases. It seems to me that
without this it is taking 1.5 steps each time instead of 1.
The original paper defines vi+1/2 = (xi+1 - xi)/dt, but in our case we
already have vi+1 = (xi+1 - xi)/dt ... so there's a conflict here.
Modified Paths:
--------------
branches/render25/source/blender/blenkernel/intern/implicit.c
Modified: branches/render25/source/blender/blenkernel/intern/implicit.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/implicit.c
2010-05-26 16:06:35 UTC (rev 29006)
+++ branches/render25/source/blender/blenkernel/intern/implicit.c
2010-05-26 16:16:45 UTC (rev 29007)
@@ -2127,6 +2127,9 @@
if(((clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_ENABLED)
&& clmd->clothObject->bvhtree) ||
(clmd->sim_parms->rigid_damp > 0.0f) || do_extra_solve)
{
+ // time stepping based on section Time Discretization
in the paper:
+ // "Robust Treatment of Collisions, Contact and
Friction for Cloth Animation"
+
// collisions
// itstart();
@@ -2170,6 +2173,14 @@
VECCOPY(id->Xnew[i], verts[i].tx);
VECCOPY(id->Vnew[i], verts[i].tv);
mul_v3_fl(id->Vnew[i], spf);
+
+ /* test to see if this helps make
collisions a bit more stable,
+ the algorithm used in the paper is
based on velocities being
+ defined at the midpoint, but we have
velocity defined at the
+ endpoint, so we interpolate here so
we take 1 step in total
+ instead of 1.5 (brecht) */
+ if(clmd->sim_parms->tothair)
+ interp_v3_v3v3(id->Vnew[i],
id->Vnew[i], id->V[i], 0.5f);
}
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs