Kinematic friction broken after recent changes to getOrInitSolverBody. #3537
Replies: 11 comments
-
Do you have a minimal patch for btSequentialImpulseConstraintSolver::getOrInitSolverBody that reverts the behavior (even if it breaks the multithreaded solver)? |
Beta Was this translation helpful? Give feedback.
-
and we should add some unit test, so it doesn't regress next time. |
Beta Was this translation helpful? Give feedback.
-
Kinematic bodies are allowed to have
Suggest reordering so that we check for kinematic body before static body (or similar):
|
Beta Was this translation helpful? Give feedback.
-
Why do you need to set the CF_STATIC_OBJECT for kinematic objects? Isn't using CF_KINEMATIC_OBJECT sufficient? Aside from that, it looks OK to check for kinematic first. |
Beta Was this translation helpful? Give feedback.
-
If you set a rigid body's mass to zero then |
Beta Was this translation helpful? Give feedback.
-
When BT_THREADSAFE is not set, the old logic seems to check for kinematic object first, right? How is that code path still broken? |
Beta Was this translation helpful? Give feedback.
-
The current Bullet version doesn't seem broken by default (no BT_THREADSAFE defined). |
Beta Was this translation helpful? Give feedback.
-
In the no-BT_THREADSAFE case, the code for that function should be exactly what it was before I changed it. So I'd be very surprised if that case is broken. In the threadsafe case, I agree that it makes sense to check for kinematic before static. I didn't realise that kinematic objects could have the static flag set. Shall I create a PR for that? |
Beta Was this translation helpful? Give feedback.
-
Yes, please create a PR for that. And in my test, the no-BT_THREADSAFE is working just fine (see my previous reply above here), so no need to worry about that. |
Beta Was this translation helpful? Give feedback.
-
See PR #894 |
Beta Was this translation helpful? Give feedback.
-
Yes, sorry about that. It does work with |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Friction is no longer applied when a dynamic rigid body is resting on a moving kinematic body. I believe that this is caused by the recent change to
btSequentialImpulseConstraintSolver::getOrInitSolverBody
. Note that this is broken with or withoutBT_THREADSAFE
set. Using the old version of the function fixes the problem, although this is obviously not threadsafe.Beta Was this translation helpful? Give feedback.
All reactions