Autodesk / arnold-usd

Arnold components for USD
https://www.arnoldrenderer.com/
Other
236 stars 56 forks source link

Fix transform hierarchies for non-xformable primitives #1901

Closed sebastienblor closed 1 month ago

sebastienblor commented 1 month ago

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