AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO

Mixing helpers should handle linear color picking roles better

Offen
#1,400 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Feature Request help wanted
Vorherrschende Sprache
C++
Sterne
2.1k
Forks
505
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

The MixingHelpers classes in the apphelpers directory are intended to help applications build sensible tools for mixing (that is, choosing or picking) color values via a user interface, for example using RGB or HSV sliders.

The classes are intended to allow applications to provide a color mixing tool that could be used in either the linear working/rendering space or the more perceptually uniform display space. When mixing in display space, the slider response for the RGB sliders can be uniform. This will put middle gray near the middle of the slider. Alternatively, when mixing in the linear working space, the slider response needs to be non-linear in order to put middle gray near the middle of the slider (this is similar to a taper curve used for an audio fader). The MixingHelpers classes provide this functionality.

The non-linear slider behavior is controlled by the MixingColorSpaceManager::isPerceptuallyUniform method (if that returns false, the non-linear taper is activated).

If the color_picking role is defined by the config, the mixing color space is locked to be that role.

In the Sony Imageworks configs and the ACES config, the color_picking role was always set to a video-like space. Hence, isPerceptuallyUniform always returns true if the color_picking role is set.

However, recent discussion in the UX working group has revealed that some users prefer to mix colors in a linear color space such as ACEScg. In those cases, isPerceptuallyUniform should return false so that the non-linear taper may be applied to the sliders.

In order to address this, there needs to be a way to determine if a given color space is linear (and therefore not perceptually uniform). Since that could also be a generally useful feature and also require a certain amount of discussion, a separate issue, #1399, has been created for that task.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne im Verzeichnis apphelpers mit den MixingHelpers-Klassen und MixingColorSpaceManager::isPerceptuallyUniform und lies dann issue #1399 zur vorgeschlagenen Methode, lineare Farbräume zu identifizieren. Erledigt ist die Aufgabe, wenn Rollen zur Farbauswahl einen linearen Farbraum verwenden können, während die nichtlineare Slider-Kennlinie erhalten bleibt, ohne das bestehende Verhalten für wahrnehmungsgleichmäßige Farbräume zu ändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
computer-graphics
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.