It looks like for static objects "setWorldTransform" always carry Identity matrix in "worldTrans".
Now I can not move my static object. In prev. version all was OK......
2.17 problem
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: 2.17 problem
You should use 'kinematic' for moving static objects. See the CcdPhysicsDemo for an example, search for 'kinematic in that demo. Are you using btMotionState?Jack wrote:It looks like for static objects "setWorldTransform" always carry Identity matrix in "worldTrans".
Now I can not move my static object. In prev. version all was OK......
Things have changed/improved, but perhaps there is an issue. Don't worry, if you can show me (by private message) what is wrong, we'll fix it.
Erwin
-
- Posts: 127
- Joined: Sun Aug 13, 2006 4:41 pm
- Location: Cedar Hill, Texas
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
No files missing: it was a typo in DemoApplication.h, QuickProf.h -> Quickprof.hSteveBaker wrote:I just did a checkout from SVN - and the 'trunk' version is missing a file LinearMath/btQuickProf.h:
I'm surprised that my Mac OS X build just worked fine?!
It has been fixed in SVN. I'm on travel, and the hotel connection doesn't let me upload a new version of bullet-2.17.tgz, so it will be done early next week,
Thanks for reporting!
Erwin
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
The recent Bullet development on synchronizing the motion state has some issues which will be fixed in the next release: for kinematic/static objects, the 'setWorldTransform' should not be called, only dynamic rigid bodies need this callback.
As a temporary workaround for static/kinematic objects, please call 'setCenterOfMassTransform' on the btRigidBody object, instead of setting m_worldTransform member directly.
Thanks,
Erwin
As a temporary workaround for static/kinematic objects, please call 'setCenterOfMassTransform' on the btRigidBody object, instead of setting m_worldTransform member directly.
Thanks,
Erwin
-
- Posts: 127
- Joined: Sun Aug 13, 2006 4:41 pm
- Location: Cedar Hill, Texas
OK - I can fix it now that I have SVN commit privs.Erwin Coumans wrote:No files missing: it was a typo in DemoApplication.h, QuickProf.h -> Quickprof.hSteveBaker wrote:I just did a checkout from SVN - and the 'trunk' version is missing a file LinearMath/btQuickProf.h:
I'm surprised that my Mac OS X build just worked fine?!
It has been fixed in SVN. I'm on travel, and the hotel connection doesn't let me upload a new version of bullet-2.17.tgz, so it will be done early next week,
I think some OS's do not check for case-sensitivity in filenames...this might explain why it works in MacOS but not Linux.
-
- Posts: 198
- Joined: Mon Sep 04, 2006 5:31 pm
- Location: Switzerland
-
- Posts: 59
- Joined: Thu Aug 31, 2006 11:51 am
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
This assert should never trigger, there is no purpose in trying to solve velocities between static/kinematic objects. By default there should be no collision detection and/or constraint solving between static and kinematic (animated) objects. Are you applying proper collision filtering flags? Can you send me some snippet (using PrivateMessage) so I can reproduce this in a Bullet demo?Jack wrote:I also found that if two static objects overlap each other then ASSERT(m_Adiag > 0.0f); in btJacobianEntry::btJacobianEntry occurs....
Very annoying in DEBUG builds. However RELEASE builds work OK.
Thanks in advance,
Erwin
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Issues with static objects have been fixed in Bullet 2.18a.
Make sure you use btMotionState, to synchronize world transform between physics/graphics (see latest Bullet Demos). Also use the btDiscreteDynamicsWorld::addRigidBody, to add rigid bodies to the world. This automatically updates the collision filter flags, to avoid static-static collision detection.
Thanks for reporting!
Erwin
Make sure you use btMotionState, to synchronize world transform between physics/graphics (see latest Bullet Demos). Also use the btDiscreteDynamicsWorld::addRigidBody, to add rigid bodies to the world. This automatically updates the collision filter flags, to avoid static-static collision detection.
Thanks for reporting!
Erwin
-
- Posts: 59
- Joined: Thu Aug 31, 2006 11:51 am
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
This is intended and expected behavior, and will be clearly documented in the upcoming Bullet documentation.Jack wrote:btDiscreteDynamicsWorld::addRigidBody sets gravity. Strange situation occurs. I set object gravity to zero (in constructor), then call addRigidBody. addRigidBody overwrites my gravity...
If I remove object, then add it back, addRigidBody overwrites gravity. Odd behaviour....
Whenever you call 'setGravity' on the btDynamicsWorld, all rigidbodies that are currently added to this world will get this new gravity. And if you add a new rigid body to the world, it gets the gravity that is acting in that world. The only way you can have per-object gravity is to set its gravity AFTER you added it to the world. Also don't call 'setGravity' on the world, because it will overwrite all current gravity.
Thanks for the feedback,
Erwin