From b1f18aab6411cc7d264dfda68f291049750d8682 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 12:56:00 +0200 Subject: [PATCH 01/17] inserted use of lib.get_id, added info logging --- .../plugins/maya/publish/collect_look.py | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/colorbleed/plugins/maya/publish/collect_look.py b/colorbleed/plugins/maya/publish/collect_look.py index 731fd127c8..1fc6dcc8bf 100644 --- a/colorbleed/plugins/maya/publish/collect_look.py +++ b/colorbleed/plugins/maya/publish/collect_look.py @@ -84,7 +84,7 @@ class CollectLook(pyblish.api.InstancePlugin): # Discover related object sets self.log.info("Gathering sets..") - sets = self.gather_sets(instance) + sets = self.gather_sets(cmds.ls(instance, shapes=True)) # Lookup with absolute names (from root namespace) instance_lookup = set([str(x) for x in cmds.ls(instance, long=True)]) @@ -148,21 +148,16 @@ class CollectLook(pyblish.api.InstancePlugin): """ sets = dict() - for node in instance: - related_sets = lib.get_related_sets(node) if not related_sets: continue - self.log.info("Found sets %s for %s", related_sets, node) - for objset in related_sets: if objset in sets: continue - sets[objset] = {"uuid": lib.get_id(objset), - "members": list()} + sets[objset] = {"uuid": lib.get_id(objset), "members": list()} return sets @@ -178,8 +173,8 @@ class CollectLook(pyblish.api.InstancePlugin): for objset, data in sets.items(): if not data['members']: - self.log.debug("Removing redundant set information: " - "%s" % objset) + self.log.info("Removing redundant set information: " + "%s" % objset) sets.pop(objset) return sets @@ -213,8 +208,7 @@ class CollectLook(pyblish.api.InstancePlugin): self.log.error("Node '{}' has no attribute 'cbId'".format(node)) return - member_data = {"name": node, - "uuid": cmds.getAttr("{}.cbId".format(node))} + member_data = {"name": node, "uuid": lib.get_id(node)} # Include components information when components are assigned if components: @@ -242,6 +236,9 @@ class CollectLook(pyblish.api.InstancePlugin): attributes = [] for node in instance: + # get history to ignore original shapes + cmds.listHistory(node) + # Collect changes to "custom" attributes node_attrs = get_look_attrs(node) @@ -251,11 +248,13 @@ class CollectLook(pyblish.api.InstancePlugin): node_attributes = {} for attr in node_attrs: + if not cmds.attributeQuery(attr, node=node, exists=True): + continue attribute = "{}.{}".format(node, attr) node_attributes[attr] = cmds.getAttr(attribute) attributes.append({"name": node, - "uuid": cmds.getAttr("{}.cbId".format(node)), + "uuid": lib.get_id(node), "attributes": node_attributes}) return attributes From e94069ae11c73f3fb8b59d871fb5b74877c91928 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 12:59:58 +0200 Subject: [PATCH 02/17] mayor fixes for plugins --- .../maya/publish/collect_renderlayers.py | 1 + .../plugins/maya/publish/extract_alembic.py | 3 +- .../plugins/maya/publish/extract_animation.py | 6 +- .../maya/publish/validate_frame_range.py | 28 +++----- .../maya/publish/validate_layout_node_ids.py | 5 +- .../publish/validate_layout_shape_node_ids.py | 9 ++- .../validate_layout_unique_node_ids.py | 5 +- .../publish/validate_look_deformed_shapes.py | 12 ++-- .../validate_look_no_default_shaders.py | 34 ++++++---- .../maya/publish/validate_look_sets.py | 62 +++++++++-------- .../maya/publish/validate_rig_controllers.py | 45 +++++++++---- ...alidate_rig_pointcache_related_node_ids.py | 66 +++++++------------ .../publish/collect_assumed_destination.py | 4 ++ maya_environment.bat | 2 +- set_environment.bat | 5 +- 15 files changed, 156 insertions(+), 131 deletions(-) diff --git a/colorbleed/plugins/maya/publish/collect_renderlayers.py b/colorbleed/plugins/maya/publish/collect_renderlayers.py index 92a7595905..aa0bdb58fe 100644 --- a/colorbleed/plugins/maya/publish/collect_renderlayers.py +++ b/colorbleed/plugins/maya/publish/collect_renderlayers.py @@ -12,6 +12,7 @@ class CollectMindbenderMayaRenderlayers(pyblish.api.ContextPlugin): order = pyblish.api.CollectorOrder hosts = ["maya"] label = "Render Layers" + optional = True def process(self, context): diff --git a/colorbleed/plugins/maya/publish/extract_alembic.py b/colorbleed/plugins/maya/publish/extract_alembic.py index 641e4c7d66..cc07051b4a 100644 --- a/colorbleed/plugins/maya/publish/extract_alembic.py +++ b/colorbleed/plugins/maya/publish/extract_alembic.py @@ -16,7 +16,8 @@ class ExtractColorbleedAlembic(colorbleed.api.Extractor): """ label = "Alembic" - families = ["colorbleed.model", "colorbleed.pointcache"] + families = ["colorbleed.model", + "colorbleed.pointcache"] optional = True def process(self, instance): diff --git a/colorbleed/plugins/maya/publish/extract_animation.py b/colorbleed/plugins/maya/publish/extract_animation.py index bb6f7903e5..68ed1763f5 100644 --- a/colorbleed/plugins/maya/publish/extract_animation.py +++ b/colorbleed/plugins/maya/publish/extract_animation.py @@ -58,7 +58,11 @@ class ExtractColorbleedAnimation(colorbleed.api.Extractor): startFrame=start, endFrame=end, **{"step": instance.data.get("step", 1.0), - "attr": ["cbId"]}) + "attr": ["cbId"], + "writeVisibility": True, + "writeCreases": True, + "uvWrite": True, + "selection": True}) if "files" not in instance.data: instance.data["files"] = list() diff --git a/colorbleed/plugins/maya/publish/validate_frame_range.py b/colorbleed/plugins/maya/publish/validate_frame_range.py index bbc3f935aa..0ceb67d398 100644 --- a/colorbleed/plugins/maya/publish/validate_frame_range.py +++ b/colorbleed/plugins/maya/publish/validate_frame_range.py @@ -26,26 +26,16 @@ class ValidateFrameRange(pyblish.api.InstancePlugin): end = instance.data.get("endFrame", None) handles = instance.data.get("handles", None) - # Check if any of the values are present. If not we'll assume the - # current instance does not require any time values. - if all(value is None for value in [start, end, handles]): - self.log.debug("No time values for this instance. " - "(Missing `startFrame`, `endFrame` or `handles`)") - return + # Check if any of the values are present + if any(value is None for value in [start, end]): + raise ValueError("No time values for this instance. " + "(Missing `startFrame` or `endFrame`)") - # If only one of the two raise an error, it will require both. - has_start = int(start is not None) - has_end = int(end is not None) - if has_start + has_end == 1: - raise RuntimeError("Only a start frame or an end frame is provided" - " instead of both.") - - if has_start and has_end: - self.log.info("Comparing start (%s) and end (%s)" % (start, end)) - if start > end: - raise RuntimeError("The start frame is a higher value " - "than the end frame: " - "{0}>{1}".format(start, end)) + self.log.info("Comparing start (%s) and end (%s)" % (start, end)) + if start > end: + raise RuntimeError("The start frame is a higher value " + "than the end frame: " + "{0}>{1}".format(start, end)) if handles is not None: if handles < 0.0: diff --git a/colorbleed/plugins/maya/publish/validate_layout_node_ids.py b/colorbleed/plugins/maya/publish/validate_layout_node_ids.py index 6ea48efa41..99db79419b 100644 --- a/colorbleed/plugins/maya/publish/validate_layout_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_layout_node_ids.py @@ -1,7 +1,6 @@ import pyblish.api import colorbleed.api - -import cbra.utils.maya.node_uuid as id_utils +import colorbleed.maya.lib as lib class ValidateLayoutNodeIds(pyblish.api.InstancePlugin): @@ -29,7 +28,7 @@ class ValidateLayoutNodeIds(pyblish.api.InstancePlugin): invalid = [] for node in non_referenced: - if not id_utils.get_id(node): + if not lib.get_id(node): invalid.append(node) return invalid diff --git a/colorbleed/plugins/maya/publish/validate_layout_shape_node_ids.py b/colorbleed/plugins/maya/publish/validate_layout_shape_node_ids.py index a36be266c6..3987fc0d30 100644 --- a/colorbleed/plugins/maya/publish/validate_layout_shape_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_layout_shape_node_ids.py @@ -2,8 +2,7 @@ from maya import cmds import pyblish.api import colorbleed.api - -import cbra.utils.maya.node_uuid as id_utils +import colorbleed.maya.lib as lib def get_id_from_history(node): @@ -22,7 +21,7 @@ def get_id_from_history(node): similar = cmds.ls(history, exactType=nodeType, long=True) for node in similar: - id = id_utils.get_id(node) + id = lib.get_id(node) if id: return id @@ -76,7 +75,7 @@ class CopyUUIDsFromHistoryAction(pyblish.api.Action): mapping[shape] = id # Add the ids to the nodes - id_utils.add_ids(mapping) + # id_utils.add_ids(mapping) self.log.info("Generated ids on nodes: {0}".format(mapping.values())) @@ -136,7 +135,7 @@ class ValidateLayoutShapeNodeIds(pyblish.api.InstancePlugin): invalid = [] for node in non_referenced: - if not id_utils.get_id(node): + if not lib.get_id(node): invalid.append(node) return invalid diff --git a/colorbleed/plugins/maya/publish/validate_layout_unique_node_ids.py b/colorbleed/plugins/maya/publish/validate_layout_unique_node_ids.py index 6a4e389c98..93653d3620 100644 --- a/colorbleed/plugins/maya/publish/validate_layout_unique_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_layout_unique_node_ids.py @@ -1,7 +1,6 @@ import pyblish.api import colorbleed.api - -import cbra.utils.maya.node_uuid as id_utils +import colorbleed.maya.lib as lib class ValidateLayoutUniqueNodeIds(pyblish.api.InstancePlugin): @@ -28,7 +27,7 @@ class ValidateLayoutUniqueNodeIds(pyblish.api.InstancePlugin): from collections import defaultdict ids = defaultdict(list) for member in members: - id = id_utils.get_id(member) + id = lib.get_id(member) ids[id].append(member) # Skip those without IDs (if everything should have an ID that should diff --git a/colorbleed/plugins/maya/publish/validate_look_deformed_shapes.py b/colorbleed/plugins/maya/publish/validate_look_deformed_shapes.py index b2d400e5ff..1016c972a0 100644 --- a/colorbleed/plugins/maya/publish/validate_look_deformed_shapes.py +++ b/colorbleed/plugins/maya/publish/validate_look_deformed_shapes.py @@ -2,8 +2,9 @@ from maya import cmds import pyblish.api import colorbleed.api +import colorbleed.maya.lib as lib -from cbra.utils.maya.node_uuid import get_id, add_ids +# from cbra.utils.maya.node_uuid import add_ids def get_deformed_history_id_mapping(shapes): @@ -33,7 +34,8 @@ def get_deformed_history_id_mapping(shapes): deformed_shapes = [x for x in deformed_shapes if not is_referenced(x)] # Shapes without id - deformed_shapes_without_id = [x for x in deformed_shapes if not get_id(x)] + deformed_shapes_without_id = [x for x in deformed_shapes + if not lib.get_id(x)] mapping = {} for shape in deformed_shapes_without_id: @@ -45,7 +47,7 @@ def get_deformed_history_id_mapping(shapes): continue for history_shape in history_shapes: - id = get_id(history_shape) + id = lib.get_id(history_shape) if not id: continue @@ -81,11 +83,11 @@ class CopyUUIDsFromHistory(pyblish.api.Action): mapping = get_deformed_history_id_mapping(invalid) for destination, source in mapping.items(): - ids_map[destination] = get_id(source) + ids_map[destination] = lib.get_id(source) if not ids_map: return - add_ids(ids_map) + self.log.info(ids_map) class ValidateLookDeformedShapes(pyblish.api.InstancePlugin): diff --git a/colorbleed/plugins/maya/publish/validate_look_no_default_shaders.py b/colorbleed/plugins/maya/publish/validate_look_no_default_shaders.py index 5fc8ea660f..f2693f6b4c 100644 --- a/colorbleed/plugins/maya/publish/validate_look_no_default_shaders.py +++ b/colorbleed/plugins/maya/publish/validate_look_no_default_shaders.py @@ -28,13 +28,29 @@ class ValidateLookNoDefaultShaders(pyblish.api.InstancePlugin): label = 'Look No Default Shaders' actions = [colorbleed.api.SelectInvalidAction] + def process(self, instance): + """Process all the nodes in the instance""" + + invalid = self.get_invalid(instance) + if invalid: + raise RuntimeError("Invalid node relationships found: " + "{0}".format(invalid)) + @classmethod def get_invalid(cls, instance): + disallowed = ["lambert1", "initialShadingGroup", + "initialParticleSE", "particleCloud1"] + disallowed = set(disallowed) - disallowed = set(["lambert1", - "initialShadingGroup", - "initialParticleSE", - "particleCloud1"]) + # Check if there are any skinClusters present + # If so ensure nodes which are skinned + intermediate = [] + skinclusters = cmds.ls(type="skinCluster") + cls.log.info("Found skinClusters, will skip original shapes") + if skinclusters: + intermediate += cmds.ls(intermediateObjects=True, + shapes=True, + long=True) invalid = set() for node in instance: @@ -48,6 +64,8 @@ class ValidateLookNoDefaultShaders(pyblish.api.InstancePlugin): # Maya. if (cmds.objectType(node, isAType="surfaceShape") and not cmds.ls(object_sets, type="shadingEngine")): + if node in intermediate: + continue cls.log.error("Detected shape without shading engine: " "'{}'".format(node)) invalid.add(node) @@ -64,11 +82,3 @@ class ValidateLookNoDefaultShaders(pyblish.api.InstancePlugin): invalid.add(node) return list(invalid) - - def process(self, instance): - """Process all the nodes in the instance""" - - invalid = self.get_invalid(instance) - if invalid: - raise RuntimeError("Invalid node relationships found: " - "{0}".format(invalid)) diff --git a/colorbleed/plugins/maya/publish/validate_look_sets.py b/colorbleed/plugins/maya/publish/validate_look_sets.py index 95dc266f97..7fcb10c1ec 100644 --- a/colorbleed/plugins/maya/publish/validate_look_sets.py +++ b/colorbleed/plugins/maya/publish/validate_look_sets.py @@ -3,6 +3,8 @@ from colorbleed.maya import lib import pyblish.api import colorbleed.api +from cb.utils.maya import context + class ValidateLookSets(pyblish.api.InstancePlugin): """Validate if any sets are missing from the instance and look data @@ -41,40 +43,44 @@ class ValidateLookSets(pyblish.api.InstancePlugin): "'{}'".format(instance.name)) relationships = instance.data["lookData"]["relationships"] - invalid = [] - for node in instance: - # get the connected objectSets of the node - sets = lib.get_related_sets(node) - if not sets: - continue - # check if any objectSets are not present ion the relationships - missing_sets = [s for s in sets if s not in relationships] - if missing_sets: - # A set of this node is not coming along, this is wrong! - cls.log.error("Missing sets '{}' for node " - "'{}'".format(missing_sets, node)) - invalid.append(node) - continue - - # Ensure the node is in the sets that are collected - for shaderset, data in relationships.items(): - if shaderset not in sets: - # no need to check for a set if the node - # isn't in it anyway + layer = instance.data.get("renderlayer", "defaultRenderLayer") + with context.renderlayer(layer): + for node in instance: + # get the connected objectSets of the node + sets = lib.get_related_sets(node) + if not sets: continue - member_nodes = [member['name'] for member in data['members']] - if node not in member_nodes: - # The node is not found in the collected set - # relationships - cls.log.error("Missing '{}' in collected set node " - "'{}'".format(node, shaderset)) + # check if any objectSets are not present ion the relationships + missing_sets = [s for s in sets if s not in relationships] + if missing_sets: + # A set of this node is not coming along, this is wrong! + cls.log.error("Missing sets '{}' for node " + "'{}'".format(missing_sets, node)) invalid.append(node) - continue + # Ensure the node is in the sets that are collected + for shaderset, data in relationships.items(): + if shaderset not in sets: + # no need to check for a set if the node + # isn't in it anyway + continue + + member_nodes = [member['name'] for member in data['members']] + if node not in member_nodes: + # The node is not found in the collected set + # relationships + cls.log.error("Missing '{}' in collected set node " + "'{}'".format(node, shaderset)) + invalid.append(node) + + continue + return invalid - + @classmethod + def repair(cls, context, instance): + pass diff --git a/colorbleed/plugins/maya/publish/validate_rig_controllers.py b/colorbleed/plugins/maya/publish/validate_rig_controllers.py index 9b066f6351..373ec9ccbb 100644 --- a/colorbleed/plugins/maya/publish/validate_rig_controllers.py +++ b/colorbleed/plugins/maya/publish/validate_rig_controllers.py @@ -16,11 +16,20 @@ class ValidateRigControllers(pyblish.api.InstancePlugin): label = "Rig Controllers" hosts = ["maya"] families = ["colorbleed.rig"] - actions = [colorbleed.api.RepairAction] + actions = [colorbleed.api.RepairAction, + colorbleed.api.SelectInvalidAction] def process(self, instance): + invalid = self.get_invalid(instance) + if invalid: + raise RuntimeError('{} failed, see log ' + 'information'.format(self.label)) + + @classmethod + def get_invalid(cls, instance): error = False + invalid = [] is_keyed = list() not_locked = list() is_offset = list() @@ -29,7 +38,7 @@ class ValidateRigControllers(pyblish.api.InstancePlugin): assert controls, "Must have controls in rig controls_SET" for control in controls: - valid_keyed = self.validate_keyed_state(control) + valid_keyed = cls.validate_keyed_state(control) if not valid_keyed: is_keyed.append(control) @@ -39,30 +48,34 @@ class ValidateRigControllers(pyblish.api.InstancePlugin): if not locked: not_locked.append(control) - valid_transforms = self.validate_transforms(control) + valid_transforms = cls.validate_transforms(control) if not valid_transforms: is_offset.append(control) if is_keyed: - self.log.error("No controls can be keyes. Failed :\n" + cls.log.error("No controls can be keyes. Failed :\n" "%s" % is_keyed) error = True if is_offset: - self.log.error("All controls default transformation values. " + cls.log.error("All controls default transformation values. " "Failed :\n%s" % is_offset) error = True if not_locked: - self.log.error("All controls must have visibility " + cls.log.error("All controls must have visibility " "attribute locked. Failed :\n" "%s" % not_locked) error = True if error: - raise RuntimeError("Invalid rig controllers. See log for details.") + invalid = is_keyed + not_locked + is_offset + cls.log.error("Invalid rig controllers. See log for details.") - def validate_transforms(self, control): + return invalid + + @staticmethod + def validate_transforms(control): tolerance = 1e-30 identity = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, @@ -71,10 +84,12 @@ class ValidateRigControllers(pyblish.api.InstancePlugin): matrix = cmds.xform(control, query=True, matrix=True, objectSpace=True) if not all(abs(x - y) < tolerance for x, y in zip(identity, matrix)): + log.error("%s matrix : %s" % (control, matrix)) return False return True - def validate_keyed_state(self, control): + @staticmethod + def validate_keyed_state(control): """Check if the control has an animation curve attached Args: control: @@ -90,13 +105,21 @@ class ValidateRigControllers(pyblish.api.InstancePlugin): @classmethod def repair(cls, instance): + identity = [1.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0] + # lock all controllers in controls_SET controls = cmds.sets("controls_SET", query=True) for control in controls: + log.info("Repairing visibility") attr = "{}.visibility".format(control) locked = cmds.getAttr(attr, lock=True) if not locked: - print("Locking visibility for %s" % control) + log.info("Locking visibility for %s" % control) cmds.setAttr(attr, lock=True) - continue + log.info("Repairing matrix") + if not cls.validate_transforms(control): + cmds.xform(control, matrix=identity, objectSpace=True) diff --git a/colorbleed/plugins/maya/publish/validate_rig_pointcache_related_node_ids.py b/colorbleed/plugins/maya/publish/validate_rig_pointcache_related_node_ids.py index 8564752cf7..68894b2063 100644 --- a/colorbleed/plugins/maya/publish/validate_rig_pointcache_related_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_rig_pointcache_related_node_ids.py @@ -2,9 +2,8 @@ import maya.cmds as cmds import pyblish.api import colorbleed.api - -import cbra.lib -import cbra.utils.maya.node_uuid as id_utils +import colorbleed.maya.lib as lib +import avalon.io as io class ValidateRigPointcacheRelatedNodeIds(pyblish.api.InstancePlugin): @@ -27,6 +26,17 @@ class ValidateRigPointcacheRelatedNodeIds(pyblish.api.InstancePlugin): ignore_types = ("constraint",) + def process(self, instance): + """Process all meshes""" + + print ">>>", instance.data + + # Ensure all nodes have a cbId + invalid = self.get_invalid(instance) + if invalid: + raise RuntimeError("Nodes found with non-related " + "asset IDs: {0}".format(invalid)) + @classmethod def get_pointcache_nodes(cls, instance): @@ -57,49 +67,23 @@ class ValidateRigPointcacheRelatedNodeIds(pyblish.api.InstancePlugin): @classmethod def get_invalid(cls, instance): - # Get a full context from the instance context - context = instance.data['instanceContext'] - item_path = context['itemPath'] - context = cbra.lib.parse_context(item_path) + invalid_items = [] + + # get asset id nodes = cls.get_pointcache_nodes(instance) - - def to_item(id): - """Split the item id part from a node id""" - return id.rsplit(":", 1)[0] - - # Generate a fake id in the current context to retrieve the item - # id prefix that should match with ids on the nodes - fake_node = "__node__" - ids = id_utils.generate_ids(context, [fake_node]) - id = ids[fake_node] - item_prefix = to_item(id) - - # Parse the invalid - invalid = list() - invalid_items = set() - for member in nodes: - member_id = id_utils.get_id(member) - - # skip nodes without ids - if not member_id: - continue - - if not member_id.startswith(item_prefix): - invalid.append(member) - invalid_items.add(to_item(member_id)) + for node in nodes: + node_id = lib.get_id(node) + if not node_id: + invalid_items.append(node) # Log invalid item ids if invalid_items: for item_id in sorted(invalid_items): cls.log.warning("Found invalid item id: {0}".format(item_id)) - return invalid + return invalid_items - def process(self, instance): - """Process all meshes""" - - # Ensure all nodes have a cbId - invalid = self.get_invalid(instance) - if invalid: - raise RuntimeError("Nodes found with non-related " - "asset IDs: {0}".format(invalid)) + @staticmethod + def to_item(id): + """Split the item id part from a node id""" + return id.rsplit(":", 1)[0] diff --git a/colorbleed/plugins/publish/collect_assumed_destination.py b/colorbleed/plugins/publish/collect_assumed_destination.py index a853499d67..d57039e8fb 100644 --- a/colorbleed/plugins/publish/collect_assumed_destination.py +++ b/colorbleed/plugins/publish/collect_assumed_destination.py @@ -76,6 +76,9 @@ class CollectAssumedDestination(pyblish.api.InstancePlugin): "name": asset_name, "parent": project["_id"]}) + assert asset, ("No asset found by the name '{}' " + "in project '{}'".format(asset_name, project_name)) + subset = io.find_one({"type": "subset", "name": subset_name, "parent": asset["_id"]}) @@ -87,6 +90,7 @@ class CollectAssumedDestination(pyblish.api.InstancePlugin): version = io.find_one({"type": "version", "parent": subset["_id"]}, sort=[("name", -1)]) + # if there is a subset there ought to be version if version is not None: version_number += version["name"] diff --git a/maya_environment.bat b/maya_environment.bat index a7850a7f07..3a7151ba56 100644 --- a/maya_environment.bat +++ b/maya_environment.bat @@ -13,7 +13,7 @@ if "%CB_MAYA_SHARED%" == "" ( :: For scripts menu tool -set PYTHONPATH=%CB_PIPELINE%\git\scriptsmenu\python;%PYTHONPATH% +set PYTHONPATH=%C:\Users\User\Documents\development\scriptsmenu\python;%PYTHONPATH% set CB_SCRIPTS=%CB_PIPELINE%\git\cbMayaScripts\cbMayaScripts set COLORBLEED_SCRIPTS=%CB_SCRIPTS% diff --git a/set_environment.bat b/set_environment.bat index 6af25d9d6a..75f96c7e17 100644 --- a/set_environment.bat +++ b/set_environment.bat @@ -27,4 +27,7 @@ set PYTHONPATH=%CB_PIPELINE%\git\Qt.py;%PYTHONPATH% ::set PYTHONPATH=%CB_PIPELINE%\git\ftrack-connect\source;%PYTHONPATH% :: FFMPEG -set FFMPEG_PATH=%CB_APP_SHARED%\ffmpeg\bin\ffmpeg.exe \ No newline at end of file +set FFMPEG_PATH=%CB_APP_SHARED%\ffmpeg\bin\ffmpeg.exe + +:: Latest tools - might be unstable +set AVALON_EARLY_ADOPTER=1 \ No newline at end of file From 4a09ffd0f10cf12128bc1b685c02ef5416af8125 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Mon, 11 Sep 2017 15:43:26 +0200 Subject: [PATCH 03/17] Clarify docstring about the IDs being generated on scene save. --- colorbleed/plugins/maya/publish/validate_node_ids.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/colorbleed/plugins/maya/publish/validate_node_ids.py b/colorbleed/plugins/maya/publish/validate_node_ids.py index 733af05d4f..b4a219c2ae 100644 --- a/colorbleed/plugins/maya/publish/validate_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_node_ids.py @@ -5,7 +5,11 @@ from colorbleed.maya import lib class ValidateNodeIDs(pyblish.api.InstancePlugin): - """Validate nodes have a Colorbleed Id + """Validate nodes have a Colorbleed Id. + + When IDs are missing from nodes *save your scene* and they should be + automatically generated because IDs are created on non-referenced nodes + in Maya upon scene save. """ From 98381b177b09aa3e5c1c2fb4e13d831ee105b570 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 16:39:08 +0200 Subject: [PATCH 04/17] added capture gui --- colorbleed/maya/menu.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index 0fb4d6f339..a0ba7724e2 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -1,7 +1,14 @@ [ { "type": "action", - "command": "$COLORBLEED_SCRIPTS\\others\\_save_scene_incremental.py", + "command": "$COLORBLEED_SCRIPTS\\others\\save_scene_incremental.py", + "sourcetype": "file", + "title": "Version Up", + "tooltip": "Incremental save with a specific format" + }, + { + "type": "action", + "command": "$COLORBLEED_SCRIPTS\\animation\\save_scene_incremental.py", "sourcetype": "file", "title": "Version Up", "tooltip": "Incremental save with a specific format" @@ -1029,6 +1036,17 @@ } ] }, + { + "type": "action", + "command": "$COLORBLEED_SCRIPTS\\animation\\capture_ui.py", + "sourcetype": "file", + "tags": [ + "animation", + "capture", "screen", "playblast" + ], + "title": "Capture UI", + "tooltip": "Capture the viewport to the required media format" + }, { "type": "action", "command": "$COLORBLEED_SCRIPTS\\animation\\zvParentMaster.py", From 334860177fda8802014deec4141c598e3eb8d63b Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 17:19:38 +0200 Subject: [PATCH 05/17] added animation scripts --- colorbleed/maya/menu.json | 114 +++++++++++++++++++++++++++++--------- 1 file changed, 89 insertions(+), 25 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index a0ba7724e2..e4f14177d3 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -804,7 +804,7 @@ "auto" ], "title": "Assign lookDefault Shader", - "tooltip": "Assign the latest 'lookDefault' to assets without any lookdev in the scene" + "tooltip": "Assign the latest `lookDefault` to assets without any lookdev in the scene" }, { "type": "action", @@ -1037,48 +1037,112 @@ ] }, { - "type": "action", - "command": "$COLORBLEED_SCRIPTS\\animation\\capture_ui.py", - "sourcetype": "file", + "command": "$COLORBLEED_SCRITPS\\animation\\bakeSelectedToWorldSpace.py", "tags": [ "animation", - "capture", "screen", "playblast" + "bakeSelectedToWorldSpace.py" ], - "title": "Capture UI", - "tooltip": "Capture the viewport to the required media format" + "title": "Bakeselectedtoworldspace.Py", + "type": "file" }, { - "type": "action", - "command": "$COLORBLEED_SCRIPTS\\animation\\zvParentMaster.py", - "sourcetype": "file", + "command": "$COLORBLEED_SCRITPS\\animation\\timeStepper.py", "tags": [ "animation", - "zvParentMaster" + "timeStepper.py" ], - "title": "ZV Parent Master", - "tooltip": "Open ZV Parent M UI" + "title": "Timestepper.Py", + "type": "file" }, { - "type": "action", - "command": "$COLORBLEED_SCRIPTS\\animation\\pathAnimation.py", - "sourcetype": "file", + "command": "$COLORBLEED_SCRITPS\\animation\\capture_ui.py", "tags": [ "animation", - "path" + "capture_ui.py" ], - "title": "Path Animation", - "tooltip": "" + "title": "Capture_Ui.Py", + "type": "file" }, { - "type": "action", - "command": "$COLORBLEED_SCRIPTS\\animation\\timeStepper.py", - "sourcetype": "file", + "command": "$COLORBLEED_SCRITPS\\animation\\tweenMachineUI.py", "tags": [ "animation", - "timeStepper" + "tweenMachineUI.py" ], - "title": "TimeStepper", - "tooltip": "" + "title": "Tweenmachineui.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\selectAllAnimationCurves.py", + "tags": [ + "animation", + "selectAllAnimationCurves.py" + ], + "title": "Selectallanimationcurves.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\simplePlayblastUI.py", + "tags": [ + "animation", + "simplePlayblastUI.py" + ], + "title": "Simpleplayblastui.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\pathAnimation.py", + "tags": [ + "animation", + "pathAnimation.py" + ], + "title": "Pathanimation.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\offsetSelectedObjectsUI.py", + "tags": [ + "animation", + "offsetSelectedObjectsUI.py" + ], + "title": "Offsetselectedobjectsui.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\key_amplifier_ui.py", + "tags": [ + "animation", + "key_amplifier_ui.py" + ], + "title": "Key_Amplifier_Ui.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\anim_scene_optimizer.py", + "tags": [ + "animation", + "anim_scene_optimizer.py" + ], + "title": "Anim_Scene_Optimizer.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\zvParentMaster.py", + "tags": [ + "animation", + "zvParentMaster.py" + ], + "title": "Zvparentmaster.Py", + "type": "file" + }, + { + "command": "$COLORBLEED_SCRITPS\\animation\\poseLibrary.py", + "tags": [ + "animation", + "poseLibrary.py" + ], + "title": "Poselibrary.Py", + "type": "file" } ] }, From f79f6861fd09e1d30d169c095236bf3490842698 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 17:30:40 +0200 Subject: [PATCH 06/17] fixed error in menu item type --- colorbleed/maya/menu.json | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index e4f14177d3..f67680fdb6 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -1037,112 +1037,124 @@ ] }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\bakeSelectedToWorldSpace.py", "tags": [ "animation", "bakeSelectedToWorldSpace.py" ], "title": "Bakeselectedtoworldspace.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\timeStepper.py", "tags": [ "animation", "timeStepper.py" ], "title": "Timestepper.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\capture_ui.py", "tags": [ "animation", "capture_ui.py" ], "title": "Capture_Ui.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\tweenMachineUI.py", "tags": [ "animation", "tweenMachineUI.py" ], "title": "Tweenmachineui.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\selectAllAnimationCurves.py", "tags": [ "animation", "selectAllAnimationCurves.py" ], "title": "Selectallanimationcurves.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\simplePlayblastUI.py", "tags": [ "animation", "simplePlayblastUI.py" ], "title": "Simpleplayblastui.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\pathAnimation.py", "tags": [ "animation", "pathAnimation.py" ], "title": "Pathanimation.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\offsetSelectedObjectsUI.py", "tags": [ "animation", "offsetSelectedObjectsUI.py" ], "title": "Offsetselectedobjectsui.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\key_amplifier_ui.py", "tags": [ "animation", "key_amplifier_ui.py" ], "title": "Key_Amplifier_Ui.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\anim_scene_optimizer.py", "tags": [ "animation", "anim_scene_optimizer.py" ], "title": "Anim_Scene_Optimizer.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\zvParentMaster.py", "tags": [ "animation", "zvParentMaster.py" ], "title": "Zvparentmaster.Py", - "type": "file" + "type": "action" }, { + "sourcetype": "file", "command": "$COLORBLEED_SCRITPS\\animation\\poseLibrary.py", "tags": [ "animation", "poseLibrary.py" ], "title": "Poselibrary.Py", - "type": "file" + "type": "action" } ] }, From f9483892a10fddebe7de6c937d1e1c5e2506a372 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 17:48:05 +0200 Subject: [PATCH 07/17] fixed typo env key --- colorbleed/maya/menu.json | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index f67680fdb6..dfad55f85e 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -1038,122 +1038,122 @@ }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\bakeSelectedToWorldSpace.py", + "command": "COLORBLEED_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", "tags": [ "animation", "bakeSelectedToWorldSpace.py" ], - "title": "Bakeselectedtoworldspace.Py", + "title": "Bakeselectedtoworldspace", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\timeStepper.py", + "command": "COLORBLEED_SCRIPTS\\animation\\timeStepper.py", "tags": [ "animation", "timeStepper.py" ], - "title": "Timestepper.Py", + "title": "Timestepper", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\capture_ui.py", + "command": "COLORBLEED_SCRIPTS\\animation\\capture_ui.py", "tags": [ "animation", "capture_ui.py" ], - "title": "Capture_Ui.Py", + "title": "Capture_Ui", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\tweenMachineUI.py", + "command": "COLORBLEED_SCRIPTS\\animation\\tweenMachineUI.py", "tags": [ "animation", "tweenMachineUI.py" ], - "title": "Tweenmachineui.Py", + "title": "Tweenmachineui", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\selectAllAnimationCurves.py", + "command": "COLORBLEED_SCRIPTS\\animation\\selectAllAnimationCurves.py", "tags": [ "animation", "selectAllAnimationCurves.py" ], - "title": "Selectallanimationcurves.Py", + "title": "Selectallanimationcurves", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\simplePlayblastUI.py", + "command": "COLORBLEED_SCRIPTS\\animation\\simplePlayblastUI.py", "tags": [ "animation", "simplePlayblastUI.py" ], - "title": "Simpleplayblastui.Py", + "title": "Simpleplayblastui", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\pathAnimation.py", + "command": "COLORBLEED_SCRIPTS\\animation\\pathAnimation.py", "tags": [ "animation", "pathAnimation.py" ], - "title": "Pathanimation.Py", + "title": "Pathanimation", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\offsetSelectedObjectsUI.py", + "command": "COLORBLEED_SCRIPTS\\animation\\offsetSelectedObjectsUI.py", "tags": [ "animation", "offsetSelectedObjectsUI.py" ], - "title": "Offsetselectedobjectsui.Py", + "title": "Offsetselectedobjectsui", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\key_amplifier_ui.py", + "command": "COLORBLEED_SCRIPTS\\animation\\key_amplifier_ui.py", "tags": [ "animation", "key_amplifier_ui.py" ], - "title": "Key_Amplifier_Ui.Py", + "title": "Key_Amplifier_Ui", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\anim_scene_optimizer.py", + "command": "COLORBLEED_SCRIPTS\\animation\\anim_scene_optimizer.py", "tags": [ "animation", "anim_scene_optimizer.py" ], - "title": "Anim_Scene_Optimizer.Py", + "title": "Anim_Scene_Optimizer", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\zvParentMaster.py", + "command": "COLORBLEED_SCRIPTS\\animation\\zvParentMaster.py", "tags": [ "animation", "zvParentMaster.py" ], - "title": "Zvparentmaster.Py", + "title": "Zvparentmaster", "type": "action" }, { "sourcetype": "file", - "command": "$COLORBLEED_SCRITPS\\animation\\poseLibrary.py", + "command": "COLORBLEED_SCRIPTS\\animation\\poseLibrary.py", "tags": [ "animation", "poseLibrary.py" ], - "title": "Poselibrary.Py", + "title": "Poselibrary", "type": "action" } ] From 518f8a09ab3599678be500123769d78bb65711a5 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 17:51:30 +0200 Subject: [PATCH 08/17] nice titles --- colorbleed/maya/menu.json | 65 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index dfad55f85e..5e44599215 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -1041,19 +1041,18 @@ "command": "COLORBLEED_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", "tags": [ "animation", - "bakeSelectedToWorldSpace.py" + "bake","selection", "worldspace" ], - "title": "Bakeselectedtoworldspace", + "title": "Bake Selected To Worldspace", "type": "action" }, { "sourcetype": "file", "command": "COLORBLEED_SCRIPTS\\animation\\timeStepper.py", "tags": [ - "animation", - "timeStepper.py" + "animation", "time","stepper" ], - "title": "Timestepper", + "title": "Time Stepper", "type": "action" }, { @@ -1063,27 +1062,7 @@ "animation", "capture_ui.py" ], - "title": "Capture_Ui", - "type": "action" - }, - { - "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\tweenMachineUI.py", - "tags": [ - "animation", - "tweenMachineUI.py" - ], - "title": "Tweenmachineui", - "type": "action" - }, - { - "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\selectAllAnimationCurves.py", - "tags": [ - "animation", - "selectAllAnimationCurves.py" - ], - "title": "Selectallanimationcurves", + "title": "Capture UI", "type": "action" }, { @@ -1093,7 +1072,27 @@ "animation", "simplePlayblastUI.py" ], - "title": "Simpleplayblastui", + "title": "Simple Playblast UI", + "type": "action" + }, + { + "sourcetype": "file", + "command": "COLORBLEED_SCRIPTS\\animation\\tweenMachineUI.py", + "tags": [ + "animation", + "tweenMachineUI.py" + ], + "title": "Tween Machine UI", + "type": "action" + }, + { + "sourcetype": "file", + "command": "COLORBLEED_SCRIPTS\\animation\\selectAllAnimationCurves.py", + "tags": [ + "animation", + "selectAllAnimationCurves.py" + ], + "title": "Select All Animation Curves", "type": "action" }, { @@ -1103,7 +1102,7 @@ "animation", "pathAnimation.py" ], - "title": "Pathanimation", + "title": "Path Animation", "type": "action" }, { @@ -1113,7 +1112,7 @@ "animation", "offsetSelectedObjectsUI.py" ], - "title": "Offsetselectedobjectsui", + "title": "Offset Selected Objects UI", "type": "action" }, { @@ -1121,9 +1120,9 @@ "command": "COLORBLEED_SCRIPTS\\animation\\key_amplifier_ui.py", "tags": [ "animation", - "key_amplifier_ui.py" + "key", "amplifier" ], - "title": "Key_Amplifier_Ui", + "title": "Key Amplifier UI", "type": "action" }, { @@ -1143,7 +1142,7 @@ "animation", "zvParentMaster.py" ], - "title": "Zvparentmaster", + "title": "ZV Parent Master", "type": "action" }, { @@ -1153,7 +1152,7 @@ "animation", "poseLibrary.py" ], - "title": "Poselibrary", + "title": "Pose Library", "type": "action" } ] From 449ed50ba1347c151c52a42b3eac5228e68b0490 Mon Sep 17 00:00:00 2001 From: aardschok Date: Mon, 11 Sep 2017 18:00:42 +0200 Subject: [PATCH 09/17] fixed missing token --- colorbleed/maya/menu.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index 5e44599215..ed403559c3 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -1038,17 +1038,17 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", "tags": [ "animation", - "bake","selection", "worldspace" + "bake","selection", "worldspace.py" ], "title": "Bake Selected To Worldspace", "type": "action" }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\timeStepper.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\timeStepper.py", "tags": [ "animation", "time","stepper" ], @@ -1057,7 +1057,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\capture_ui.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\capture_ui.py", "tags": [ "animation", "capture_ui.py" @@ -1067,7 +1067,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\simplePlayblastUI.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\simplePlayblastUI.py", "tags": [ "animation", "simplePlayblastUI.py" @@ -1077,7 +1077,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\tweenMachineUI.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\tweenMachineUI.py", "tags": [ "animation", "tweenMachineUI.py" @@ -1087,7 +1087,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\selectAllAnimationCurves.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\selectAllAnimationCurves.py", "tags": [ "animation", "selectAllAnimationCurves.py" @@ -1097,7 +1097,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\pathAnimation.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\pathAnimation.py", "tags": [ "animation", "pathAnimation.py" @@ -1107,7 +1107,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\offsetSelectedObjectsUI.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\offsetSelectedObjectsUI.py", "tags": [ "animation", "offsetSelectedObjectsUI.py" @@ -1117,7 +1117,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\key_amplifier_ui.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\key_amplifier_ui.py", "tags": [ "animation", "key", "amplifier" @@ -1127,7 +1127,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\anim_scene_optimizer.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\anim_scene_optimizer.py", "tags": [ "animation", "anim_scene_optimizer.py" @@ -1137,7 +1137,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\zvParentMaster.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\zvParentMaster.py", "tags": [ "animation", "zvParentMaster.py" @@ -1147,7 +1147,7 @@ }, { "sourcetype": "file", - "command": "COLORBLEED_SCRIPTS\\animation\\poseLibrary.py", + "command": "$COLORBLEED_SCRIPTS\\animation\\poseLibrary.py", "tags": [ "animation", "poseLibrary.py" From 197b8edc40200391627e66e89ed617bf610a25ca Mon Sep 17 00:00:00 2001 From: aardschok Date: Tue, 12 Sep 2017 09:55:53 +0200 Subject: [PATCH 10/17] removed double entry, removed projects menu --- colorbleed/maya/menu.json | 106 +------------------------------------- 1 file changed, 1 insertion(+), 105 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index ed403559c3..a40337f05b 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -6,13 +6,6 @@ "title": "Version Up", "tooltip": "Incremental save with a specific format" }, - { - "type": "action", - "command": "$COLORBLEED_SCRIPTS\\animation\\save_scene_incremental.py", - "sourcetype": "file", - "title": "Version Up", - "tooltip": "Incremental save with a specific format" - }, { "type": "separator" }, @@ -1039,10 +1032,7 @@ { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\bakeSelectedToWorldSpace.py", - "tags": [ - "animation", - "bake","selection", "worldspace.py" - ], + "tags": ["animation", "bake","selection", "worldspace.py"], "title": "Bake Selected To Worldspace", "type": "action" }, @@ -1647,100 +1637,6 @@ } ] }, - { - "type": "menu", - "title": "Projects", - "items": [ - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "fifa" - ], - "title": "fifa", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "beakbuds" - ], - "title": "beakbuds", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "redeemer" - ], - "title": "redeemer", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "bjorn" - ], - "title": "bjorn", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "aldi" - ], - "title": "aldi", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "eneco" - ], - "title": "eneco", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "duurzame_verpakking" - ], - "title": "duurzame_verpakking", - "tooltip": "" - }, - { - "type": "action", - "command": "", - "sourcetype": "file", - "tags": [ - "projects", - "bunch" - ], - "title": "bunch", - "tooltip": "" - } - ] - }, { "type": "menu", "title": "Others", From a2bdf93bf78c8d4c398db19a97fc19fad2962279 Mon Sep 17 00:00:00 2001 From: aardschok Date: Tue, 12 Sep 2017 10:01:22 +0200 Subject: [PATCH 11/17] cosmetics --- colorbleed/maya/menu.json | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/colorbleed/maya/menu.json b/colorbleed/maya/menu.json index a40337f05b..776e014e9e 100644 --- a/colorbleed/maya/menu.json +++ b/colorbleed/maya/menu.json @@ -1039,59 +1039,42 @@ { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\timeStepper.py", - "tags": [ - "animation", "time","stepper" - ], + "tags": ["animation", "time","stepper"], "title": "Time Stepper", "type": "action" }, { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\capture_ui.py", - "tags": [ - "animation", - "capture_ui.py" - ], + "tags": ["animation", "capture", "ui", "screen", "movie", "image"], "title": "Capture UI", "type": "action" }, { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\simplePlayblastUI.py", - "tags": [ - "animation", - "simplePlayblastUI.py" - ], + "tags": ["animation", "simple", "playblast", "ui"], "title": "Simple Playblast UI", "type": "action" }, { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\tweenMachineUI.py", - "tags": [ - "animation", - "tweenMachineUI.py" - ], + "tags": ["animation", "tween", "machine"], "title": "Tween Machine UI", "type": "action" }, { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\selectAllAnimationCurves.py", - "tags": [ - "animation", - "selectAllAnimationCurves.py" - ], + "tags": ["animation", "select", "curves"], "title": "Select All Animation Curves", "type": "action" }, { "sourcetype": "file", "command": "$COLORBLEED_SCRIPTS\\animation\\pathAnimation.py", - "tags": [ - "animation", - "pathAnimation.py" - ], + "tags": ["animation", "path", "along"], "title": "Path Animation", "type": "action" }, From 1d7a43e5ca973f83277dc6fe17e6a20b66de696b Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 12 Sep 2017 10:57:00 +0200 Subject: [PATCH 12/17] Add `popup()` function for the menu so we can trigger it to pop-up --- colorbleed/maya/menu.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/colorbleed/maya/menu.py b/colorbleed/maya/menu.py index 330507d90e..236879e061 100644 --- a/colorbleed/maya/menu.py +++ b/colorbleed/maya/menu.py @@ -2,7 +2,7 @@ import sys import os import logging -from avalon.vendor.Qt import QtWidgets, QtCore +from avalon.vendor.Qt import QtWidgets, QtCore, QtGui import maya.cmds as cmds @@ -12,6 +12,15 @@ self._menu = "colorbleed" log = logging.getLogger(__name__) +def _get_menu(): + """Return the menu instance if it currently exists in Maya""" + + app = QtWidgets.QApplication.instance() + widgets = dict((w.objectName(), w) for w in app.allWidgets()) + menu = widgets.get(self._menu) + return menu + + def deferred(): import scriptsmenu.launchformaya as launchformaya @@ -37,12 +46,11 @@ def deferred(): def uninstall(): - log.info("Attempting to uninstall ..") - app = QtWidgets.QApplication.instance() - widgets = dict((w.objectName(), w) for w in app.allWidgets()) - menu = widgets.get(self._menu) + menu = _get_menu() if menu: + log.info("Attempting to uninstall ..") + try: menu.deleteLater() del menu @@ -55,3 +63,12 @@ def install(): uninstall() # Allow time for uninstallation to finish. cmds.evalDeferred(deferred) + + +def popup(): + """Pop-up the existing menu near the mouse cursor""" + menu = _get_menu() + + cursor = QtGui.QCursor() + point = cursor.pos() + menu.exec_(point) From 8c66e4ac06220971ffd84f502c8662e576ed223c Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 12 Sep 2017 11:00:11 +0200 Subject: [PATCH 13/17] Remove environment bat files, they are replaced by the environments in the `.toml` files --- maya_environment.bat | 75 ------------------------------------------ python_environment.bat | 30 ----------------- set_environment.bat | 33 ------------------- 3 files changed, 138 deletions(-) delete mode 100644 maya_environment.bat delete mode 100644 python_environment.bat delete mode 100644 set_environment.bat diff --git a/maya_environment.bat b/maya_environment.bat deleted file mode 100644 index 3a7151ba56..0000000000 --- a/maya_environment.bat +++ /dev/null @@ -1,75 +0,0 @@ -@echo OFF - -echo Entering Maya2016 environment... - -:: Environment: Maya -set CB_MAYA_VERSION=2016 -set CB_MAYA_SHARED=%CB_APP_SHARED%\maya_shared\%CB_MAYA_VERSION% - -if "%CB_MAYA_SHARED%" == "" ( - echo Error: "CB_MAYA_SHARED" not set - goto :eof -) - - -:: For scripts menu tool -set PYTHONPATH=%C:\Users\User\Documents\development\scriptsmenu\python;%PYTHONPATH% -set CB_SCRIPTS=%CB_PIPELINE%\git\cbMayaScripts\cbMayaScripts -set COLORBLEED_SCRIPTS=%CB_SCRIPTS% - -:: Colorbleed Maya -set PYTHONPATH=%CB_PIPELINE%\git\cbMayaScripts;%PYTHONPATH% -set PYTHONPATH=%CB_PIPELINE%\git\inventory\python;%PYTHONPATH% - -:: Maya shared -set MAYA_PLUG_IN_PATH=%CB_MAYA_SHARED%\plugins;%MAYA_PLUGIN_PATH% -set MAYA_SHELF_PATH=%CB_MAYA_SHARED%\prefs\shelves;%MAYA_SHELF_PATH% -set MAYA_SCRIPT_PATH=%CB_MAYA_SHARED%\scripts;%MAYA_SCRIPT_PATH% -set XBMLANGPATH=%CB_MAYA_SHARED%\prefs\icons;%XBMLANGPATH% -set MAYA_PRESET_PATH=%CB_MAYA_SHARED%\prefs\attrPresets;%MAYA_PRESET_PATH% -set PYTHONPATH=%CB_MAYA_SHARED%\scripts;%PYTHONPATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules;%MAYA_MODULE_PATH% - -:: Additional modules -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\mGear_2016;%MAYA_MODULE_PATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\SOuP;%MAYA_MODULE_PATH% -set MAYA_SHELF_PATH=%CB_MAYA_SHARED%\modules\SOuP\shelves;%MAYA_SHELF_PATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\pdipro35c_Maya2016x64;%MAYA_MODULE_PATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\ovdb\maya\maya2016;%MAYA_MODULE_PATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\cvshapeinverter;%MAYA_MODULE_PATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\Toolchefs;%MAYA_MODULE_PATH% -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\Exocortex;%MAYA_MODULE_PATH% - -:: Miarmy -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\Basefount\Miarmy;%MAYA_MODULE_PATH% -set PATH=%CB_MAYA_SHARED%\modules\Basefount\Miarmy\bin;%PATH% -set VRAY_PLUGINS_x64=%CB_MAYA_SHARED%\modules\Basefount\Miarmy\bin\vray\vray_3.1_3.3_3.4\Maya2015and2016;%VRAY_PLUGINS_x64%; - -:: Yeti -set MAYA_MODULE_PATH=%CB_MAYA_SHARED%\modules\Yeti-v2.1.5_Maya2016-windows64;%MAYA_MODULE_PATH% -set PATH=%CB_MAYA_SHARED%\modules\Yeti-v2.1.5_Maya2016-windows64\bin;%PATH%; -set VRAY_PLUGINS_x64=%CB_MAYA_SHARED%\modules\Yeti-v2.1.5_Maya2016-windows64\bin;%VRAY_PLUGINS_x64%; -set VRAY_FOR_MAYA2016_PLUGINS_x64=%CB_MAYA_SHARED%\modules\Yeti-v2.1.5_Maya2016-windows64\bin;%VRAY_FOR_MAYA2016_PLUGINS_x64%; -set REDSHIFT_MAYAEXTENSIONSPATH=%CB_MAYA_SHARED%\modules\Yeti-v2.1.5_Maya2016-windows64\plug-ins;%REDSHIFT_MAYAEXTENSIONSPATH% -set peregrinel_LICENSE=5053@CBserver - -:: maya-capture -set PYTHONPATH=%CB_PIPELINE%\git\maya-capture;%PYTHONPATH% -set PYTHONPATH=%CB_PIPELINE%\git\maya-capture-gui;%PYTHONPATH% -set PYTHONPATH=%CB_PIPELINE%\git\maya-capture-gui-cb;%PYTHONPATH% - -:: maya-matrix-deform -set PYTHONPATH=%CB_PIPELINE%\git\maya-matrix-deformers;%PYTHONPATH% -set MAYA_PLUG_IN_PATH=%CB_PIPELINE%\git\maya-matrix-deformers\plugin;%MAYA_PLUG_IN_PATH% - -:: rapid-rig -set XBMLANGPATH=%CB_MAYA_SHARED%\scripts\RapidRig_Modular_V02;%XBMLANGPATH% -set MAYA_SCRIPT_PATH=%CB_MAYA_SHARED%\scripts\RapidRig_Modular_V02;%MAYA_SCRIPT_PATH% - - -:: Fix Maya Playblast Color Management depth -set MAYA_FLOATING_POINT_RT_PLAYBLAST=1 - - -:: Fix V-ray forcing affinity to 100% -set VRAY_USE_THREAD_AFFINITY=0 \ No newline at end of file diff --git a/python_environment.bat b/python_environment.bat deleted file mode 100644 index 50fafd391c..0000000000 --- a/python_environment.bat +++ /dev/null @@ -1,30 +0,0 @@ -@echo OFF -echo Entering Python environment... - -set CB_PYTHON_VERSION=2.7 - -where /Q python.exe -if ERRORLEVEL 1 ( - if EXIST C:\Python27\python.exe ( - echo Adding C:\Python27 to PATH - set "PATH=%PATH%;C:\Python27" - goto:has-python - ) else ( - echo Adding embedded python (pipeline) - set "PATH=%PATH%;%CB_APP_SHARED%\python\standalone\%CB_PYTHON_VERSION%\bin" - goto:has-python - ) -) -:has-python - -:: Python universal (non-compiled) -set PYTHONPATH=%PYTHONPATH%;%CB_APP_SHARED%\python\universal\site-packages - -:: Python version/windows-specific -:: set PYTHONPATH=%PYTHONPATH%;%CB_APP_SHARED%\python\win\%CB_PYTHON_VERSION% - -:: Python standalone (compiled to version) -if NOT "%CB_PYTHON_STANDALONE%" == "0" ( - echo Entering Python Standalone environment... - set PYTHONPATH=%PYTHONPATH%;%CB_APP_SHARED%\python\standalone\%CB_PYTHON_VERSION%\site-packages -) diff --git a/set_environment.bat b/set_environment.bat deleted file mode 100644 index 75f96c7e17..0000000000 --- a/set_environment.bat +++ /dev/null @@ -1,33 +0,0 @@ -@echo off -echo Entering pipeline (raw development) environment... - -:: Initialize environment -set CB_PIPELINE=P:\pipeline\dev - -set CB_APP_SHARED=%CB_PIPELINE%\apps - -if "%CB_APP_SHARED%" == "" ( - echo Error: "CB_APP_SHARED" not set - goto :eof -) - -echo setting STORAGE.. -set STORAGE=P: - -:: Core -echo Add cb core.. -set PYTHONPATH=%CB_PIPELINE%\git\cb;%PYTHONPATH% -set PYTHONPATH=%CB_PIPELINE%\git\cbra;%PYTHONPATH% - -:: Extra -set PYTHONPATH=%CB_PIPELINE%\git\pyseq;%PYTHONPATH% -set PYTHONPATH=%CB_PIPELINE%\git\Qt.py;%PYTHONPATH% - -:: Ftrack-connect -::set PYTHONPATH=%CB_PIPELINE%\git\ftrack-connect\source;%PYTHONPATH% - -:: FFMPEG -set FFMPEG_PATH=%CB_APP_SHARED%\ffmpeg\bin\ffmpeg.exe - -:: Latest tools - might be unstable -set AVALON_EARLY_ADOPTER=1 \ No newline at end of file From 69dca8754a9f6841420dc28b8e7a826cf88b8436 Mon Sep 17 00:00:00 2001 From: aardschok Date: Tue, 12 Sep 2017 11:27:56 +0200 Subject: [PATCH 14/17] removed optional toggle from model extractors --- colorbleed/plugins/maya/publish/extract_alembic.py | 1 - colorbleed/plugins/maya/publish/extract_model.py | 1 - 2 files changed, 2 deletions(-) diff --git a/colorbleed/plugins/maya/publish/extract_alembic.py b/colorbleed/plugins/maya/publish/extract_alembic.py index cc07051b4a..1d82632e36 100644 --- a/colorbleed/plugins/maya/publish/extract_alembic.py +++ b/colorbleed/plugins/maya/publish/extract_alembic.py @@ -18,7 +18,6 @@ class ExtractColorbleedAlembic(colorbleed.api.Extractor): label = "Alembic" families = ["colorbleed.model", "colorbleed.pointcache"] - optional = True def process(self, instance): diff --git a/colorbleed/plugins/maya/publish/extract_model.py b/colorbleed/plugins/maya/publish/extract_model.py index de9dcfa6f1..e1be53d59a 100644 --- a/colorbleed/plugins/maya/publish/extract_model.py +++ b/colorbleed/plugins/maya/publish/extract_model.py @@ -26,7 +26,6 @@ class ExtractModel(colorbleed.api.Extractor): label = "Model (Maya ASCII)" hosts = ["maya"] families = ["colorbleed.model"] - optional = True def process(self, instance): From 0ac70e23b55fb33ea9b909878cf0587af3040dda Mon Sep 17 00:00:00 2001 From: aardschok Date: Tue, 12 Sep 2017 13:14:09 +0200 Subject: [PATCH 15/17] disabled validator for rigging family --- .../plugins/maya/publish/validate_mesh_no_negative_scale.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorbleed/plugins/maya/publish/validate_mesh_no_negative_scale.py b/colorbleed/plugins/maya/publish/validate_mesh_no_negative_scale.py index 9c032d730a..13e8ea54bc 100644 --- a/colorbleed/plugins/maya/publish/validate_mesh_no_negative_scale.py +++ b/colorbleed/plugins/maya/publish/validate_mesh_no_negative_scale.py @@ -18,7 +18,7 @@ class ValidateMeshNoNegativeScale(pyblish.api.Validator): order = colorbleed.api.ValidateMeshOrder hosts = ['maya'] - families = ['colorbleed.proxy', 'colorbleed.rig', 'colorbleed.model'] + families = ['colorbleed.proxy', 'colorbleed.model'] label = 'Mesh No Negative Scale' actions = [colorbleed.api.SelectInvalidAction] From d190150548d08f59dd18d6082f2c52cf060b6e69 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 12 Sep 2017 14:00:56 +0200 Subject: [PATCH 16/17] Avoid irlBakeLayer warning being spammed a lot --- colorbleed/maya/lib.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/colorbleed/maya/lib.py b/colorbleed/maya/lib.py index 7c6635624e..f5ca8396b5 100644 --- a/colorbleed/maya/lib.py +++ b/colorbleed/maya/lib.py @@ -604,6 +604,13 @@ def get_id_required_nodes(referenced_nodes=False): nodes (set): list of filtered nodes """ + def _node_type_exists(node_type): + try: + cmds.nodeType(node_type, isTypeName=True) + return True + except RuntimeError: + return False + # `readOnly` flag is obsolete as of Maya 2016 therefor we explicitly remove # default nodes and reference nodes camera_shapes = ["frontShape", "sideShape", "topShape", "perspShape"] @@ -616,6 +623,11 @@ def get_id_required_nodes(referenced_nodes=False): ignore |= set(cmds.ls(long=True, defaultNodes=True)) ignore |= set(cmds.ls(camera_shapes, long=True)) + # Remove Turtle from the result of `cmds.ls` if Turtle is loaded + # TODO: This should be a less specific check for a single plug-in. + if _node_type_exists("ilrBakeLayer"): + ignore |= set(cmds.ls(type="ilrBakeLayer", long=True)) + # establish set of nodes to ignore types = ["objectSet", "file", "mesh", "nurbsCurve", "nurbsSurface"] @@ -623,9 +635,6 @@ def get_id_required_nodes(referenced_nodes=False): # directly nodes = cmds.ls(type=types, long=True, noIntermediate=True) - # Remove Turtle from the result of `cmds.ls` - nodes = [n for n in nodes if n not in cmds.ls(type="ilrBakeLayer")] - # The items which need to pass the id to their parent # Add the collected transform to the nodes dag = cmds.ls(nodes, type="dagNode", long=True) # query only dag nodes From 0e619ea377a72d08013954a451b5634b5974888a Mon Sep 17 00:00:00 2001 From: aardschok Date: Tue, 12 Sep 2017 16:55:03 +0200 Subject: [PATCH 17/17] disabled families for future development --- .../maya/create/{colorbleed_groom.py => _colorbleed_groom.py} | 0 .../create/{colorbleed_instancer.py => _colorbleed_instancer.py} | 0 .../maya/create/{colorbleed_layout.py => _colorbleed_layout.py} | 0 .../create/{colorbleed_mayaascii.py => _colorbleed_mayaascii.py} | 0 .../{colorbleed_pointcache.py => _colorbleed_pointcache.py} | 0 .../maya/create/{colorbleed_texture.py => _colorbleed_texture.py} | 0 .../maya/create/{colorbleed_yetifur.py => _colorbleed_yetifur.py} | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename colorbleed/plugins/maya/create/{colorbleed_groom.py => _colorbleed_groom.py} (100%) rename colorbleed/plugins/maya/create/{colorbleed_instancer.py => _colorbleed_instancer.py} (100%) rename colorbleed/plugins/maya/create/{colorbleed_layout.py => _colorbleed_layout.py} (100%) rename colorbleed/plugins/maya/create/{colorbleed_mayaascii.py => _colorbleed_mayaascii.py} (100%) rename colorbleed/plugins/maya/create/{colorbleed_pointcache.py => _colorbleed_pointcache.py} (100%) rename colorbleed/plugins/maya/create/{colorbleed_texture.py => _colorbleed_texture.py} (100%) rename colorbleed/plugins/maya/create/{colorbleed_yetifur.py => _colorbleed_yetifur.py} (100%) diff --git a/colorbleed/plugins/maya/create/colorbleed_groom.py b/colorbleed/plugins/maya/create/_colorbleed_groom.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_groom.py rename to colorbleed/plugins/maya/create/_colorbleed_groom.py diff --git a/colorbleed/plugins/maya/create/colorbleed_instancer.py b/colorbleed/plugins/maya/create/_colorbleed_instancer.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_instancer.py rename to colorbleed/plugins/maya/create/_colorbleed_instancer.py diff --git a/colorbleed/plugins/maya/create/colorbleed_layout.py b/colorbleed/plugins/maya/create/_colorbleed_layout.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_layout.py rename to colorbleed/plugins/maya/create/_colorbleed_layout.py diff --git a/colorbleed/plugins/maya/create/colorbleed_mayaascii.py b/colorbleed/plugins/maya/create/_colorbleed_mayaascii.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_mayaascii.py rename to colorbleed/plugins/maya/create/_colorbleed_mayaascii.py diff --git a/colorbleed/plugins/maya/create/colorbleed_pointcache.py b/colorbleed/plugins/maya/create/_colorbleed_pointcache.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_pointcache.py rename to colorbleed/plugins/maya/create/_colorbleed_pointcache.py diff --git a/colorbleed/plugins/maya/create/colorbleed_texture.py b/colorbleed/plugins/maya/create/_colorbleed_texture.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_texture.py rename to colorbleed/plugins/maya/create/_colorbleed_texture.py diff --git a/colorbleed/plugins/maya/create/colorbleed_yetifur.py b/colorbleed/plugins/maya/create/_colorbleed_yetifur.py similarity index 100% rename from colorbleed/plugins/maya/create/colorbleed_yetifur.py rename to colorbleed/plugins/maya/create/_colorbleed_yetifur.py