def test_init(self): x = camera.Camera() x_tfm = x.get_transform_node() x_shp = x.get_shape_node() self.assertEqual(x_tfm, None) self.assertEqual(x_shp, None) # Create nodes cam_tfm = maya.cmds.createNode('transform', name='myCamera1') cam_tfm = api_utils.get_long_name(cam_tfm) cam_shp = maya.cmds.createNode('camera', name='myCameraShape1', parent=cam_tfm) cam_shp = api_utils.get_long_name(cam_shp) y = camera.Camera(transform=cam_tfm, shape=cam_shp) y_tfm = y.get_transform_node() y_shp = y.get_shape_node() self.assertTrue(maya.cmds.objExists(y_tfm)) self.assertTrue(maya.cmds.objExists(y_shp)) self.assertEqual(y_tfm, cam_tfm) self.assertEqual(y_shp, cam_shp) z1 = camera.Camera(transform=cam_tfm) z1_tfm = z1.get_transform_node() z1_shp = z1.get_shape_node() self.assertEqual(z1_tfm, cam_tfm) self.assertEqual(z1_shp, cam_shp) z2 = camera.Camera(shape=cam_shp) z2_tfm = z2.get_transform_node() z2_shp = z2.get_shape_node() self.assertEqual(z2_tfm, cam_tfm) self.assertEqual(z2_shp, cam_shp)
def create_camera(name): cam_tfm = maya.cmds.createNode('transform', name=name) cam_tfm = api_utils.get_long_name(cam_tfm) cam_shp = maya.cmds.createNode('camera', name=name + 'Shape', parent=cam_tfm) cam_shp = api_utils.get_long_name(cam_shp) return cam_tfm, cam_shp
def create_node(self, name='bundle1', colour=None): """ Create a Bundle. :param name: The name of the newly created Bundle. :type name: str :param colour: Colour of bundle as R, G and B. 'None' will leave as default. :type colour: (float, float, float) or None :return: Bundle object attached to newly created node. :rtype: Bundle """ assert isinstance(name, (str, unicode)) if colour is not None: assert isinstance(colour, (tuple, list)) assert len(colour) == 3 # Transform tfm = maya.cmds.createNode('transform', name=name) tfm = api_utils.get_long_name(tfm) maya.cmds.setAttr(tfm + '.rx', lock=True) maya.cmds.setAttr(tfm + '.ry', lock=True) maya.cmds.setAttr(tfm + '.rz', lock=True) maya.cmds.setAttr(tfm + '.sx', lock=True) maya.cmds.setAttr(tfm + '.sy', lock=True) maya.cmds.setAttr(tfm + '.sz', lock=True) maya.cmds.setAttr(tfm + '.shxy', lock=True) maya.cmds.setAttr(tfm + '.shxz', lock=True) maya.cmds.setAttr(tfm + '.shyz', lock=True) maya.cmds.setAttr(tfm + '.rx', keyable=False) maya.cmds.setAttr(tfm + '.ry', keyable=False) maya.cmds.setAttr(tfm + '.rz', keyable=False) maya.cmds.setAttr(tfm + '.sx', keyable=False) maya.cmds.setAttr(tfm + '.sy', keyable=False) maya.cmds.setAttr(tfm + '.sz', keyable=False) maya.cmds.setAttr(tfm + '.shxy', keyable=False) maya.cmds.setAttr(tfm + '.shxz', keyable=False) maya.cmds.setAttr(tfm + '.shyz', keyable=False) # Shape Node shp_name = tfm.rpartition('|')[-1] + 'Shape' shp = maya.cmds.createNode('locator', name=shp_name, parent=tfm) maya.cmds.setAttr(shp + '.localScaleX', 0.1) maya.cmds.setAttr(shp + '.localScaleY', 0.1) maya.cmds.setAttr(shp + '.localScaleZ', 0.1) self.set_node(tfm) # Set Colour (default is green) if colour is not None: self.set_colour_rgb(colour) else: green = (0.0, 1.0, 0.0) self.set_colour_rgb(green) return self
def get_node(self, full_path=True): node = None if self._dependFn is not None: try: node = self._dependFn.name() except RuntimeError: pass if node is not None and full_path is True: node = api_utils.get_long_name(node) return node
def test_init(self): # TODO: More exhaustive test. node = maya.cmds.createNode('transform') node = api_utils.get_long_name(node) x = attribute.Attribute(node=node, attr='translateX') y = attribute.Attribute(node=node, attr='ty') self.assertEqual(x.get_node(), node) self.assertEqual(x.get_attr(), 'translateX') self.assertEqual(x.get_name(), '|transform1.translateX') self.assertEqual(y.get_attr(), 'translateY') self.assertEqual(y.get_name(), '|transform1.translateY')
def test_get_state(self): node = maya.cmds.createNode('transform') node = api_utils.get_long_name(node) # Animated maya.cmds.setKeyframe(node, attribute='rotateY', time=1, value=-1.0) maya.cmds.setKeyframe(node, attribute='rotateY', time=10, value=1.0) # Locked maya.cmds.setAttr(node + '.rotateZ', lock=True) # Connected multdiv = maya.cmds.createNode('multiplyDivide') maya.cmds.connectAttr(multdiv + '.outputX', node + '.translateX') # Create the Attribute objects tx = attribute.Attribute(node=node, attr='translateX') rx = attribute.Attribute(node=node, attr='rotateX') ry = attribute.Attribute(node=node, attr='rotateY') rz = attribute.Attribute(node=node, attr='rotateZ') tx_state = tx.get_state() rx_state = rx.get_state() ry_state = ry.get_state() rz_state = rz.get_state() # test returned states. self.assertEqual(tx_state, const.ATTR_STATE_LOCKED) self.assertEqual(rx_state, const.ATTR_STATE_STATIC) self.assertEqual(ry_state, const.ATTR_STATE_ANIMATED) self.assertEqual(rz_state, const.ATTR_STATE_LOCKED) # test 'is_*' functions. self.assertEqual(tx.is_locked(), True) self.assertEqual(rx.is_static(), True) self.assertEqual(ry.is_animated(), True) self.assertEqual(rz.is_locked(), True)
def create_node(self, name='marker1', colour=None, cam=None, mkr_grp=None, bnd=None): """ Create a marker node network from scratch. :param name: Name of the marker to create. :type name: str :param colour: Colour of marker as R, G and B. 'None' will leave as default. :type colour: (float, float, float) or None :param cam: The camera to create the marker underneath. :type cam: Camera :param mkr_grp: The marker group to create the marker underneath. :type mkr_grp: MarkerGroup :param bnd: The bundle to attach to the newly created marker. :type bnd: Bundle :return: Marker object with newly created node. :rtype: Marker """ assert isinstance(name, (str, unicode)) if cam is not None: if mkr_grp is not None: msg = 'Cannot specify both camera and marker group, ' msg += 'please choose only one.' raise excep.NotValid(msg) assert isinstance(cam, camera.Camera) if mkr_grp is not None: if cam is not None: msg = 'Cannot specify both camera and marker group, ' msg += 'please choose only one.' raise excep.NotValid(msg) assert isinstance(mkr_grp, markergroup.MarkerGroup) if bnd is not None: assert isinstance(bnd, mmSolver._api.bundle.Bundle) if colour is not None: assert isinstance(colour, (tuple, list)) assert len(colour) == 3 # Transform tfm = maya.cmds.createNode('transform', name=name) tfm = api_utils.get_long_name(tfm) maya.cmds.setAttr(tfm + '.tz', -1.0) maya.cmds.setAttr(tfm + '.tz', lock=True) maya.cmds.setAttr(tfm + '.rx', lock=True) maya.cmds.setAttr(tfm + '.ry', lock=True) maya.cmds.setAttr(tfm + '.rz', lock=True) maya.cmds.setAttr(tfm + '.sx', lock=True) maya.cmds.setAttr(tfm + '.sy', lock=True) maya.cmds.setAttr(tfm + '.sz', lock=True) maya.cmds.setAttr(tfm + '.tz', keyable=False, channelBox=False) maya.cmds.setAttr(tfm + '.rx', keyable=False, channelBox=False) maya.cmds.setAttr(tfm + '.ry', keyable=False, channelBox=False) maya.cmds.setAttr(tfm + '.rz', keyable=False, channelBox=False) maya.cmds.setAttr(tfm + '.sx', keyable=False, channelBox=False) maya.cmds.setAttr(tfm + '.sy', keyable=False, channelBox=False) maya.cmds.setAttr(tfm + '.sz', keyable=False, channelBox=False) # Shape Node shp_name = tfm.rpartition('|')[-1] + 'Shape' shp = maya.cmds.createNode('locator', name=shp_name, parent=tfm) maya.cmds.setAttr(shp + '.localScaleX', 0.01) maya.cmds.setAttr(shp + '.localScaleY', 0.01) maya.cmds.setAttr(shp + '.localScaleZ', 0.0) maya.cmds.setAttr(shp + '.localScaleZ', lock=True) # Add attrs maya.cmds.addAttr(tfm, longName='enable', at='short', minValue=0, maxValue=1, defaultValue=1) maya.cmds.addAttr(tfm, longName='weight', at='double', minValue=0.0, defaultValue=1.0) maya.cmds.addAttr(tfm, longName='bundle', at='message') maya.cmds.addAttr(tfm, longName='markerName', dt='string') maya.cmds.addAttr(tfm, longName='markerId', at='long', defaultValue=-1) maya.cmds.setAttr(tfm + '.enable', keyable=True, channelBox=True) maya.cmds.setAttr(tfm + '.weight', keyable=True, channelBox=True) maya.cmds.setAttr(tfm + '.markerName', lock=True) maya.cmds.connectAttr(tfm + '.enable', tfm + '.lodVisibility') self.set_node(tfm) # Set Colour (default is red) if colour is not None: self.set_colour_rgb(colour) else: red = (1.0, 0.0, 0.0) self.set_colour_rgb(red) # Link to Camera if cam is not None: self.set_camera(cam) # Link to MarkerGroup if mkr_grp is not None: self.set_marker_group(mkr_grp) # Link to Bundle if bnd is not None: self.set_bundle(bnd) return self
def test_get_all_members(self): x = sethelper.SetHelper().create_node('mySet') x.get_all_members() node1 = maya.cmds.createNode('transform', name='myParent') node1 = api_utils.get_long_name(node1) node2 = maya.cmds.createNode('transform', name='myChild', parent=node1) node2 = api_utils.get_long_name(node2) node3 = maya.cmds.createNode('transform', name='myChild') node3 = api_utils.get_long_name(node3) node4 = maya.cmds.createNode('multiplyDivide', name='myMathsNode') node4 = api_utils.get_long_name(node4) node_attr1 = node1 + '.tx' # short attribute name node_attr2 = node2 + '.rotateY' node_attr3 = node3 + '.rotateX' node_attr4 = node4 + '.operation' x.add_member(node1) x.add_member(node2) x.add_member(node3) x.add_member(node4) x.add_member(node_attr1) x.add_member(node_attr2) x.add_member(node_attr3) x.add_member(node_attr4) # Get the full path node names members = x.get_all_members(full_path=True) self.assertEqual(len(members), 8) self.assertIn(node1, members) self.assertIn(node2, members) self.assertIn(node3, members) self.assertIn(node4, members) node_attr1 = node1 + '.translateX' # full attribute name self.assertIn(node_attr1, members) self.assertIn(node_attr2, members) self.assertIn(node_attr3, members) self.assertIn(node_attr4, members) # Make sure short-names are handled too node1 = 'myParent' node2 = 'myParent|myChild' node3 = '|myChild' node4 = 'myMathsNode' node_attr1 = node1 + '.translateX' node_attr2 = node2 + '.rotateY' node_attr3 = node3 + '.rotateX' node_attr4 = node4 + '.operation' members = x.get_all_members(full_path=False) self.assertEqual(len(members), 8) self.assertIn(node1, members) self.assertIn(node2, members) self.assertIn(node3, members) self.assertIn(node4, members) self.assertIn(node_attr1, members) self.assertIn(node_attr2, members) self.assertIn(node_attr3, members) self.assertIn(node_attr4, members) x.clear_all_members() # Test 'flatten' argument, with nested sets. y = sethelper.SetHelper().create_node('myNestedSet') y.add_member(node2) y.add_member(node3) y.add_member(node_attr4) x.add_member(node1) x.add_member(y.get_node()) # Query the results. x_members_flat = x.get_all_members(flatten=True) y_members_flat = y.get_all_members(flatten=True) x_members = x.get_all_members(flatten=False) y_members = y.get_all_members(flatten=False) self.assertEqual(len(x_members_flat), 4) self.assertEqual(len(x_members), 2) self.assertEqual(len(y_members_flat), 3) self.assertEqual(len(y_members), 3) self.assertEqual(y_members, y_members_flat)