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))
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))
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)
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)
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))
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])
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])
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)))
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)))