def testComparison(self):
		"""Test TransformationMatrixdData comparison"""
		a = IECore.TransformationMatrixdData()
		b = IECore.TransformationMatrixdData()
		self.assertEqual( a, b )
		b.value = IECore.TransformationMatrixd( imath.V3d( 0.00001, 0, 0 ), imath.Eulerd(), imath.V3d(0,0,0) )
		self.assertNotEqual( a, b )
		a.value = IECore.TransformationMatrixd( imath.V3d( 0.00001, 0, 0 ), imath.Eulerd(), imath.V3d(0,0,0) )
		self.assertEqual( a, b )
Beispiel #2
0
 def testTransform(self):
     """Test TransformationMatrixd transform"""
     a = IECore.TransformationMatrixd()
     a.scale = imath.V3d(2, 2, 2)
     self.assertEqual(a.transform, imath.M44d().scale(imath.V3d(2, 2, 2)))
     a.rotate = imath.Eulerd(0.2, 0.2, 0.2)
     self.assertTrue(
         a.transform.equalWithAbsError(
             imath.M44d().scale(imath.V3d(2, 2, 2)) *
             imath.Eulerd(0.2, 0.2, 0.2).toMatrix44(), 0.01))
Beispiel #3
0
    def testMultiplication(self):
        vectorTypes = [
            IECore.V3fVectorData(
                [imath.V3f(1), imath.V3f(2),
                 imath.V3f(3)], IECore.GeometricData.Interpretation.Vector),
            IECore.V3dVectorData(
                [imath.V3d(1), imath.V3d(2),
                 imath.V3d(3)], IECore.GeometricData.Interpretation.Vector),
        ]
        matrixTypes = [
            IECore.M33fData(imath.M33f() * 3),
            IECore.M33dData(imath.M33d() * 3),
            IECore.M44fData(imath.M44f().scale(imath.V3f(3))),
            IECore.M44dData(imath.M44d().scale(imath.V3d(3))),
            IECore.TransformationMatrixfData(
                IECore.TransformationMatrixf(imath.V3f(3), imath.Eulerf(),
                                             imath.V3f(0))),
            IECore.TransformationMatrixdData(
                IECore.TransformationMatrixd(imath.V3d(3), imath.Eulerd(),
                                             imath.V3d(0))),
        ]
        for vector in vectorTypes:

            targetVector = vector.copy()
            for i in range(len(targetVector)):
                targetVector[i] = targetVector[i] * 3

            for matrix in matrixTypes:
                res = IECore.MatrixMultiplyOp()(object=vector.copy(),
                                                matrix=matrix)
                if res == targetVector:
                    continue
                raise Exception("Error testing vector " + str(type(vector)) +
                                " against matrix " + str(type(matrix)) +
                                ". Resulted " + str(res))
Beispiel #4
0
 def testConstructors(self):
     """Test TransformationMatrixdData constructors"""
     a = IECore.TransformationMatrixdData()
     self.assertEqual(a.value, IECore.TransformationMatrixd())
     a = IECore.TransformationMatrixdData(
         IECore.TransformationMatrixd(imath.V3d(2, 2, 2), imath.Eulerd(),
                                      imath.V3d(1, 0, 0)))
     self.assertEqual(a.value.scale, imath.V3d(2, 2, 2))
	def testConstructors(self):
		"""Test TransformationMatrixd constructors"""
		a = IECore.TransformationMatrixd()
		self.assertEqual( a.transform, imath.M44d() )
		a = IECore.TransformationMatrixd( imath.V3d( 2, 2, 2 ), imath.Eulerd(), imath.V3d( 1, 0, 0 ) )
		self.assertTrue( a.transform.equalWithAbsError( imath.M44d().scale( imath.V3d(2,2,2) ) * imath.M44d().translate( imath.V3d(1,0,0) ), 0.01 ) )
		b = IECore.TransformationMatrixd( a )
		self.assertEqual( a.transform, b.transform )
Beispiel #6
0
    def __setupTableProp(self):
        boxSize = imath.Box3f(imath.V3f(-.5, -.5, -.5), imath.V3f(.5, .5, .5))

        table = IECoreScene.SceneCache(FnSceneShapeTest.__testFile,
                                       IECore.IndexedIO.Write)
        table.writeAttribute('scene:visible', IECore.BoolData(True), 0)
        table.writeAttribute('user:testBool', IECore.BoolData(True), 0)
        table.writeAttribute('user:testShort', IECore.ShortData(2), 0)
        table.writeAttribute('user:testInt', IECore.IntData(3), 0)
        table.writeAttribute('user:testInt64', IECore.Int64Data(4), 0)
        table.writeAttribute('user:testFloat', IECore.FloatData(5), 0)
        table.writeAttribute('user:testDouble', IECore.DoubleData(6), 0)
        table.writeAttribute('user:testString', IECore.StringData('seven'), 0)
        mat = imath.M44d((8, 9, 10, 11), (12, 13, 14, 15), (16, 17, 18, 19),
                         (20, 21, 22, 23))
        table.writeAttribute('user:testMatrixd', IECore.M44dData(mat), 0)
        mat = imath.M44f((24, 25, 26, 27), (28, 29, 30, 31), (32, 33, 34, 35),
                         (36, 37, 38, 39))
        table.writeAttribute('user:testMatrixf', IECore.M44fData(mat), 0)

        pedestal_GEO = table.createChild('pedestal_GEO')
        pedestal_GEO.writeObject(IECoreScene.MeshPrimitive.createBox(boxSize),
                                 0)
        s = imath.V3d(15, 1, 15)
        r = imath.Eulerd()
        t = imath.V3d(0, .5, 0)
        mat = IECore.TransformationMatrixd(s, r, t)
        pedestal_GEO.writeTransform(IECore.TransformationMatrixdData(mat), 0)

        column_GEO = pedestal_GEO.createChild('column_GEO')
        column_GEO.writeObject(IECoreScene.MeshPrimitive.createBox(boxSize), 0)
        s = imath.V3d(.25, 20, .25)
        r = imath.Eulerd()
        t = imath.V3d(0, 10.5, 0)
        mat = IECore.TransformationMatrixd(s, r, t)
        column_GEO.writeTransform(IECore.TransformationMatrixdData(mat), 0)

        tableTop_GEO = column_GEO.createChild('tableTop_GEO')
        tableTop_GEO.writeObject(IECoreScene.MeshPrimitive.createBox(boxSize),
                                 0)
        s = imath.V3d(10, 0.05, 10)
        r = imath.Eulerd()
        t = imath.V3d(0, .525, 0)
        mat = IECore.TransformationMatrixd(s, r, t)
        tableTop_GEO.writeTransform(IECore.TransformationMatrixdData(mat), 0)
Beispiel #7
0
 def testCopy(self):
     """Test TransformationMatrixdData copy"""
     a = IECore.TransformationMatrixdData(
         IECore.TransformationMatrixd(imath.V3d(2, 2, 2), imath.Eulerd(),
                                      imath.V3d(1, 0, 0)))
     self.assertEqual(a.value.scale, imath.V3d(2, 2, 2))
     b = a.copy()
     a.value = IECore.TransformationMatrixd()
     self.assertEqual(b.value.scale, imath.V3d(2, 2, 2))
     self.assertEqual(a.value.scale, imath.V3d(1, 1, 1))
Beispiel #8
0
    def testIO(self):
        """Test TransformationMatrixdData IO"""
        a = IECore.TransformationMatrixdData(
            IECore.TransformationMatrixd(imath.V3d(2, 3, 4), imath.Eulerd(),
                                         imath.V3d(1, 2, 3)))
        w = IECore.ObjectWriter(a, self.testFile)
        w.write()

        r = IECore.ObjectReader(self.testFile)
        b = r.read()
        self.assertEqual(a, b)
Beispiel #9
0
    def test(self):

        tm = IECore.TransformationMatrixfData()
        p = IECore.TransformationMatrixfParameter(
            name="f",
            description="d",
            defaultValue=tm,
        )
        p.validate()

        self.assertEqual(p.name, "f")
        self.assertEqual(p.description, "d")
        self.assertEqual(p.valueValid()[0], True)

        self.assertTrue(isinstance(p.getTypedValue().translate, imath.V3f))
        self.assertEqual(p.getTypedValue().translate, imath.V3f(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotate, imath.Eulerf(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotationOrientation,
                         imath.Quatf(1, 0, 0, 0))
        self.assertEqual(p.getTypedValue().scale, imath.V3f(1, 1, 1))
        self.assertEqual(p.getTypedValue().shear, imath.V3f(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotatePivot, imath.V3f(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotatePivotTranslation,
                         imath.V3f(0, 0, 0))
        self.assertEqual(p.getTypedValue().scalePivot, imath.V3f(0, 0, 0))
        self.assertEqual(p.getTypedValue().scalePivotTranslation,
                         imath.V3f(0, 0, 0))

        tm = IECore.TransformationMatrixdData()
        p = IECore.TransformationMatrixdParameter(
            name="f",
            description="d",
            defaultValue=tm,
        )
        p.validate()

        self.assertEqual(p.name, "f")
        self.assertEqual(p.description, "d")
        self.assertEqual(p.valueValid()[0], True)

        self.assertTrue(isinstance(p.getTypedValue().translate, imath.V3d))
        self.assertEqual(p.getTypedValue().translate, imath.V3d(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotate, imath.Eulerd(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotationOrientation,
                         imath.Quatd(1, 0, 0, 0))
        self.assertEqual(p.getTypedValue().scale, imath.V3d(1, 1, 1))
        self.assertEqual(p.getTypedValue().shear, imath.V3d(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotatePivot, imath.V3d(0, 0, 0))
        self.assertEqual(p.getTypedValue().rotatePivotTranslation,
                         imath.V3d(0, 0, 0))
        self.assertEqual(p.getTypedValue().scalePivot, imath.V3d(0, 0, 0))
        self.assertEqual(p.getTypedValue().scalePivotTranslation,
                         imath.V3d(0, 0, 0))
Beispiel #10
0
    def testInterpolation(self):
        """Test TranformationMatrixdData interpolation"""
        a = IECore.TransformationMatrixdData()
        b = IECore.TransformationMatrixdData(
            IECore.TransformationMatrixd(imath.V3d(2, 3, 4), imath.Eulerd(),
                                         imath.V3d(1, 2, 3)))

        c = IECore.linearObjectInterpolation(a, b, 0.5)
        self.assertEqual(type(c), IECore.TransformationMatrixdData)
        self.assertTrue(
            c.value.scale.equalWithAbsError(imath.V3d(1.5, 2, 2.5), 0.01))
        self.assertTrue(
            c.value.translate.equalWithAbsError(imath.V3d(0.5, 1, 1.5), 0.01))

        # try rotation interpolation...
        d = IECore.TransformationMatrixdData(
            IECore.TransformationMatrixd(imath.V3d(2, 3, 4),
                                         imath.Eulerd(1., 2., 3.),
                                         imath.V3d(1, 2, 3)))
        e = IECore.linearObjectInterpolation(b, d, 0.2)
        self.assertTrue(
            e.value.rotate.equalWithAbsError(
                imath.V3d(-0.341406, 0.189475, 0.191253), 0.001))
Beispiel #11
0
 def testAttributes(self):
     """Test TransformationMatrixd attributes"""
     a = IECore.TransformationMatrixd()
     self.assertEqual(a.scalePivot, imath.V3d(0, 0, 0))
     self.assertEqual(a.scale, imath.V3d(1, 1, 1))
     self.assertEqual(a.shear, imath.V3d(0, 0, 0))
     self.assertEqual(a.scalePivotTranslation, imath.V3d(0, 0, 0))
     self.assertEqual(a.rotatePivot, imath.V3d(0, 0, 0))
     self.assertEqual(a.rotationOrientation, imath.Quatd())
     self.assertEqual(a.rotate, imath.Eulerd())
     self.assertEqual(a.rotatePivotTranslation, imath.V3d(0, 0, 0))
     self.assertEqual(a.translate, imath.V3d(0, 0, 0))
     try:
         a.transform = 1
     except:
         pass
     else:
         raise Exception("Should not be able to set transform.")