diff --git a/openpype/hosts/maya/api/__init__.py b/openpype/hosts/maya/api/__init__.py index 9ea798e927..5d76bf0f04 100644 --- a/openpype/hosts/maya/api/__init__.py +++ b/openpype/hosts/maya/api/__init__.py @@ -10,12 +10,6 @@ from .pipeline import ( ls, containerise, - - lock, - unlock, - is_locked, - lock_ignored, - ) from .plugin import ( Creator, @@ -38,11 +32,9 @@ from .lib import ( read, apply_shaders, - without_extension, maintained_selection, suspended_refresh, - unique_name, unique_namespace, ) @@ -54,11 +46,6 @@ __all__ = [ "ls", "containerise", - "lock", - "unlock", - "is_locked", - "lock_ignored", - "Creator", "Loader", @@ -76,11 +63,9 @@ __all__ = [ "lsattrs", "read", - "unique_name", "unique_namespace", "apply_shaders", - "without_extension", "maintained_selection", "suspended_refresh", diff --git a/openpype/hosts/maya/api/lib.py b/openpype/hosts/maya/api/lib.py index 21e027109e..0b05182bb1 100644 --- a/openpype/hosts/maya/api/lib.py +++ b/openpype/hosts/maya/api/lib.py @@ -2,7 +2,6 @@ import os import sys -import re import platform import uuid import math @@ -154,53 +153,9 @@ def maintained_selection(): cmds.select(clear=True) -def unique_name(name, format="%02d", namespace="", prefix="", suffix=""): - """Return unique `name` - - The function takes into consideration an optional `namespace` - and `suffix`. The suffix is included in evaluating whether a - name exists - such as `name` + "_GRP" - but isn't included - in the returned value. - - If a namespace is provided, only names within that namespace - are considered when evaluating whether the name is unique. - - Arguments: - format (str, optional): The `name` is given a number, this determines - how this number is formatted. Defaults to a padding of 2. - E.g. my_name01, my_name02. - namespace (str, optional): Only consider names within this namespace. - suffix (str, optional): Only consider names with this suffix. - - Example: - >>> name = cmds.createNode("transform", name="MyName") - >>> cmds.objExists(name) - True - >>> unique = unique_name(name) - >>> cmds.objExists(unique) - False - - """ - - iteration = 1 - unique = prefix + (name + format % iteration) + suffix - - while cmds.objExists(namespace + ":" + unique): - iteration += 1 - unique = prefix + (name + format % iteration) + suffix - - if suffix: - return unique[:-len(suffix)] - - return unique - - def unique_namespace(namespace, format="%02d", prefix="", suffix=""): """Return unique namespace - Similar to :func:`unique_name` but evaluating namespaces - as opposed to object names. - Arguments: namespace (str): Name of namespace to consider format (str, optional): Formatting of the given iteration number @@ -316,153 +271,6 @@ def pairwise(iterable): return itertools.izip(a, a) -def unique(name): - assert isinstance(name, string_types), "`name` must be string" - - while cmds.objExists(name): - matches = re.findall(r"\d+$", name) - - if matches: - match = matches[-1] - name = name.rstrip(match) - number = int(match) + 1 - else: - number = 1 - - name = name + str(number) - - return name - - -def uv_from_element(element): - """Return the UV coordinate of given 'element' - - Supports components, meshes, nurbs. - - """ - - supported = ["mesh", "nurbsSurface"] - - uv = [0.5, 0.5] - - if "." not in element: - type = cmds.nodeType(element) - if type == "transform": - geometry_shape = cmds.listRelatives(element, shapes=True) - - if len(geometry_shape) >= 1: - geometry_shape = geometry_shape[0] - else: - return - - elif type in supported: - geometry_shape = element - - else: - cmds.error("Could not do what you wanted..") - return - else: - # If it is indeed a component - get the current Mesh - try: - parent = element.split(".", 1)[0] - - # Maya is funny in that when the transform of the shape - # of the component element has children, the name returned - # by that elementection is the shape. Otherwise, it is - # the transform. So lets see what type we're dealing with here. - if cmds.nodeType(parent) in supported: - geometry_shape = parent - else: - geometry_shape = cmds.listRelatives(parent, shapes=1)[0] - - if not geometry_shape: - cmds.error("Skipping %s: Could not find shape." % element) - return - - if len(cmds.ls(geometry_shape)) > 1: - cmds.warning("Multiple shapes with identical " - "names found. This might not work") - - except TypeError as e: - cmds.warning("Skipping %s: Didn't find a shape " - "for component elementection. %s" % (element, e)) - return - - try: - type = cmds.nodeType(geometry_shape) - - if type == "nurbsSurface": - # If a surfacePoint is elementected on a nurbs surface - root, u, v = element.rsplit("[", 2) - uv = [float(u[:-1]), float(v[:-1])] - - if type == "mesh": - # ----------- - # Average the U and V values - # =========== - uvs = cmds.polyListComponentConversion(element, toUV=1) - if not uvs: - cmds.warning("Couldn't derive any UV's from " - "component, reverting to default U and V") - raise TypeError - - # Flatten list of Uv's as sometimes it returns - # neighbors like this [2:3] instead of [2], [3] - flattened = [] - - for uv in uvs: - flattened.extend(cmds.ls(uv, flatten=True)) - - uvs = flattened - - sumU = 0 - sumV = 0 - for uv in uvs: - try: - u, v = cmds.polyEditUV(uv, query=True) - except Exception: - cmds.warning("Couldn't find any UV coordinated, " - "reverting to default U and V") - raise TypeError - - sumU += u - sumV += v - - averagedU = sumU / len(uvs) - averagedV = sumV / len(uvs) - - uv = [averagedU, averagedV] - except TypeError: - pass - - return uv - - -def shape_from_element(element): - """Return shape of given 'element' - - Supports components, meshes, and surfaces - - """ - - try: - # Get either shape or transform, based on element-type - node = cmds.ls(element, objectsOnly=True)[0] - except Exception: - cmds.warning("Could not find node in %s" % element) - return None - - if cmds.nodeType(node) == 'transform': - try: - return cmds.listRelatives(node, shapes=True)[0] - except Exception: - cmds.warning("Could not find shape in %s" % element) - return None - - else: - return node - - def export_alembic(nodes, file, frame_range=None, @@ -607,115 +415,6 @@ def imprint(node, data): cmds.setAttr(node + "." + key, value, **set_type) -def serialise_shaders(nodes): - """Generate a shader set dictionary - - Arguments: - nodes (list): Absolute paths to nodes - - Returns: - dictionary of (shader: id) pairs - - Schema: - { - "shader1": ["id1", "id2"], - "shader2": ["id3", "id1"] - } - - Example: - { - "Bazooka_Brothers01_:blinn4SG": [ - "f9520572-ac1d-11e6-b39e-3085a99791c9.f[4922:5001]", - "f9520572-ac1d-11e6-b39e-3085a99791c9.f[4587:4634]", - "f9520572-ac1d-11e6-b39e-3085a99791c9.f[1120:1567]", - "f9520572-ac1d-11e6-b39e-3085a99791c9.f[4251:4362]" - ], - "lambert2SG": [ - "f9520571-ac1d-11e6-9dbb-3085a99791c9" - ] - } - - """ - - valid_nodes = cmds.ls( - nodes, - long=True, - recursive=True, - showType=True, - objectsOnly=True, - type="transform" - ) - - meshes_by_id = {} - for mesh in valid_nodes: - shapes = cmds.listRelatives(valid_nodes[0], - shapes=True, - fullPath=True) or list() - - if shapes: - shape = shapes[0] - if not cmds.nodeType(shape): - continue - - try: - id_ = cmds.getAttr(mesh + ".mbID") - - if id_ not in meshes_by_id: - meshes_by_id[id_] = list() - - meshes_by_id[id_].append(mesh) - - except ValueError: - continue - - meshes_by_shader = dict() - for mesh in meshes_by_id.values(): - shape = cmds.listRelatives(mesh, - shapes=True, - fullPath=True) or list() - - for shader in cmds.listConnections(shape, - type="shadingEngine") or list(): - - # Objects in this group are those that haven't got - # any shaders. These are expected to be managed - # elsewhere, such as by the default model loader. - if shader == "initialShadingGroup": - continue - - if shader not in meshes_by_shader: - meshes_by_shader[shader] = list() - - shaded = cmds.sets(shader, query=True) or list() - meshes_by_shader[shader].extend(shaded) - - shader_by_id = {} - for shader, shaded in meshes_by_shader.items(): - - if shader not in shader_by_id: - shader_by_id[shader] = list() - - for mesh in shaded: - - # Enable shader assignment to faces. - name = mesh.split(".f[")[0] - - transform = name - if cmds.objectType(transform) == "mesh": - transform = cmds.listRelatives(name, parent=True)[0] - - try: - id_ = cmds.getAttr(transform + ".mbID") - shader_by_id[shader].append(mesh.replace(name, id_)) - except KeyError: - continue - - # Remove duplicates - shader_by_id[shader] = list(set(shader_by_id[shader])) - - return shader_by_id - - def lsattr(attr, value=None): """Return nodes matching `key` and `value` @@ -794,17 +493,6 @@ def lsattrs(attrs): return list(matches) -@contextlib.contextmanager -def without_extension(): - """Use cmds.file with defaultExtensions=False""" - previous_setting = cmds.file(defaultExtensions=True, query=True) - try: - cmds.file(defaultExtensions=False) - yield - finally: - cmds.file(defaultExtensions=previous_setting) - - @contextlib.contextmanager def attribute_values(attr_values): """Remaps node attributes to values during context. @@ -883,26 +571,6 @@ def evaluation(mode="off"): cmds.evaluationManager(mode=original) -@contextlib.contextmanager -def no_refresh(): - """Temporarily disables Maya's UI updates - - Note: - This only disabled the main pane and will sometimes still - trigger updates in torn off panels. - - """ - - pane = _get_mel_global('gMainPane') - state = cmds.paneLayout(pane, query=True, manage=True) - cmds.paneLayout(pane, edit=True, manage=False) - - try: - yield - finally: - cmds.paneLayout(pane, edit=True, manage=state) - - @contextlib.contextmanager def empty_sets(sets, force=False): """Remove all members of the sets during the context""" @@ -1569,15 +1237,6 @@ def extract_alembic(file, return file -def maya_temp_folder(): - scene_dir = os.path.dirname(cmds.file(query=True, sceneName=True)) - tmp_dir = os.path.abspath(os.path.join(scene_dir, "..", "tmp")) - if not os.path.isdir(tmp_dir): - os.makedirs(tmp_dir) - - return tmp_dir - - # region ID def get_id_required_nodes(referenced_nodes=False, nodes=None): """Filter out any node which are locked (reference) or readOnly @@ -1762,22 +1421,6 @@ def set_id(node, unique_id, overwrite=False): cmds.setAttr(attr, unique_id, type="string") -def remove_id(node): - """Remove the id attribute from the input node. - - Args: - node (str): The node name - - Returns: - bool: Whether an id attribute was deleted - - """ - if cmds.attributeQuery("cbId", node=node, exists=True): - cmds.deleteAttr("{}.cbId".format(node)) - return True - return False - - # endregion ID def get_reference_node(path): """ @@ -2453,6 +2096,7 @@ def reset_scene_resolution(): set_scene_resolution(width, height, pixelAspect) + def set_context_settings(): """Apply the project settings from the project definition @@ -2911,7 +2555,7 @@ def get_attr_in_layer(attr, layer): def fix_incompatible_containers(): - """Return whether the current scene has any outdated content""" + """Backwards compatibility: old containers to use new ReferenceLoader""" host = api.registered_host() for container in host.ls(): @@ -3150,7 +2794,7 @@ class RenderSetupListObserver: cmds.delete(render_layer_set_name) -class RenderSetupItemObserver(): +class RenderSetupItemObserver: """Handle changes in render setup items.""" def __init__(self, item): @@ -3386,7 +3030,7 @@ def set_colorspace(): @contextlib.contextmanager def root_parent(nodes): # type: (list) -> list - """Context manager to un-parent provided nodes and return then back.""" + """Context manager to un-parent provided nodes and return them back.""" import pymel.core as pm # noqa node_parents = [] diff --git a/openpype/hosts/maya/api/menu.json b/openpype/hosts/maya/api/menu.json deleted file mode 100644 index a2efd5233c..0000000000 --- a/openpype/hosts/maya/api/menu.json +++ /dev/null @@ -1,924 +0,0 @@ -[ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\save_scene_incremental.py", - "sourcetype": "file", - "title": "# Version Up", - "tooltip": "Incremental save with a specific format" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\open_current_folder.py", - "sourcetype": "file", - "title": "Open working folder..", - "tooltip": "Show current scene in Explorer" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\avalon\\launch_manager.py", - "sourcetype": "file", - "title": "# Project Manager", - "tooltip": "Add assets to the project" - }, - { - "type": "action", - "command": "from openpype.tools.assetcreator import app as assetcreator; assetcreator.show(context='maya')", - "sourcetype": "python", - "title": "Asset Creator", - "tooltip": "Open the Asset Creator" - }, - { - "type": "separator" - }, - { - "type": "menu", - "title": "Modeling", - "items": [ - { - "type": "action", - "command": "import easyTreezSource; reload(easyTreezSource); easyTreezSource.easyTreez()", - "sourcetype": "python", - "tags": ["modeling", "trees", "generate", "create", "plants"], - "title": "EasyTreez", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\separateMeshPerShader.py", - "sourcetype": "file", - "tags": ["modeling", "separateMeshPerShader"], - "title": "# Separate Mesh Per Shader", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polyDetachSeparate.py", - "sourcetype": "file", - "tags": ["modeling", "poly", "detach", "separate"], - "title": "# Polygon Detach and Separate", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polySelectEveryNthEdgeUI.py", - "sourcetype": "file", - "tags": ["modeling", "select", "nth", "edge", "ui"], - "title": "# Select Every Nth Edge" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\djPFXUVs.py", - "sourcetype": "file", - "tags": ["modeling", "djPFX", "UVs"], - "title": "# dj PFX UVs", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Rigging", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\advancedSkeleton.py", - "sourcetype": "file", - "tags": [ - "rigging", - "autorigger", - "advanced", - "skeleton", - "advancedskeleton", - "file" - ], - "title": "Advanced Skeleton" - } - ] - }, - { - "type": "menu", - "title": "Shading", - "items": [ - { - "type": "menu", - "title": "# VRay", - "items": [ - { - "type": "action", - "title": "# Import Proxies", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayImportProxies.py", - "sourcetype": "file", - "tags": ["shading", "vray", "import", "proxies"], - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "# Select All GES", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\selectAllGES.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "select All GES"] - }, - { - "type": "action", - "title": "# Select All GES Under Selection", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\selectAllGESUnderSelection.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "select", "all", "GES"] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "# Selection To VRay Mesh", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\selectionToVrayMesh.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "selection", "vraymesh"] - }, - { - "type": "action", - "title": "# Add VRay Round Edges Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayRoundEdgesAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "round edges", "attribute"] - }, - { - "type": "action", - "title": "# Add Gamma", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayAddGamma.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "add gamma"] - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\select_vraymesh_materials_with_unconnected_shader_slots.py", - "sourcetype": "file", - "title": "# Select Unconnected Shader Materials", - "tags": [ - "shading", - "vray", - "select", - "vraymesh", - "materials", - "unconnected shader slots" - ], - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayMergeSimilarVRayMeshMaterials.py", - "sourcetype": "file", - "title": "# Merge Similar VRay Mesh Materials", - "tags": [ - "shading", - "vray", - "Merge", - "VRayMesh", - "Materials" - ], - "tooltip": "" - }, - { - "type": "action", - "title": "# Create Two Sided Material", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayCreate2SidedMtlForSelectedMtlRenamed.py", - "sourcetype": "file", - "tooltip": "Creates two sided material for selected material and renames it", - "tags": ["shading", "vray", "two sided", "material"] - }, - { - "type": "action", - "title": "# Create Two Sided Material For Selected", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayCreate2SidedMtlForSelectedMtl.py", - "sourcetype": "file", - "tooltip": "Select material to create a two sided version from it", - "tags": [ - "shading", - "vray", - "Create2SidedMtlForSelectedMtl.py" - ] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "# Add OpenSubdiv Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayOpenSubdivAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "add", - "open subdiv", - "attribute" - ] - }, - { - "type": "action", - "title": "# Remove OpenSubdiv Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\removeVrayOpenSubdivAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "remove", - "opensubdiv", - "attributee" - ] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "# Add Subdivision Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVraySubdivisionAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "addVraySubdivisionAttribute" - ] - }, - { - "type": "action", - "title": "# Remove Subdivision Attribute.py", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\removeVraySubdivisionAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "remove", - "subdivision", - "attribute" - ] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "# Add Vray Object Ids", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayObjectIds.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "add", "object id"] - }, - { - "type": "action", - "title": "# Add Vray Material Ids", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayMaterialIds.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "addVrayMaterialIds.py"] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "# Set Physical DOF Depth", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayPhysicalDOFSetDepth.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "physical", "DOF ", "Depth"] - }, - { - "type": "action", - "title": "# Magic Vray Proxy UI", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\magicVrayProxyUI.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "magicVrayProxyUI"] - } - ] - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\pyblish\\lighting\\set_filename_prefix.py", - "sourcetype": "file", - "tags": [ - "shading", - "lookdev", - "assign", - "shaders", - "prefix", - "filename", - "render" - ], - "title": "# Set filename prefix", - "tooltip": "Set the render file name prefix." - }, - { - "type": "action", - "command": "import mayalookassigner; mayalookassigner.show()", - "sourcetype": "python", - "tags": ["shading", "look", "assign", "shaders", "auto"], - "title": "Look Manager", - "tooltip": "Open the Look Manager UI for look assignment" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\LightLinkUi.py", - "sourcetype": "file", - "tags": ["shading", "light", "link", "ui"], - "title": "# Light Link UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\vdviewer_ui.py", - "sourcetype": "file", - "tags": [ - "shading", - "look", - "vray", - "displacement", - "shaders", - "auto" - ], - "title": "# VRay Displ Viewer", - "tooltip": "Open the VRay Displacement Viewer, select and control the content of the set" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\setTexturePreviewToCLRImage.py", - "sourcetype": "file", - "tags": ["shading", "CLRImage", "textures", "preview"], - "title": "# Set Texture Preview To CLRImage", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fixDefaultShaderSetBehavior.py", - "sourcetype": "file", - "tags": ["shading", "fix", "DefaultShaderSet", "Behavior"], - "title": "# Fix Default Shader Set Behavior", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fixSelectedShapesReferenceAssignments.py", - "sourcetype": "file", - "tags": [ - "shading", - "fix", - "Selected", - "Shapes", - "Reference", - "Assignments" - ], - "title": "# Fix Shapes Reference Assignments", - "tooltip": "Select shapes to fix the reference assignments" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\selectLambert1Members.py", - "sourcetype": "file", - "tags": ["shading", "selectLambert1Members"], - "title": "# Select Lambert1 Members", - "tooltip": "Selects all objects which have the Lambert1 shader assigned" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\selectShapesWithoutShader.py", - "sourcetype": "file", - "tags": ["shading", "selectShapesWithoutShader"], - "title": "# Select Shapes Without Shader", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fixRenderLayerOutAdjustmentErrors.py", - "sourcetype": "file", - "tags": ["shading", "fixRenderLayerOutAdjustmentErrors"], - "title": "# Fix RenderLayer Out Adjustment Errors", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fix_renderlayer_missing_node_override.py", - "sourcetype": "file", - "tags": [ - "shading", - "renderlayer", - "missing", - "reference", - "switch", - "layer" - ], - "title": "# Fix RenderLayer Missing Referenced Nodes Overrides", - "tooltip": "" - }, - { - "type": "action", - "title": "# Image 2 Tiled EXR", - "command": "$OPENPYPE_SCRIPTS\\shading\\open_img2exr.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "exr"] - } - ] - }, - { - "type": "menu", - "title": "# Rendering", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\pyblish\\open_deadline_submission_settings.py", - "sourcetype": "file", - "tags": ["settings", "deadline", "globals", "render"], - "title": "# DL Submission Settings UI", - "tooltip": "Open the Deadline Submission Settings UI" - } - ] - }, - { - "type": "menu", - "title": "Animation", - "items": [ - { - "type": "menu", - "title": "# Attributes", - "tooltip": "", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyValues.py", - "sourcetype": "file", - "tags": ["animation", "copy", "attributes"], - "title": "# Copy Values", - "tooltip": "Copy attribute values" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyInConnections.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "connections", - "incoming" - ], - "title": "# Copy In Connections", - "tooltip": "Copy incoming connections" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyOutConnections.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "connections", - "out" - ], - "title": "# Copy Out Connections", - "tooltip": "Copy outcoming connections" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyTransformLocal.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "local" - ], - "title": "# Copy Local Transforms", - "tooltip": "Copy local transforms" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyTransformMatrix.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "matrix" - ], - "title": "# Copy Matrix Transforms", - "tooltip": "Copy Matrix transforms" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyTransformUI.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "UI" - ], - "title": "# Copy Transforms UI", - "tooltip": "Open the Copy Transforms UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\simpleCopyUI.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "UI", - "simple" - ], - "title": "# Simple Copy UI", - "tooltip": "Open the simple Copy Transforms UI" - } - ] - }, - { - "type": "menu", - "title": "# Optimize", - "tooltip": "Optimization scripts", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\optimize\\toggleFreezeHierarchy.py", - "sourcetype": "file", - "tags": ["animation", "hierarchy", "toggle", "freeze"], - "title": "# Toggle Freeze Hierarchy", - "tooltip": "Freeze and unfreeze hierarchy" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\optimize\\toggleParallelNucleus.py", - "sourcetype": "file", - "tags": ["animation", "nucleus", "toggle", "parallel"], - "title": "# Toggle Parallel Nucleus", - "tooltip": "Toggle parallel nucleus" - } - ] - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", - "tags": ["animation", "bake", "selection", "worldspace.py"], - "title": "# Bake Selected To Worldspace", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\timeStepper.py", - "tags": ["animation", "time", "stepper"], - "title": "# Time Stepper", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\capture_ui.py", - "tags": [ - "animation", - "capture", - "ui", - "screen", - "movie", - "image" - ], - "title": "# Capture UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\simplePlayblastUI.py", - "tags": ["animation", "simple", "playblast", "ui"], - "title": "# Simple Playblast UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\tweenMachineUI.py", - "tags": ["animation", "tween", "machine"], - "title": "# Tween Machine UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\selectAllAnimationCurves.py", - "tags": ["animation", "select", "curves"], - "title": "# Select All Animation Curves", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\pathAnimation.py", - "tags": ["animation", "path", "along"], - "title": "# Path Animation", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\offsetSelectedObjectsUI.py", - "tags": ["animation", "offsetSelectedObjectsUI.py"], - "title": "# Offset Selected Objects UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\key_amplifier_ui.py", - "tags": ["animation", "key", "amplifier"], - "title": "# Key Amplifier UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\anim_scene_optimizer.py", - "tags": ["animation", "anim_scene_optimizer.py"], - "title": "# Anim_Scene_Optimizer", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\zvParentMaster.py", - "tags": ["animation", "zvParentMaster.py"], - "title": "# ZV Parent Master", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\animLibrary.py", - "tags": ["animation", "studiolibrary.py"], - "title": "Anim Library", - "type": "action" - } - ] - }, - { - "type": "menu", - "title": "# Layout", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\alignDistributeUI.py", - "sourcetype": "file", - "tags": ["layout", "align", "Distribute", "UI"], - "title": "# Align Distribute UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\alignSimpleUI.py", - "sourcetype": "file", - "tags": ["layout", "align", "UI", "Simple"], - "title": "# Align Simple UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\center_locator.py", - "sourcetype": "file", - "tags": ["layout", "center", "locator"], - "title": "# Center Locator", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\average_locator.py", - "sourcetype": "file", - "tags": ["layout", "average", "locator"], - "title": "# Average Locator", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\selectWithinProximityUI.py", - "sourcetype": "file", - "tags": ["layout", "select", "proximity", "ui"], - "title": "# Select Within Proximity UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\dupCurveUI.py", - "sourcetype": "file", - "tags": ["layout", "Duplicate", "Curve", "UI"], - "title": "# Duplicate Curve UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\randomDeselectUI.py", - "sourcetype": "file", - "tags": ["layout", "random", "Deselect", "UI"], - "title": "# Random Deselect UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\multiReferencerUI.py", - "sourcetype": "file", - "tags": ["layout", "multi", "reference"], - "title": "# Multi Referencer UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\duplicateOffsetUI.py", - "sourcetype": "file", - "tags": ["layout", "duplicate", "offset", "UI"], - "title": "# Duplicate Offset UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\spPaint3d.py", - "sourcetype": "file", - "tags": ["layout", "spPaint3d", "paint", "tool"], - "title": "# SP Paint 3d", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\randomizeUI.py", - "sourcetype": "file", - "tags": ["layout", "randomize", "UI"], - "title": "# Randomize UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\distributeWithinObjectUI.py", - "sourcetype": "file", - "tags": ["layout", "distribute", "ObjectUI", "within"], - "title": "# Distribute Within Object UI", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "# Particles", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjects.py", - "sourcetype": "file", - "tags": ["particles", "instancerToObjects"], - "title": "# Instancer To Objects", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjectsInstances.py", - "sourcetype": "file", - "tags": ["particles", "instancerToObjectsInstances"], - "title": "# Instancer To Objects Instances", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjectsInstancesWithAnimation.py", - "sourcetype": "file", - "tags": [ - "particles", - "instancerToObjectsInstancesWithAnimation" - ], - "title": "# Instancer To Objects Instances With Animation", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjectsWithAnimation.py", - "sourcetype": "file", - "tags": ["particles", "instancerToObjectsWithAnimation"], - "title": "# Instancer To Objects With Animation", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Cleanup", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\repair_faulty_containers.py", - "sourcetype": "file", - "tags": ["cleanup", "repair", "containers"], - "title": "# Find and Repair Containers", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeNamespaces.py", - "sourcetype": "file", - "tags": ["cleanup", "remove", "namespaces"], - "title": "# Remove Namespaces", - "tooltip": "Remove all namespaces" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\remove_user_defined_attributes.py", - "sourcetype": "file", - "tags": ["cleanup", "remove_user_defined_attributes"], - "title": "# Remove User Defined Attributes", - "tooltip": "Remove all user-defined attributes from all nodes" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeUnknownNodes.py", - "sourcetype": "file", - "tags": ["cleanup", "removeUnknownNodes"], - "title": "# Remove Unknown Nodes", - "tooltip": "Remove all unknown nodes" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeUnloadedReferences.py", - "sourcetype": "file", - "tags": ["cleanup", "removeUnloadedReferences"], - "title": "# Remove Unloaded References", - "tooltip": "Remove all unloaded references" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeReferencesFailedEdits.py", - "sourcetype": "file", - "tags": ["cleanup", "removeReferencesFailedEdits"], - "title": "# Remove References Failed Edits", - "tooltip": "Remove failed edits for all references" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\remove_unused_looks.py", - "sourcetype": "file", - "tags": ["cleanup", "removeUnusedLooks"], - "title": "# Remove Unused Looks", - "tooltip": "Remove all loaded yet unused Avalon look containers" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\uniqifyNodeNames.py", - "sourcetype": "file", - "tags": ["cleanup", "uniqifyNodeNames"], - "title": "# Uniqify Node Names", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\autoRenameFileNodes.py", - "sourcetype": "file", - "tags": ["cleanup", "auto", "rename", "filenodes"], - "title": "# Auto Rename File Nodes", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\update_asset_id.py", - "sourcetype": "file", - "tags": ["cleanup", "update", "database", "asset", "id"], - "title": "# Update Asset ID", - "tooltip": "Will replace the Colorbleed ID with a new one (asset ID : Unique number)" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\ccRenameReplace.py", - "sourcetype": "file", - "tags": ["cleanup", "rename", "ui"], - "title": "Renamer", - "tooltip": "Rename UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\renameShapesToTransform.py", - "sourcetype": "file", - "tags": ["cleanup", "renameShapesToTransform"], - "title": "# Rename Shapes To Transform", - "tooltip": "" - } - ] - } -] diff --git a/openpype/hosts/maya/api/menu_backup.json b/openpype/hosts/maya/api/menu_backup.json deleted file mode 100644 index e2a558aedc..0000000000 --- a/openpype/hosts/maya/api/menu_backup.json +++ /dev/null @@ -1,1567 +0,0 @@ -[ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\save_scene_incremental.py", - "sourcetype": "file", - "title": "Version Up", - "tooltip": "Incremental save with a specific format" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\show_current_scene_in_explorer.py", - "sourcetype": "file", - "title": "Explore current scene..", - "tooltip": "Show current scene in Explorer" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\avalon\\launch_manager.py", - "sourcetype": "file", - "title": "Project Manager", - "tooltip": "Add assets to the project" - }, - { - "type": "separator" - }, - { - "type": "menu", - "title": "Modeling", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\duplicate_normalized.py", - "sourcetype": "file", - "tags": ["modeling", "duplicate", "normalized"], - "title": "Duplicate Normalized", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\transferUVs.py", - "sourcetype": "file", - "tags": ["modeling", "transfer", "uv"], - "title": "Transfer UVs", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\mirrorSymmetry.py", - "sourcetype": "file", - "tags": ["modeling", "mirror", "symmetry"], - "title": "Mirror Symmetry", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\selectOutlineUI.py", - "sourcetype": "file", - "tags": ["modeling", "select", "outline", "ui"], - "title": "Select Outline UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polyDeleteOtherUVSets.py", - "sourcetype": "file", - "tags": ["modeling", "polygon", "uvset", "delete"], - "title": "Polygon Delete Other UV Sets", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polyCombineQuick.py", - "sourcetype": "file", - "tags": ["modeling", "combine", "polygon", "quick"], - "title": "Polygon Combine Quick", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\separateMeshPerShader.py", - "sourcetype": "file", - "tags": ["modeling", "separateMeshPerShader"], - "title": "Separate Mesh Per Shader", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polyDetachSeparate.py", - "sourcetype": "file", - "tags": ["modeling", "poly", "detach", "separate"], - "title": "Polygon Detach and Separate", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polyRelaxVerts.py", - "sourcetype": "file", - "tags": ["modeling", "relax", "verts"], - "title": "Polygon Relax Vertices", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\polySelectEveryNthEdgeUI.py", - "sourcetype": "file", - "tags": ["modeling", "select", "nth", "edge", "ui"], - "title": "Select Every Nth Edge" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\modeling\\djPFXUVs.py", - "sourcetype": "file", - "tags": ["modeling", "djPFX", "UVs"], - "title": "dj PFX UVs", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Rigging", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\addCurveBetween.py", - "sourcetype": "file", - "tags": ["rigging", "addCurveBetween", "file"], - "title": "Add Curve Between" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\averageSkinWeights.py", - "sourcetype": "file", - "tags": ["rigging", "average", "skin weights", "file"], - "title": "Average Skin Weights" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\cbSmoothSkinWeightUI.py", - "sourcetype": "file", - "tags": ["rigging", "cbSmoothSkinWeightUI", "file"], - "title": "CB Smooth Skin Weight UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\channelBoxManagerUI.py", - "sourcetype": "file", - "tags": ["rigging", "channelBoxManagerUI", "file"], - "title": "Channel Box Manager UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\characterAutorigger.py", - "sourcetype": "file", - "tags": ["rigging", "characterAutorigger", "file"], - "title": "Character Auto Rigger" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\connectUI.py", - "sourcetype": "file", - "tags": ["rigging", "connectUI", "file"], - "title": "Connect UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\copySkinWeightsLocal.py", - "sourcetype": "file", - "tags": ["rigging", "copySkinWeightsLocal", "file"], - "title": "Copy Skin Weights Local" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\createCenterLocator.py", - "sourcetype": "file", - "tags": ["rigging", "createCenterLocator", "file"], - "title": "Create Center Locator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\freezeTransformToGroup.py", - "sourcetype": "file", - "tags": ["rigging", "freezeTransformToGroup", "file"], - "title": "Freeze Transform To Group" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\groupSelected.py", - "sourcetype": "file", - "tags": ["rigging", "groupSelected", "file"], - "title": "Group Selected" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\ikHandlePoleVectorLocator.py", - "sourcetype": "file", - "tags": ["rigging", "ikHandlePoleVectorLocator", "file"], - "title": "IK Handle Pole Vector Locator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\jointOrientUI.py", - "sourcetype": "file", - "tags": ["rigging", "jointOrientUI", "file"], - "title": "Joint Orient UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\jointsOnCurve.py", - "sourcetype": "file", - "tags": ["rigging", "jointsOnCurve", "file"], - "title": "Joints On Curve" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\resetBindSelectedSkinJoints.py", - "sourcetype": "file", - "tags": ["rigging", "resetBindSelectedSkinJoints", "file"], - "title": "Reset Bind Selected Skin Joints" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\selectSkinclusterJointsFromSelectedComponents.py", - "sourcetype": "file", - "tags": [ - "rigging", - "selectSkinclusterJointsFromSelectedComponents", - "file" - ], - "title": "Select Skincluster Joints From Selected Components" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\selectSkinclusterJointsFromSelectedMesh.py", - "sourcetype": "file", - "tags": [ - "rigging", - "selectSkinclusterJointsFromSelectedMesh", - "file" - ], - "title": "Select Skincluster Joints From Selected Mesh" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\setJointLabels.py", - "sourcetype": "file", - "tags": ["rigging", "setJointLabels", "file"], - "title": "Set Joint Labels" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\setJointOrientationFromCurrentRotation.py", - "sourcetype": "file", - "tags": [ - "rigging", - "setJointOrientationFromCurrentRotation", - "file" - ], - "title": "Set Joint Orientation From Current Rotation" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\setSelectedJointsOrientationZero.py", - "sourcetype": "file", - "tags": ["rigging", "setSelectedJointsOrientationZero", "file"], - "title": "Set Selected Joints Orientation Zero" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\mirrorCurveShape.py", - "sourcetype": "file", - "tags": ["rigging", "mirrorCurveShape", "file"], - "title": "Mirror Curve Shape" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\setRotationOrderUI.py", - "sourcetype": "file", - "tags": ["rigging", "setRotationOrderUI", "file"], - "title": "Set Rotation Order UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\paintItNowUI.py", - "sourcetype": "file", - "tags": ["rigging", "paintItNowUI", "file"], - "title": "Paint It Now UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\parentScaleConstraint.py", - "sourcetype": "file", - "tags": ["rigging", "parentScaleConstraint", "file"], - "title": "Parent Scale Constraint" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\quickSetWeightsUI.py", - "sourcetype": "file", - "tags": ["rigging", "quickSetWeightsUI", "file"], - "title": "Quick Set Weights UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\rapidRig.py", - "sourcetype": "file", - "tags": ["rigging", "rapidRig", "file"], - "title": "Rapid Rig" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\regenerate_blendshape_targets.py", - "sourcetype": "file", - "tags": ["rigging", "regenerate_blendshape_targets", "file"], - "title": "Regenerate Blendshape Targets" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\removeRotationAxis.py", - "sourcetype": "file", - "tags": ["rigging", "removeRotationAxis", "file"], - "title": "Remove Rotation Axis" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\resetBindSelectedMeshes.py", - "sourcetype": "file", - "tags": ["rigging", "resetBindSelectedMeshes", "file"], - "title": "Reset Bind Selected Meshes" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\simpleControllerOnSelection.py", - "sourcetype": "file", - "tags": ["rigging", "simpleControllerOnSelection", "file"], - "title": "Simple Controller On Selection" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\simpleControllerOnSelectionHierarchy.py", - "sourcetype": "file", - "tags": [ - "rigging", - "simpleControllerOnSelectionHierarchy", - "file" - ], - "title": "Simple Controller On Selection Hierarchy" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\superRelativeCluster.py", - "sourcetype": "file", - "tags": ["rigging", "superRelativeCluster", "file"], - "title": "Super Relative Cluster" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\tfSmoothSkinWeight.py", - "sourcetype": "file", - "tags": ["rigging", "tfSmoothSkinWeight", "file"], - "title": "TF Smooth Skin Weight" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\toggleIntermediates.py", - "sourcetype": "file", - "tags": ["rigging", "toggleIntermediates", "file"], - "title": "Toggle Intermediates" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\toggleSegmentScaleCompensate.py", - "sourcetype": "file", - "tags": ["rigging", "toggleSegmentScaleCompensate", "file"], - "title": "Toggle Segment Scale Compensate" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\rigging\\toggleSkinclusterDeformNormals.py", - "sourcetype": "file", - "tags": ["rigging", "toggleSkinclusterDeformNormals", "file"], - "title": "Toggle Skincluster Deform Normals" - } - ] - }, - { - "type": "menu", - "title": "Shading", - "items": [ - { - "type": "menu", - "title": "VRay", - "items": [ - { - "type": "action", - "title": "Import Proxies", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayImportProxies.py", - "sourcetype": "file", - "tags": ["shading", "vray", "import", "proxies"], - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "Select All GES", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\selectAllGES.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "select All GES"] - }, - { - "type": "action", - "title": "Select All GES Under Selection", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\selectAllGESUnderSelection.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "select", "all", "GES"] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "Selection To VRay Mesh", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\selectionToVrayMesh.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "selection", "vraymesh"] - }, - { - "type": "action", - "title": "Add VRay Round Edges Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayRoundEdgesAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "round edges", "attribute"] - }, - { - "type": "action", - "title": "Add Gamma", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayAddGamma.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "add gamma"] - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\select_vraymesh_materials_with_unconnected_shader_slots.py", - "sourcetype": "file", - "title": "Select Unconnected Shader Materials", - "tags": [ - "shading", - "vray", - "select", - "vraymesh", - "materials", - "unconnected shader slots" - ], - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayMergeSimilarVRayMeshMaterials.py", - "sourcetype": "file", - "title": "Merge Similar VRay Mesh Materials", - "tags": [ - "shading", - "vray", - "Merge", - "VRayMesh", - "Materials" - ], - "tooltip": "" - }, - { - "type": "action", - "title": "Create Two Sided Material", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayCreate2SidedMtlForSelectedMtlRenamed.py", - "sourcetype": "file", - "tooltip": "Creates two sided material for selected material and renames it", - "tags": ["shading", "vray", "two sided", "material"] - }, - { - "type": "action", - "title": "Create Two Sided Material For Selected", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayCreate2SidedMtlForSelectedMtl.py", - "sourcetype": "file", - "tooltip": "Select material to create a two sided version from it", - "tags": [ - "shading", - "vray", - "Create2SidedMtlForSelectedMtl.py" - ] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "Add OpenSubdiv Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayOpenSubdivAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "add", - "open subdiv", - "attribute" - ] - }, - { - "type": "action", - "title": "Remove OpenSubdiv Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\removeVrayOpenSubdivAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "remove", - "opensubdiv", - "attributee" - ] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "Add Subdivision Attribute", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVraySubdivisionAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "addVraySubdivisionAttribute" - ] - }, - { - "type": "action", - "title": "Remove Subdivision Attribute.py", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\removeVraySubdivisionAttribute.py", - "sourcetype": "file", - "tooltip": "", - "tags": [ - "shading", - "vray", - "remove", - "subdivision", - "attribute" - ] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "Add Vray Object Ids", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayObjectIds.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "add", "object id"] - }, - { - "type": "action", - "title": "Add Vray Material Ids", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\addVrayMaterialIds.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "addVrayMaterialIds.py"] - }, - { - "type": "separator" - }, - { - "type": "action", - "title": "Set Physical DOF Depth", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\vrayPhysicalDOFSetDepth.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "physical", "DOF ", "Depth"] - }, - { - "type": "action", - "title": "Magic Vray Proxy UI", - "command": "$OPENPYPE_SCRIPTS\\shading\\vray\\magicVrayProxyUI.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "magicVrayProxyUI"] - } - ] - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\pyblish\\lighting\\set_filename_prefix.py", - "sourcetype": "file", - "tags": [ - "shading", - "lookdev", - "assign", - "shaders", - "prefix", - "filename", - "render" - ], - "title": "Set filename prefix", - "tooltip": "Set the render file name prefix." - }, - { - "type": "action", - "command": "import mayalookassigner; mayalookassigner.show()", - "sourcetype": "python", - "tags": ["shading", "look", "assign", "shaders", "auto"], - "title": "Look Manager", - "tooltip": "Open the Look Manager UI for look assignment" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\LightLinkUi.py", - "sourcetype": "file", - "tags": ["shading", "light", "link", "ui"], - "title": "Light Link UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\vdviewer_ui.py", - "sourcetype": "file", - "tags": [ - "shading", - "look", - "vray", - "displacement", - "shaders", - "auto" - ], - "title": "VRay Displ Viewer", - "tooltip": "Open the VRay Displacement Viewer, select and control the content of the set" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\setTexturePreviewToCLRImage.py", - "sourcetype": "file", - "tags": ["shading", "CLRImage", "textures", "preview"], - "title": "Set Texture Preview To CLRImage", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fixDefaultShaderSetBehavior.py", - "sourcetype": "file", - "tags": ["shading", "fix", "DefaultShaderSet", "Behavior"], - "title": "Fix Default Shader Set Behavior", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fixSelectedShapesReferenceAssignments.py", - "sourcetype": "file", - "tags": [ - "shading", - "fix", - "Selected", - "Shapes", - "Reference", - "Assignments" - ], - "title": "Fix Shapes Reference Assignments", - "tooltip": "Select shapes to fix the reference assignments" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\selectLambert1Members.py", - "sourcetype": "file", - "tags": ["shading", "selectLambert1Members"], - "title": "Select Lambert1 Members", - "tooltip": "Selects all objects which have the Lambert1 shader assigned" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\selectShapesWithoutShader.py", - "sourcetype": "file", - "tags": ["shading", "selectShapesWithoutShader"], - "title": "Select Shapes Without Shader", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fixRenderLayerOutAdjustmentErrors.py", - "sourcetype": "file", - "tags": ["shading", "fixRenderLayerOutAdjustmentErrors"], - "title": "Fix RenderLayer Out Adjustment Errors", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\shading\\fix_renderlayer_missing_node_override.py", - "sourcetype": "file", - "tags": [ - "shading", - "renderlayer", - "missing", - "reference", - "switch", - "layer" - ], - "title": "Fix RenderLayer Missing Referenced Nodes Overrides", - "tooltip": "" - }, - { - "type": "action", - "title": "Image 2 Tiled EXR", - "command": "$OPENPYPE_SCRIPTS\\shading\\open_img2exr.py", - "sourcetype": "file", - "tooltip": "", - "tags": ["shading", "vray", "exr"] - } - ] - }, - { - "type": "menu", - "title": "Rendering", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\pyblish\\open_deadline_submission_settings.py", - "sourcetype": "file", - "tags": ["settings", "deadline", "globals", "render"], - "title": "DL Submission Settings UI", - "tooltip": "Open the Deadline Submission Settings UI" - } - ] - }, - { - "type": "menu", - "title": "Animation", - "items": [ - { - "type": "menu", - "title": "Attributes", - "tooltip": "", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyValues.py", - "sourcetype": "file", - "tags": ["animation", "copy", "attributes"], - "title": "Copy Values", - "tooltip": "Copy attribute values" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyInConnections.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "connections", - "incoming" - ], - "title": "Copy In Connections", - "tooltip": "Copy incoming connections" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyOutConnections.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "connections", - "out" - ], - "title": "Copy Out Connections", - "tooltip": "Copy outcoming connections" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyTransformLocal.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "local" - ], - "title": "Copy Local Transforms", - "tooltip": "Copy local transforms" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyTransformMatrix.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "matrix" - ], - "title": "Copy Matrix Transforms", - "tooltip": "Copy Matrix transforms" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\copyTransformUI.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "UI" - ], - "title": "Copy Transforms UI", - "tooltip": "Open the Copy Transforms UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\attributes\\simpleCopyUI.py", - "sourcetype": "file", - "tags": [ - "animation", - "copy", - "attributes", - "transforms", - "UI", - "simple" - ], - "title": "Simple Copy UI", - "tooltip": "Open the simple Copy Transforms UI" - } - ] - }, - { - "type": "menu", - "title": "Optimize", - "tooltip": "Optimization scripts", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\optimize\\toggleFreezeHierarchy.py", - "sourcetype": "file", - "tags": ["animation", "hierarchy", "toggle", "freeze"], - "title": "Toggle Freeze Hierarchy", - "tooltip": "Freeze and unfreeze hierarchy" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\animation\\optimize\\toggleParallelNucleus.py", - "sourcetype": "file", - "tags": ["animation", "nucleus", "toggle", "parallel"], - "title": "Toggle Parallel Nucleus", - "tooltip": "Toggle parallel nucleus" - } - ] - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", - "tags": ["animation", "bake", "selection", "worldspace.py"], - "title": "Bake Selected To Worldspace", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\timeStepper.py", - "tags": ["animation", "time", "stepper"], - "title": "Time Stepper", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\capture_ui.py", - "tags": [ - "animation", - "capture", - "ui", - "screen", - "movie", - "image" - ], - "title": "Capture UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\simplePlayblastUI.py", - "tags": ["animation", "simple", "playblast", "ui"], - "title": "Simple Playblast UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\tweenMachineUI.py", - "tags": ["animation", "tween", "machine"], - "title": "Tween Machine UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\selectAllAnimationCurves.py", - "tags": ["animation", "select", "curves"], - "title": "Select All Animation Curves", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\pathAnimation.py", - "tags": ["animation", "path", "along"], - "title": "Path Animation", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\offsetSelectedObjectsUI.py", - "tags": ["animation", "offsetSelectedObjectsUI.py"], - "title": "Offset Selected Objects UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\key_amplifier_ui.py", - "tags": ["animation", "key", "amplifier"], - "title": "Key Amplifier UI", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\anim_scene_optimizer.py", - "tags": ["animation", "anim_scene_optimizer.py"], - "title": "Anim_Scene_Optimizer", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\zvParentMaster.py", - "tags": ["animation", "zvParentMaster.py"], - "title": "ZV Parent Master", - "type": "action" - }, - { - "sourcetype": "file", - "command": "$OPENPYPE_SCRIPTS\\animation\\poseLibrary.py", - "tags": ["animation", "poseLibrary.py"], - "title": "Pose Library", - "type": "action" - } - ] - }, - { - "type": "menu", - "title": "Layout", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\alignDistributeUI.py", - "sourcetype": "file", - "tags": ["layout", "align", "Distribute", "UI"], - "title": "Align Distribute UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\alignSimpleUI.py", - "sourcetype": "file", - "tags": ["layout", "align", "UI", "Simple"], - "title": "Align Simple UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\center_locator.py", - "sourcetype": "file", - "tags": ["layout", "center", "locator"], - "title": "Center Locator", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\average_locator.py", - "sourcetype": "file", - "tags": ["layout", "average", "locator"], - "title": "Average Locator", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\selectWithinProximityUI.py", - "sourcetype": "file", - "tags": ["layout", "select", "proximity", "ui"], - "title": "Select Within Proximity UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\dupCurveUI.py", - "sourcetype": "file", - "tags": ["layout", "Duplicate", "Curve", "UI"], - "title": "Duplicate Curve UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\randomDeselectUI.py", - "sourcetype": "file", - "tags": ["layout", "random", "Deselect", "UI"], - "title": "Random Deselect UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\multiReferencerUI.py", - "sourcetype": "file", - "tags": ["layout", "multi", "reference"], - "title": "Multi Referencer UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\duplicateOffsetUI.py", - "sourcetype": "file", - "tags": ["layout", "duplicate", "offset", "UI"], - "title": "Duplicate Offset UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\spPaint3d.py", - "sourcetype": "file", - "tags": ["layout", "spPaint3d", "paint", "tool"], - "title": "SP Paint 3d", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\randomizeUI.py", - "sourcetype": "file", - "tags": ["layout", "randomize", "UI"], - "title": "Randomize UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\layout\\distributeWithinObjectUI.py", - "sourcetype": "file", - "tags": ["layout", "distribute", "ObjectUI", "within"], - "title": "Distribute Within Object UI", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Particles", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjects.py", - "sourcetype": "file", - "tags": ["particles", "instancerToObjects"], - "title": "Instancer To Objects", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjectsInstances.py", - "sourcetype": "file", - "tags": ["particles", "instancerToObjectsInstances"], - "title": "Instancer To Objects Instances", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\objectsToParticlesAndInstancerCleanSource.py", - "sourcetype": "file", - "tags": [ - "particles", - "objects", - "Particles", - "Instancer", - "Clean", - "Source" - ], - "title": "Objects To Particles & Instancer - Clean Source", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\particleComponentsToLocators.py", - "sourcetype": "file", - "tags": ["particles", "components", "locators"], - "title": "Particle Components To Locators", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\objectsToParticlesAndInstancer.py", - "sourcetype": "file", - "tags": ["particles", "objects", "particles", "instancer"], - "title": "Objects To Particles And Instancer", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\spawnParticlesOnMesh.py", - "sourcetype": "file", - "tags": ["particles", "spawn", "on", "mesh"], - "title": "Spawn Particles On Mesh", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjectsInstancesWithAnimation.py", - "sourcetype": "file", - "tags": [ - "particles", - "instancerToObjectsInstancesWithAnimation" - ], - "title": "Instancer To Objects Instances With Animation", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\objectsToParticles.py", - "sourcetype": "file", - "tags": ["particles", "objectsToParticles"], - "title": "Objects To Particles", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\add_particle_cacheFile_attrs.py", - "sourcetype": "file", - "tags": ["particles", "add_particle_cacheFile_attrs"], - "title": "Add Particle CacheFile Attributes", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\mergeParticleSystems.py", - "sourcetype": "file", - "tags": ["particles", "mergeParticleSystems"], - "title": "Merge Particle Systems", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\particlesToLocators.py", - "sourcetype": "file", - "tags": ["particles", "particlesToLocators"], - "title": "Particles To Locators", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\instancerToObjectsWithAnimation.py", - "sourcetype": "file", - "tags": ["particles", "instancerToObjectsWithAnimation"], - "title": "Instancer To Objects With Animation", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\mayaReplicateHoudiniTool.py", - "sourcetype": "file", - "tags": [ - "particles", - "houdini", - "houdiniTool", - "houdiniEngine" - ], - "title": "Replicate Houdini Tool", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\clearInitialState.py", - "sourcetype": "file", - "tags": ["particles", "clearInitialState"], - "title": "Clear Initial State", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\particles\\killSelectedParticles.py", - "sourcetype": "file", - "tags": ["particles", "killSelectedParticles"], - "title": "Kill Selected Particles", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Yeti", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\yeti\\yeti_rig_manager.py", - "sourcetype": "file", - "tags": ["yeti", "rig", "fur", "manager"], - "title": "Open Yeti Rig Manager", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Cleanup", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\repair_faulty_containers.py", - "sourcetype": "file", - "tags": ["cleanup", "repair", "containers"], - "title": "Find and Repair Containers", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\selectByType.py", - "sourcetype": "file", - "tags": ["cleanup", "selectByType"], - "title": "Select By Type", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\selectIntermediateObjects.py", - "sourcetype": "file", - "tags": ["cleanup", "selectIntermediateObjects"], - "title": "Select Intermediate Objects", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\selectNonUniqueNames.py", - "sourcetype": "file", - "tags": ["cleanup", "select", "non unique", "names"], - "title": "Select Non Unique Names", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeNamespaces.py", - "sourcetype": "file", - "tags": ["cleanup", "remove", "namespaces"], - "title": "Remove Namespaces", - "tooltip": "Remove all namespaces" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\remove_user_defined_attributes.py", - "sourcetype": "file", - "tags": ["cleanup", "remove_user_defined_attributes"], - "title": "Remove User Defined Attributes", - "tooltip": "Remove all user-defined attributes from all nodes" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeUnknownNodes.py", - "sourcetype": "file", - "tags": ["cleanup", "removeUnknownNodes"], - "title": "Remove Unknown Nodes", - "tooltip": "Remove all unknown nodes" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeUnloadedReferences.py", - "sourcetype": "file", - "tags": ["cleanup", "removeUnloadedReferences"], - "title": "Remove Unloaded References", - "tooltip": "Remove all unloaded references" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\removeReferencesFailedEdits.py", - "sourcetype": "file", - "tags": ["cleanup", "removeReferencesFailedEdits"], - "title": "Remove References Failed Edits", - "tooltip": "Remove failed edits for all references" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\remove_unused_looks.py", - "sourcetype": "file", - "tags": ["cleanup", "removeUnusedLooks"], - "title": "Remove Unused Looks", - "tooltip": "Remove all loaded yet unused Avalon look containers" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\deleteGhostIntermediateObjects.py", - "sourcetype": "file", - "tags": ["cleanup", "deleteGhostIntermediateObjects"], - "title": "Delete Ghost Intermediate Objects", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\resetViewportCache.py", - "sourcetype": "file", - "tags": ["cleanup", "reset", "viewport", "cache"], - "title": "Reset Viewport Cache", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\uniqifyNodeNames.py", - "sourcetype": "file", - "tags": ["cleanup", "uniqifyNodeNames"], - "title": "Uniqify Node Names", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\autoRenameFileNodes.py", - "sourcetype": "file", - "tags": ["cleanup", "auto", "rename", "filenodes"], - "title": "Auto Rename File Nodes", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\update_asset_id.py", - "sourcetype": "file", - "tags": ["cleanup", "update", "database", "asset", "id"], - "title": "Update Asset ID", - "tooltip": "Will replace the Colorbleed ID with a new one (asset ID : Unique number)" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\colorbleedRename.py", - "sourcetype": "file", - "tags": ["cleanup", "rename", "ui"], - "title": "Colorbleed Renamer", - "tooltip": "Colorbleed Rename UI" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\renameShapesToTransform.py", - "sourcetype": "file", - "tags": ["cleanup", "renameShapesToTransform"], - "title": "Rename Shapes To Transform", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\reorderUI.py", - "sourcetype": "file", - "tags": ["cleanup", "reorderUI"], - "title": "Reorder UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\cleanup\\pastedCleaner.py", - "sourcetype": "file", - "tags": ["cleanup", "pastedCleaner"], - "title": "Pasted Cleaner", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Others", - "items": [ - { - "type": "menu", - "sourcetype": "file", - "title": "Yeti", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\yeti\\cache_selected_yeti_nodes.py", - "sourcetype": "file", - "tags": ["others", "yeti", "cache", "selected"], - "title": "Cache Selected Yeti Nodes", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "title": "Hair", - "tooltip": "", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\hair\\recolorHairCurrentCurve", - "sourcetype": "file", - "tags": ["others", "selectSoftSelection"], - "title": "Select Soft Selection", - "tooltip": "" - } - ] - }, - { - "type": "menu", - "command": "$OPENPYPE_SCRIPTS\\others\\display", - "sourcetype": "file", - "tags": ["others", "display"], - "title": "Display", - "items": [ - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\display\\wireframeSelectedObjects.py", - "sourcetype": "file", - "tags": ["others", "wireframe", "selected", "objects"], - "title": "Wireframe Selected Objects", - "tooltip": "" - } - ] - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\archiveSceneUI.py", - "sourcetype": "file", - "tags": ["others", "archiveSceneUI"], - "title": "Archive Scene UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\getSimilarMeshes.py", - "sourcetype": "file", - "tags": ["others", "getSimilarMeshes"], - "title": "Get Similar Meshes", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\createBoundingBoxEachSelected.py", - "sourcetype": "file", - "tags": ["others", "createBoundingBoxEachSelected"], - "title": "Create BoundingBox Each Selected", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\curveFromPositionEveryFrame.py", - "sourcetype": "file", - "tags": ["others", "curveFromPositionEveryFrame"], - "title": "Curve From Position", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\instanceLeafSmartTransform.py", - "sourcetype": "file", - "tags": ["others", "instance", "leaf", "smart", "transform"], - "title": "Instance Leaf Smart Transform", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\instanceSmartTransform.py", - "sourcetype": "file", - "tags": ["others", "instance", "smart", "transform"], - "title": "Instance Smart Transform", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\randomizeUVShellsSelectedObjects.py", - "sourcetype": "file", - "tags": ["others", "randomizeUVShellsSelectedObjects"], - "title": "Randomize UV Shells", - "tooltip": "Select objects before running action" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\centerPivotGroup.py", - "sourcetype": "file", - "tags": ["others", "centerPivotGroup"], - "title": "Center Pivot Group", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\locatorsOnSelectedFaces.py", - "sourcetype": "file", - "tags": ["others", "locatorsOnSelectedFaces"], - "title": "Locators On Selected Faces", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\locatorsOnEdgeSelectionPrompt.py", - "sourcetype": "file", - "tags": ["others", "locatorsOnEdgeSelectionPrompt"], - "title": "Locators On Edge Selection Prompt", - "tooltip": "" - }, - { - "type": "separator" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\copyDeformers.py", - "sourcetype": "file", - "tags": ["others", "copyDeformers"], - "title": "Copy Deformers", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\selectInReferenceEditor.py", - "sourcetype": "file", - "tags": ["others", "selectInReferenceEditor"], - "title": "Select In Reference Editor", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\selectConstrainingObject.py", - "sourcetype": "file", - "tags": ["others", "selectConstrainingObject"], - "title": "Select Constraining Object", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\deformerSetRelationsUI.py", - "sourcetype": "file", - "tags": ["others", "deformerSetRelationsUI"], - "title": "Deformer Set Relations UI", - "tooltip": "" - }, - { - "type": "action", - "command": "$OPENPYPE_SCRIPTS\\others\\recreateBaseNodesForAllLatticeNodes.py", - "sourcetype": "file", - "tags": ["others", "recreate", "base", "nodes", "lattice"], - "title": "Recreate Base Nodes For Lattice Nodes", - "tooltip": "" - } - ] - } -] diff --git a/openpype/hosts/maya/api/pipeline.py b/openpype/hosts/maya/api/pipeline.py index 14e8f4eb45..1b3bb9feb3 100644 --- a/openpype/hosts/maya/api/pipeline.py +++ b/openpype/hosts/maya/api/pipeline.py @@ -184,76 +184,6 @@ def uninstall(): menu.uninstall() -def lock(): - """Lock scene - - Add an invisible node to your Maya scene with the name of the - current file, indicating that this file is "locked" and cannot - be modified any further. - - """ - - if not cmds.objExists("lock"): - with lib.maintained_selection(): - cmds.createNode("objectSet", name="lock") - cmds.addAttr("lock", ln="basename", dataType="string") - - # Permanently hide from outliner - cmds.setAttr("lock.verticesOnlySet", True) - - fname = cmds.file(query=True, sceneName=True) - basename = os.path.basename(fname) - cmds.setAttr("lock.basename", basename, type="string") - - -def unlock(): - """Permanently unlock a locked scene - - Doesn't throw an error if scene is already unlocked. - - """ - - try: - cmds.delete("lock") - except ValueError: - pass - - -def is_locked(): - """Query whether current scene is locked""" - fname = cmds.file(query=True, sceneName=True) - basename = os.path.basename(fname) - - if self._ignore_lock: - return False - - try: - return cmds.getAttr("lock.basename") == basename - except ValueError: - return False - - -@contextlib.contextmanager -def lock_ignored(): - """Context manager for temporarily ignoring the lock of a scene - - The purpose of this function is to enable locking a scene and - saving it with the lock still in place. - - Example: - >>> with lock_ignored(): - ... pass # Do things without lock - - """ - - self._ignore_lock = True - - try: - yield - finally: - self._ignore_lock = False - - def parse_container(container): """Return the container node's full container data.