diff --git a/openpype/hosts/maya/plugins/publish/collect_xgen.py b/openpype/hosts/maya/plugins/publish/collect_xgen.py index da0549b2d8..a065b6498a 100644 --- a/openpype/hosts/maya/plugins/publish/collect_xgen.py +++ b/openpype/hosts/maya/plugins/publish/collect_xgen.py @@ -30,12 +30,13 @@ class CollectXgen(pyblish.api.InstancePlugin): if data["xgmPalettes"]: data["xgmPalette"] = data["xgmPalettes"][0] - data["xgenConnections"] = {} + data["xgenConnections"] = [] for node in data["xgmSubdPatches"]: - data["xgenConnections"][node] = {} - for attr in ["transform", "geometry"]: - input = get_attribute_input("{}.{}".format(node, attr)) - data["xgenConnections"][node][attr] = input + connected_transform = get_attribute_input( + node + ".transform" + ).split(".")[0] + if connected_transform not in data["xgenConnections"]: + data["xgenConnections"].append(connected_transform) # Collect all files under palette root as resources. import xgenm diff --git a/openpype/hosts/maya/plugins/publish/extract_xgen.py b/openpype/hosts/maya/plugins/publish/extract_xgen.py index fb097ca84a..9b4e5e403d 100644 --- a/openpype/hosts/maya/plugins/publish/extract_xgen.py +++ b/openpype/hosts/maya/plugins/publish/extract_xgen.py @@ -51,11 +51,9 @@ class ExtractXgen(publish.Extractor): with delete_after() as delete_bin: duplicate_nodes = [] # Collect nodes to export. - for _, connections in instance.data["xgenConnections"].items(): - transform_name = connections["transform"].split(".")[0] - + for node in instance.data["xgenConnections"]: # Duplicate_transform subd patch geometry. - duplicate_transform = cmds.duplicate(transform_name)[0] + duplicate_transform = cmds.duplicate(node)[0] delete_bin.append(duplicate_transform) # Discard the children. diff --git a/openpype/hosts/maya/plugins/publish/validate_xgen.py b/openpype/hosts/maya/plugins/publish/validate_xgen.py index 47b24e218c..a44fa56308 100644 --- a/openpype/hosts/maya/plugins/publish/validate_xgen.py +++ b/openpype/hosts/maya/plugins/publish/validate_xgen.py @@ -61,9 +61,7 @@ class ValidateXgen(pyblish.api.InstancePlugin): # We need a namespace else there will be a naming conflict when # extracting because of stripping namespaces and parenting to world. node_names = [instance.data["xgmPalette"]] - for _, connections in instance.data["xgenConnections"].items(): - node_names.append(connections["transform"].split(".")[0]) - + node_names.extend(instance.data["xgenConnections"]) non_namespaced_nodes = [n for n in node_names if ":" not in n] if non_namespaced_nodes: raise PublishValidationError(