OpenPype icon indicating copy to clipboard operation
OpenPype copied to clipboard

Maya: abc options for Pointcache/Animation family - OP-5920

Open tokejepsen opened this issue 2 years ago • 65 comments

Changelog Description

Add all options for alembic extraction on pointcache and animation families.

Testing notes:

  1. Create pointcache and/or animation (by loading a rig) in Maya
  2. Experiment with different publishing options.

Dependencies:

#5297 #5303

tokejepsen avatar Jun 22 '23 07:06 tokejepsen

Are we sure about exposing ALL of this to the artist? I believe @mkolar recommended against this some time ago?

Its been requested by a client.

Additionally, I'd say this effort is better spent doing this against the new publisher too since this will basically break / be lost once that's merged.

I agree, but I dont think we can wait for the merge of the new publisher.

tokejepsen avatar Jun 22 '23 08:06 tokejepsen

It's also backwards incompatible. I care less about existing project settings (an admin can fix that once) but all legacy instances using the old attribute names for write_color_sets or the other legacy attributes will now use the new name and lose their original (possibly tweaked) value of that scene for that option.

I understood from @antirotor that there's a big push to get maya on the new publisher for OP 3.16 so it might be coming soon too?

BigRoy avatar Jun 22 '23 09:06 BigRoy

It's also backwards incompatible. I care less about existing project settings (an admin can fix that once) but all legacy instances using the old attribute names for write_color_sets or the other legacy attributes will now use the new name and lose their original (possibly tweaked) value of that scene for that option.

Cool, we can account for that.

tokejepsen avatar Jun 22 '23 09:06 tokejepsen

Gives me errors for both animation and pointcache instances during publish

@LiborBatek could you run it again and post what the second logging call is? Starts with {"selection"...

tokejepsen avatar Jun 28 '23 07:06 tokejepsen

Ok I hope this one will help you out more

here is pointcache params too (basically untouched)

image

and its content in Outliner image

// pyblish.ExtractThumbnailFromSource : Thumbnail source not filled. Skipping.
b'Processing Extract Pointcache (Alembic)'
# INFO - Extracting pointcache..
// pyblish.ExtractAlembic : Extracting pointcache..
# INFO - {'selection': True, 'eulerFilter': True, 'noNormals': False, 'preRoll': False, 'renderableOnly': False, 'uvWrite': True, 'writeColorSets': False, 'writeFaceSets': False, 'wholeFrameGeo': False, 'worldSpace': True, 'writeVisibility': True, 'writeUVSets': True, 'writeCreases': False, 'dataFormat': 'ogawa', 'step': 1.0, 'stripNamespaces': True, 'verbose': False, 'preRollStartFrame': 0}
// pyblish.ExtractAlembic : {'selection': True, 'eulerFilter': True, 'noNormals': False, 'preRoll': False, 'renderableOnly': False, 'uvWrite': True, 'writeColorSets': False, 'writeFaceSets': False, 'wholeFrameGeo': False, 'worldSpace': True, 'writeVisibility': True, 'writeUVSets': True, 'writeCreases': False, 'dataFormat': 'ogawa', 'step': 1.0, 'stripNamespaces': True, 'verbose': False, 'preRollStartFrame': 0}
# DEBUG - ['|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_shoe', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:hairGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_eye', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:button|rayman_rigMain_01_:buttonShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:NailsGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:innerMouth', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_shoe|rayman_rigMain_01_:Rt_shoeShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:innerMouth|rayman_rigMain_01_:innerMouthShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethLower|rayman_rigMain_01_:teethLowerShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:hairGEO|rayman_rigMain_01_:hairGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:RayGEO|rayman_rigMain_01_:RayGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:NailsGEO|rayman_rigMain_01_:NailsGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_eye', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:EyeLashes|rayman_rigMain_01_:EyeLashesShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_eye|rayman_rigMain_01_:Lf_eyeShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:RayGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:button', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:BrowGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethUpper|rayman_rigMain_01_:teethUpperShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethLower', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_shoe|rayman_rigMain_01_:Lf_shoeShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:EyeLashes', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:GroomGEO|rayman_rigMain_01_:GroomGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:GroomGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethUpper', 'pointcacheMain_proxy_SET', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:BrowGEO|rayman_rigMain_01_:BrowGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_shoe', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_eye|rayman_rigMain_01_:Rt_eyeShape']
// pyblish.ExtractAlembic : ['|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_shoe', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:hairGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_eye', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:button|rayman_rigMain_01_:buttonShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:NailsGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:innerMouth', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_shoe|rayman_rigMain_01_:Rt_shoeShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:innerMouth|rayman_rigMain_01_:innerMouthShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethLower|rayman_rigMain_01_:teethLowerShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:hairGEO|rayman_rigMain_01_:hairGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:RayGEO|rayman_rigMain_01_:RayGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:NailsGEO|rayman_rigMain_01_:NailsGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_eye', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:EyeLashes|rayman_rigMain_01_:EyeLashesShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_eye|rayman_rigMain_01_:Lf_eyeShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:RayGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:button', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:BrowGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethUpper|rayman_rigMain_01_:teethUpperShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethLower', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_shoe|rayman_rigMain_01_:Lf_shoeShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:EyeLashes', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:GroomGEO|rayman_rigMain_01_:GroomGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:GroomGEO', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:teethUpper', 'pointcacheMain_proxy_SET', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:BrowGEO|rayman_rigMain_01_:BrowGEOShape', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Lf_shoe', '|rayman_rigMain_01_:_GRP|rayman_rigMain_01_:ray|rayman_rigMain_01_:ray_DO_NOT_TOUCH|rayman_rigMain_01_:ray_geometry|rayman_rigMain_01_:Rt_eye|rayman_rigMain_01_:Rt_eyeShape']
# # ERROR - Traceback (most recent call last):
#   File "D:\REPO\OpenPype\.venv\lib\site-packages\pyblish\plugin.py", line 522, in __explicit_process
#     runner(*args)
#   File "D:\REPO\OpenPype\openpype\hosts\maya\plugins\publish\extract_pointcache.py", line 99, in process
#   File "D:\REPO\OpenPype\openpype\hosts\maya\api\lib.py", line 1276, in extract_alembic
#     raise TypeError("Alembic option unsupported type: "
# TypeError: Alembic option unsupported type: None (expected (<class 'list'>, <class 'tuple'>))
# Traceback (most recent call last):
#   File "D:\REPO\OpenPype\.venv\lib\site-packages\pyblish\plugin.py", line 522, in __explicit_process
#     runner(*args)
#   File "<string>", line 99, in process
#   File "D:\REPO\OpenPype\openpype\hosts\maya\api\lib.py", line 1276, in extract_alembic
#     raise TypeError("Alembic option unsupported type: "
TypeError: Alembic option unsupported type: None (expected (<class 'list'>, <class 'tuple'>))
// Error: pyblish.plugin : Traceback (most recent call last):
//   File "D:\REPO\OpenPype\.venv\lib\site-packages\pyblish\plugin.py", line 522, in __explicit_process
//     runner(*args)
//   File "D:\REPO\OpenPype\openpype\hosts\maya\plugins\publish\extract_pointcache.py", line 99, in process
//   File "D:\REPO\OpenPype\openpype\hosts\maya\api\lib.py", line 1276, in extract_alembic
//     raise TypeError("Alembic option unsupported type: "
// TypeError: Alembic option unsupported type: None (expected (<class 'list'>, <class 'tuple'>))
// Traceback (most recent call last):
//   File "D:\REPO\OpenPype\.venv\lib\site-packages\pyblish\plugin.py", line 522, in __explicit_process
//     runner(*args)
//   File "<string>", line 99, in process
//   File "D:\REPO\OpenPype\openpype\hosts\maya\api\lib.py", line 1276, in extract_alembic
//     raise TypeError("Alembic option unsupported type: "
// TypeError: Alembic option unsupported type: None (expected (<class 'list'>, <class 'tuple'>))
b'Processing Transcode color spaces'
# DEBUG - No profiles present for color transcode
// pyblish.ExtractOIIOTranscode : No profiles present for color transcode
b'Processing Transcode color spaces'
# DEBUG - No profiles present for color transcode
// pyblish.ExtractOIIOTranscode : No profiles present for color transcode
b'Processing Extract Colorspace data'
# INFO - No representations at instance : `pointcacheMain`
// pyblish.ExtractColorspaceData : No representations at instance : `pointcacheMain`
b'Processing Extract Colorspace data'
# DEBUG - __ ext: `ma`
// pyblish.ExtractColorspaceData : __ ext: `ma`
# DEBUG - Extension 'ma' is not in allowed extensions.
// pyblish.ExtractColorspaceData : Extension 'ma' is not in allowed extensions.

LiborBatek avatar Jun 28 '23 07:06 LiborBatek

@LiborBatek try again now. Should be fixed.

tokejepsen avatar Jun 28 '23 08:06 tokejepsen

Did another test go but the outcome is pretty much the same. I took special care to checkout and Pull the PR precisely, also changed the workfile scene / shot and recreated the pointcache instance from scratch.

Also tested on different geometries....

image

LiborBatek avatar Jun 28 '23 12:06 LiborBatek

@LiborBatek could you try once more?

tokejepsen avatar Jul 03 '23 09:07 tokejepsen

@BigRoy what do you think of the code?

tokejepsen avatar Jul 03 '23 11:07 tokejepsen

@BigRoy I've revised how we expose the attributes to the user, where we can enable attributes to expose along with studio defaults for those attributes. Before I continue with this solution, could you look at the animation family part of this PR and let me know if you think this will work?

tokejepsen avatar Jul 04 '23 09:07 tokejepsen

@BigRoy I've revised how the settings are exposed to the studio admin from the conversation here. While doing it, I found imprinting all the settings attributes on the object set to work better, but instead of exposing the user to the attributes through the channelbox, we hide them and also lock the attributes. This would make the attributes available in a pinch but the user will need to go out of their way (attribute editor and unlock) to edit the values.

tokejepsen avatar Jul 06 '23 16:07 tokejepsen

@BigRoy also I've not completed the PR yet, as I wanted feedback on the direction of the animation family first.

tokejepsen avatar Jul 06 '23 16:07 tokejepsen

@BigRoy when you get a chance, could you review the approach for the animation family?

I've opted for always imprinting all attributes, but hiding (from channelbox) and locking disabled attributes in a post_imprint class method. Think it'll cover what we want, as the exposed (in channelbox and unlocked) attributes are backwards compatible.

tokejepsen avatar Jul 10 '23 06:07 tokejepsen

@BigRoy could you have another look at this now?

tokejepsen avatar Aug 22 '23 15:08 tokejepsen

@tokejepsen should there be more of those attribs? or as they are shown on preceding scrngrabs?

LiborBatek avatar Aug 23 '23 11:08 LiborBatek

@tokejepsen should there be more of those attribs? or as they are shown on preceding scrngrabs?

You can choose which ones you expose to the artist in the settings, these are just there by default

mkolar avatar Aug 24 '23 07:08 mkolar

Just wanted to say about the screenshot in this comment that Start frame for preroll is an odd label. Is it the case that if you put in 5 there that it prerolls FROM frame 5 to the start frame because that how it reads/sounds.

To me Preroll before start frame or just Preroll frames would make more sense as a setting but as seen in my comment here maybe this is just how Alembic export was designed and it is actually intended to actually start all the way from frame five up to the start frame. Which I suppose for simulations make sense in a way.

How about relabeling them:

  • Use preroll start frame
  • Preroll Start Frame

Also, the tooltip can elaborate on how they work in more detail.

BigRoy avatar Sep 01 '23 09:09 BigRoy

Have we considered maybe moving some of these settings from the Creator to the Extractor as get_attribute_defs? Mostly because some of the attributes are so linked to the Alembic extractor even though Animation family might just as well output e.g. USD files?

BigRoy avatar Oct 26 '23 14:10 BigRoy

Have we considered maybe moving some of these settings from the Creator to the Extractor as get_attribute_defs? Mostly because some of the attributes are so linked to the Alembic extractor even though Animation family might just as well output e.g. USD files?

That could be one of the solutions. Knowing that there are so many just on/off options as far as I see, maybe it is a good idea if we can put these attributes into EnumDef with multi-selections? Once the users choose the attributes in the settings, these would be set to True and being added into the playblast options. Something done similarly in tycache ticket in Max too where the tycache attributes selected and they would be part of the channel data to be exported with the caches. https://github.com/ynput/OpenPype/blob/9c7ce75eea842ed60e53b70ba89a466c10049116/openpype/hosts/max/plugins/publish/collect_tycache_attributes.py#L63-L67

moonyuet avatar Oct 26 '23 14:10 moonyuet

Have we considered maybe moving some of these settings from the Creator to the Extractor as get_attribute_defs? Mostly because some of the attributes are so linked to the Alembic extractor even though Animation family might just as well output e.g. USD files?

This absolutely needs to be the case. Those options are not animation specific, they are alembic specific and so should be extractor provided.

maybe it is a good idea if we can put these attributes into EnumDef with multi-selections?

That's also the only way I see this being at least half reasonable to not overwhelm the artist completely. To be honest this is one where we need to go back to the requester and try to convince them it's not a great idea. It completely beats the purpose on consistent publishes and just duplicates what maya does out of the box at the end of the day. If there is such and edge case that I need to be explicit with these settings per product, then the problem might be somewhere else actually

mkolar avatar Nov 09 '23 07:11 mkolar

Hey everyone,

I pushed some changes more in line with the latest comments on the PR: Screencast from 2023-11-13 18-00-52 (trimmed).webm

I'm in the process of figuring out why now the CreateAnimation doesn't show the alembic settings even tho they are defined (and have defaults) in the json(s), any clue as to why is most welcome.

The "Alembic Editable Flags" setting allows the person to select all the attributes that are editable but the person publishing, if they are a boolean they will be available in the "Alembic Export Flags" multi select (that's why the list is shorter in the publish view); any other type will be added below and disabled if not allowed to edit.

Please bear with me while I figure out the rest.

Minkiu avatar Nov 13 '23 18:11 Minkiu

So I finally got it to a working state; could you take it for a spin @LiborBatek ?

I removed some no longer needed keys from the settings, let me know if its bes to keep them around as "deprecated"; but most of them are now in the EnumDef, and correcly passed to the extract_alembic;

next up is: a) Ensure we reset attributes to default in case they become non overrideable later on. b) Look into moving these settings into the Extractor; c) Recreate settings for ayon

Minkiu avatar Nov 15 '23 18:11 Minkiu

I did tested and I can see the refactored settings for both animation and pointcache in OP Settings and

also on pointcache instance (I suppose for animation family its not exposed in maya publisher as before)

image

but when succesfully Published I have just got pointcache product and not animation.

So it seems broken when speaking of animation publish.

I also enclosing my full JSON log file as attachement...for u to check.

publish-report-231117-16-19.json.txt

LiborBatek avatar Nov 17 '23 15:11 LiborBatek

Thanks for testing it @LiborBatek , the animation not showing was a mistake on my part... so please take it for a spin again when you can!

In the last commits I implemented the logic that if an attribute becomes non override-able, we make sure to set it's value to the defaults instead of what the person might have set it in a previous state when it was override-able.

Minkiu avatar Nov 20 '23 17:11 Minkiu

Added AYON settings, I think moving things to the Extractor should be treated as it's own PR since it will trigger changes in more publisers.

If everyone agrees, and code is approved, we could merge this one as is.

I tired to test it on AYON + Maya but the settings do not seem to show in the Publisher, they do show in the backend tho.

Minkiu avatar Nov 21 '23 17:11 Minkiu

@Minkiu could we resolve Libor's issue?

tokejepsen avatar Jan 15 '24 07:01 tokejepsen

I pushed a fix, I believe I deleted my maya install (container) so will take a bit till I can test it myself.

Feel free to give it a go @LiborBatek

Minkiu avatar Jan 15 '24 10:01 Minkiu

Spin it for another test and that error no longer being present, but when closing the Publish window there remains another error msg: (update> This error also pops up when trying to Publish the pointcache)

image

Another issue I guess being some publish instance' s options arent propagated from OP Settings?!

Here are also my OP Settings for pointcache and its Alembic Arguments Overrides image

Not sure if an issue but I cant choose most of them from the list when inspecting pointcache publish instance' s options

From those OP Settings just Write FaceSets being listed and not the rest of the arguments.

Screenshot 2024-01-15 141722

LiborBatek avatar Jan 15 '24 13:01 LiborBatek

Thanks for bearing with me @LiborBatek , it should now be fixed, whenever you have a sec give it another go please

Minkiu avatar Jan 15 '24 18:01 Minkiu