def test_set_marker_group(self):
        x = marker.Marker().create_node()
        mkr_grp1 = x.get_marker_group()
        self.assertEqual(mkr_grp1, None)

        cam = self.create_camera('myCamera1')
        mkr_grp2 = markergroup.MarkerGroup().create_node(cam=cam)
        mkr_grp3 = markergroup.MarkerGroup().create_node(cam=cam)

        x = marker.Marker().create_node()

        # Set mkr_grp2 as marker group.
        x.set_marker_group(mkr_grp2)
        mkr_grp4 = x.get_marker_group()
        self.assertIsInstance(mkr_grp4, markergroup.MarkerGroup)
        self.assertEqual(mkr_grp2.get_node(), mkr_grp4.get_node())

        # Set mkr_grp3 as marker group.
        x.set_marker_group(mkr_grp3)
        mkr_grp5 = x.get_marker_group()
        self.assertIsInstance(mkr_grp5, markergroup.MarkerGroup)
        self.assertEqual(mkr_grp3.get_node(), mkr_grp5.get_node())

        # Unlink marker from marker group (detach to world).
        x.set_marker_group(None)
        mkr_grp6 = x.get_marker_group()
        self.assertIs(mkr_grp6, None)
        self.assertEqual(mkr_grp6, None)
    def test_get_marker_list(self):
        x = collection.Collection()
        x.create_node('mySolve')

        self.assertEqual(x.get_marker_list_length(), 0)

        node = maya.cmds.createNode('transform')
        mkr1 = marker.Marker().create_node()
        mkr2 = marker.Marker().create_node()
        attr1 = attribute.Attribute(node=node, attr='translateX')
        attr2 = attribute.Attribute(node=node, attr='translateY')
        attr3 = attribute.Attribute(node=node, attr='translateZ')
        attr4 = attribute.Attribute(node=node, attr='rotateX')
        attr5 = attribute.Attribute(node=node, attr='rotateY')
        attr6 = attribute.Attribute(node=node, attr='rotateZ')
        x.add_marker(mkr1)
        x.add_marker(mkr2)
        x.add_attribute(attr1)
        x.add_attribute(attr2)
        x.add_attribute(attr3)
        x.add_attribute(attr4)
        x.add_attribute(attr5)
        x.add_attribute(attr6)

        self.assertEqual(x.get_marker_list_length(), 2)
    def test_set_marker_list(self):
        x = collection.Collection()
        x.create_node('mySolve')

        attr_list = []
        mkr_list = []
        mkr1 = marker.Marker().create_node()
        mkr_list.append(mkr1)
        for i in xrange(10):
            mkr = marker.Marker().create_node()
            mkr_list.append(mkr)

            node = maya.cmds.createNode('transform')
            attr = attribute.Attribute(node=node, attr='translateZ')
            attr_list.append(attr)

        x.set_marker_list(mkr_list)
        x.set_attribute_list(mkr_list)
        self.assertEqual(x.get_marker_list_length(), 11)

        mkr_list = [mkr1]
        x.set_marker_list(mkr_list)
        self.assertEqual(x.get_marker_list_length(), 1)

        mkr_list = x.get_marker_list()
        self.assertEqual(mkr1.get_node(), mkr_list[0].get_node())
    def test_get_node(self):
        name = 'myMarker1'
        x = marker.Marker().create_node(name=name)
        node = x.get_node()
        self.assertIsInstance(node, (str, unicode))
        self.assertIn(name, node)
        self.assertEqual(node, '|myMarker1')

        y = marker.Marker()
        self.assertEqual(y.get_node(), None)
    def test_init(self):
        x = marker.Marker()
        x.create_node()
        x_node = x.get_node()
        self.assertTrue(maya.cmds.objExists(x_node))

        y = marker.Marker(x_node)
        y_node = y.get_node()
        self.assertEqual(x_node, y_node)

        z = marker.Marker(node=x_node)
        z_node = z.get_node()
        self.assertEqual(x_node, z_node)
    def test_get_camera(self):
        x = marker.Marker().create_node()
        mkr_cam = x.get_camera()
        self.assertEqual(mkr_cam, None)

        cam = self.create_camera('myCamera1')
        cam_tfm = cam.get_transform_node()
        cam_shp = cam.get_shape_node()

        y = marker.Marker().create_node(cam=cam)
        mkr_cam = y.get_camera()
        self.assertIsInstance(mkr_cam, camera.Camera)
        self.assertEqual(mkr_cam.get_transform_node(), cam_tfm)
        self.assertEqual(mkr_cam.get_shape_node(), cam_shp)
def get_bundle_nodes_from_marker_nodes(nodes):
    """
    Convert Marker nodes into Bundle nodes.

    :param nodes: Maya nodes to convert into Bundles (expected to be
                  Marker nodes, but other node types will not cause
                  errors).
    :type nodes: [str, ..]

    :returns: All Maya nodes connected to Marker nodes as Bundles.
    :rtype: [str, ..]
    """
    mkr_nodes = nodefilter.filter_marker_nodes(nodes)
    bnd_nodes = []
    for mkr_node in mkr_nodes:
        mkr = marker.Marker(mkr_node)
        bnd = mkr.get_bundle()
        if bnd is None:
            continue
        bnd_node = bnd.get_node()
        if bnd_node is None:
            continue
        if bnd_node not in bnd_nodes:
            bnd_nodes.append(bnd_node)
    return bnd_nodes
    def test_is_valid(self):
        """
        Collection validation.
        Once all pieces are connected, the collection is valid.
        """
        x = collection.Collection()
        x.create_node('myCollection')
        self.assertFalse(x.is_valid())

        # Solver
        sol = solver.Solver()
        x.add_solver(sol)
        self.assertFalse(x.is_valid())

        # Solver (with frame)
        f = frame.Frame(1)
        sol.add_frame(f)
        self.assertFalse(x.is_valid())

        # Marker / Bundle
        cam_tfm = maya.cmds.createNode('transform', name='camera1')
        cam_shp = maya.cmds.createNode('camera', name='cameraShape1')
        cam = camera.Camera(shape=cam_shp)
        bnd = bundle.Bundle().create_node()
        mkr = marker.Marker().create_node(cam=cam, bnd=bnd)
        x.add_marker(mkr)
        self.assertFalse(x.is_valid())

        # Attribute
        node = bnd.get_node()
        attr = attribute.Attribute(node=node, attr='translateX')
        x.add_attribute(attr)
        self.assertTrue(x.is_valid())
    def test_get_marker_list_length(self):
        x = collection.Collection()
        x.create_node('mySolve')
        self.assertEqual(x.get_marker_list_length(), 0)

        mkr = marker.Marker().create_node()
        x.add_marker(mkr)
        self.assertEqual(x.get_marker_list_length(), 1)
Beispiel #10
0
 def get_marker_list(self):
     result = []
     members = self._set.get_all_members(flatten=False, full_path=True)
     for member in members:
         object_type = api_utils.get_object_type(member)
         if object_type == const.OBJECT_TYPE_MARKER:
             mkr = marker.Marker(member)
             result.append(mkr)
     return result
    def test_get_marker_group(self):
        x = marker.Marker().create_node()
        mkr_grp = x.get_marker_group()
        self.assertEqual(mkr_grp, None)

        cam = self.create_camera('myCamera1')
        mkr_grp1 = markergroup.MarkerGroup().create_node(cam=cam)
        mkr_grp2 = markergroup.MarkerGroup().create_node(cam=cam)

        x = marker.Marker().create_node(mkr_grp=mkr_grp1)
        mkr_grp3 = x.get_marker_group()
        self.assertIsInstance(mkr_grp3, markergroup.MarkerGroup)
        self.assertEqual(mkr_grp1.get_node(), mkr_grp3.get_node())

        x.set_marker_group(mkr_grp2)
        mkr_grp4 = x.get_marker_group()
        self.assertIsInstance(mkr_grp4, markergroup.MarkerGroup)
        self.assertEqual(mkr_grp2.get_node(), mkr_grp4.get_node())
    def test_get_bundle(self):
        x = marker.Marker().create_node()
        bnd0 = x.get_bundle()
        self.assertEqual(bnd0, None)

        bnd1 = bundle.Bundle().create_node()
        x.set_bundle(bnd1)

        bnd2 = x.get_bundle()
        self.assertEqual(bnd1.get_node(), bnd2.get_node())
Beispiel #13
0
    def test_get_marker_list(self):
        x = bundle.Bundle().create_node(name='myBundle1')
        mkr_list1 = x.get_marker_list()
        self.assertEqual(len(mkr_list1), 0)

        for i in xrange(10):
            mkr = marker.Marker().create_node()
            mkr.set_bundle(x)
        mkr_list2 = x.get_marker_list()
        self.assertEqual(len(mkr_list2), 10)
    def test_set_colour_rgb(self):
        """
        Set wireframe colour of the marker.
        """
        red = (1.0, 0.0, 0.0)
        green = (0.0, 1.0, 0.0)
        blue = (0.0, 0.0, 1.0)

        x = marker.Marker()
        x_rgb = x.get_colour_rgb()
        self.assertEqual(x_rgb, None)

        # Create nodes
        y = marker.Marker().create_node(name='myMarker1')
        y_rgb = y.get_colour_rgb()
        self.assertEqual(y_rgb, red)

        y.set_colour_rgb(blue)
        y_rgb = y.get_colour_rgb()
        self.assertEqual(y_rgb, blue)
        return
    def test_get_object_type(self):
        """
        Test getting string object types from a given Maya node.

        TODO: Does not provide a 'collection' example.
        """
        # Camera Type
        cam_tfm = maya.cmds.createNode('transform')
        cam_tfm = node_utils.get_long_name(cam_tfm)
        cam_shp = maya.cmds.createNode('camera', parent=cam_tfm)
        cam_shp = node_utils.get_long_name(cam_shp)
        tfm_obj_type = api_utils.get_object_type(cam_tfm)
        shp_obj_type = api_utils.get_object_type(cam_shp)
        self.assertEqual(tfm_obj_type, const.OBJECT_TYPE_CAMERA)
        self.assertEqual(shp_obj_type, const.OBJECT_TYPE_CAMERA)

        # Marker Type
        mkr = marker.Marker().create_node()
        mkr_node = mkr.get_node()
        obj_type = api_utils.get_object_type(mkr_node)
        self.assertEqual(obj_type, const.OBJECT_TYPE_MARKER)

        # Marker shape node must also return as OBJECT_TYPE_MARKER
        mkr_shp_node = maya.cmds.listRelatives(mkr_node, shapes=True)[0]
        obj_type = api_utils.get_object_type(mkr_shp_node)
        self.assertEqual(obj_type, const.OBJECT_TYPE_UNKNOWN)

        # Marker Group
        node = maya.cmds.createNode('mmMarkerGroupTransform')
        obj_type = api_utils.get_object_type(node)
        self.assertEqual(obj_type, const.OBJECT_TYPE_MARKER_GROUP)

        # A Bundle must be more than just a transform and locator.
        # Use mmSolver.api.Bundle.create_node() to create a Bundle.
        #
        # GitHub Issue #6.
        bnd_node = maya.cmds.createNode('transform')
        bnd_shp_node = maya.cmds.createNode('locator', parent=bnd_node)
        obj_type = api_utils.get_object_type(bnd_node)
        self.assertEqual(obj_type, const.OBJECT_TYPE_UNKNOWN)

        # Giving a shape will not work.
        obj_type = api_utils.get_object_type(bnd_shp_node)
        self.assertEqual(obj_type, const.OBJECT_TYPE_UNKNOWN)

        # Attribute Type
        node_attr = node + '.scaleX'
        obj_type = api_utils.get_object_type(node_attr)
        self.assertEqual(obj_type, const.OBJECT_TYPE_ATTRIBUTE)
    def test_set_bundle(self):
        x = marker.Marker().create_node()
        bnd0 = x.get_bundle()
        self.assertEqual(bnd0, None)

        bnd1 = bundle.Bundle().create_node()
        x.set_bundle(bnd1)  # link marker to bundle

        bnd2 = x.get_bundle()
        self.assertEqual(bnd1.get_node(), bnd2.get_node())

        x.set_bundle(None)  # unlink bundle from marker
        bnd3 = x.get_bundle()
        self.assertEqual(bnd3, None)
        self.assertNotEqual(bnd1.get_node(), bnd3)
    def test_add_marker(self):
        x = collection.Collection()
        x.create_node('mySolve')

        name = 'myMarker1'
        mkr = marker.Marker().create_node(name=name)
        x.add_marker(mkr)

        mkr_list = x.get_marker_list()
        n2 = len(mkr_list)
        self.assertEqual(n2, 1)
        self.assertIsInstance(mkr_list[0], marker.Marker)
        self.assertIsNot(mkr, mkr_list[0])  # objects are not the same memory.
        self.assertIn(name, mkr.get_node())
        self.assertEqual(mkr.get_node(), mkr_list[0].get_node())  # same node
    def test_set_camera(self):
        cam = self.create_camera('myCamera1')
        cam_tfm = cam.get_transform_node()
        cam_shp = cam.get_shape_node()

        x = marker.Marker().create_node()
        x.set_camera(cam)

        # Get the camera and test
        mkr_cam = x.get_camera()
        self.assertIsInstance(mkr_cam, camera.Camera)
        self.assertEqual(mkr_cam.get_transform_node(), cam_tfm)
        self.assertEqual(mkr_cam.get_shape_node(), cam_shp)

        # Unlink marker from camera.
        x.set_camera(None)
        mkr_cam = x.get_camera()
        self.assertEqual(mkr_cam, None)
    def test_delete_node(self):
        x = marker.Marker().create_node()
        node1 = x.get_node()
        self.assertIsInstance(node1, (str, unicode))
        self.assertTrue(maya.cmds.objExists(node1))

        x.delete_node()

        node2 = x.get_node()
        self.assertEqual(node2, None)
        self.assertFalse(maya.cmds.objExists(node1))

        maya.cmds.undo()  # undo delete_node
        node3 = x.get_node()
        self.assertIsInstance(node3, (str, unicode))
        self.assertTrue(maya.cmds.objExists(node1))
        self.assertTrue(maya.cmds.objExists(node3))
        self.assertEqual(node1, node3)
    def test_remove_marker(self):
        x = collection.Collection()
        x.create_node('mySolve')

        name = 'myMarker1'
        mkr = marker.Marker().create_node(name=name)
        x.add_marker(mkr)

        mkr_list = x.get_marker_list()
        n1 = len(mkr_list)
        self.assertEqual(n1, 1)
        self.assertIsInstance(mkr_list[0], marker.Marker)
        self.assertIn(name, mkr.get_node())
        self.assertEqual(mkr.get_node(), mkr_list[0].get_node())

        x.remove_marker(mkr)
        mkr_list = x.get_marker_list()
        n2 = len(mkr_list)
        self.assertEqual(n2, 0)
    def test_create_node(self):
        # TODO: Add undo/redo tests.
        x = marker.Marker()
        x.create_node()
        node = x.get_node()
        self.assertIsInstance(node, (str, unicode))
        self.assertTrue(maya.cmds.objExists(node))

        x = marker.Marker().create_node()
        node = x.get_node()
        self.assertIsInstance(node, (str, unicode))
        self.assertTrue(maya.cmds.objExists(node))

        name = 'myMarker1'
        x = marker.Marker().create_node(name=name)
        node = x.get_node()
        self.assertTrue(maya.cmds.objExists(node))
        self.assertEqual(x.get_camera(), None)

        cam = self.create_camera('myCamera1')
        cam_tfm = cam.get_transform_node()
        cam_shp = cam.get_shape_node()

        # Create marker linked to camera
        x = marker.Marker().create_node(name=name, cam=cam)
        node = x.get_node()
        mkr_cam = x.get_camera()
        self.assertTrue(maya.cmds.objExists(node))
        self.assertEqual(mkr_cam.get_shape_node(), cam_shp)

        # Create a Bundle.
        bnd = bundle.Bundle().create_node()
        bnd_node = bnd.get_node()

        # Create marker linked to bundle
        x = marker.Marker().create_node(name=name, bnd=bnd)
        node = x.get_node()
        mkr_bnd = x.get_bundle()
        self.assertTrue(maya.cmds.objExists(node))
        self.assertEqual(mkr_bnd.get_node(), bnd_node)

        # Create marker linked to camera and bundle
        x = marker.Marker().create_node(name=name, cam=cam, bnd=bnd)
        node = x.get_node()
        self.assertTrue(maya.cmds.objExists(node))
        mkr_cam = x.get_camera()
        mkr_bnd = x.get_bundle()
        self.assertEqual(mkr_cam.get_shape_node(), cam_shp)
        self.assertEqual(mkr_bnd.get_node(), bnd_node)
    def test_remove_marker_list(self):
        x = collection.Collection()
        x.create_node('mySolve')

        name = 'myMarker1'
        mkr_list = []
        for i in xrange(10):
            mkr = marker.Marker().create_node(name=name)
            mkr_list.append(mkr)
        x.add_marker_list(mkr_list)

        self.assertEqual(x.get_marker_list_length(), 10)

        # remove the first half
        x.remove_marker_list(mkr_list[:5])

        self.assertEqual(x.get_marker_list_length(), 5)

        # remove the second half
        x.remove_marker_list(mkr_list[4:])

        self.assertEqual(x.get_marker_list_length(), 0)
    def test_add_marker_list(self):
        x = collection.Collection()
        x.create_node('mySolve')

        x.add_marker_list([])

        name = 'myMarker1'
        mkr_list = []
        for i in xrange(10):
            mkr = marker.Marker().create_node(name=name)
            mkr_list.append(mkr)
        x.add_marker_list(mkr_list)

        mkr_list2 = x.get_marker_list()
        self.assertEqual(len(mkr_list2), 10)

        node_list = []
        for mkr in mkr_list:
            node_list.append(mkr.get_node())
        for mkr in mkr_list2:
            node = mkr.get_node()
            self.assertIn(node, node_list)
def get_camera_nodes_from_marker_nodes(nodes):
    """
    Get the list of Camera nodes that are 'connected' to the markers nodes.

    :param nodes: Marker nodes.
    :type nodes: [str, ..]

    :returns: A list of camera transform and shape tuples.
    :rtype: [(str, str), ..]
    """
    mkr_nodes = nodefilter.filter_marker_nodes(nodes)
    cam_nodes = []
    cam_nodes_tmp = {}
    for mkr_node in mkr_nodes:
        mkr = marker.Marker(mkr_node)
        cam = mkr.get_camera()
        cam_tfm_node = cam.get_transform_node()
        cam_shp_node = cam.get_shape_node()
        if cam_shp_node not in cam_nodes_tmp:
            cam_nodes_tmp[cam_shp_node] = (cam_tfm_node, cam_shp_node)
    for key, value in cam_nodes_tmp.iteritems():
        cam_nodes.append(value)
    return cam_nodes
 def test_set_node(self):
     x = marker.Marker().create_node()
     y = marker.Marker()
     y.set_node(x.get_node())
     self.assertEqual(x.get_node(), y.get_node())
     self.assertRaises(RuntimeError, y.set_node, 'myUnknownNode1')