Jump to content

  • Log In with Google      Sign In   
  • Create Account

Pushing Objects in Bullet Physics


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
7 replies to this topic

#1 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 25 August 2013 - 06:31 PM

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, 25 August 2013 - 06:33 PM.


Sponsor:

#2 Krohm   Crossbones+   -  Reputation: 3129

Like
2Likes
Like

Posted 26 August 2013 - 12:32 AM

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?



#3 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 26 August 2013 - 10:15 AM

The object is dynamic, how do I apply impulse correctly so the object should be pushed according to the ray hit?



#4 Krohm   Crossbones+   -  Reputation: 3129

Like
0Likes
Like

Posted 26 August 2013 - 10:50 AM

btRigidBody::applyCentralForce (but sometimes btRigidBody::applyCentralImpulse can be more "artist friendly").



#5 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 26 August 2013 - 02:14 PM

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, 26 August 2013 - 02:16 PM.


#6 jjd   Crossbones+   -  Reputation: 2077

Like
0Likes
Like

Posted 26 August 2013 - 02:30 PM

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


--www.physicaluncertainty.com
--linkedin
--irc.freenode.net#gdnet


#7 Medo3337   Members   -  Reputation: 665

Like
0Likes
Like

Posted 26 August 2013 - 05:02 PM

@jjd: I tried that:

body->applyImpulse(rayHitPoint);

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



#8 Krohm   Crossbones+   -  Reputation: 3129

Like
1Likes
Like

Posted 29 August 2013 - 12:07 AM


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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS