Publish user defined attributes option.

This commit is contained in:
Toke Stuart Jepsen 2023-02-23 11:24:36 +00:00 committed by Milan Kolar
parent f037074747
commit eae25bbf0b
3 changed files with 20 additions and 2 deletions

View file

@ -33,6 +33,7 @@ class CreatePointCache(plugin.Creator):
self.data["refresh"] = False # Default to suspend refresh.
# Add options for custom attributes
self.data["includeUserDefinedAttributes"] = True
self.data["attr"] = ""
self.data["attrPrefix"] = ""

View file

@ -42,3 +42,21 @@ class CollectPointcache(pyblish.api.InstancePlugin):
if proxy_set:
instance.remove(proxy_set)
instance.data["setMembers"].remove(proxy_set)
# Collect user defined attributes.
if not instance.data.get("includeUserDefinedAttributes", False):
return
all_nodes = (
instance.data["setMembers"] + instance.data.get("proxy", [])
)
user_defined_attributes = set()
for node in all_nodes:
attrs = cmds.listAttr(node, userDefined=True) or list()
shapes = cmds.listRelatives(node, shapes=True) or list()
for shape in shapes:
attrs.extend(cmds.listAttr(shape, userDefined=True) or list())
user_defined_attributes.update(attrs)
instance.data["userDefinedAttributes"] = list(user_defined_attributes)

View file

@ -39,8 +39,7 @@ class ExtractAlembic(publish.Extractor):
start = float(instance.data.get("frameStartHandle", 1))
end = float(instance.data.get("frameEndHandle", 1))
attrs = instance.data.get("attr", "").split(";")
attrs = [value for value in attrs if value.strip()]
attrs = instance.data.get("userDefinedAttributes", [])
attrs += ["cbId"]
attr_prefixes = instance.data.get("attrPrefix", "").split(";")