You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've found what seems to be a bug in the IFaceSet schema implementation, where a valid schema can be written out by PyAlembic, read and validated by PyAlembic, and then throw an exception when calling the getFaceExclusivity method. Note that this isn't specific to the Python bindings, but rather an exception originating within the C++ code (I'm just using Python as a simple way to describe the repro steps).
Here's the code to generate a simple cube cache with two facesets (relying on default behavior and not explicitly setting face exclusivity values):
The getFaceExclusivity call will throw an exception because the ".facesExclusive" property doesn't exist, even though it's supposed to be optional and we just wrote out a valid faceset schema in the first code block. From looking at the implementation in IFaceSet.cpp, it also appears as though the intention is that this property should be optional, but that doesn't prove out in testing.
I wanted to confirm that this seems erroneous, as it seems to be to me.
Thanks,
-A
The text was updated successfully, but these errors were encountered:
Hey Lucas -- I just tested this against the latest in the Alembic master branch (which I built yesterday) and was able to reproduce the same issue. I looked at the line you've pointed out as well and thought things were properly protected, but I believe the exception is actually thrown when trying to construct the Abc::IUInt32Property itself.
I've found what seems to be a bug in the IFaceSet schema implementation, where a valid schema can be written out by PyAlembic, read and validated by PyAlembic, and then throw an exception when calling the getFaceExclusivity method. Note that this isn't specific to the Python bindings, but rather an exception originating within the C++ code (I'm just using Python as a simple way to describe the repro steps).
Here's the code to generate a simple cube cache with two facesets (relying on default behavior and not explicitly setting face exclusivity values):
And here's the code to read that cache back in and query information about one of the facesets:
The getFaceExclusivity call will throw an exception because the ".facesExclusive" property doesn't exist, even though it's supposed to be optional and we just wrote out a valid faceset schema in the first code block. From looking at the implementation in IFaceSet.cpp, it also appears as though the intention is that this property should be optional, but that doesn't prove out in testing.
I wanted to confirm that this seems erroneous, as it seems to be to me.
Thanks,
-A
The text was updated successfully, but these errors were encountered: