New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fusion: new creator for image product type #6057
Fusion: new creator for image product type #6057
Conversation
'image' product type should result in single frame output, 'render' should be more focused on multiple frames.
openpype/settings/entities/schemas/projects_schema/schema_project_fusion.json
Outdated
Show resolved
Hide resolved
I like some of the descriptions, etc. but I don't really see the need for a separate creator for this. There is nothing restricting an I understand the potential need to different the "product types" but having just multiple 'families' being what is essentially the same thing (an image or a sequence of images) is just confusing. We should be slimming down if we can, not be expanding.
Personally I can hardly find the differences really. There has been so many discussions about is this an image or a render? or is it a sequence? or is it a review? a plate? or a clip? Unless we make it so that these are literally aliases for the same publishing family (behavior is the same during publishing) but they only differentiate for the resulting product type in the database (preferably supporting a 'base' type). What this PR does clearly shows the issue that @fabiaserra elaborated on quite a few times. E.g. their publishing logic in Houdini (or wherever?) just had a "family" dropdown menu they could pick. I feel, to some extent, that's what is going on here. Why not allow the saver to just have a drop down menu to decide between being either: "render", "image", "review"? The amount of lines changed just for now ingesting a product that's described as an "image" as opposed to a "render" product shows the root of the issue. This literally is maintenance hell for future updates. So, I really want to ask: Shouldn't we focus on simplifying than enlarging the ecosystem with more code that in the end does the exact same thing? This to me just shows that wherever we use "render" we should now also add "image" to the
Could you describe this - what differs in practice that it warrants this low-level separation in the code base multiplying the maintenance by two? (If not more since now the plugin itself does not dynamically reload potentially making debugging harder) |
…ect_fusion.json Co-authored-by: Jakub Ježek <jakubjezek001@gmail.com>
It might be movie type not only image sequence.
…reator-plugin-single-frame-saver' into enhancement/OP-7470_Fusion-new-creator-plugin-single-frame-saver
Hey @BigRoy I do agree partly with you and there is already created issue for Aliases here #2738. I beileve this PR is more feature request from our client and at the moment we do not have implemented aliases workflow so only way to do this is to create new creator.
Their use case is following: Another noticeable difference is the loader product type column, where it is necessary to distinguish between render and image. Additionally, we are facing the challenge of different file formats for compositors and storyboarders. However, this is a minor issue that can be resolved with OIIO transcoding presets. |
What is the variants enumerator? What types of variants are we referring to here? Again, I understand the need to have different sets of rules, etc. However, how specific you are getting to me it makes much more sense to start saying "consider this to be an image for storyboard" instead of You're trying to make something specific but keeping it to generic for your use case. From Pyblish logic this usually was:
Now it goes through the regular The issue of course is that in OpenPype/AYON the pyblish family == render product - whereas you likely don't want that. Anyway, note that adding this now - and changing it later will be a massive backwards compatible hurden. So I understand it's a feature request, but it's best to already focus on implementing the best we can. Or make it absolutely clear that this is a "HOTFIX" and will be deprecated over time in favor of better workflows. If you set the first family to e.g. |
Since there is not better way to approach this and this is a valid client request, we are not having another option. Also, just to note, this is an approach already inspired from Nuke so this is not so unique solution. |
…ugin-single-frame-saver
I agree with the points @BigRoy is raising although I also understand the approach and need of sometimes creating very specific semantic families that might technically look the same but it makes querying and filtering easier for some workflows (i.e. filtering by family being easier than variant or perhaps tags when they work), but we should implement that through aliases instead of growing the complexity of the "family plugin flow". For Houdini the problem was that there are families being named "arnold_rop", or "karma_rop", which doesn't make any sense and there's already a forum post about and I know @mkolar wants to change too so that's where my generic Houdini publisher addresses so they are all called simply However, we are actually creating Do we allow creating a single frame |
The render family is totally fine to use for single frame outputs, yes.
Honestly - if you want that now.
Each of these then currently - without other changes in OpenPype, behave as Also, filtering in the Loader I believe would filter against all of the families - not just the first. (Not entirely sure about this though). But that'd mean that a side effect of this would currently be that selecting However, nothing is holding us from instead of using
Then filtering to image would show all of the reference/plate/render/review but you can also selectively pick only render or plate, etc. So it would basically be:
|
Where do you define those?
Yeah that would be exactly what we don't want, once filtering by family you'd want JUST that family |
That'd be up to the creator to expose those families. I believe I've implemented this as an example in the USD PR recently via a However since that's data you want to ALWAYS define from the creator and not store in the scene you will need to somehow manage it as transient data that does not persist, e.g. these methods are used to add the data to the instance for the publisher but remove it just before "persisting" to the scene. |
There were objections for setting up this creator as it seems unnecessary. There is currently no other way how to implement customer requirement but this, but in the future 'alias' product types implementation might solve this.
Could you elaborate? The output frame number? The source frame number?
We have this overridden here as well. We don't have it default to the asset frame range. |
I believe the screenshot @kalisp was posting had explained it perfectly. Would that work for you? |
…ugin-single-frame-saver
@Innders Style-wise why is the (+) sign for the Default Variants here further indented to the left (that line and lines below it all are slightly more left than the text field entry just above it. Which I suppose is fine for the entries below, but why is the (+) misaligned which I think is part of the "Default Variants". It seems offset by 4-5 pixels? |
…ugin-single-frame-saver
Settings changed, so addon version should change too. 0.1.2 is in develop
…ame-saver' of https://github.com/ynput/OpenPype into enhancement/OP-7470_Fusion-new-creator-plugin-single-frame-saver # Conflicts: # server_addon/fusion/server/version.py
…ugin-single-frame-saver
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM ;)
Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com>
…ugin-single-frame-saver
There was logic intended to use those, deemed not necessary.
…0_Fusion-new-creator-plugin-single-frame-saver
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good again and lets merge it, right?
…ugin-single-frame-saver
"label": "Create Render Saver", | ||
"is_group": true, | ||
"children": [ | ||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kalisp It seems that the OpenPype settings are lacking the implemented settings for default_frame_range_option
. Should we still support the backwards compatibility?
Changelog Description
In many DCC
render
product type is expected to be sequence of files. This PR adds new explicit creator forimage
product type which is focused on single frame image.Workflows for both product types might be a bit different, this gives artists more granularity to choose better workflow.
Additional info
Original
CreateSaver
name is staying even if more descriptive name (asCreateSequenceSaver
) would be better, but there are existing Settings which translation would bring too much risk to demand this change.Both creators contain same settings schema, but it is expected that they might be separated more in the future.
Testing notes:
Image (saver)
creator and publishRender (saver)
creator - nothing should break.