def build_from_selection(*args): """Build rig from current selection Args: *args: None """ shifter.log_window() rg = shifter.Rig() rg.buildFromSelection()
def import_partial_guide(filePath=None, partial=None, initParent=None, conf=None): """Import a partial part of a template Limitations: - The UI host and space switch references are not updated. This may affect the configuration if the index change. I.e. Import 2 times same componet with internal UI host in the childs. the second import will point to the original UI host. Args: filePath (str, optional): Path to the template file to import partial (str or list of str, optional): If Partial starting component is defined, will try to add the guide to a selected guide part of an existing guide. initParent (dagNode, optional): Initial parent. If None, will create a new initial heirarchy """ if not conf: conf = _import_guide_template(filePath) if conf: rig = shifter.Rig() rig.guide.set_from_dict(conf) partial_names, partial_idx = rig.guide.draw_guide(partial, initParent) # controls shapes buffer if not partial and conf["ctl_buffers_dict"]: curve.create_curve_from_data(conf["ctl_buffers_dict"], replaceShape=True, rebuildHierarchy=True, model=rig.guide.model) elif partial and conf["ctl_buffers_dict"]: # we need to match the ctl buffer names with the new # component index for crv in conf["ctl_buffers_dict"]["curves_names"]: if crv.startswith(tuple(partial_names)): comp_name = "_".join(crv.split("_")[:2]) i = partial_names.index(comp_name) pi = partial_idx[i] scrv = crv.split("_") crv = "_".join(scrv) scrv[1] = scrv[1][0] + str(pi) ncrv = "_".join(scrv) curve.create_curve_from_data_by_name( crv, conf["ctl_buffers_dict"], replaceShape=True, rebuildHierarchy=True, rplStr=[crv, ncrv], model=rig.guide.model)
def get_guide_template_dict(guide_node, meta=None): """Get the guide template dictionary from a guide node. Args: guide_node (PyNode): The guide node to start the parsing from. meta (dict, optional): Arbitraty metadata dictionary. This can be use to store any custom information in a dictionary format. Returns: dict: the parsed guide dictionary """ try: rig = shifter.Rig() rig.guide.setFromHierarchy(guide_node) return rig.guide.get_guide_template_dict(meta) except TypeError: pm.displayWarning("The selected object is not a valid guide element")
def build_from_file(filePath=None, conf=False, *args): """Build a rig from a template file. The rig will be build from a previously exported guide template, without creating the guide in the scene. Args: filePath (None, optional): Guide template file path """ if not conf: conf = _import_guide_template(filePath) if conf: rig = shifter.Rig() rig.buildFromDict(conf) # controls shapes buffer if conf["ctl_buffers_dict"]: curve.update_curve_from_data(conf["ctl_buffers_dict"], rplStr=["_controlBuffer", ""])