1 points par GN⁺ 2024-12-30 | 1 commentaires | Partager sur WhatsApp
  • L’interpolation RGB dans la peinture numérique peut produire un rendu différent du mélange de peintures réelles ; Mixbox est une bibliothèque qui cherche à l’améliorer avec un mélange basé sur les pigments
  • Les développeurs n’ont qu’à fournir deux couleurs et un ratio de mélange comme avec un lerp classique ; Mixbox renvoie la couleur résultante sous forme entrée RGB·sortie RGB
  • Mixbox 2.0 fonctionne en C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust et prend en charge les environnements Unity, Android Studio, P5js, WebGL et Godot
  • L’objectif est de réduire les mélanges boueux dans le smudge, la superposition de couches avec des brosses texturées et les dégradés partant de couleurs sombres, afin de créer des demi-teintes et des variations de couleur plus riches
  • Ce n’est pas un plugin que l’utilisateur installe directement, mais du code pour un mode de fusion ; pour l’utiliser dans un outil de peinture réel, il doit donc être intégré par les développeurs du logiciel concerné

Le problème des couleurs numériques qui ne se mélangent pas comme de la vraie peinture

  • Le mélange des couleurs dans les logiciels de peinture courants ne se comporte pas comme de vrais pigments
  • Mixbox est une bibliothèque destinée à implémenter dans la peinture numérique un mélange de couleurs proche de celui de la peinture réelle
  • En interne, elle traite les couleurs comme des pigments basés sur Kubelka & Munk, mais son API se présente simplement sous forme d’entrée RGB et de sortie RGB
  • Ressources associées :

Des effets de couleur plus proches de la peinture

  • Des dégradés riches avec variation de couleur

    • Il est possible de créer des couleurs mélangées naturelles et vivantes
    • On peut s’attendre à une atténuation plus riche dans les traits de pinceau
    • Les brosses de smudge servent à créer des dégradés naturels plutôt que des mélanges boueux
    • Même en superposant des traits de brosse texturée, les couleurs ne se désaturent pas et produisent une atténuation riche et vivante
    • La seule pression du stylet peut créer des dégradés profonds partant d’une couleur sombre

Cas d’usage et démos

  • Mixbox est utilisé comme composant clé de Rebelle, un outil de peinture qui propose des fonctionnalités d’huile et d’aquarelle numériques
  • Dans l’add-on Flip Fluids pour Blender, Mixbox est utilisé pour obtenir une représentation plus réaliste des couleurs des liquides
  • Une démo de peinture est disponible pour l’essayer directement
  • Des exemples de code exécutables dans le navigateur permettent de manipuler directement les graphismes ou le code

Mode d’utilisation par les développeurs

  • Mixbox fournit une interface lerp classique
  • Le développeur fournit deux couleurs RGB et un ratio de mélange t, puis reçoit le résultat mélangé en RGB
  • Des exemples de code sont fournis en C/C++, GLSL, Javascript, Python, Java/Android, Rust et Unity/C#
  • Les exemples de la documentation montrent de façon répétée le mélange d’un bleu rgb(0, 33, 133) et d’un jaune rgb(252, 211, 0) avec t = 0.5
  • Langages et environnements pris en charge :
    • Langages : C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust
    • Moteurs·frameworks : Unity, Android Studio, P5js, WebGL, Godot

Intégration et licence

  • Mixbox n’est pas un plugin que l’utilisateur installe directement
  • Pour être présent dans un logiciel de peinture, les développeurs de ce logiciel doivent l’intégrer comme code pour un nouveau mode de fusion
  • Si vous souhaitez voir Mixbox dans votre outil de peinture favori, vous pouvez en faire la demande sur les forums utilisateurs ou les canaux de support
  • Mixbox est distribué sous licence CC BY-NC 4.0, ce qui permet une évaluation gratuite
  • Lors de la préparation du lancement d’un produit commercial, il faut mettre en place une licence commerciale

Principe du mélange de pigments

  • Le mélange de pigments réels ne s’explique pas uniquement par un simple mélange additif ou soustractif : les deux agissent de manière combinée
  • Quand on mélange des peintures sorties du tube, la lumière pénètre dans la matière, y est diffusée et absorbée de manière répétée, ce qui produit la couleur finale
  • Ce processus s’explique par la diffusion sous la surface (subsurface scattering)
  • Ressources explicatives supplémentaires :

Noms des pigments inclus dans Mixbox

  • Les noms des pigments gérés par Mixbox sont les suivants
    • Cadmium Yellow Light, Hansa Yellow, Cadmium Yellow Deep
    • Cadmium Orange Light, Cadmium Orange
    • Cadmium Red Light, Cadmium Red Medium, Pyrrole Red
    • Alizarin Crimson, Quinacridone Magenta
    • Cobalt Violet, Ultramarine Violet
    • Ultramarine Blue, Cobalt Blue, Phthalo Blue, Cerulean Blue, Prussian Blue
    • Phthalo Green, Permanent Green, Permanent Green Light, Sap Green
    • Burnt Sienna, Indian Red, Bone Black

1 commentaires

 
GN⁺ 2024-12-30
Commentaires sur Hacker News
  • En 2012, l’équipe de l’app de dessin Paper pour iPad avait publié quelque chose d’intéressant sur le mélange des couleurs : https://www.fastcompany.com/3002676/magical-tech-behind-pape...
    En résumé, ils avaient d’abord implémenté un comportement réaliste de mélange des pigments, mais lors des tests utilisateurs, les personnes qui n’avaient jamais dessiné n’arrivaient pas vraiment à obtenir la couleur voulue par mélange et finissaient généralement avec du marron. Ils ont donc dû créer un algorithme de mélange irréaliste, mais ressenti comme plus intuitif.

    • Cet article est vraiment excellent. Cela dit, même si ce travail est impressionnant, il faut garder deux choses en tête.
      Le mélange de peinture à l’huile est une compétence qui s’apprend et ne fonctionne pas de façon intuitive ; il n’est donc probablement utile qu’aux personnes qui peignent déjà avec un médium réel, ou qui veulent apprendre à le faire.
      Par ailleurs, ArtRage peut être considéré comme le logiciel de peinture le plus réaliste depuis plus de dix ans ; il dispose d’un mode de mélange réel des couleurs, qui ne semble pas être activé par défaut. Il produit des résultats bien plus proches que ceux de la page d’exemples : https://i.ibb.co/T0GwbDV/artrage-mixing.jpg ; à droite, le mélange réel des couleurs est activé.
  • En lisant la page web, je ne savais pas au début que les logiciels de peinture n’essayaient pas de faire du mélange des couleurs au-delà d’une simple interpolation, et je me suis dit que la physique liée à la lumière était assez complexe, avec beaucoup d’informations perdues en RGB, donc difficiles à reconstruire.
    Un peu plus bas, il y a un extrait de code à utiliser comme bibliothèque, et j’ai été surpris de voir qu’il calcule en RGB. En ouvrant le lien vers l’article, j’ai compris que l’idée centrale était de créer un espace de couleurs latent qui représente les couleurs RGB comme un mélange de pigments de base plus un résidu additif, puis de manipuler ces valeurs latentes avec des opérations linéaires pour produire des résultats plausibles et attendus.
    C’est très ingénieux, et cela ressemble à un bon exemple d’utilisation de techniques modernes de machine learning en dehors du domaine très à la mode des modèles de langage. Le travail utilise aussi en interne un espace de couleurs perceptuel et des connaissances a priori fondées sur la physique ; techniquement, c’est impressionnant et élégant.
    Cela rejoint aussi une idée que j’avais depuis longtemps. Je me demande si les modèles génératifs d’images ou les modèles d’encodage d’images ne fonctionneraient pas mieux avec des données de longueurs d’onde au lieu du RGB, ou au moins avec un espace de couleurs perceptuellement uniforme. Cela semble plus proche de la réalité que d’utiliser approximativement les longueurs d’onde auxquelles nos cônes se trouvent réagir par hasard.

    • Il faut tenir compte du fait que, juste derrière les cônes, d’autres cellules calculent et agrègent déjà les signaux des cônes. Il ne faut pas oublier que la couleur est une construction du cerveau.
      Pour ces raisons, entre autres, il existe souvent un fort décalage entre stimulus et perception ; par conséquent, quelque chose comme un espace de couleurs perceptuellement uniforme n’existe pas.
    • L’intelligence artificielle ou le machine learning ne sont absolument pas nécessaires. Il suffit de mesurer empiriquement quelques constantes qui décrivent et contraignent les non-linéarités de plusieurs pigments réels, puis de les injecter dans une équation de mélange de peintures relativement simple.
      Les peintures ont des propriétés mathématiques prédictibles quant à la couleur qu’elles produisent une fois mélangées. Simplement, comme elles se mélangent de manière non linéaire, ce n’est pas intuitif pour les personnes qui n’ont pas beaucoup pratiqué le mélange de peinture.
      Photoshop et les autres programmes comparés sur la page montrent le mélange linéaire auquel la plupart des gens s’attendent intuitivement.
    • Il existe une vidéo de SIGGRAPH Asia 2021 qui présente cette approche en détail pendant 17 minutes : https://www.youtube.com/watch?v=_qa5iWdfNKg
      Si l’on s’intéresse à la fois aux couleurs additives du numérique et aux couleurs soustractives des supports physiques, c’est assez intéressant.
    • À ma connaissance, la plupart des applications de peinture ne mélangent pas les couleurs dans un espace RGB linéaire, mais dans l’espace sRGB. Cela peut donc être encore pire qu’une simple interpolation.
  • Cela existe depuis quelques années, mais c’est très limité à cause d’une licence non commerciale et restrictive.
    https://krita-artists.org/t/implementing-mixbox-mixing-for-k...

  • Je me souviens qu’à l’époque de Windows 3.0, il existait un logiciel appelé Fractal Designer Painter. Il avait plusieurs moteurs qui imitaient fidèlement des matériaux comme le pastel, la peinture à l’huile, l’aquarelle ou la gouache, et simulaient le mélange, les coups de pinceau, la pression, etc.
    À une époque où un écran 800x600 en 24 bits était un luxe, le rendu paraissait incroyablement réaliste, et c’était très lent sur un i486. Je viens de vérifier : c’est désormais devenu Corel Painter.
    Je me demande s’il est toujours aussi bon, et comment les algorithmes d’hier et d’aujourd’hui se comparent à cette nouvelle bibliothèque. Dommage que les auteurs ne l’aient pas comparée à Corel Painter.

    • Oui. Painter existe toujours, même s’il a changé de propriétaire plusieurs fois ; il est mis à jour chaque année et sait faire toutes les fonctions vues dans l’article.
      Si j’utilise Painter pour l’art numérique depuis les années 90, c’est parce que le mélange des couleurs y est bon et qu’il correspond bien aux outils artistiques réels. Il y a aussi énormément d’options, pas seulement la peinture, mais aussi les pastels, crayons, stylos, etc.
      En revanche, ce n’était pas fourni sous forme de bibliothèque à intégrer dans sa propre appli, et ça, c’est clairement nouveau et bienvenu. Mais l’idée sous-entendue que cela n’avait jamais été fait auparavant est assez fausse.
    • J’ai la version 2015, et elle fonctionne toujours mieux qu’avant même sur un PC moderne.
  • Je me demande pourquoi Secret Weapons n’a pas levé 100 millions de dollars de capital-risque 2 ou 3 ans avant le début du boom de la vidéo IA.
    Ils se sont d’abord fait connaître avec EbSynth, le premier système largement utilisé de transfert de style vidéo-vers-vidéo et d’interpolation d’images clés basé sur l’IA : https://ebsynth.com/
    EbSynth a engendré beaucoup de créateurs proches de comédiens comme Joel Haver : https://www.youtube.com/watch?v=SY3y6zNTiLs&list=PLKtIcOP0Wv...
    Plusieurs entreprises comme Kaiber.ai ont aussi construit leur technologie sur EbSynth et obtenu de gros seed rounds : https://kaiber.ai/
    Des musiciens majeurs ont également utilisé EbSynth directement, ou via ce type d’entreprises, pour des clips. Linkin Park : https://www.youtube.com/watch?v=7NK_JOkuSVY, Magdalena Bay : https://www.youtube.com/watch?v=dXLCHvRsgRQ
    Secret Weapons était bien placé pour dominer la vidéo IA et les outils créatifs IA, mais de l’extérieur, on dirait qu’ils ont manqué cette occasion.

    • Je n’ai fait qu’y jeter un coup d’œil très rapide, mais les modèles de diffusion vidéo et EbSynth semblent relever de catégories différentes.
      EbSynth ressemble davantage à un plugin Final Cut Pro pour le masquage et le tracking. La clientèle visée peut être similaire, mais les compétences et les ressources nécessaires côté équipe d’ingénierie sont très différentes.
      Dire que Secret Weapons était prêt à dominer la vidéo IA et les outils créatifs me paraît un peu exagéré.
    • Cette vidéo date d’il y a 3 ans : https://www.youtube.com/watch?v=6FN7fKlJcPE
      Je ne savais pas qu’on en était déjà à ce niveau il y a 3 ans.
  • La bibliothèque elle-même ne m’intéresse pas vraiment ; je veux seulement une implémentation mathématique pure à utiliser dans des shaders, etc. L’algorithme GLSL est ici, et la fonction voulue est vec3 mixbox_lerp :
    https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...
    Je n’ai pas le temps de faire une démo, mais ça a l’air plutôt bien optimisé et ça rend bien dans les exemples. Beau travail de la part des auteurs.

    • Attention toutefois à la licence.
  • Il y a eu des discussions précédentes il y a 3 ans :
    https://news.ycombinator.com/item?id=30116316 71 points, 15 commentaires
    https://news.ycombinator.com/item?id=30033611 60 points, 13 commentaires
    Je me demande si quelqu’un a essayé l’application de peinture commerciale Rebelle, qui utilise cette approche.

    • Rebelle est très bon. Il est rapide et fonctionne bien même en haute résolution.
      Il a moins de fonctionnalités que Painter, mais c’est plutôt un avantage.
      Ce qui lui manque encore, c’est un rendu convaincant des matériaux secs comme le fusain, et une intégration plus profonde avec la surface du support. Pour l’instant, ça ressemble surtout à une carte de profondeur peu marquée, sans donner une sensation aussi rugueuse que du bois, du papier grossier, voire des surfaces comme des nuages.
      Pour l’instant, c’est mon application préférée, et le mélange des couleurs y est déjà excellent depuis un bon moment.
  • Ça a l’air génial, mais avec All Rights Reserved + CC-BY-NC, il est impossible de l’intégrer par défaut dans Krita, GIMP ou Blender.

  • Je peins des miniatures, et une fois passé les étapes de base, quand on commence à utiliser des filtres ou des fondus avec des glacis, les logiciels ne sont pas très pratiques pour tester un plan de peinture. Ça a l’air vraiment très bien.

  • C’est vraiment impressionnant et ça devrait être proposé en option dans tous les programmes de peinture, mais d’un autre côté, je me demande si ça ne va pas rendre le processus d’apprentissage du dessin et de la peinture plus complexe.
    Mélanger des couleurs de peinture n’est pas intuitif ; c’est une compétence qui s’apprend.
    Dans presque tous les autres domaines de la vie, on s’attend à ce que mélanger A et B produise une variation linéaire. Si on met du sel dans de l’eau, on s’attend à ce que le goût salé augmente, pas à ce que ça devienne acide à un moment donné avant de redevenir salé.

    • Pour quelqu’un qui passe d’un médium réel au numérique, ou du numérique à un médium réel, j’ai l’impression que ça simplifiera la transition.
      Les exemples de mélange de l’algorithme Mixbox sur la page web ont l’air réalistes, tandis que les mélanges des autres programmes paraissent plutôt incorrects.
      Cela dit, Mixbox ne semble pas vraiment prendre en compte les propriétés physiques réelles des pigments, alors que celles-ci peuvent avoir un effet radical sur le mélange des pigments.