From a72050e71c1de86f7cef5b6707858fdc7bf0c4be Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 20 Jun 2023 17:53:42 +0800 Subject: [PATCH] allows both meshes and groups for assexport --- .../publish/collect_arnold_scene_source.py | 38 +++++++++++++++---- .../publish/extract_arnold_scene_source.py | 4 +- 2 files changed, 32 insertions(+), 10 deletions(-) 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 34db3faa2f..1b8ec27509 100644 --- a/openpype/hosts/maya/plugins/publish/collect_arnold_scene_source.py +++ b/openpype/hosts/maya/plugins/publish/collect_arnold_scene_source.py @@ -23,22 +23,44 @@ class CollectArnoldSceneSource(pyblish.api.InstancePlugin): continue if objset.endswith("content_SET"): members = cmds.ls(members, long=True) + members_list = [] + for member in members: + shape = cmds.listRelatives( + member, shapes=True, fullPath=True) + if not shape: + continue + members_list = members + shape + group_name = "|{}".format(member) + if group_name in members_list: + members_list.remove(group_name) + children = get_all_children(members) + + if members_list: + children.extend(members_list) instance.data["contentMembers"] = children - # TODO: include another instance.data for content members - instance.data["contentMembersTransform"] = members self.log.debug("content members: {}".format(children)) - self.log.debug( - "content members transform : {}".format(members)) + elif objset.endswith("proxy_SET"): proxy_members = cmds.ls(members, long=True) + proxy_list = [] + for proxy in proxy_members: + shape = cmds.listRelatives( + proxy, shapes=True, fullPath=True) + if not shape: + continue + proxy_list = proxy_members + shape + group_name = "|{}".format(proxy) + if group_name in proxy_list: + proxy_list.remove(group_name) + set_members = get_all_children(proxy_members) + if proxy_list: + set_members.extend(proxy_list) + instance.data["proxy"] = set_members - instance.data["proxyTransform"] = proxy_members - # TODO: include another instance.data for proxy self.log.debug("proxy members: {}".format(set_members)) - self.log.debug( - "proxy members transform: {}".format(proxy_members)) + # Use camera in object set if present else default to render globals # camera. diff --git a/openpype/hosts/maya/plugins/publish/extract_arnold_scene_source.py b/openpype/hosts/maya/plugins/publish/extract_arnold_scene_source.py index f49d8ece57..8696f5a94b 100644 --- a/openpype/hosts/maya/plugins/publish/extract_arnold_scene_source.py +++ b/openpype/hosts/maya/plugins/publish/extract_arnold_scene_source.py @@ -72,7 +72,7 @@ class ExtractArnoldSceneSource(publish.Extractor): # TODO: dont use instance.data["contentMembers"] # but use the new instance.data["contentMemberTransforms"] filenames, nodes_by_id = self._extract( - instance.data["contentMembersTransform"], attribute_data, kwargs + instance.data["contentMembers"], attribute_data, kwargs ) if "representations" not in instance.data: @@ -113,7 +113,7 @@ class ExtractArnoldSceneSource(publish.Extractor): # TODO: dont use instance.data["proxy"] # but use the new instance.data["proxyTransforms"] filenames, _ = self._extract( - instance.data["proxyTransform"], attribute_data, kwargs + instance.data["proxy"], attribute_data, kwargs ) representation = {