Light, light filter and camera have incorrect time varying bits for timesampled transform attribute

Hi there. From code analysis, it seems the mentioned types make a call with UsdGeomXformable::IsTransformationAffectedByAttrNamed(attr.GetBaseName()), but this function relies on testing against the xformOp: prefix, and GetBaseName strips any namespaces. For these prims, the DirtyParams bit is also set in timeVaryingBits incorrectly.

See:

I’ve attached a usd file with lights that have time sampled translations:
lightMotionDirtyBits.usda (10.8 KB)

Thanks for letting us know! You’re totally correct. The impact of this code is that an animated transform will also cause “DirtyParams” to be set each frame, e.g. over-invalidation, so it will be a performance issue but shouldn’t cause correctness issues. I also found this same pattern in cameraAdapter.cpp and lightFilterAdapter.cpp, FWIW.

Would you be up for filing either a github issue or a github PR for this issue? Thanks!

1 Like

PR filed: Fix timeVaryingBits for lights, light filters, and cameras for timesampled transform attribute by sdawson-nvidia · Pull Request #2734 · PixarAnimationStudios/OpenUSD · GitHub