1 pontos por GN⁺ 2024-12-30 | 1 comentários | Compartilhar no WhatsApp
  • A interpolação RGB na pintura digital pode parecer diferente da mistura de tinta real, e o Mixbox é uma biblioteca que busca melhorar isso com mistura baseada em pigmentos
  • Para o desenvolvedor, basta passar duas cores e a proporção de mistura, como no lerp tradicional, e o Mixbox retorna a cor resultante no formato entrada RGB · saída RGB
  • O Mixbox 2.0 funciona em C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust e oferece suporte aos ambientes Unity, Android Studio, P5js, WebGL e Godot
  • O objetivo é reduzir misturas opacas em smudge, sobreposição de camadas com pincéis de textura e gradientes baseados em cores escuras, criando tons intermediários e variações de cor mais ricos
  • Como não é um plugin instalado diretamente pelo usuário, mas sim código para modo de mesclagem, seu uso em ferramentas reais de pintura depende da integração pelos desenvolvedores desse software

O problema das cores digitais que não se misturam como tinta real

  • A mistura de cores em softwares de pintura comuns não funciona como pigmentos reais
  • O Mixbox é uma biblioteca para implementar na pintura digital uma mistura de cores mais próxima da tinta real
  • Internamente, ele trata as cores como pigmentos baseados em Kubelka & Munk, mas a API é oferecida em um formato simples de entrada RGB e saída RGB
  • Materiais relacionados:

Efeitos de cor mais próximos da tinta

  • Gradientes ricos com variação de cor

    • É possível criar cores misturadas naturais e vibrantes
    • Dá para esperar transições mais ricas nas pinceladas
    • O pincel de smudge pode ser usado para criar gradientes naturais em vez de misturas opacas
    • Mesmo ao sobrepor pinceladas de textura em camadas, a cor não perde saturação, permitindo transições ricas e vivas
    • Só com a pressão da caneta é possível criar gradientes profundos começando de cores escuras

Casos de uso e demos

  • O Mixbox é usado como elemento central do Rebelle, uma ferramenta de pintura com recursos de óleo e aquarela digitais
  • No addon Flip Fluids para Blender, o Mixbox é usado para representar cores de líquidos de forma realista
  • Há um demo painter disponível para testar diretamente
  • Também há exemplos de código executados no navegador para mexer diretamente com gráficos ou código

Como os desenvolvedores usam

  • O Mixbox oferece a interface clássica de lerp
  • O desenvolvedor passa duas cores RGB e a proporção de mistura t, e recebe o resultado RGB misturado
  • Há exemplos de código em C/C++, GLSL, Javascript, Python, Java/Android, Rust e Unity/C#
  • Os exemplos da documentação repetem a estrutura de misturar o azul rgb(0, 33, 133) com o amarelo rgb(252, 211, 0) usando t = 0.5
  • Linguagens e ambientes compatíveis:
    • Linguagens: C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust
    • Engines e frameworks: Unity, Android Studio, P5js, WebGL, Godot

Forma de integração e licença

  • O Mixbox não é um plugin instalado diretamente pelo usuário
  • Para entrar em um software de pintura, ele precisa ser integrado pelo desenvolvedor desse software como código para um novo modo de mesclagem
  • Se você quiser o Mixbox na sua ferramenta de pintura preferida, pode deixar um pedido no fórum de usuários ou no canal de suporte
  • O Mixbox é distribuído sob a licença CC BY-NC 4.0, permitindo avaliação gratuita
  • Na fase de preparação para lançamento de um produto comercial, é necessário definir uma licença comercial

O princípio da mistura de pigmentos

  • A mistura de pigmentos reais não é explicada apenas por mistura aditiva ou subtrativa simples; as duas atuam de forma combinada
  • Quando tintas saídas do tubo são misturadas, a luz entra no material, sofre dispersão repetidas vezes e é absorvida, produzindo a cor final
  • Esse processo é explicado por subsurface scattering
  • Materiais adicionais:

Nomes dos pigmentos incluídos no Mixbox

  • Os nomes dos pigmentos tratados pelo Mixbox são os seguintes
    • 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 comentários

 
GN⁺ 2024-12-30
Opiniões do Hacker News
  • Em 2012, a equipe do app de desenho Paper para iPad divulgou algo interessante sobre mistura de cores: https://www.fastcompany.com/3002676/magical-tech-behind-pape...
    Em resumo, no começo eles implementaram um comportamento realista de mistura de pigmentos, mas, em testes com usuários, pessoas que nunca tinham desenhado não conseguiam criar bem a cor desejada por meio da mistura e geralmente acabavam em marrom. Então tiveram de criar um algoritmo de mistura irrealista que parecesse mais intuitivo

    • Esse artigo é realmente excelente. Mas, embora este trabalho seja impressionante, é preciso observar duas coisas
      Misturar tinta a óleo é uma habilidade que precisa ser aprendida e não funciona de forma intuitiva; portanto, provavelmente só é útil para quem já pinta com mídia física ou quer aprender isso
      Além disso, o ArtRage pode ser considerado há mais de 10 anos o software de pintura mais realista, tem um modo de mistura de cores reais e ele parece não ser o padrão. Ele produz resultados muito mais próximos do que os da página de exemplos: https://i.ibb.co/T0GwbDV/artrage-mixing.jpg à direita está com mistura de cores reais ativada
  • Ao ver a página, no início eu não sabia que softwares de pintura não tentavam misturar cores além de uma simples interpolação, e pensei que a física relacionada à luz fosse bastante complexa e que, como também há muita informação perdida em RGB, seria difícil recuperá-la
    Descendo um pouco, há um trecho de código para usar como biblioteca, e achei estranho ver que ele operava em RGB. Ao clicar no link do artigo, vi que o ponto central era criar um espaço de cor latente que representa cores RGB como uma mistura de pigmentos básicos mais um resíduo aditivo, e manipular esses valores latentes com operações lineares para produzir resultados plausíveis e esperados
    É muito engenhoso e parece um bom exemplo de uso de técnicas modernas de aprendizado de máquina fora da área dos modelos de linguagem da moda. Internamente, também usa espaço de cor perceptual e conhecimento prévio baseado em física, então é um trabalho tecnicamente impressionante e bonito
    Isso também se conecta a uma ideia que eu vinha tendo há tempos. Fico pensando se modelos generativos de imagem ou modelos codificadores de imagem não funcionariam melhor se recebessem dados de comprimento de onda, ou pelo menos um espaço de cor perceptualmente uniforme, em vez de RGB. Parece mais próximo da verdade do que usar de forma aproximada os comprimentos de onda aos quais nossos cones por acaso respondem

    • É preciso considerar que, logo depois dos cones, outras células calculam e agregam os sinais dos cones. Não se deve esquecer que a cor é construída pelo cérebro
      Por esses e outros motivos, muitas vezes há uma forte discrepância entre estímulo e percepção; portanto, algo como um espaço de cor perceptualmente uniforme não existe
    • Inteligência artificial ou aprendizado de máquina não são necessários. Basta medir empiricamente algumas constantes que descrevem e limitam as não linearidades de vários pigmentos reais e colocá-las em uma equação de mistura de tintas relativamente simples
      Tintas têm propriedades matemáticas previsíveis quanto à cor que produzem quando misturadas. Só que, por se misturarem de forma não linear, isso não é intuitivo para quem não praticou muito mistura de tintas
      O Photoshop e os outros programas de comparação mostrados na página exibem a mistura linear que a maioria das pessoas espera intuitivamente
    • Há um vídeo da SIGGRAPH Asia 2021 apresentando essa abordagem em detalhes por 17 minutos: https://www.youtube.com/watch?v=_qa5iWdfNKg
      Se você se interessa tanto por cores aditivas digitais quanto por cores subtrativas de mídias físicas, é um conteúdo bem interessante
    • Até onde sei, a maioria dos apps de pintura mistura cores no espaço sRGB, não em um espaço RGB linear. Então pode ser ainda pior do que uma simples interpolação
  • Isso existe há alguns anos, mas tem grandes limitações por causa de uma licença não comercial e restritiva
    https://krita-artists.org/t/implementing-mixbox-mixing-for-k...

  • Lembro que, na época do Windows 3.0, havia um software chamado Fractal Designer Painter. Ele tinha vários motores que imitavam com precisão materiais como pastel, tinta a óleo, aquarela e guache, simulando mistura, pinceladas, pressão etc.
    Na época em que uma tela 800x600x24 bits era um luxo, parecia incrivelmente realista, e era muito lento em um computador i486. Acabei de procurar e vi que hoje ele virou o Corel Painter.
    Fico curioso para saber se ainda é bom, e como os algoritmos antigos e atuais se comparam a essa nova biblioteca. Infelizmente, os autores não fizeram uma comparação com o Corel Painter.

    • Sim. Embora tenha trocado de dono algumas vezes, o Painter ainda existe, é atualizado todos os anos e faz tudo o que vi no artigo.
      O motivo de eu usar o Painter para arte digital desde os anos 90 é que a mistura de cores funciona bem e combina bem com ferramentas artísticas reais. Além de tintas, há muitas opções, como pastéis, lápis, canetas etc.
      Só que ele não oferecia esses recursos na forma de uma biblioteca para incorporar ao seu próprio app, e isso certamente soa como algo novo e bom. Mas a insinuação de que isso nunca foi feito antes é bem equivocada.
    • Tenho a versão de 2015, e ela ainda funciona melhor do que antes em PCs modernos.
  • Fico me perguntando por que a Secret Weapons não recebeu um investimento de venture capital de US$ 100 milhões dois ou três anos antes do início do boom de vídeo com IA.
    Eles apareceram primeiro com o EbSynth, o primeiro sistema amplamente usado de transferência de estilo vídeo-para-vídeo baseada em IA e interpolação de keyframes: https://ebsynth.com/
    O EbSynth gerou muitos comediantes e criadores parecidos com Joel Haver: https://www.youtube.com/watch?v=SY3y6zNTiLs&list=PLKtIcOP0Wv...
    Várias empresas, como a Kaiber.ai, também construíram tecnologia baseada no EbSynth e levantaram grandes rodadas seed: https://kaiber.ai/
    Músicos importantes também usaram o EbSynth em videoclipes, diretamente ou por meio dessas empresas. Linkin Park: https://www.youtube.com/watch?v=7NK_JOkuSVY, Magdalena Bay: https://www.youtube.com/watch?v=dXLCHvRsgRQ
    A Secret Weapons estava bem posicionada para dominar vídeo com IA e ferramentas criativas de IA, mas, pelo visto, parece ter perdido essa oportunidade.

    • Dei só uma olhada bem rápida, mas modelos de difusão para vídeo e o EbSynth parecem categorias diferentes.
      O EbSynth parece mais próximo de um plugin do Final Cut Pro para mascaramento e rastreamento. O público esperado pode ser parecido, mas as competências e os recursos necessários para a equipe de engenharia são bem diferentes.
      Dizer que a Secret Weapons estava pronta para dominar vídeo com IA e ferramentas criativas me parece um pouco exagerado.
    • Este vídeo é de 3 anos atrás: https://www.youtube.com/watch?v=6FN7fKlJcPE
      Eu não sabia que já tinham chegado tão longe há 3 anos.
  • Não tenho muito interesse na biblioteca em si; só quero a implementação matemática pura para usar em shaders etc. O algoritmo em GLSL está aqui, e a função desejada é vec3 mixbox_lerp.
    https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...
    Não tenho tempo para fazer uma demo, mas parece bem otimizado e fica bom nos exemplos. Excelente trabalho de quem criou.

    • Só é preciso tomar cuidado com a licença.
  • Há discussões anteriores de 3 anos atrás:
    https://news.ycombinator.com/item?id=30116316 71 pontos, 15 comentários
    https://news.ycombinator.com/item?id=30033611 60 pontos, 13 comentários
    Fico curioso para saber se alguém já usou o Rebelle, um app comercial de pintura que usa esse método.

    • O Rebelle é muito bom. É rápido e funciona bem mesmo em alta resolução.
      Tem menos recursos que o Painter, mas isso acaba sendo uma vantagem.
      O que ainda falta é uma sensação adequada de materiais secos, como carvão, e uma integração profunda com a superfície do suporte. Por enquanto, é mais como um mapa de profundidade raso; não parece tão áspero quanto madeira, papel rugoso ou até superfícies como nuvens.
      No momento, é meu app favorito, e a mistura de cores já é muito boa há algum tempo.
  • Parece ótimo, mas, por ser All Rights Reserved + CC-BY-NC, é impossível colocá-lo como implementação padrão no Krita, GIMP ou Blender.

  • Pinto miniaturas, e, quando se passa das etapas básicas e se começa a usar filtros ou blending com glazes, não é muito bom testar planejamentos de pintura em software. Isso parece muito bom.

  • Isso é realmente muito legal e deveria entrar como opção em todos os programas de pintura, mas, por outro lado, fico pensando se não vai tornar o processo de aprender a pintar mais complexo.
    Misturar cores de tinta não é intuitivo, então é uma habilidade que precisa ser aprendida.
    Em quase todas as outras áreas da vida, esperamos que misturar A e B cause uma mudança linear. Se você coloca sal na água, espera que fique mais salgada, não que em algum momento fique azeda e depois volte a ficar salgada.

    • Para quem está migrando de mídia física para digital, ou do digital para mídia física, acho que isso simplificaria a transição.
      Os exemplos de mistura do algoritmo Mixbox na página parecem reais, e as misturas de outros programas parecem incorretas em comparação.
      Porém, o Mixbox não parece levar em conta as propriedades físicas reais dos pigmentos, e essas propriedades podem afetar drasticamente a mistura de pigmentos.