diff --git a/openpype/hosts/maya/plugins/publish/collect_arnold_scene_source.py b/openpype/hosts/maya/plugins/publish/collect_arnold_scene_source.py index d93811c23e..69a07b4aaf 100644 --- a/openpype/hosts/maya/plugins/publish/collect_arnold_scene_source.py +++ b/openpype/hosts/maya/plugins/publish/collect_arnold_scene_source.py @@ -23,19 +23,9 @@ class CollectArnoldSceneSource(pyblish.api.InstancePlugin): self.log.warning("Skipped empty instance: \"%s\" " % objset) continue if objset.endswith("content_SET"): - children = get_all_children(members) - instance.data["contentMembers"] = children + members - self.log.debug( - "content members: {}".format( - instance.data["contentMembers"] - ) - ) - elif objset.endswith("proxy_SET"): - children = get_all_children(cmds.ls(members, long=True)) - instance.data["proxy"] = children + members - self.log.debug( - "proxy members: {}".format(instance.data["proxy"]) - ) + instance.data["contentMembers"] = self.get_hierarchy(members) + if objset.endswith("content_SET"): + instance.data["proxy"] = self.get_hierarchy(members) # Use camera in object set if present else default to render globals # camera. @@ -54,3 +44,13 @@ class CollectArnoldSceneSource(pyblish.api.InstancePlugin): self.log.debug("No renderable cameras found.") self.log.debug("data: {}".format(instance.data)) + + def get_hierarchy(self, nodes): + """Return nodes with all their children""" + nodes = cmds.ls(nodes, long=True) + if not nodes: + return [] + children = get_all_children(nodes) + # Make sure nodes merged with children only + # contains unique entries + return list(set(nodes + children))