Hi,
How are the unweighted points handled in the skeletal animation?
My assumption would be that if the point of a mesh is unweighted (each jointWeight is 0), then it should keep its local space transform. However, my experiments with usdview show that such point gets the skeleton object’s transform. It seems that this behavior corresponds to how it’s described in the UsdSkel docs, though.
I understand that normally rig shouldn’t have zero-weighted points and this is sort of an edge-case (at least similar discussion in glTF thread resulted in file specification restriction and an undefined behavior). So it’s more a question about “best practices”, how are DCCs expected to handle unweighted points? Is it extra static joint to assign such points to or may be there’re some other tricks to work around this?
Here’s a very simple usd-scene to reproduce this behavior: single-quad mesh (red), two joints and a reference non-animated mesh (green). The front-most points aren’t weighted. Usdview squeezes these points together to the skeleton prim origin.
zeroweight_cleaned.usda (3.0 KB)
Regards,
Ilia
On the screenshot: left - usdview, right - blender (doesn’t import display color though).