Godot Jolt actually has functioning springs, would like to see a remake of this using Jolt as its performance is so much better than GodotPhysics3D actually.
I can't appreciate enough how much i like your "Do-It-Yourself"-Mentality. It isn't implemented in the Engine? Just implement it yourself! That's one of the great features of Godot. Still i would recommend impementing it directly in the engine via C. Such tiny calculations in GDScript can be pretty slow. And while you have access to the source you can have huge performance improvements by just using native code.
This is AMAZING!! 😲 If you are looking for ideas - seeing how characters act being hit with a sword or bullet instead of balls? Could you use this to merge in a stance Delta - someone who is hobbled over or stands with chest more open? So cool!
thankyou so much for the github link, so incredibly helpful, one thing i think you could add (I will be adding quite a few features but for different reasons) would be making it so limbs stay in their sockets, i might update this comment if i do end up implementing that, but its really not needed for most things
I didn't know how physics animation worked. But it's the same method which is used for VR hands. A next level implementation would be to trigger new animations based on the forced applied to each limb, maybe procedural.
Looks great. Also tempted me to take some time looking into the Skeleton3D source to maybe get this functioning out of the box without copies, because it feels unnecessary complicated.
really nice tutorial. I think after a forcefull collision or a leg shot, swapping to ragdoll and lose control then blending back to standing controller would definitely improve this, but those require more manual animation work I suppose? maybe keypose blending perhaps?
your approach is amazing. would you consider making a beginner tutorial series? 4-5 videos? I saw your previous work on the axe throwing feature or card display, any of those types of games (hackNslash/card game) would be greatly in demand
Gosh, we could use this for things like responsive animations to entities being attacked at specific body parts. I vividly remember how colossal Elden Ring enemies react like this, like their knee shakes when attacked at the leg for example.
Funny enough I noticed FF16 probably did something similar for hit feedback (probably to avoid having enemies flashing red in their realistic environments). At least as far as using springy bones, not the actual reaction to the environment.
anyone know if they implemented those 6Dof joint in later versions??? if so it would be nice to see a tutorial update using those joints. thanks for the tutorial hoping to use this in my project
Very cool. Have you considered contributing your implementation to the godot source code? You would have to implement it in C++, but the maths will be exactly the same
Been struggling with applying hookes law to rotation. Have you thought about making a separate video for that? It's tough to find a good explanation for it and most guides I've found don't match every axis of rotation well.
This is a really cool tutorial. Would you mind sharing a bit more on how to make it so that the ragdoll appears less stiff? When adding my simple rigged humanoid and simulating him fall he just looks kind of like a plastic doll, not crumbling all funny like I'd like him to do :)
Cool work! I am trying to recreate the active rag doll for the walking player charterer you showed. However, I cant get it to work. After configuring all joints and colliders Godot crashes for me. Any chance you can release your version of it? I think your repo only has the standing character, not one controlled by the player.
One thing I don't get is how do you make it so that the collided ragdoll doesn't keep trying to move until it eventually catches up to the animation model and essentially blinks through a wall?
Thanks dude... It still hard to understand even if you share the source.. As far as I know : 1. If your character has blend_shapes in mesh, then, don't blindly change root type as Character3DBody. it will write big array in your tscn and your system become very slow. Suggestion : Just export armature only for physical_bones, and animated_bone. And armature with mesh for interpolated_skeleton. 2. Interpolated model cannot play exact animation? Maybe because "Interpolated". it make sense to make smooth animated of which following animation bones, but it will lack target positions end to end. To see what happen, create BoneAttachment -> create basic mesh, and attach it. In my case, All bones (in physics, animation, and interpolated skel) have exact positions in rest pose. Some idle animations, have different position of bones, and interpolated bone in median vector position. I hope someone give direction and suggestion. thanks
Great work! still to work on it to learn it. I wonder if the for easy to deal with weapon aim or interacting object like door or rope or ladder. But guessing it a lot of work.
Is it possible to set them up like bowling pins and they fall down if their colliders are triggered? Think Storm Trooper Bowling but you're using The Force to throw heavy objects.
You mentioned that there is a way to prevent the physics of bones from being trapped by the geometry of the world. Could you explain how this can be done? Which direction should I go?
I dont think you should be using hookes law for this, IMO character should apply the same force to return to initial state from any other state, because character isnt a spring. Like when you're doing push ups, you're applying the same force no matter how low you get during a push up.
Out of curiosity, how does this impact performance if you had say 20 characters with this system? Because to my understanding you'd be running 40 rigs in total?One physics and one nimation rig?.........Secondly do you ave any idea how I'd reverse engineer this for unreal engine?
im somewhat of a total noob but i thought that the physicsbone would act a collision shape for the characterbody3D. is that possible? i saw another person video and he doesnt have a collision shape for his root node, not sure what hsi root node was tho, it was just a 3dNode icon and it was for an NPC not main characte. i implemented the physical_bones_start_simulation() and that made my bones ragdoll around, but they arnt staying on my character, so i walk around and my body is just lying on the ground.
Do you figure out a solution?, I am trying in the CharacterBody3D too, and moved the main CollisionShape3D accidentaly and ragdoll works, but I need the main collision shape because is a CharacterBody...
@@luc0 sadly it jsut doesnt work like that. wow, 3 months ago feels more like a year, anyways a character3d needs ONE collision shape, MAYBE you can put the collision shape under the characterbody3d and then with code have it follow the bones, not sure if thats what i did or not.
@@luc0 it doesnt work like how i wanted it to. The characterbody3d needs a collision shape and that im assuming inherits all the characterbody3d "stuff" IE, collides with static objects. Im not sure if i put the collision shapes under the cchracterbody3d and then used code to follow the bone, or if i had them as children of the bones..
This video is amazing, thanks man! Im getting an error and dont know why 🤔, "Invalid get index 'global_transform' (on base: 'Nil')." in this line: "var target_transform: Transform3D = target_skeleton.global_transform * target_skeleton.get_bone_global_pose(b.get_bone_id())" i would like to know why, if it happend for you that are reading, and you got through, share with me, i'll be glad.
NICE! This reminded me of a GDC Talk: th-cam.com/video/TmAU8aPekEo/w-d-xo.html For example: After an enemy dies, Play its death-animation but Switch To physical Animation, If it bumps into Something. So to prevent clipping. Or parts of the skeleton become physical animated while climbing.
@@crigz i was inspired too you know ,but my popo brain can't do stuff like that that 😅. Are u going to make another episode on this topic (i am looking forward to it)? I was extremely excited when I saw it on reddit , so much that I forgot to study for my physics exams. Have u studied physics or maths in higher studies?
@@maniksharma9736 Nah mate my brain is as smooth as a pebble, you can definitely do it if you just give it your best. I haven't! I studied Games Programming, which did cover some basic physics, but we never got much deeper than F = M * A. Thankfully the internet is full of fantastic resources for self study.
great tutorial but i have problems with the bones i created and i dont have understanding on how they work so now my enemy when i start the game is just mess
In 4.3 the physical_bones_start_simulation() got moved to the PhysicalBoneSimulator3D node, it should spawn in your hierarchy when you automatically create physical bones
You're the wizard we all need but don't deserve.
You've gotta love any engine which you can tear open and look at the code of, when something seems off.
Godot Jolt actually has functioning springs, would like to see a remake of this using Jolt as its performance is so much better than GodotPhysics3D actually.
I can't appreciate enough how much i like your "Do-It-Yourself"-Mentality. It isn't implemented in the Engine? Just implement it yourself! That's one of the great features of Godot.
Still i would recommend impementing it directly in the engine via C. Such tiny calculations in GDScript can be pretty slow. And while you have access to the source you can have huge performance improvements by just using native code.
OMG this is exactly what I try to achieve for a while, but couldn't wrap my head around. Thank you!
Wow, this is the best character animation I've seen in godot so far! Good stuff!
Your channel has been huge for me for my latest project using active ragdolls and IK. Keep it up!
If I may ask, did you get it to work when colliding to walls?
Awesome tutorial ! Great great work. Thanks you for sharing your knowledge with the Godot community !
Crazy that it's not yet implemented in the engine but you went ahead and did it anyways!
SO AMAZING AND SIMPLE THANK YOU!
I never thought I'd see this working in Godot anytime soon. Thanks!
Superb mate! Thank you for the comprehensive tutorial and code on GH. I'll try and tinker with it during GGJ. Cheers!
This is actually genius! It looks so good while being so simple. It takes a smart person to figure out an easy solution to a hard problem.
I'm so glad that you made this!
Thank you so very much.
This is AMAZING!! 😲 If you are looking for ideas - seeing how characters act being hit with a sword or bullet instead of balls? Could you use this to merge in a stance Delta - someone who is hobbled over or stands with chest more open? So cool!
Thank you, this looks great. You making Godot look AAA ready!! Motion Matching system in Godot ? wink wink nudge nudge
wow. the availability of this information is amazing.
thankyou so much for the github link, so incredibly helpful, one thing i think you could add (I will be adding quite a few features but for different reasons) would be making it so limbs stay in their sockets, i might update this comment if i do end up implementing that, but its really not needed for most things
You're the absolute best at this
I didn't know how physics animation worked. But it's the same method which is used for VR hands. A next level implementation would be to trigger new animations based on the forced applied to each limb, maybe procedural.
very good tutos my friend, cheers!
Thank you, thank you, thank you!
Looks great. Also tempted me to take some time looking into the Skeleton3D source to maybe get this functioning out of the box without copies, because it feels unnecessary complicated.
really nice tutorial. I think after a forcefull collision or a leg shot, swapping to ragdoll and lose control then blending back to standing controller would definitely improve this, but those require more manual animation work I suppose? maybe keypose blending perhaps?
Awesome tutorial!
your approach is amazing. would you consider making a beginner tutorial series? 4-5 videos? I saw your previous work on the axe throwing feature or card display, any of those types of games (hackNslash/card game) would be greatly in demand
Gosh, we could use this for things like responsive animations to entities being attacked at specific body parts. I vividly remember how colossal Elden Ring enemies react like this, like their knee shakes when attacked at the leg for example.
This is genius!
Funny enough I noticed FF16 probably did something similar for hit feedback (probably to avoid having enemies flashing red in their realistic environments). At least as far as using springy bones, not the actual reaction to the environment.
So I was actually working on something completely unrelated but this actually helped me with that problem. 😂
anyone know if they implemented those 6Dof joint in later versions??? if so it would be nice to see a tutorial update using those joints. thanks for the tutorial hoping to use this in my project
Very cool. Have you considered contributing your implementation to the godot source code? You would have to implement it in C++, but the maths will be exactly the same
Been struggling with applying hookes law to rotation. Have you thought about making a separate video for that? It's tough to find a good explanation for it and most guides I've found don't match every axis of rotation well.
Nice dude
Would you be able to make a tut on how to stop character movement when they collide with a wall?
You make cool stuff.
It's probably a wierd request, but could you come up with a video on the way to implement a character dismemberment in Godot 4?
This is a really cool tutorial. Would you mind sharing a bit more on how to make it so that the ragdoll appears less stiff? When adding my simple rigged humanoid and simulating him fall he just looks kind of like a plastic doll, not crumbling all funny like I'd like him to do :)
This is probably better than what I made 👍
Hey thanks for the tutorial.
Amazing work. My suggestion is to make the neck stiffer.
Thanks
Cool work! I am trying to recreate the active rag doll for the walking player charterer you showed. However, I cant get it to work. After configuring all joints and colliders Godot crashes for me. Any chance you can release your version of it? I think your repo only has the standing character, not one controlled by the player.
One thing I don't get is how do you make it so that the collided ragdoll doesn't keep trying to move until it eventually catches up to the animation model and essentially blinks through a wall?
Thanks dude... It still hard to understand even if you share the source.. As far as I know :
1. If your character has blend_shapes in mesh, then, don't blindly change root type as Character3DBody. it will write big array in your tscn and your system become very slow. Suggestion : Just export armature only for physical_bones, and animated_bone. And armature with mesh for interpolated_skeleton.
2. Interpolated model cannot play exact animation? Maybe because "Interpolated". it make sense to make smooth animated of which following animation bones, but it will lack target positions end to end. To see what happen, create BoneAttachment -> create basic mesh, and attach it. In my case, All bones (in physics, animation, and interpolated skel) have exact positions in rest pose. Some idle animations, have different position of bones, and interpolated bone in median vector position. I hope someone give direction and suggestion. thanks
Dude just remade Euphoria in Godot
Great work! still to work on it to learn it. I wonder if the for easy to deal with weapon aim or interacting object like door or rope or ladder. But guessing it a lot of work.
That's wonderful! Thanks a lot.
I'm curious to understand how does it impact on performance...Does anyone already have tried it on a complete project?
I'm curious too, i'll be glad to know about it
Is it possible to set them up like bowling pins and they fall down if their colliders are triggered? Think Storm Trooper Bowling but you're using The Force to throw heavy objects.
Genius!
Cool
Cheers 🤣 we all doing rig videos today ❤️
looks great, how are u keeping the modell upright ?
noice
You mentioned that there is a way to prevent the physics of bones from being trapped by the geometry of the world. Could you explain how this can be done? Which direction should I go?
Thanks, really helped. Is there any way to make an active ragdoll without needing an external collider that's not part of the body?
I dont think you should be using hookes law for this, IMO character should apply the same force to return to initial state from any other state, because character isnt a spring. Like when you're doing push ups, you're applying the same force no matter how low you get during a push up.
Please do multiplayer tutorial you are my savior if you do this!
hey i try to run the physics bone start simulation but when i run the game the game just freeze
holy shi
cool!
hey, im wondering if you can give me the source where you got the character?
It's the Y-bot from Mixamo
@@crigz Thank you!
Out of curiosity, how does this impact performance if you had say 20 characters with this system? Because to my understanding you'd be running 40 rigs in total?One physics and one nimation rig?.........Secondly do you ave any idea how I'd reverse engineer this for unreal engine?
how can you add more animations like a punch
im somewhat of a total noob but i thought that the physicsbone would act a collision shape for the characterbody3D. is that possible? i saw another person video and he doesnt have a collision shape for his root node, not sure what hsi root node was tho, it was just a 3dNode icon and it was for an NPC not main characte.
i implemented the physical_bones_start_simulation() and that made my bones ragdoll around, but they arnt staying on my character, so i walk around and my body is just lying on the ground.
Do you figure out a solution?, I am trying in the CharacterBody3D too, and moved the main CollisionShape3D accidentaly and ragdoll works, but I need the main collision shape because is a CharacterBody...
the reason I think is because the bones collides with the CharacterCollisionShape, but I dont find a solution
@@luc0 sadly it jsut doesnt work like that. wow, 3 months ago feels more like a year, anyways a character3d needs ONE collision shape, MAYBE you can put the collision shape under the characterbody3d and then with code have it follow the bones, not sure if thats what i did or not.
@@luc0 it doesnt work like how i wanted it to. The characterbody3d needs a collision shape and that im assuming inherits all the characterbody3d "stuff" IE, collides with static objects.
Im not sure if i put the collision shapes under the cchracterbody3d and then used code to follow the bone, or if i had them as children of the bones..
Is there a way to do this in godot 3.5?
I tried doing it, but I was unable to implement it.
It was heartbreaking
This video is amazing, thanks man! Im getting an error and dont know why 🤔, "Invalid get index 'global_transform' (on base: 'Nil')." in this line: "var target_transform: Transform3D = target_skeleton.global_transform * target_skeleton.get_bone_global_pose(b.get_bone_id())" i would like to know why, if it happend for you that are reading, and you got through, share with me, i'll be glad.
Now it is working, there was the target_skeleton that i didnt assigned one to the var
@jonstephenson3786 did u get it to work? same issue here
Now we can recreate the Euphoria Engine. GTA 6, here I come! /s
Can i edit rdr2 ragdoll?
i couldnt get it right. its been 3 days. my model keep getting crazy after putting ragdoll code
NICE!
This reminded me of a GDC Talk:
th-cam.com/video/TmAU8aPekEo/w-d-xo.html
For example:
After an enemy dies, Play its death-animation but Switch To physical Animation, If it bumps into Something. So to prevent clipping.
Or parts of the skeleton become physical animated while climbing.
Make a punch a bunch clone please...
Funny you say that, it was @Pontypants devlogs that inspired this video! Nevertheless, us Brits know better than to piss off a Viking.
@@crigz i was inspired too you know ,but my popo brain can't do stuff like that that 😅.
Are u going to make another episode on this topic (i am looking forward to it)?
I was extremely excited when I saw it on reddit , so much that I forgot to study for my physics exams.
Have u studied physics or maths in higher studies?
@@maniksharma9736 Nah mate my brain is as smooth as a pebble, you can definitely do it if you just give it your best.
I haven't! I studied Games Programming, which did cover some basic physics, but we never got much deeper than F = M * A. Thankfully the internet is full of fantastic resources for self study.
@@crigz can you make this work with godot 3??
great tutorial but i have problems with the bones i created and i dont have understanding on how they work so now my enemy when i start the game is just mess
in 4.3 its not working...
Looks like the physical_bones_start_simulation() was moved to the PhysicalBoneSimulator3D node
In 4.3 the physical_bones_start_simulation() got moved to the PhysicalBoneSimulator3D node, it should spawn in your hierarchy when you automatically create physical bones
@@szybre I think i figured that out i just forgot to update this comment, thankyou
thank you
@BenUttecht how?
Is there a way of doing this now, with the new Godot 4.3?