0

Impulse dynamics

I'm starting to experiment with dynamic actuation of objects that have masses using RigidBodyComponent.AddLinearImpulse() and .AddAngularImpulse(). I'm noticing some odd behavior.

First, I notice if the impulse's magnitude gets too large, you get an error message that amounts to "Invalid Velocity". I'm assuming this is a misnomer and that it should actually read something like "Impulse vector too large". Curiously, the maximum in my experiments appears to be 3162. This value is actually too weak under my test circumstances to be useful for carrying someone aloft, for example.

Second, it the impulse can be magnified by multiple calls. To multiply the impulse by three, the following code will do:

for (int I = 0; I < Repeats; I++) {
Body.AddLinearImpulse(Impulse);
}

Thus rendering the impulse limit moot. This is a good way for lifting heavier masses.

Third, the impact of the impulses can be magnified by increasing the frequency of them applied. I have an .Update() method applying impulses on a schedule like so:

Timer.Create(
TimeSpan.FromMilliseconds(UpdateRate),
TimeSpan.FromMilliseconds(UpdateRate),
Update,
"Update"
);

The shorter the UpdateRate increment, the more mass a given impulse value can lift off the ground.

I'm working on the complex algorithms involved in stabilization. I hope to create a stable enough moving platform to stand and walk on. This is a pain, but an interesting challenge.

6 comments

Please sign in to leave a comment.