• Advertisement
Sign in to follow this  

Pushing Objects in Bullet Physics

This topic is 1608 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
Advertisement

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

@jjd: I tried that:

body->applyImpulse(rayHitPoint);

It doesn't work, though I also need to determine "how much impulse will be applied"

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
Sign in to follow this  

  • Advertisement