The transform cache constraint logic isn't taking into account an object's parent transform when computing its world matrix. I.e., the constraint is only applying an object's local transform, failing to take the transform hierarchy into account. I've implemented and pushed a fix for this to usd-importer-T81257-merge. The required fix to USD_get_transform() was straightforward, applying the same logic as in the corresponding Alembic importer implementation, ABC_get_transform().
The attached parentedCubesAnim.usda demonstrates the issue before the fix. The scene contains two cubes with animating transforms: a rotating box2 which is parented to a translating box1. Before the fix, box2 would rotate at the origin, instead of translating with its parent, box1.
The transform cache constraint logic isn't taking into account an object's parent transform when computing its world matrix. I.e., the constraint is only applying an object's local transform, failing to take the transform hierarchy into account. I've implemented and pushed a fix for this to usd-importer-T81257-merge. The required fix to USD_get_transform() was straightforward, applying the same logic as in the corresponding Alembic importer implementation, ABC_get_transform().
The attached parentedCubesAnim.usda demonstrates the issue before the fix. The scene contains two cubes with animating transforms: a rotating box2 which is parented to a translating box1. Before the fix, box2 would rotate at the origin, instead of translating with its parent, box1.
parentedCubesAnim.zip