I’ve posted some stuff already about rigid body joints, but I’m still in search of some information as I progress. I’ve scoured the Blender Wiki, API, bullet API, this forum, and I’m running up dry.
First, I’ve built a rigid body system that works a bit like a zero-g bolo. It has:
- A Rigid Body empty that acts as an anchor, with translation locked.
- A Rigid Body object at a particular distance joined to the anchor with location constraints, but no rotational constraints.
This should represent a fixed anchor with the rigid body object acting as the end of the bolo. It can rotate freely, and move about the anchor constrained to the arc defined by the distance established at the creation of the joint.
I then apply forces to object to kick it around the anchor.
Think of it like a tethered model airplane. It applies it’s own forward force, and swings around in a giant arc.
It works well. But I’m trying to learn about the engine’s physics steps and substeps and how this relates to the drift and error I see in this rigid body system.
Let’s say I set the physics max steps and logic max steps to 1 as a base for testing.
At 1 physics substeps, when I apply force to the system, the object just sails away, dragging the anchor with it.
I then doubled the substeps until I found a mostly stable simulation. This turned out to be 16… but it still drifted and tugged. When I printed out the anchor’s position, it was drifting by about 1 unit depending on how much thrust the object is applying. At 14 substeps, the arc that the object travelled would begin to wobble and stray.
What’s happening? I don’t understand how more substeps equals more stable physics. What is a substep? What get’s processed in a substep that I need 16 of them to resolve a single rigid body joint?
…
My next question, is also related to the rigid body joints. If I take this same system, and apply a moderately hard force in a direction that is mostly aimed away from the center of the arc, the whole rigid body joint system will displace and sort of orbit the position in which the anchor should be locked. It looks like the fixed anchor is attached to a spring. This is the “drift” I mention earlier.
Using the tethered model airplane analogy, it would be as if the airplane is so powerful that it’s dragging the operator along with it, who is constantly trying to error correct back to his starting position.
Again… with higher substeps, this drift and springiness goes away.
Why?
…
I hope these scenarios make sense.
I establish the rigid body system in python modules. Gravity has been disabled.
Thanks for any insight.
I’ll try to clarify and respond to questions.