Non PID Ragdoll based on Jackii's work made for "Wrectified"

Here is a modified version of Jackii’s orignal Rigged Ragdoll,

Should be just about ready to rock, one thing to note, all animations need to be “Exaggerated”

It’s a fun little piece of script.


RiggedRagdoll (BPREdit2).blend (1.05 MB)

and with my “Physics reductions” applied


RiggedRagdoll (BPREditPhysRedux).blend (1.05 MB)

Ok, Found a bug in 2.71 - Action " Idle" will always play, even when it’s not supposed to,

If I adjusted the action , it fixed it for one play of the game engine, then it was back again…

checking 2.72B now.

here is the ragdoll with the “collision trigger” - hitting him hard enough makes him fall down.

edit: the bug is gone in 2.72B

ok it’s still there but it’s a timing issue,

unchecking “restrict animation updates” seems to fix it…


RiggedRagdoll (BPREditPhyscollideX).blend (1.02 MB)

thanks I’ll put this to good use.

How did you get the ragdoll to move forward tho?


if it’s not working, try unchecking restrict animation updates in the render panel

he walks using physics,

He walks using physics my friend :smiley:

Bump - I will be redoing this using better math, and better code

any suggestions before rewrite I need them now.

so basically you set up your animations, and then have the control function running every frame and you’re good? could you re-write the control code to be easier to read and understand, and be easier modified? I may want to make improvements and such and I’m having a hard time understanding what the code is doing

yeah it would be great if you could do that and also use comments and better variable names, it’s hard to read code

After playing gta v I said to myself, wow, physics based movement mechanics are so much more fun the a bounding box sliding around the world.

I understand,
I have naming conventions now to follow

ActionArm, RigDoll, GfxArm,
RagBone = Rigdoll rigid body bone
RagTag = Empty parented to ActionArmature

and I will try and have everything be easy to understand.

nothing is easily explained, when it does not have a name.

are you only using the cubes to get each joints strength value? why not just make a dictionary for the strength of each joint instead of using objects?

after looking through the code a bit it becomes easier to understand, once I have a good enough understanding of what’s going on in the code I’ll probably re-write it

P=own[‘P’] what is P? I don’t see a custom property called ‘P’ on the owner

P = pelvis I think, I have not looked it over in a few months

edit: confirmed - own[‘P’]=obs[‘pelvic’]

yeah, I ended up printing P and that’s what it returned

I am rewritting it when I get a chance from scratch, we will see what I come up with

I am thinking =
far out of alignment = applies more torque, and dampens less
close to alignment = applies more dampen and less torque

dif = Vector((contpos * partpos.inverted()).to_euler())
mag = dif.magnitude
vel = dif * stren * (Control20)mag
part.worldAngularVelocity = ((angV)+vel)

so this here basically takes the ragdoll bounding object, and tries to force into the bone position?

and dampens it against the core , but it’s a little flawed

The idea = when you pull really hard on my arm I move before a joint reaches it’s limit,