-
Notifications
You must be signed in to change notification settings - Fork 40
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
Prefix/suffix for color space names in the new configs #57
Comments
I agree with everything in the strawman proposal. |
Often the list of colorspace names is large, and some applications may wish to create a hierarchy in the UI (such as expandable tree view or hierarchical menus), so it would be nice if this separator was consistent and parseable to make this list into a tree. Some OpenFX hosts do this with the OfxImageEffectPluginPropGrouping property. |
Thanks for the feedback Francois! Dennis, the |
Thank Doug! Yes, that sounds like it would work. |
I think that what would be useful for discussion is not a full config but a few examples to see how it would look. Generally agreed with the proposal but I'm not sure to understand the rational that makes some stuff suffixes and some other prefixes, for example, why:
Generally, I tend to prefer convention that roughly follows the What - Variant/Method - Version, e.g. For example:
etc... I'm not sure I like this one:
A version qualifier is typically always at the end, why putting it first now? Cheers, Thomas PS:
This is one of my pet peeves, worth putting a context here, e.g. logos or titles, as I spent to much time saying to artists that this is a bad idea to do! |
Thank you for the thoughtful feedback Thomas! I do generally like your "What - Variant/Method - Version" philosophy, although we may have different opinions about which part is the "What"! ;) Here's my rationale for which part was made a prefix vs. suffix.
To summarize, my POV is that the most salient piece of information should preferably be at the start of the name. This strongly influenced my opinion of which part is the "What" according to your terminology. But as I wrote above, my proposal was just a strawman and I'm flexible on any of this if the group feels improvements could be made. And once we see an actual config (or part of one, as you suggest), it may help clarify the trade-offs. |
A long time ago, a config I did was defining the colorspaces roughly as follows (random examples made on the fly): Gamut - sRGB Gamut - DCIP3 People found it simple to understand once they got what specifies a RGB colourspace. Agreed with first and last point, not the Curve one though. When someone uses "Curve", it is a what from something, i.e. the transfer function as defined by sRGB, the gamut as defined by sRGB. I'm not sure whether the underlying implementation, e.g. NamedTransform should influence the name to the point of breaking the naming consistency. If we used a Colorspace, would you have kept it a prefix instead? Texture is an odd one, it is a workflow thing. Cheers, Thomas |
Hello, great to see this discussion. SImple naive example : - !<ColorSpace>
identifier: displaysrgb
name: True-PRO sRGB Display
family: Display
equalitygroup: ""
bitdepth: 32f
description: Convert CIE XYZ (D65 white) to sRGB (piecewise EOTF) Where anyone could just change the name and it wouldn't break anything in any software. This could then open a lot of other discussions (identifiers formats, identifiers conventions, ...) but just wanna know your thought about this ? |
@MrLixm , you raise a valid point. I agree it would be nice if there was a unique ID that is separate from the user interface name. If we were starting from scratch I think your proposal would be fine, but unfortunately this would be a big change for existing apps. Additionally, the UI model for some apps is so thin that it does not really allow for a distinction between the "real value" and "UI value" for parameters, unfortunately. We did introduce some features in OCIO v2, namely the aliases attribute of color spaces and the inactive_colorspaces attribute of configs, that are intended to help cope with the drift of names over time. One advantage of the approach we took is that the complexity is handled within OCIO itself rather than requiring work from each app developer. We have found that it is relatively difficult to get changes made on the application side, typically requiring a period of years. Regarding the concept of a "unique identifier", the name attribute of the config may be combined with the color space name to make a sort of unique identifier, across configs. |
We had a good discussion about this during the last part of the Configs Working Group meeting today. Kevin brought up a good requirement that the name must be meaningful even if the family is not present. I added a new paragraph to capture this in the list of considerations above titled "Clarity in isolation". |
I understand that it may be too late but it would be really nice if compact, unique identifiers could be split from the “display name”, especially if the display name is forced to have extra context to be used in isolation. For instance, some applications will bake the colour space name into file names (substance does this when exporting) and with the current ACES configs this results in some absolutely horrific file names. Plus all those spaces are just bugs waiting to happen. As someone who likes to think he knows a little about colour, but doesn’t know OCIO very well, I find the current naming in the ACES configs extremely confusing - eg which sRGB is actually sRGB? Or are they both the same thing? (I still don’t know the answer to this). |
I will close this one as we implemented the OP suggestions! @MrLixm, @anderslanglands : I collected your feedback in #67. Thanks a lot! |
The basic question I am posing for the group is: Do we want to continue including a prefix (e.g., "Input") in the color space names in the new configs? And if so, should we update what the prefixes are or how they are used?
Color space names
In the OCIO v1 ACES configs, the color space names are prefixed in order to group them into families. Here are some color space names from the ACES 1.2 config:
The prefixes that are used in that config are "ACES", "Input", "Output", "Utility", and "Role". In some cases there are secondary prefixes, such as including the camera vendor under "Input" (e.g., "Input - ARRI") and "Linear" and "Curve" under "Utility" (e.g., "Utility - Curve").
The new ACES Reference config adds the "Display" prefix for use with the new display color spaces added in OCIO v2. For example:
In all cases, the prefix is also used in the
family
attribute of the color space (although there is some minor variation in how that is done, for example, the family for the "Role" prefix falls under the Utility family). Thefamily
attribute is used to generate hierarchical menus for color space names. Some apps have done this in both OCIO v1 and v2 (although v2 makes it easier by providing some convenience functions for it in apphelpers).In the earlier configs, prefixes were added to the color space names for several reasons. First, the official ACES naming, taken from the tag in the CTL files, often (although not always) includes a prefix.
Second, adding a prefix may help organize the long menus encountered in applications that do not use hierarchical menus for color space names. However, it should be noted that the ordering of color spaces presented by OCIO to an application follows the order established by the config author. So the config author should at least control the ordering (unless the application alphabetizes them, which is discouraged).
Display & View names
A related question is: Should a prefix or suffix should be used in the Display and View names?
In the ACES 1.2 config, there is only one display ("ACES") and the views do not have a prefix or suffix. Here are some views:
In the new ACES Reference config, all of the displays have a "Display - " prefix. (In OCIO v2, the display naming should match the display color space naming, so it is a related question.) And the views sometimes have an "Output - " prefix and sometimes an " - ACES 1.x" suffix. For example, here are some displays:
and some views:
Considerations
It's clear that there are pros and cons to prefixing the names. On the one hand, some might argue that the names are too long and unwieldy. On the other hand, I've seen a lot of people saying that they really like the naming conventions pioneered in the ACES configs.
Here are some aspects of the problem to consider:
Versioning
The name for the views, at least, probably needs to indicate the ACES version. Once ACES 2.0 is released, there will likely be a transition period where both ACES 1.x and ACES 2.0 Output Transforms are in some configs. Should this be a prefix or suffix?
Color spaces vs. Displays/Views
The new configs are taking advantage of the OCIO v2 feature of splitting Output Transforms into a Display + View. Therefore, the config currently does not have any color spaces that have an ACES Output Transform baked in. Hence, there are no color spaces that need the "Output" prefix. The Reference config is still using them in the View names, but this may not be necessary. Similarly, per the previous point, the ACES 1.x vs. 2.0 distinction may only be necessary in Views and not in color space names.
Handling of video color spaces
One question often heard from users is around how to deal with sRGB images (or similar). There are two ways of managing these color spaces in the current ACES configs: treat them as display color spaces and simply linearize them; or apply an inverse ACES Output Transform. (Note that in OCIO v2, inverting the Output Transform is better handled using DisplayViewTransform rather than ColorSpaceTransform.) Future ACES configs may provide more options which fall somewhere in between (e.g. inverting some of the view transform but with slope limiting to prevent generating extreme values). But in any case, we may want to see if improvements to the naming could be made to reduce user confusion.
Changes to the Utility color spaces
In the OCIO v1 configs, there was a large (and arguably unwieldy) set of "Utility" color spaces. Taking advantage of OCIO v2 features will change this collection, as would raising the expectations around application UX support. For example, the "curve" color spaces will become Named Transforms. Many of the other color spaces are not needed any more. And the "Utility - Look" spaces will become simply Looks. Should the "Utility" collection be named/organized differently? Should "Texture" (which is now a suffix) become a family name or prefix?.
Duplicate names
The previous and current ACES config had a number of color spaces that show up multiple times under different names. For example, having separate color spaces for linear Rec.709 and linear sRGB rather than one linear Rec.709/sRGB space. Or having the same space both as a display and as a texture input. Should we try to minimize that, or continue with that practice?
Availability of categories
In OCIO v2, color spaces have a
categories
attribute which is intended to be used by applications to filter the list of color spaces presented in menus. This reduces the need for prefixes to organize color spaces.Diversity of implementations
If all applications implemented features OCIO supports such as hierarchical menus and categories, it would eliminate the need to have the prefixes in color space names. Unfortunately, not all applications have done this and so a judgment call needs to be made about how long to bias the UX for everyone in order to work around the limitations of the least capable implementations. An effort is underway to survey how many applications still have not implemented hierarchical menus.
Backwards compatibility
The new color space
aliases
attribute in OCIO v2 may be used to provide backwards compatibility for the earlier names. This will allow old project data (scene files, etc.) that have embedded references to the earlier names to continue to work with the new config.Clarity when used in isolation
In some cases, the color space name will be seen on its own, for example without the context provided by the hierarchical menu organization. For example, many applications (e.g., Nuke, Maya) will store the color space name as a parameter value for a color space conversion. Similarly, the color space name could be a command-line argument for something like oiiotool. The name needs to be sufficiently clear and unambiguous, even in this type of usage (i.e., where the family attribute is not present).
Proposal
An informal discussion during a recent working group meeting indicated that people are leaning towards removing the prefix from the name but keeping it in the family. Just to start the discussion, here is a strawman proposal (I'm still on the fence about a number of these, TBH):
The text was updated successfully, but these errors were encountered: