Esempio n. 1
0
def show_window(standalone=True):
    if not standalone:
        from studio_usd_pipe.core import smaya
        reload(smaya)
        from studio_usd_pipe.api import studioMaya
        studio_maya = studioMaya.Maya()
        cfile, ctype = studio_maya.get_current_file()
        if not cfile:
            message = 'Empty scene\nOpen the maya scene and try!...'
            QtWidgets.QMessageBox.critical(None, 'warning', message,
                                           QtWidgets.QMessageBox.Ok)
            return
        main_window = smaya.get_qwidget()
        smaya.remove_exists_window('widget_shot_push')
        window = shot_push.Window(parent=main_window,
                                  standalone=False,
                                  application='maya')
        window.show()
    if standalone:
        app = QtWidgets.QApplication(sys.argv)
        window = shot_push.Window(parent=None,
                                  standalone=True,
                                  application='maya')
        window.show()
        sys.exit(app.exec_())
Esempio n. 2
0
def create_studio_shot(output_path=None):
    from studio_usd_pipe.api import studioMaya
    reload(studioMaya)
    smaya = studioMaya.Maya()
    scene_pipe_ids = get_scene_pipe_ids()
    shot_data = {}
    for node in scene_pipe_ids['shots']:
        current_data = {
            'subfield': scene_pipe_ids['shots'][node]['ssubfield']['value'],
            'type': scene_pipe_ids['shots'][node]['stype']['value'],
            'tag': scene_pipe_ids['shots'][node]['stag']['value'],
        }
        shot_data.update(current_data)

    asset_data = {}
    for index, asset in enumerate(scene_pipe_ids['assets']):
        current_data = {
            'caption': scene_pipe_ids['assets'][asset]['scaption']['value'],
            'subfield': scene_pipe_ids['assets'][asset]['ssubfield']['value'],
            'version': scene_pipe_ids['assets'][asset]['sversion']['value'],
        }
        asset_data.setdefault(index, current_data)

    frame_range = smaya.get_frame_range()
    maya_settings = smaya.get_maya_settings()
    maya_data = {
        'frame_range': frame_range,
    }
    maya_data.update(maya_settings)
    final_data = {'shot': shot_data, 'assets': asset_data, 'scene': maya_data}
    print json.dumps(final_data, indent=4)
    with (open(output_path, 'w')) as content:
        content.write(json.dumps(final_data, indent=4))
        return output_path
Esempio n. 3
0
 def take_thumbnail(self, button):
     output_path = None
     if self.standalone:
         current_file = swidgets.brows_file(
             'find the thumbnail(image) file', resource.getImageFormats())
         if not current_file:
             return
         output_path = os.path.join(
             tempfile.gettempdir(),
             'thumbnail_%s.png' % resource.getCurrentDateKey())
         output_path = swidgets.image_resize(current_file, output_path, 768,
                                             540)
     else:
         from studio_usd_pipe.api import studioMaya
         smaya = studioMaya.Maya()
         output_path, w, h = smaya.vieport_snapshot(
             output_path=None,
             width=768,
             height=540,
         )
     if not os.path.isfile(output_path):
         return
     qsize = button.minimumSize()
     swidgets.image_to_button(button,
                              qsize.width(),
                              qsize.height(),
                              path=output_path)
     self.button_thumbnail.setToolTip(output_path)
Esempio n. 4
0
def release(**kwargs):
    from maya import standalone
    standalone.initialize(name="python")
    from maya import OpenMaya
    maya_file = sys.argv[1]
    inputs = ast.literal_eval(sys.argv[2])
    smaya = studioMaya.Maya()
    smaya.load_plugins(
        plugins=["pxrUsd", "pxrUsdPreviewSurface", "pxrUsdTranslators"])

    smaya.open_maya(maya_file, None)

    current_show = inputs['show']
    current_pipe = inputs['pipe']
    current_application = inputs['application']
    reapir = inputs['reapir']

    from studio_usd_pipe.api import studioPush
    publish = studioPush.Push(current_show, current_pipe)
    valid, message = publish.validate(repair=reapir, **inputs)
    if not valid:
        returncode([valid, message])
        standalone.uninitialize(name='python')
        return
    valid, message = publish.extract(repair=reapir, **inputs)
    if not valid:
        returncode([valid, message])
        return
    extracted_data = publish.get_extracted_data()
    if not valid:
        returncode([valid, message])
        return
    valid, message = publish.release()
    returncode([valid, message])
    standalone.uninitialize(name='python')
Esempio n. 5
0
def import_maya_scene(scene, namespace):
    if not os.path.isfile(scene):
        return False, None, 'not found scene'
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    smaya.import_maya(scene, file_type=None, namespace=namespace)
    return True, scene, 'success'
Esempio n. 6
0
def create_pipe_ids(**kwargs):
    from studio_usd_pipe.api import studioMaya
    reload(studioMaya)
    inputs = {
        'spipe': kwargs['pipe'],
        'scaption': kwargs['caption'],
        'ssubfield': kwargs['subfield'],
        'stype': kwargs['type'],
        'stag': kwargs['tag'],
        'sdependency': kwargs['dependency'],
        'sversion': kwargs['version'],
        'smodified': kwargs['modified'],
        'slocation': kwargs['location'],
        'sdescription': kwargs['description'],
        'suser': kwargs['user']
    }
    id_data = resource.getPipeIDData()
    for k, v in inputs.items():
        id_data[k]['value'] = v
    smaya = studioMaya.Maya()
    root = get_root()
    mobject = smaya.get_mobject(root)
    created_data = smaya.create_pipe_ids(mobject, id_data)
    result = []
    for k, v in created_data.items():
        result.append([k.encode(), v.encode()])
    return True, result
Esempio n. 7
0
def get_pipe_ids():
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    root = get_root()
    if not smaya.object_exists(root):
        return None
    mobject = smaya.get_mobject(root)
    id_data, valid = smaya.get_pipe_id_data(mobject, id_data=None)
    return id_data
Esempio n. 8
0
def references_maya_scene(input_data, new_scene=False):
    if new_scene:
        from studio_usd_pipe.api import studioMaya
        smaya = studioMaya.Maya()
        smaya.new_maya_scene()
    valids = {}
    for namespace, path in input_data.items():
        valid, value, message = reference_maya_scene(path, namespace)
        valids.setdefault(valid, []).append(value)
    return valids
Esempio n. 9
0
def update_pipe_ids(id_data=None):
    from maya import OpenMaya
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    root = get_root()
    mobject = smaya.get_mobject(root)
    if not id_data:
        id_data = resource.getPipeIDData()
    smaya.update_pipe_ids(mobject, id_data=id_data)
    return True, [id_data.keys()], 'updated with valid asset ids'
Esempio n. 10
0
def reference_maya_scene(scene, namespace):
    if not os.path.isfile(scene):
        return False, None, 'not found scene'
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    smaya.reference_maya(scene,
                         deferred=False,
                         locked=False,
                         namespace=namespace)
    return True, scene, 'success'
Esempio n. 11
0
def update_pipe_ids(**kwargs):
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    valid, mobject = find_shot_node(kwargs['subfield'])
    if not valid:
        return False, mobject, 'found more than one shot nodes'
    valid, values = create_pipe_ids(mobject, **kwargs)
    if not valid:
        return False, values
    return True, values
Esempio n. 12
0
def get_pipe_ids(**kwargs):
    from maya import standalone
    standalone.initialize(name="python")
    from maya import OpenMaya
    maya_file = sys.argv[1]
    smaya = studioMaya.Maya()
    smaya.open_maya(maya_file, None)
    data = maya_scene.get_scene_pipe_ids()
    returncode(data)
    standalone.uninitialize(name='python')
Esempio n. 13
0
def removed_pipe_ids():
    from maya import OpenMaya
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    root = get_root()
    mobject = smaya.get_mobject(root)
    id_data = resource.getPipeIDData()
    removed_ids = smaya.removed_pipe_ids(mobject, id_data=id_data)
    if not removed_ids:
        return True, [], 'asset ids are valid'
    return False, removed_ids, 'asset ids are invalid'
Esempio n. 14
0
def check_model_hierarchy():
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    top_level_nodes = smaya.extract_top_transforms()
    if top_level_nodes.length() == 0:
        return False, [None], 'not found any transform nodes'
    elif top_level_nodes.length() > 1:
        nodes = []
        for x in range(top_level_nodes.length()):
            nodes.append(top_level_nodes[x].fullPathName())
        return False, nodes, 'found more than one top level transform nodes'
    elif not smaya.object_exists(get_root()):
        return False, [None], 'not found %s' % get_root()
    return True, [get_root()], 'suitable hierarchy'
Esempio n. 15
0
def find_shot_node(subfield):
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    transforms = smaya.extract_top_transforms()
    pipe_ids = resource.getPipeIDData()
    shot_nodes = []
    for index in range(transforms.length()):
        pipe_id_data, valid = smaya.get_pipe_id_data(transforms[index].node(),
                                                     pipe_ids)
        if not valid:
            continue
        if pipe_id_data['ssubfield']['value'] != subfield:
            continue
        shot_nodes.append(transforms[index])
    if not shot_nodes:
        return False, shot_nodes
    if len(shot_nodes) > 1:
        return False, shot_nodes
    return True, shot_nodes[0].node()
Esempio n. 16
0
def get_scene_pipe_ids():
    from studio_usd_pipe import resource
    from studio_usd_pipe.api import studioMaya
    reload(studioMaya)
    smaya = studioMaya.Maya()
    transforms = smaya.extract_null_transform()
    pipe_ids = resource.getPipeIDData()
    pipe_data = {}
    for index in range(transforms.length()):
        pipe_id_data, valid = smaya.get_pipe_id_data(transforms[index].node(),
                                                     pipe_ids)
        if not valid:
            continue
        contents = {transforms[index].fullPathName(): pipe_id_data}
        current_pipe = pipe_id_data['spipe']['value']
        if current_pipe not in pipe_data:
            pipe_data.setdefault(current_pipe, {})
        pipe_data[current_pipe].update(contents)
    return pipe_data
Esempio n. 17
0
def create_shot(**kwargs):
    '''
        from studio_usd_pipe.utils import maya_scene
        reload(maya_scene)    
        kwargs = {'pipe': 'shots',
                'caption': 'seq_1001|shot_101',
                'subfield': 'layout',
                'type': 'seq_1001',
                'tag': 'shot_101',
                'dependency': None,
                'version': '0.0.0',
                'modified': '1111111111',
                'location': 'dddddddddd',
                'description': 'ddddddddddd',
                'user': '******'
                }              
        valid, values, message = maya_scene.create_shot(kwargs)
    '''
    from studio_usd_pipe.api import studioMaya
    reload(studioMaya)
    smaya = studioMaya.Maya()
    root = get_root()
    dag_node = smaya.create_group(root)
    valid, values = create_pipe_ids(dag_node.object(), **kwargs)
    if not valid:
        return False, values, 'failed'
    id_data = resource.getPipeIDData()
    transforms = smaya.extract_null_transform()
    for index in range(transforms.length()):
        pipe_id_data, valid = smaya.get_pipe_id_data(transforms[index].node(),
                                                     id_data)
        if not valid:
            continue
        if pipe_id_data['spipe']['value'] != 'assets':
            continue
        smaya.set_parent(transforms[index], dag_node.object())
    transforms = smaya.extract_top_transforms()
    for index in range(transforms.length()):
        if transforms[index].node() == dag_node.object():
            continue
        smaya.remove_node(transforms[index].node())
    dag_node.setName(root)
    return True, [root], 'success'
Esempio n. 18
0
def check_shot_hierarchy(subfield):
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    id_data = resource.getPipeIDData()
    transforms = smaya.extract_top_transforms()
    nodes = [transforms[x].fullPathName() for x in range(transforms.length())]
    if transforms.length() > 1:
        return False, nodes, 'broken hierarchy'
    pipe_ids = resource.getPipeIDData()
    scene_subfield = {}
    for index in range(transforms.length()):
        pipe_id_data, valid = smaya.get_pipe_id_data(transforms[index].node(),
                                                     pipe_ids)
        if not valid:
            continue
        subfield = pipe_id_data['ssubfield']['value']
        scene_subfield.setdefault(subfield,
                                  []).append(transforms[index].fullPathName())
    if subfield in scene_subfield:
        return True, scene_subfield[subfield], 'suitable hierarchy'
    return False, [], 'not found %s' % get_root()
Esempio n. 19
0
def create_puppet_maya(output_path):
    from studio_usd_pipe.api import studioMaya
    smaya = studioMaya.Maya()
    root = get_root()
    smaya.export_selected(root, output_path, force=True)
    return output_path
Esempio n. 20
0
def execute():
    from studio_usd_pipe.api import studioMaya
    reload(studioMaya)
    sm = studioMaya.Maya()
    sm.set_bounding_box()
Esempio n. 21
0
 def get_current_maya(self):
     from studio_usd_pipe.api import studioMaya
     studio_maya = studioMaya.Maya()
     self.source_maya, format = studio_maya.get_current_file()
     return format
Esempio n. 22
0
def execute():
    from studio_usd_pipe.api import studioMaya
    reload(studioMaya)
    sm = studioMaya.Maya()
    sm.set_perspective_view()