We were experiencing some odd subframe interpolation of transforms with Alembic files loaded into USD, the result being that objects with high rotation are scaling down on subframes.
In Maya and Houdini Obj context the Alembic look ok, and have the proper look across all subframes.
We traced the issue to the fact that usdAbc merges all the Alembic Ops down to a single Xformable TransformOp. When this matrix is interpolated across the subframes by USD we get the weird scaling.
There is a note in usdAbc that it does this so that the read and write behavior of Abc in USD can be compatible, but has there been any consideration for read only support of multiple Alembic ops?
We post-created the Ops after the fact by reading the Alembic file to test, and it fixed all the issues since the rotation and scale are interpolated on their own before being combined by USD.
Hi @radon199, IIRC, at the time we created the usdAbc plugin, usdGeom did not even yet have individual xformOps. I also thinkI recall there being some trickiness in how Alembic records xformOps (maybe based on whether they are time-varying or not?), but I think there’s a good chance ops could now be round-tripped faithfully between the two systems.
However, it’s not a project we can commit to prioritizing at this time; however, if someone wants to take it on, we’d consider a PR. It looks like usdGeom xformOps are also merged/flattened on writing out Alembic, but (unless there are objections), given the relative importance of reading over writing abc, I think we’d be willing to accept a contribution that only addresses the reading side, if that makes it more tractable.