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

Awesome! it works! I’ll be working on this system, I have plans for it. If I’m able to take it in a good direction I’ll start a new thread for the project. Thanks to you and jackii my vision is that much closer to reality and I really appreciate the help, I’ll keep you updated, I work fulltime so I cant dedicate as much to the project as I’d like to but I will definitely make time for this

Just let me know if you need any help,

one system that was handy I made in the past, is to deviate the setp height using a ray, so the actor
automagically walks up and down stairs well, but it took some adjustment and tinkering.

step 1 = parent feet ik bones to ‘feet center bone’

step 2 = place ‘Target object’ with a ray

step 3 = align ‘feet center bone’ using IK :smiley:

Hi BPR and James! I find your work astonishing, thanks for sharing! But there are two points for which I’m struggling with it, and I don’t find the answer:

  1. In BPR’s rigged ragdoll, the animated armature’s target cubes always follow the world position of the ragdoll, whereas in james’ it stays in the center. What’s the difference in the code that makes this happen?

  2. In BPR’s work I find the physics to move forward better than james’, in the sense that the feet do not levitate neither slide around, and the body moves quite naturally without implementing additional forward moving forces. But I don’t find any difference in your code, further than the ik constraints and some style matters. Is it just the walking animation, or the ik? Or some parameters about damping and physics?

Thank you a lot!

  1. armature.worldPosition = Pelvic.worldPosition

  2. my walk is exaggerated and slower, if you want it to be perfect, apply a force vector to all parts except the contacting foot when a foot is contacting.
    (6dof chains only transfer energy at their limits)

I’ll try and remember to upload a example,

Mmmm I see! Many thanks!

got a minute to add the walk force system,

(I would probably end up using my own system like wrectified to handle actions)

Controller -------> actor

Controller collects inputs and sends list to actor,

actor plays / turns off animations based on the list,

for some reason the rig is using a excessive amount of animations at the moment**

Attachments

RiggedRagdoll (BPREditPhyscollideX) (Walker).blend (1.18 MB)

Attachments

RiggedRagdoll (BPREditPhyscollideX) (Walker3).blend (1.22 MB)

Amazing!

I just don’t understand why you use in addition the raycast. Isn’t it enough by knowing that between frames 1 and 19 the left foot is on the ground?

Also, for the left foot for example, the end point is:
end = own[‘LeftFoot’].worldPosition+(Pelvic.worldOrientation.col[2]*.25)

What is exactly this point? The foot has thickness 0.095 in Z dimension. Shouldn’t it be
end = own[‘LeftFoot’].worldPosition+[0,0,-1]*0.095/2 ?

I don’t get the factor (Pelvic.worldOrientation.col[2]*.25). Sorry maybe this is more about my poor knowledge of the raycast…

Many thanks!

1 - Just because the frame is where the foot would be on the ground, that does not mean it’s on the ground
(ie stairs or pressing walk in air*)

2 - pelvic.worldOrientation.col[2] is the vector of the up orientation of the pelvis, so end = own[‘LeftFoot’].worldPosition+(Pelvic.worldOrientation.col[2]*.25) casts a ray down from the foot, even when the foots orientation is not up and down)

3 - I just ‘guessed’ at .25, so .095 would be better maybe, just have to test :smiley:

just noticed, that .25 should be -.25 :smiley:

Ha Ha Ha!

that was just the actor running!

there were no force applications! my ray was backwards!

me learning for 45 minutes :smiley:

added stride angle adjuster :smiley:

Perfected Stride angle adjuster

Attachments

RiggedRagdoll (BPREditPhyscollideX) (WalkerTheseus).blend (1.57 MB)

Woah!

How do you create the ragdoll in such a way that all parts have the same orientation for the local axes, with the local Z orthogonal to the ground? That’s the key to make all the vector part working.

I don’t manage to do that, as I eventually rotate some pieces to match the human model, and then the axes are changed… With a T-pose I guess it wouldn’t need rotations, unfortunately the models exported from makehuman are never in that pose.

Thank you!

Jackie made the original rig, and with the rigs I made from scratch I used a T pose :smiley:

also, don’t worry about the armature until after you have the rigdoll,

the armature just uses copy rotation in each bone and Targets the rigdoll bones or empties you bind to the rigdoll bones to be able to adjust the rot.

hint -> edit mode -> select all , rotate , leave edit mode -> rotate (to change part alignments)

I see!! Edit mode is the key for this!! :wink:

Many thanks!

Hey! I don’t get to manage the forces between the targets and the ragdoll parts. I made a new ragdoll from scratch and applied your code, and the ragdoll sort of bursts and goes away.

I don’t get find the reason :S Is there a special parameter I should take care for this? Here’s the file.

Attachments

ragdoll_without_skin.blend (1.71 MB)

I’ll check it out tonight.

ok,

Step 1 = make the actor’s default pose a T pose

step 2 = align the orientation of each ragbone to the ragtag for that bone, else it rotates the ragbone to match the ragtag (swinging it way out of alingment)

step 3 = make sure the rotation point of the bone is the origin

step 4 = make sure you use rigid body - > convex hull

also, all of your rigid body joints need to have ‘Linked collsion marked’

turn on local orientation view,

click on a ragbone , see where Y axis points?

the bone needs to align to the rag tag,

and the part that aligns the ragbone to the ragtag is the math that drives the ragdoll :smiley: