In a specific use case (where a primitive is not recognized as a xformable schema), we were not applying the transform hierarchy properly. We need to switch the parent & local matrices in the multiplication.
While debugging this, I realized that we were calculating the matrices for all primitive types, including shaders and all. The reason for that is that some primitives are not known as xformables by USD, but still expect a matrix. Since we don't have a fully reliable way to distinguish those, I just added a quick & simple check that skips this calculation for UsdShadeShaders, which are probably the most frequent prim type in usd scenes, and that definitely don't need a useless matrix computation.
I cannot add a test for this since the problem only happened when no schemas are present, and this really depends on the usd installation
Changes proposed in this pull request
In a specific use case (where a primitive is not recognized as a xformable schema), we were not applying the transform hierarchy properly. We need to switch the parent & local matrices in the multiplication.
While debugging this, I realized that we were calculating the matrices for all primitive types, including shaders and all. The reason for that is that some primitives are not known as xformables by USD, but still expect a matrix. Since we don't have a fully reliable way to distinguish those, I just added a quick & simple check that skips this calculation for UsdShadeShaders, which are probably the most frequent prim type in usd scenes, and that definitely don't need a useless matrix computation.
I cannot add a test for this since the problem only happened when no schemas are present, and this really depends on the usd installation
Issues fixed in this pull request Fixes #1900