def test_CollectionRetrieval(self): geometryCollection = UsdGeom.CollectionAPI(root, "geometry") (valid, reason) = geometryCollection.Validate() self.assertTrue(valid) self.assertEqual(geometryCollection.GetTargets(), [ Sdf.Path('/CollectionTest/Geom/pSphere1'), Sdf.Path('/CollectionTest/Geom/pCube1') ]) self.assertEqual(list(geometryCollection.GetTargetFaceCounts()), [0, 3]) self.assertEqual(list(geometryCollection.GetTargetFaceIndices()), [1, 3, 5]) animatedCollection = UsdGeom.CollectionAPI(Usd.ModelAPI(root), "animated") self.assertEqual(animatedCollection.GetTargets(), [ Sdf.Path('/CollectionTest/Geom/pSphere1'), Sdf.Path('/CollectionTest/Geom/pCone1') ]) self.assertEqual(list(animatedCollection.GetTargetFaceCounts()), [2, 6]) self.assertEqual(list(animatedCollection.GetTargetFaceIndices()), [1, 2, 1, 3, 5, 7, 9, 11]) time = Usd.TimeCode(1) self.assertEqual(list(animatedCollection.GetTargetFaceCounts(time)), [0, 0]) self.assertEqual(list(animatedCollection.GetTargetFaceIndices(time)), []) time = Usd.TimeCode(3) self.assertEqual(list(animatedCollection.GetTargetFaceCounts(time)), [1, 2]) self.assertEqual(list(animatedCollection.GetTargetFaceIndices(time)), [0, 0, 1]) time = Usd.TimeCode(5) self.assertEqual(list(animatedCollection.GetTargetFaceCounts(time)), [2, 2]) self.assertEqual(list(animatedCollection.GetTargetFaceIndices(time)), [1, 2, 0, 1]) hasRelCollection = UsdGeom.CollectionAPI(root, "hasRel") self.assertEqual(hasRelCollection.GetTargets(), [ Sdf.Path('/CollectionTest/Geom/pSphere1.cube'), Sdf.Path('/CollectionTest/Geom/pCube1.sphere') ]) hasInstancedTargetCollection = UsdGeom.CollectionAPI( root, "hasInstancedTarget") targetPath = hasInstancedTargetCollection.GetTargets()[0] self.assertEqual(targetPath, Sdf.Path('/CollectionTest/Geom/iCube/Geom/cube'))
def test_ValidCases(self): validCollectionNames = ("includes", "geometry", "animated") for name in validCollectionNames: collection = UsdGeom.CollectionAPI(root, name) (valid, reason) = collection.Validate() self.assertTrue( valid, "Collection '%s' was found to be invalid: %s" % (name, reason))
def test_ErrorCases(self): invalidCollectionNames = ("nonExistentCollection", "faceCountsMismatch", "indicesMismatch") for name in invalidCollectionNames: collection = UsdGeom.CollectionAPI(root, name) (valid, reason) = collection.Validate() print "Collection '%s' is invalid because: %s" % \ (name, reason) self.assertFalse(valid)