Merge pull request #4761 from quadproduction/363-fix-studio-openpype-does-not-load-assets-linked-to-the-shot

thank you guys. this is great
This commit is contained in:
Milan Kolar 2023-04-13 22:31:41 +02:00 committed by GitHub
commit d1b59c4aaa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 38 deletions

View file

@ -1216,7 +1216,7 @@ def get_representations(
version_ids=version_ids, version_ids=version_ids,
context_filters=context_filters, context_filters=context_filters,
names_by_version_ids=names_by_version_ids, names_by_version_ids=names_by_version_ids,
standard=True, standard=standard,
archived=archived, archived=archived,
fields=fields fields=fields
) )

View file

@ -234,26 +234,10 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin):
return self.get_load_plugin_options(options) return self.get_load_plugin_options(options)
def cleanup_placeholder(self, placeholder, failed): def cleanup_placeholder(self, placeholder, failed):
"""Hide placeholder, parent them to root """Hide placeholder, add them to placeholder set
add them to placeholder set and register placeholder's parent
to keep placeholder info available for future use
""" """
node = placeholder._scene_identifier node = placeholder._scene_identifier
node_parent = placeholder.data["parent"]
if node_parent:
cmds.setAttr(node + ".parent", node_parent, type="string")
if cmds.getAttr(node + ".index") < 0:
cmds.setAttr(node + ".index", placeholder.data["index"])
holding_sets = cmds.listSets(object=node)
if holding_sets:
for set in holding_sets:
cmds.sets(node, remove=set)
if cmds.listRelatives(node, p=True):
node = cmds.parent(node, world=True)[0]
cmds.sets(node, addElement=PLACEHOLDER_SET) cmds.sets(node, addElement=PLACEHOLDER_SET)
cmds.hide(node) cmds.hide(node)
cmds.setAttr(node + ".hiddenInOutliner", True) cmds.setAttr(node + ".hiddenInOutliner", True)
@ -286,8 +270,6 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin):
elif not cmds.sets(root, q=True): elif not cmds.sets(root, q=True):
return return
if placeholder.data["parent"]:
cmds.parent(nodes_to_parent, placeholder.data["parent"])
# Move loaded nodes to correct index in outliner hierarchy # Move loaded nodes to correct index in outliner hierarchy
placeholder_form = cmds.xform( placeholder_form = cmds.xform(
placeholder.scene_identifier, placeholder.scene_identifier,

View file

@ -158,7 +158,7 @@ class AbstractTemplateBuilder(object):
def linked_asset_docs(self): def linked_asset_docs(self):
if self._linked_asset_docs is None: if self._linked_asset_docs is None:
self._linked_asset_docs = get_linked_assets( self._linked_asset_docs = get_linked_assets(
self.current_asset_doc self.project_name, self.current_asset_doc
) )
return self._linked_asset_docs return self._linked_asset_docs
@ -1151,13 +1151,10 @@ class PlaceholderItem(object):
return self._log return self._log
def __repr__(self): def __repr__(self):
name = None return "< {} {} >".format(
if hasattr("name", self): self.__class__.__name__,
name = self.name self._scene_identifier
if hasattr("_scene_identifier ", self): )
name = self._scene_identifier
return "< {} {} >".format(self.__class__.__name__, name)
@property @property
def order(self): def order(self):
@ -1419,16 +1416,7 @@ class PlaceholderLoadMixin(object):
"family": [placeholder.data["family"]] "family": [placeholder.data["family"]]
} }
elif builder_type != "linked_asset": elif builder_type == "linked_asset":
context_filters = {
"asset": [re.compile(placeholder.data["asset"])],
"subset": [re.compile(placeholder.data["subset"])],
"hierarchy": [re.compile(placeholder.data["hierarchy"])],
"representation": [placeholder.data["representation"]],
"family": [placeholder.data["family"]]
}
else:
asset_regex = re.compile(placeholder.data["asset"]) asset_regex = re.compile(placeholder.data["asset"])
linked_asset_names = [] linked_asset_names = []
for asset_doc in linked_asset_docs: for asset_doc in linked_asset_docs:
@ -1444,6 +1432,15 @@ class PlaceholderLoadMixin(object):
"family": [placeholder.data["family"]], "family": [placeholder.data["family"]],
} }
else:
context_filters = {
"asset": [re.compile(placeholder.data["asset"])],
"subset": [re.compile(placeholder.data["subset"])],
"hierarchy": [re.compile(placeholder.data["hierarchy"])],
"representation": [placeholder.data["representation"]],
"family": [placeholder.data["family"]]
}
return list(get_representations( return list(get_representations(
project_name, project_name,
context_filters=context_filters context_filters=context_filters