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;}; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs