Esempio n. 1
0
    def test_MatchDefault(self):
        s = Usd.Stage.CreateInMemory()
        from pxr import UsdGeom
        sphere = UsdGeom.Sphere.Define(s, Sdf.Path("/Sphere"));
        radius = sphere.CreateRadiusAttr();
        attrValueWriter = UsdUtils.SparseAttrValueWriter(radius, 
            defaultValue=1.0);

        # Default value isn't authored into scene description since it matches
        # the fallback value of radius.
        self.assertFalse(radius.HasAuthoredValueOpinion())

        attrValueWriter.SetTimeSample(10.0, 1.0)
        attrValueWriter.SetTimeSample(10.0, 2.0)
        attrValueWriter.SetTimeSample(10.0, 3.0)
        attrValueWriter.SetTimeSample(20.0, 4.0)

        self.assertEqual(radius.GetTimeSamples(), [1.0, 3.0, 4.0])
Esempio n. 2
0
    def test_ErrorCases(self):
        s = Usd.Stage.CreateInMemory()
        scope = UsdGeom.Scope.Define(s, "/Scope")

        attr1 = scope.GetPrim().CreateAttribute("attr1", 
                Sdf.ValueTypeNames.Float)
        self.assertFalse(attr1.HasAuthoredValueOpinion())

        attrValueWriter = UsdUtils.SparseAttrValueWriter(attr1)
        # No default value was specified. So no authored value yet.
        self.assertFalse(attr1.HasAuthoredValueOpinion())

        attrValueWriter.SetTimeSample(10.0, time=10.0)
        # Authoring an earlier time-sample than the previous one results in 
        # a coding error also.

        # Calling SetTimeSample with time=default raises a coding error.
        with self.assertRaises(Tf.ErrorException):
            attrValueWriter.SetTimeSample(10.0, Usd.TimeCode.Default())

        with self.assertRaises(Tf.ErrorException):
            attrValueWriter.SetTimeSample(20.0, time=5.0)
Esempio n. 3
0
    def TestAttrOfType(self, typeName, arrayTypeName, defaultValue, epsilon):
        s = Usd.Stage.CreateInMemory()
        scope = UsdGeom.Scope.Define(s, "/Scope")

        # Test scalar valued attribute.
        attr = scope.GetPrim().CreateAttribute("attr", typeName)
        self.assertFalse(attr.HasAuthoredValueOpinion())

        valueWriter = UsdUtils.SparseAttrValueWriter(attr, 
                defaultValue=defaultValue)
        self.assertTrue(attr.HasAuthoredValueOpinion())

        valueType = type(defaultValue)
        valueWriter.SetTimeSample(value=valueType(10.), time=0.0)
        valueWriter.SetTimeSample(value=valueType(10.), time=0.5)
        valueWriter.SetTimeSample(value=valueType(10.), time=1.0)
        valueWriter.SetTimeSample(value=valueType(20.), time=2.0)
        valueWriter.SetTimeSample(value=valueType(20.), time=3.0)
        valueWriter.SetTimeSample(value=valueType(20.), time=4.0)
        valueWriter.SetTimeSample(value=valueType(30.), time=5.0)
        valueWriter.SetTimeSample(value=valueType(30. + (epsilon / 2)), 
                                  time=6.0)
        valueWriter.SetTimeSample(value=valueType(30.), time=7.0)
        valueWriter.SetTimeSample(value=valueType(30. + (epsilon * 2)), 
                                  time=8.0)
        expectedTimeSamples = [1.0, 2.0, 4.0, 5.0, 7.0, 8.0] if \
                              defaultValue == valueType(10.0) else \
                              [0.0, 1.0, 2.0, 4.0, 5.0, 7.0, 8.0]
        self.assertEqual(attr.GetTimeSamples(), expectedTimeSamples)

        # Test array valued attribute.
        arrayAttr = scope.GetPrim().CreateAttribute("arrayAttr", arrayTypeName)
        self.assertFalse(arrayAttr.HasAuthoredValueOpinion())
        
        arrayValueWriter = UsdUtils.SparseAttrValueWriter(arrayAttr, 
                defaultValue=[defaultValue, defaultValue])
        self.assertTrue(arrayAttr.HasAuthoredValueOpinion())

        arrayValueWriter.SetTimeSample(value=[valueType(10.), valueType(10.)], 
                                       time=0.0)
        arrayValueWriter.SetTimeSample(value=[valueType(10.), valueType(10.)], 
                                       time=0.5)
        arrayValueWriter.SetTimeSample(value=[valueType(10.), valueType(10.)], 
                                       time=1.0)
        arrayValueWriter.SetTimeSample(value=[valueType(20.), valueType(10.)], 
                                       time=2.0)
        arrayValueWriter.SetTimeSample(value=[valueType(20.), valueType(10.)],
                                       time=3.0)
        arrayValueWriter.SetTimeSample(value=[valueType(20.), valueType(10.)],
                                       time=4.0)
        arrayValueWriter.SetTimeSample(value=[valueType(30.), valueType(30.)],
                                       time=5.0)
        arrayValueWriter.SetTimeSample(value=[valueType(30.), 
                                       valueType(30. + (epsilon / 2))],
                                       time=6.0)
        arrayValueWriter.SetTimeSample(value=[valueType(30.), valueType(30.)],
                                       time=7.0)
        arrayValueWriter.SetTimeSample(value=[valueType(30. + (epsilon * 2)), 
                                       valueType(30.)],
                                       time=8.0)

        expectedTimeSamples = [1.0, 2.0, 4.0, 5.0, 7.0, 8.0] if \
                              defaultValue == valueType(10.0) else \
                              [0.0, 1.0, 2.0, 4.0, 5.0, 7.0, 8.0]
        self.assertEqual(attr.GetTimeSamples(), expectedTimeSamples)
Esempio n. 4
0
    def TestQuats(self, typeName, arrayTypeName, defaultValue, epsilon):
        s = Usd.Stage.CreateInMemory()
        scope = UsdGeom.Scope.Define(s, "/Scope")

        # Test scalar valued quat attribute.
        attr = scope.GetPrim().CreateAttribute("quat", typeName)
        self.assertFalse(attr.HasAuthoredValueOpinion())

        valueWriter = UsdUtils.SparseAttrValueWriter(attr, 
                defaultValue=defaultValue)
        self.assertTrue(attr.HasAuthoredValueOpinion())

        valueType = type(defaultValue)
        realType = type(defaultValue.GetReal())
        imaginaryType = type(defaultValue.GetImaginary())

        valueWriter.SetTimeSample(value=valueType(realType(10.), 
                                                  imaginaryType(10.0)), 
                                  time=1.0)
        valueWriter.SetTimeSample(value=valueType(realType(20.), 
                                                  imaginaryType(20.0)), 
                                  time=2.0)
        valueWriter.SetTimeSample(value=valueType(realType(20.), 
                                                  imaginaryType(20.0)), 
                                  time=3.0)
        valueWriter.SetTimeSample(value=valueType(realType(20.), 
                                                  imaginaryType(20.0)), 
                                  time=4.0)
        valueWriter.SetTimeSample(value=valueType(realType(30.), 
                                                  imaginaryType(30.0)), 
                                  time=5.0)
        valueWriter.SetTimeSample(value=valueType(realType(30. + epsilon / 2), 
                                    imaginaryType(30.0 + epsilon / 2)), 
                                  time=6.0)
        valueWriter.SetTimeSample(value=valueType(realType(30.), 
                                                  imaginaryType(30.0)), 
                                  time=7.0)
        valueWriter.SetTimeSample(value=valueType(realType(30. + epsilon * 2), 
                                    imaginaryType(30.0 + epsilon * 2)), 
                                  time=8.0)

        self.assertEqual(attr.GetTimeSamples(), 
                         [1.0, 2.0, 4.0, 5.0, 7.0, 8.0])


        # Test array valued quats.
        arrayAttr = scope.GetPrim().CreateAttribute("arrayQuat", arrayTypeName)
        self.assertFalse(arrayAttr.HasAuthoredValueOpinion())
        
        arrayValueWriter = UsdUtils.SparseAttrValueWriter(arrayAttr, 
                defaultValue=[defaultValue, defaultValue])
        self.assertTrue(arrayAttr.HasAuthoredValueOpinion())

        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(10.), imaginaryType(10.0)), 
                       valueType(realType(10.), imaginaryType(10.0))], 
                time=1.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(20.), imaginaryType(10.0)), 
                       valueType(realType(10.), imaginaryType(20.0))], 
                time=2.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(20.), imaginaryType(10.0)), 
                       valueType(realType(10.), imaginaryType(20.0))], 
                time=3.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(20.), imaginaryType(10.0)), 
                       valueType(realType(10.), imaginaryType(20.0))], 
                time=4.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(30.), imaginaryType(30.0)), 
                       valueType(realType(30.), imaginaryType(30.0))], 
                time=5.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(30. + epsilon/2), 
                                 imaginaryType(30.0 + epsilon/2)), 
                       valueType(realType(30.+ epsilon/2), 
                                 imaginaryType(30.0 + epsilon/2))], 
                time=6.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(30.), imaginaryType(30.0)), 
                       valueType(realType(30.), imaginaryType(30.0))], 
                time=7.0)
        arrayValueWriter.SetTimeSample(
                value=[valueType(realType(30.), 
                                 imaginaryType(30.0 + epsilon*2)), 
                       valueType(realType(30.+ epsilon*2), 
                                 imaginaryType(30.0))], 
                time=8.0)

        expectedTimeSamples = [1.0, 2.0, 4.0, 5.0, 7.0, 8.0]
        self.assertEqual(attr.GetTimeSamples(), expectedTimeSamples)