Revision: 20534
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20534
Author:   erwin
Date:     2009-05-31 18:22:22 +0200 (Sun, 31 May 2009)

Log Message:
-----------
Anisotropic Friction bugfix for #18854 
http://projects.blender.org/tracker/index.php?func=detail&aid=18854&group_id=9&atid=125
Thanks to Campbell for the reproduction case!

Modified Paths:
--------------
    
trunk/blender/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp

Modified: 
trunk/blender/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
===================================================================
--- 
trunk/blender/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
    2009-05-31 15:59:54 UTC (rev 20533)
+++ 
trunk/blender/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
    2009-05-31 16:22:22 UTC (rev 20534)
@@ -539,9 +539,6 @@
                                                if (!(infoGlobal.m_solverMode & 
SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION) && lat_rel_vel > 
SIMD_EPSILON)
                                                {
                                                        
cp.m_lateralFrictionDir1 /= btSqrt(lat_rel_vel);
-                                                       
applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
-                                                       
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
-                                                       
addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1,
 relaxation);
                                                        
if((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS))
                                                        {
                                                                
cp.m_lateralFrictionDir2 = cp.m_lateralFrictionDir1.cross(cp.m_normalWorldOnB);
@@ -550,21 +547,26 @@
                                                                
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2);
                                                                
addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1,
 relaxation);
                                                        }
+
+                                                       
applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
+                                                       
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
+                                                       
addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1,
 relaxation);
                                                        
cp.m_lateralFrictionInitialized = true;
                                                } else
                                                {
                                                        //re-calculate friction 
direction every frame, todo: check if this is really needed
                                                        
btPlaneSpace1(cp.m_normalWorldOnB,cp.m_lateralFrictionDir1,cp.m_lateralFrictionDir2);
-                                                       
applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
-                                                       
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
-
-                                                       
addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1,
 relaxation);
                                                        if 
((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS))
                                                        {
                                                                
applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir2);
                                                                
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2);
                                                                
addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1,
 relaxation);
                                                        }
+
+                                                       
applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
+                                                       
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
+                                                       
addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1,
 relaxation);
+
                                                        
cp.m_lateralFrictionInitialized = true;
                                                }
 


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

Reply via email to