Sign in to follow this  
Medo Mex

Pushing Objects in Bullet Physics

Recommended Posts

I want to use ray casting to push objects further in bullet physics.

 

Basically, when the player use his weapon to shoot something like a chair, the chair should be pushed or even fall.

 

How do I accomplish that?

Edited by Medo3337

Share this post


Link to post
Share on other sites

If the object is dynamic, just resolve the collision ray, cast the obtained object to btRigidBody and apply and impulse to it.

Ok, it's not so easy. Many things can go wrong:

  • I assumed the object was dynamic but that could be not the case in reality. It could fail to cast to btRigidBody  or
  • it could still cast correctly but be a kinematic or static

In the end this will only work if the object is properly authored (but that's hopefully an easy assumption).

 

If the object is static... I suggest to give up. It's not impossible to destroy it and re-create it dynamic. It might even make some sense in many situations. It didn't in my last project and sure you need some static objects to stay static whatever happens to them. In general, there are artistic reasons for which some objects cannot move, beyond the technical.

 

Kinematics are the real trouble. I think there are good gameplay reasons for which they shouldn't be moved at all but in the past I had a long discussion with a designer that seemed to think otherwise. The main problem with pushing kinematics is what I dubbed "kinematic invariance problem". A kinematic object, when pushed should be working as a purely dynamic object. This is not the case: if you just write your own integrator, there's a high chance its behaviour won't match dynamic.

 

But I suppose you'll be happy with just pushing dynamics around, are you?

Share this post


Link to post
Share on other sites

The above methods doesn't move the object according to the hit point, I have btVector3 rayHitPoint

 

I'm trying to push the object according to the ray hit point so I can simulate firearm bullet hit on objects like a chair or plastic bottle

Edited by Medo3337

Share this post


Link to post
Share on other sites

The above methods doesn't move the object according to the hit point, I have btVector3 rayHitPoint

 

I'm trying to push the object according to the ray hit point so I can simulate firearm bullet hit on objects like a chair or plastic bottle

 

Apply an impulse at the hit point in the direction of the ray.

 

-Josh

Share this post


Link to post
Share on other sites


The above methods doesn't move the object according to the hit point, I have btVector3 rayHitPoint
Then I suppose you need applyImpulse or applyForce. You might have to start using the documentation sooner or later Medo.


It doesn't work, though I also need to determine "how much impulse will be applied"
You're really supposed to work with "force". The impulse is a different thing and does not make much sense in terms of realistic simulation but it comes handy for artistic purposes. The applied force depends on the game logic, in the real world it's often constant for bullets in the sense they are pushed out of the firearm with a known, fixed force.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this