Técnica de mistura de pigmentos para pintura digital
(scrtwpns.com)- 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
lerptradicional, 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 amarelorgb(252, 211, 0)usandot = 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
- Adobe Photoshop: community.adobe.com
- Adobe Fresco: adobefresco.uservoice.com
- Procreate: folio.procreate.art/discussions
- Corel Painter: corel.com/en/support
- 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
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
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
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
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
Se você se interessa tanto por cores aditivas digitais quanto por cores subtrativas de mídias físicas, é um conteúdo bem interessante
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...
https://invent.kde.org/graphics/krita/-/merge_requests/1783
https://krita-artists.org/t/can-we-get-mixbox-on-krita/64201...
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.
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.
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.
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.
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.
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.
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.
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.