[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35884] trunk/blender: fixes in Bullet stuff, roll influence for raycast vehicles was broken,

Erwin Coumans blender at erwincoumans.com
Tue Mar 29 20:44:18 CEST 2011


Revision: 35884
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35884
Author:   erwin
Date:     2011-03-29 18:44:18 +0000 (Tue, 29 Mar 2011)
Log Message:
-----------
fixes in Bullet stuff, roll influence for raycast vehicles was broken,
enable the setPhysicsTicRate for BGE Python

Modified Paths:
--------------
    trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
    trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h

Modified: trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
===================================================================
--- trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp	2011-03-29 16:52:26 UTC (rev 35883)
+++ trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp	2011-03-29 18:44:18 UTC (rev 35884)
@@ -254,20 +254,21 @@
 			}
 #endif //
 			
-			m_cachedSeparatingAxis = newCachedSeparatingAxis;
 
 			//redundant m_simplexSolver->compute_points(pointOnA, pointOnB);
 
 			//are we getting any closer ?
 			if (previousSquaredDistance - squaredDistance <= SIMD_EPSILON * previousSquaredDistance) 
 			{ 
-				m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
+//				m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
 				checkSimplex = true;
 				m_degenerateSimplex = 12;
 				
 				break;
 			}
 
+			m_cachedSeparatingAxis = newCachedSeparatingAxis;
+
 			  //degeneracy, this is typically due to invalid/uninitialized worldtransforms for a btCollisionObject   
               if (m_curIter++ > gGjkMaxIter)   
               {   
@@ -294,7 +295,7 @@
 			if (!check)
 			{
 				//do we need this backup_closest here ?
-				m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
+//				m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
 				m_degenerateSimplex = 13;
 				break;
 			}
@@ -303,7 +304,7 @@
 		if (checkSimplex)
 		{
 			m_simplexSolver->compute_points(pointOnA, pointOnB);
-			normalInB = pointOnA-pointOnB;
+			normalInB = m_cachedSeparatingAxis;
 			btScalar lenSqr =m_cachedSeparatingAxis.length2();
 			
 			//valid normal

Modified: trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
===================================================================
--- trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp	2011-03-29 16:52:26 UTC (rev 35883)
+++ trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp	2011-03-29 18:44:18 UTC (rev 35884)
@@ -698,7 +698,7 @@
 					btVector3 sideImp = m_axle[wheel] * m_sideImpulse[wheel];
 
 #if defined ROLLING_INFLUENCE_FIX // fix. It only worked if car's up was along Y - VT.
-					btVector3 vChassisWorldUp = getRigidBody()->getCenterOfMassTransform().getBasis().getColumn(1);
+					btVector3 vChassisWorldUp = getRigidBody()->getCenterOfMassTransform().getBasis().getColumn(m_indexUpAxis);
 					rel_pos -= vChassisWorldUp * (vChassisWorldUp.dot(rel_pos) * (1.f-wheelInfo.m_rollInfluence));
 #else
 					rel_pos[m_indexUpAxis] *= wheelInfo.m_rollInfluence;

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h	2011-03-29 16:52:26 UTC (rev 35883)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h	2011-03-29 18:44:18 UTC (rev 35884)
@@ -125,7 +125,11 @@
 		virtual void		debugDrawWorld();
 //		virtual bool		proceedDeltaTimeOneStep(float timeStep);
 
-		virtual	void		setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};
+		virtual	void		setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep)
+		{
+			//based on DEFAULT_PHYSICS_TIC_RATE of 60 hertz
+			setNumTimeSubSteps(fixedTimeStep/60.f);
+		}
 		//returns 0.f if no fixed timestep is used
 
 		virtual	float		getFixedTimeStep(){ return 0.f;};




More information about the Bf-blender-cvs mailing list