Advanced Rigid Body sims

Hello Blenderers,

I recently saw a short animation where a rug, chair, and cushion are thrown into the scene, very realistically, and then as they bounce and hit the floor, the chair bounces onto its legs, atop the rug, and the cushion slides perfectly into place on the chair. It all seemed very realistic, and I was wondering how this could be accomplished in blender. Obviously rigid bodies are a good choice, but how can I key that last stage, in which all the objects fall into place?

Thanks.

Side question: is there a way to add keyframes to control whether a rigid body is passive or active?

Well, if it was realistic, the rug probably wasn’t rigid body.

There could be a couple of different ways to animate this. And they could be combined.

One way is to skip the physics and animate by hand.

Another way is to have constraints/pinned sewing lines/goal verts with animated strength that guide the physics into the final position.

Another way is to animate it in reverse: start with the goal position and give them some starting inertia (by moving them while they have the “animated” trait, using static, non-physical proxies until the physics starts.)

Thanks for the quick reply, what would be the best way to have a realistic effect when animating “backward.” I have tried using forces and turbulence, but the effect is not very realistic. I guess I’m asking if you could explain the use of animated traits and the non-pysical proxies.

Thanks.

Sure. You don’t need any forces. The basic idea is the same thing you may have heard with science shows talking about the arrow of time: physics works both directions, it doesn’t care about time.

So start with something that has physical properties that you want. Don’t use any kind of damping though.

Now, move to frame 2, put it where you want it to end, and keyframe its loc/rot. Keyframe its visibility (visible) and its animated status (animated.)

Move to frame 1 and give it some velocity by moving it in the direction you want it to land. If this is inside some collision body, don’t worry about it. Keyframe loc/rot, keyframe visibility (invisible), keyframe animated if you want (animated).

Now duplicate the object, delete all keyframes, delete all physics from the duplicate. Keyframe visible on frame 1 and invisible on frame 2. This duplicate is just so that you can give it velocity on frame 1, without appearing to give it velocity.

Finally, move to frame 3 and keyframe animated (off) on your physics object.

On frame 1, you see the duplicate. On frame 2, its replaced with the physics object in the exact same place. On frame 3, the physics object continues with the inertia you’ve given it by keying loc/rot on frame 1.

Now if you play you animation, you’ll see it operating in reverse. The sofa cushion leaps from the sofa and bounces across the world. Render and reverse the animation. Or bake keyframes and reverse the keyframes (which will allow to edit some drag in if you need it.)

thanks for your help, I attempted to follow all the steps exactly, but I think I’m still missing something. Right now, on frame one, the duplicated object does not move, and the physics object is not visible. Frame 2, the physics object becomes visible, and frame 3 through 6 the physics object slowly sinks in the ground (passive rigid body cube) When you say to put the physics where I want it to end on frame 2, does that mean where I want all the pieces to come to a rest or where I want them to “start” since the animation will be played in reverse. Also, where I want it to “land” is that the same as where I want it to end?

Thanks again for your help

You need to create velocity for the physics object by keyframing its location at frame 1. So that when it becomes un-animated on frame 3, it continues the inertia you created with the motion it has on frames 1-2.

If you want the sofa cushion to land on the sofa at the very end of final, reversed video, then keyframe it on the sofa at frame 2. (And keyframe it below the sofa on frame 1.)

And hopefully, here you’re talking about the ground, because your physics object should not be passive.

ok, I am understanding this a lot more. I am using a cube to test right now. Frame 1 and 2 establish the velocity but are kept animated, and frame 1 is kept invisible, and frame 3 is where the cube becomes visible and non-animated so that the rigid body can take over using the velocity. So where does the duplicate come into play? right now the cube goes to it’s desired end location (right now just floating above ground plane) but when it becomes non-animated, it just drops to the ground without retaining velocity. And yes, the ground in the passive body, not the physics object

In my testing, in 2.79, this works.

The only point to the duplicate is because otherwise, the physics mesh isn’t going to be drawn at the right position on frame 1.

Just checked in 2.8. Doesn’t work in 2.8. Interesting, kind of irritating. Are you using 2.8?

Edit: further testing is interesting. 2.8 rigids copied into 2.79 act like 2.8 rigids. 2.79 rigids copied into 2.8 rigids also act like 2.8 rigids. No apparent difference in settings.

I supposed you could acquire velocity in 2.8 by hitting it with a big, invisible collider, although that’s irritating.

yep. weird that it doesn’t work. Seems to be all good in 2.79. I got the physics cube to move with velocity. One more thing, what would be the best way to get the object to “bounce” into place? I tried baking the rigid body physics between the beginning and where it seemed the first bounce would occur and then repeating the original process of giving it velocity. This works okay, but still not very realistic. Do you know of a better way to do this?

In 2.79? You can set the “bounce” on the physics tab. You need to set it for both the passive body and the bouncing body. Set it to at least 1.0 if you plan on running backwards. You can enter a number manually to make it higher than 1.0, which is appropriate if you want the backwards-running version to look like the bounce absorbs some energy.