I noticed when I tried to apply a ragdoll armature to one of my AnimatedModels, that the physics bodies were receiving Scale from the Nodes associated with Bones in the Skeleton - they receive “Joint Scaling”.
Since I was scaling my model down 100x via an “adjustment node” near the root, this meant that my physics shapes, when attached to the model, shrank to the size of match sticks.
For the character’s outer collision hull, I was able to avoid this by attaching directly to the character’s root node, which is just above the adjustment node, but I ignored the issue of ragdoll segments, instead I just disabled relevant code, and turned my attention elsewhere.
Recently, I tried attaching IK to the animated model’s legs, and noticed that debug-drawing was not displaying at all - I believe this was also caused by my scaling node.
I’d like to know if I am correct: firstly, do rigidbodies receive scaling from parent nodes as they certainly appear to, and secondly, does scaling also affect the IK system?
If the answer is yes to both of these questions, I will be tempted to extend the AssetExporter to provide a means to scale geometry by a given value, so I can get rid of the scaling node, without having to manually load every affected model into a modelling app, apply scale, and export it again (given that I’d still need to run the exported model back through AssetExporter, it seems like a redundant step).
For rigidbodies, I discovered that I can add yet another “adjustment node” as a child of a bone node, which “cancels” the previous scaling, and attach my rigidbody to that node, this solves the issue of rigidbodies inheriting scale, but it seems like a poor solution to the problem. Have not yet tested the same concept on the IK system, but I suspect it will be a viable workaround there as well.
It’s a shame Urho3D’s CollisionShape component does not implement Bullet’s “Local Scale” - this would be preferable to additional “descaling” nodes.