示例#1
0
    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
示例#3
0
    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
示例#4
0
 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)
示例#7
0
    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)