Hi, I am testing out the latest version of ragdoll for the first time (2024.06.30). I have a symmetrical rig labelled with .R and .L for symmetry (I.E: Leg.L for the left leg).
When I try to add markers to legs, ragdoll gets confused and seems to bind them together. (I.E: Assigning either side will only spawn the left marker, selecting the right leg selects the left marker.)
Additionally, I have a bunch of bones on the tail that assign very strangely in general.
I provided some gifs with the bones labelled to try and show my issue better, anybody have a clue what I could be doing wrong? This doesn’t look like the behavior expected in the documentation.
Hi @Acoustic and welcome to the forum!
Thanks for reporting, I am investigating this at the moment. However, I could not reproduce the problem you have.
If possible, could you provide more details about how did you create your armature? For example, how did the L/R side bones were created? Did you start assigning marker while creating bones?
Internally, Ragdoll use its own id-system to identify each bone, so what’s happening there could be because the bone id were duplicated while editing armature. However, that should have been fixed in previous release. So if you can provide more detail about your steps, would be super helpful.
1 Like
Thanks for the info so far, I created the armature by spawning a single bone and extruding. I manually named each non-centre bone with .L at the end and then used blender’s symmetrize tool to automatically generate the right side with .R .
For the tail, I extruded a single long bone and then subdivided it to ensure everything was straight before manually fixing the naming.
If I’m allowed to, I could try selecting the offending parts of my skeleton and exporting them as an obj or something for you to look at.
Possibly of note: you’ll notice in making use of disconnected bones, the thighs aren’t physically attached to the root bone (but are parented to it within the same armature) because I needed them to start at the anatomical location of the leg. I’m not sure if that’s an issue, since it does it to the connected tail bones anyway but figured it’s worth mentioning.
Thanks @Acoustic
I followed your steps to create armature:
- Start by spawning from a single bone via extruding
- Naming each non-centered bone with
.L
at the end
- Use
Armature > Symmetrize
tool from menu to mirror out right side bones
- Extruded one single long bone and then
Armature > Subdivided
it
Finally, enter Pose mode and assign markers to them.
The structure is not exactly the same as yours but that would not be the problem. And everything works as expected here in my end. So clearly, I am missing something for reproducing your issue.
Could you verify Ragdoll version for me, to make sure the installed version is correct?
And yes, a Blender scene file would be helpful. If possible, could you make a new armature that is able to reproduce the issue?
Thank you.
SkeletonIssue.zip (115.3 KB)
Here’s a minimal .blend. I’m not really sure what causes the issue.
Here’s the version:
Hey @Acoustic
Thanks for the scene file and confirmation!
Indeed that your armature is suffering from duplicated bone-id. At the moment I still do not know in what exact steps could cause that.
But, here’s a quick fix for you.
-
First you need to purge all Ragdoll stuff from your scene. Go to Ragdoll menu, and then System > Delete All Physics
(See image below).
-
Select your armature and enter Pose
mode
-
Copy-paste following script into a Console
panel and run it (See image below)
from ragdoll.vendor import bpx
for pbone in C.active_object.pose.bones:
bpx._make_bpxid(pbone.bone, overwrite=True)
Once that done, you should be able to assign marker as the way you except.
Finally, thank you for your patience!
I’ll try this in a minute when I get to work but: What’s a bone ID? I assumed bones were named via their name property, but is this a hidden property that’s used in case of stuff like name conflicts?
I do realize one thing I did a while back was that I had my model rotated 180*, and then used auto name left/right, before realizing my mistake and fixed the rotation and re-naming again. Could it have been that I created weird data by doing this that wasn’t updated?
Update: It worked, thanks!
Edit: Does the console command you gave basically sanitize or reset ragdoll for the armature? I am realizing some of my rig is behaving oddly (“I’m getting a armature.leg.R [LimitStiffness] not found, this is a bug” messages), but I think that’s nothing that can be solved by me reading more documentation. It mostly seems to work now.
Glad it works!
Yeah, basically what you said.
Hard to tell. Could be affected by other bone editing tools/scripts, yes. But Ragdoll bone-id should hold its uniqueness no matter under what condition. We will keep testing and improving the system.
Yes, that script regenerates Ragdoll bone-id for all bones under the active armature.
Bug report noted.
Thank you for all the update. Really helpful!
It is extremely hard to keep exact steps in track before things are broken, especially for bug like this one. But it would be super cool if we can have a minimum reproducible steps, e.g. “Do X first then do Y and you will find bug Z”. No matter what, please do feel free to submit any bug report to us!
I will try and reproduce the setup with a blank armature tonight and put in another reply if I manage to get anything useful for you.
1 Like