Beispiel #1
0
    def test_additions(self):
        s = Nodex(1.0) + Nodex(2.0)
        self.assertEqual(s.value(), 3.0)
        s += Nodex(5.0)
        self.assertEquals(s.value(), 8.0)
        s = s + Nodex(3.0) - Nodex(9.0)
        self.assertEqual(s.value(), 2.0)

        s = Nodex([0, 1, 2]) + Nodex([0, 2, 1])
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(0.0, 3.0, 3.0))
        s += Nodex("pSphere1.t")
        mc.xform("pSphere1", t=(0, 0, 0), ws=1)
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(0.0, 3.0, 3.0))

        mc.xform("pSphere1", t=(-4.5, 7.0, 0.5), ws=1)
        self.assertEqual(s.value(),
                         pymel.core.datatypes.Vector(-4.5, 10.0, 3.5))

        mc.xform("pSphere1", t=(-10.0, 5.0, 1000.0), ws=1)
        self.assertEqual(s.value(),
                         pymel.core.datatypes.Vector(-10.0, 8.0, 1003.0))

        v = s.value()
        s -= Nodex(v)
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(0.0, 0.0, 0.0))

        s += [3, 3, 3]  # implicit conversion to Nodex()
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(3.0, 3.0, 3.0))
Beispiel #2
0
    def test_additions(self):
        s = Nodex(1.0) + Nodex(2.0)
        self.assertEqual(s.value(), 3.0)
        s += Nodex(5.0)
        self.assertEquals(s.value(), 8.0)
        s = s + Nodex(3.0) - Nodex(9.0)
        self.assertEqual(s.value(), 2.0)

        s = Nodex([0, 1, 2]) + Nodex([0, 2, 1])
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(0.0, 3.0, 3.0))
        s += Nodex("pSphere1.t")
        mc.xform("pSphere1", t=(0, 0, 0), ws=1)
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(0.0, 3.0, 3.0))

        mc.xform("pSphere1", t=(-4.5, 7.0, 0.5), ws=1)
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(-4.5, 10.0, 3.5))

        mc.xform("pSphere1", t=(-10.0, 5.0, 1000.0), ws=1)
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(-10.0, 8.0, 1003.0))

        v = s.value()
        s -= Nodex(v)
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(0.0, 0.0, 0.0))

        s += [3, 3, 3]   # implicit conversion to Nodex()
        self.assertEqual(s.value(), pymel.core.datatypes.Vector(3.0, 3.0, 3.0))
Beispiel #3
0
    def test_abs(self):
        v = Nodex(-15.0)
        v = Math.abs(v)
        self.assertEqual(v.value(), 15)

        v = Nodex([-23, -100, -45])
        v = Math.abs(v)
        self.assertTrue(v.value().isEquivalent(pymel.core.datatypes.Vector(23, 100, 45)))

        v = Nodex([12.5, -9999, -9.9])
        v = Math.abs(v)
        print v.value()
        self.assertTrue(v.value().isEquivalent(pymel.core.datatypes.Vector(12.5, 9999, 9.9), tol=0.01))
Beispiel #4
0
    def test_many_matrices(self):

        l = [0] * 16
        with speedMeasure(0.08, msg="init matrices"):
            for x in range(250):
                m = Nodex(l)

        with speedMeasure(0.30, msg="init matrices & getting values"):
            for x in range(50):
                m = Nodex(l)
                m.value()

        with speedMeasure(0.08, msg="init matrices explicit"):
            for x in range(250):
                m = nodex.datatypes.Matrix(l)
Beispiel #5
0
    def test_many_matrices(self):

        l = [0]*16
        with speedMeasure(0.08, msg="init matrices"):
            for x in range(250):
                m = Nodex(l)

        with speedMeasure(0.30, msg="init matrices & getting values"):
            for x in range(50):
                m = Nodex(l)
                m.value()

        with speedMeasure(0.08, msg="init matrices explicit"):
            for x in range(250):
                m = nodex.datatypes.Matrix(l)
Beispiel #6
0
    def test_abs(self):
        v = Nodex(-15.0)
        v = Math.abs(v)
        self.assertEqual(v.value(), 15)

        v = Nodex([-23, -100, -45])
        v = Math.abs(v)
        self.assertTrue(v.value().isEquivalent(
            pymel.core.datatypes.Vector(23, 100, 45)))

        v = Nodex([12.5, -9999, -9.9])
        v = Math.abs(v)
        print v.value()
        self.assertTrue(v.value().isEquivalent(pymel.core.datatypes.Vector(
            12.5, 9999, 9.9),
                                               tol=0.01))
Beispiel #7
0
    def test_matrix_inverse(self):

        # Create some test nodes
        src = pymel.core.polySphere(name='src')[0]
        srcGrp = pymel.core.group(src)

        # Some randomly chosen translate values
        srcGrp.setTranslation((9, 15, 0.01))

        m = Nodex(src.attr('worldMatrix[0]'))
        m_inv = m.inverse()
        parent_m = Nodex(srcGrp.attr('worldMatrix[0]'))
        parent_m_inv = parent_m.inverse()
        parent_m_inv_inv = parent_m_inv.inverse()

        # Check outputs
        tolerance = 1e-10

        m1 = parent_m_inv.value()
        m2 = Nodex(src.attr('parentInverseMatrix[0]')).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))
        m1 = parent_m_inv_inv.value()
        m2 = Nodex(parent_m.value()).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))

        # Update the nodes
        old_parent_m_inv_inv_value = m1
        src.setRotation((9, 15, 0.01))
        srcGrp.setScale((9, 15, 0.01))

        m1 = parent_m_inv.value()
        m2 = Nodex(src.attr('parentInverseMatrix[0]')).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))
        m1 = parent_m_inv_inv.value()
        m2 = Nodex(parent_m.value()).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))

        # Ensure the output of the nodes has actually changed
        new_parent_m_inv_inv_value = m1
        self.assertFalse(
            old_parent_m_inv_inv_value.isEquivalent(
                new_parent_m_inv_inv_value))

        pymel.core.delete([src, srcGrp])
Beispiel #8
0
    def test_matrix_inverse(self):

        # Create some test nodes
        src = pymel.core.polySphere(name='src')[0]
        srcGrp = pymel.core.group(src)

        # Some randomly chosen translate values
        srcGrp.setTranslation((9, 15, 0.01))

        m = Nodex(src.attr('worldMatrix[0]'))
        m_inv = m.inverse()
        parent_m = Nodex(srcGrp.attr('worldMatrix[0]'))
        parent_m_inv = parent_m.inverse()
        parent_m_inv_inv = parent_m_inv.inverse()

        # Check outputs
        tolerance = 1e-10

        m1 = parent_m_inv.value()
        m2 = Nodex(src.attr('parentInverseMatrix[0]')).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))
        m1 = parent_m_inv_inv.value()
        m2 = Nodex(parent_m.value()).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))

        # Update the nodes
        old_parent_m_inv_inv_value = m1
        src.setRotation((9, 15, 0.01))
        srcGrp.setScale((9, 15, 0.01))

        m1 = parent_m_inv.value()
        m2 = Nodex(src.attr('parentInverseMatrix[0]')).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))
        m1 = parent_m_inv_inv.value()
        m2 = Nodex(parent_m.value()).value()
        self.assertTrue(m1.isEquivalent(m2, tol=tolerance))

        # Ensure the output of the nodes has actually changed
        new_parent_m_inv_inv_value = m1
        self.assertFalse(old_parent_m_inv_inv_value.isEquivalent(new_parent_m_inv_inv_value))

        pymel.core.delete([src, srcGrp])
Beispiel #9
0
    def test_vector_cross(self):

        v1 = Nodex([1, 0, 0])
        v2 = Nodex([0, 1, 0])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(0, 0, 1))

        v1 = Nodex([1, 0, 0])
        v2 = Nodex([0, 0, 1])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(0, -1, 0))

        v1 = Nodex([0, 1, 0])
        v2 = Nodex([0, 0, 1])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(1, 0, 0))

        v1 = Nodex([0, 0, 1])
        v2 = Nodex([0, 1, 0])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(-1, 0, 0))

        v1 = Nodex([1, 0, 0])
        v2 = Nodex([0, 0, 1])
        v3 = v1.cross(v2)
        v4 = v2.cross(v3)  # this should be v1 again
        self.assertEqual(v4.value(), pymel.core.datatypes.Vector(v1.value()))
        v5 = v3.cross(v1)  # this should be v2 again
        self.assertEqual(v5.value(), pymel.core.datatypes.Vector(v2.value()))

        # crossing two non-normalized vectors
        # - without normalized output
        v1 = Nodex([12, 0, 0])
        v2 = Nodex([0, 14, 0])
        v3 = v1.cross(v2)
        self.assertTrue(v3.value().isEquivalent(
            pymel.core.datatypes.Vector(0, 0, 12 * 14)))
        v4 = v1.cross(v2, normalizeOutput=True)
        self.assertTrue(v4.value().isEquivalent(
            pymel.core.datatypes.Vector(0, 0, 1)))
Beispiel #10
0
    def test_vector_cross(self):

        v1 = Nodex([1, 0, 0])
        v2 = Nodex([0, 1, 0])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(0, 0, 1))

        v1 = Nodex([1, 0, 0])
        v2 = Nodex([0, 0, 1])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(0, -1, 0))

        v1 = Nodex([0, 1, 0])
        v2 = Nodex([0, 0, 1])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(1, 0, 0))

        v1 = Nodex([0, 0, 1])
        v2 = Nodex([0, 1, 0])
        v3 = v1.cross(v2)
        self.assertEqual(v3.value(), pymel.core.datatypes.Vector(-1, 0, 0))

        v1 = Nodex([1, 0, 0])
        v2 = Nodex([0, 0, 1])
        v3 = v1.cross(v2)
        v4 = v2.cross(v3)   # this should be v1 again
        self.assertEqual(v4.value(), pymel.core.datatypes.Vector(v1.value()))
        v5 = v3.cross(v1)   # this should be v2 again
        self.assertEqual(v5.value(), pymel.core.datatypes.Vector(v2.value()))

        # crossing two non-normalized vectors
        # - without normalized output
        v1 = Nodex([12, 0, 0])
        v2 = Nodex([0, 14, 0])
        v3 = v1.cross(v2)
        self.assertTrue(v3.value().isEquivalent(pymel.core.datatypes.Vector(0, 0, 12*14)))
        v4 = v1.cross(v2, normalizeOutput=True)
        self.assertTrue(v4.value().isEquivalent(pymel.core.datatypes.Vector(0, 0, 1)))