1 puntos por GN⁺ 2024-12-30 | 1 comentarios | Compartir por WhatsApp
  • La interpolación RGB en la pintura digital puede verse distinta a la mezcla de pintura real, y Mixbox es una biblioteca que busca mejorar esto mediante mezcla basada en pigmentos
  • El desarrollador solo necesita pasar dos colores y una proporción de mezcla, como con lerp, y Mixbox devuelve el color resultante en formato de entrada RGB y salida RGB
  • Mixbox 2.0 funciona en C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust y es compatible con entornos como Unity, Android Studio, P5js, WebGL y Godot
  • Su objetivo es reducir las mezclas turbias y crear colores intermedios y variaciones de color más ricos en smudge, superposición de capas de pinceles con textura y gradientes basados en colores oscuros
  • No es un plugin que el usuario instale directamente, sino código para un modo de blending, por lo que para usarse en una herramienta real de pintura requiere integración por parte del desarrollador de ese software

El problema de los colores digitales que no se mezclan como la pintura real

  • La mezcla de color en el software de pintura común no funciona como los pigmentos reales
  • Mixbox es una biblioteca para implementar en pintura digital una mezcla de color más cercana a la pintura real
  • Internamente trata los colores como pigmentos basados en Kubelka & Munk, pero la API se ofrece en una forma simple de entrada RGB y salida RGB
  • Material relacionado:

Efectos de color más cercanos a la pintura real

  • Gradientes más ricos con cambios de color

    • Permite crear colores mezclados naturales y vivos
    • Se puede esperar una atenuación más rica en las pinceladas
    • El pincel de smudge puede usarse para crear gradientes naturales en lugar de mezclas turbias
    • Incluso al superponer pinceladas con textura, el color no pierde saturación y puede producir una atenuación rica y vibrante
    • Solo con la presión del lápiz se pueden crear gradientes profundos que parten de colores oscuros

Casos de uso y demos

  • Mixbox se usa como un elemento central de Rebelle, una herramienta de pintura con funciones de óleo digital y acuarela
  • En el addon Flip Fluids para Blender, Mixbox se usa para una representación realista del color en líquidos
  • Hay un painter de demostración para probarlo directamente
  • También hay ejemplos de código que corren en el navegador para experimentar directamente con gráficos o código

Cómo lo usan los desarrolladores

  • Mixbox ofrece una interfaz clásica de lerp
  • El desarrollador pasa dos colores RGB y una proporción de mezcla t, y recibe el resultado RGB mezclado
  • La documentación incluye ejemplos en C/C++, GLSL, Javascript, Python, Java/Android, Rust y Unity/C#
  • Los ejemplos de la documentación repiten la estructura de mezclar el azul rgb(0, 33, 133) con el amarillo rgb(252, 211, 0) usando t = 0.5
  • Lenguajes y entornos compatibles:
    • Lenguajes: C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust
    • Motores y frameworks: Unity, Android Studio, P5js, WebGL, Godot

Integración y licencia

  • Mixbox no es un plugin que el usuario instale directamente
  • Para incorporarlo en software de pintura, el desarrollador de ese software debe integrarlo como código para un nuevo modo de blending
  • Si quieres Mixbox en tu herramienta de pintura preferida, puedes dejar una solicitud en foros de usuarios o canales de soporte
  • Mixbox se distribuye bajo la licencia CC BY-NC 4.0, por lo que puede evaluarse gratis
  • En la etapa de preparación para lanzar un producto comercial, es necesario definir una licencia comercial

Principio de la mezcla de pigmentos

  • La mezcla de pigmentos reales no se explica solo con mezcla aditiva o sustractiva simple; ambas actúan de forma combinada
  • Cuando se mezcla pintura salida del tubo, la luz entra en el material, se dispersa repetidamente y se absorbe, formando así el color final
  • Este proceso se explica mediante subsurface scattering
  • Material adicional:

Nombres de los pigmentos incluidos en Mixbox

  • Los nombres de pigmentos que maneja Mixbox son los siguientes
    • 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 comentarios

 
GN⁺ 2024-12-30
Opiniones en Hacker News
  • En 2012, el equipo de la app de dibujo Paper para iPad publicó algo interesante sobre la mezcla de colores: https://www.fastcompany.com/3002676/magical-tech-behind-pape...
    En resumen, al principio implementaron un comportamiento realista de mezcla de pigmentos, pero en pruebas con usuarios, las personas que nunca habían dibujado no lograban obtener bien los colores que querían mediante la mezcla y normalmente terminaban con marrón. Así que tuvieron que crear un algoritmo de mezcla irrealista que se sintiera más intuitivo

    • Ese artículo es realmente excelente. Dicho eso, aunque este trabajo es impresionante, hay que considerar dos cosas
      Mezclar pintura al óleo es una habilidad que se debe aprender y no funciona de manera intuitiva, así que probablemente solo sea útil para quienes ya pintan con medios reales o quieren aprender a hacerlo
      Además, ArtRage podría considerarse el software de pintura más realista desde hace más de 10 años, y tiene un modo de mezcla de colores real, que al parecer no es el predeterminado. Produce resultados mucho más cercanos que los de la página de ejemplos: https://i.ibb.co/T0GwbDV/artrage-mixing.jpg a la derecha está activada la mezcla de colores real
  • Mientras veía la página, al principio no sabía que el software de pintura no intentaba la mezcla de colores más allá de una simple interpolación, y pensé que la física relacionada con la luz era bastante compleja y que también se perdía mucha información en RGB, por lo que sería difícil recuperarla
    Al bajar un poco, vi un fragmento de código para usarlo como biblioteca, y me extrañó que operara en RGB. Al abrir el enlace al paper, entendí que la idea central era crear un espacio de color latente que representa los colores RGB como una mezcla de pigmentos base más un residuo aditivo, y manipular esos valores latentes con operaciones lineales para producir resultados plausibles y esperables
    Es muy ingenioso y parece un buen ejemplo de uso de técnicas modernas de machine learning fuera del área de moda de los modelos de lenguaje. Internamente también usa espacios de color perceptuales y conocimiento previo basado en física, así que es un trabajo técnicamente impresionante y hermoso
    También conecta con una idea que tenía desde hace tiempo. Me pregunto si los modelos generativos de imágenes o los modelos codificadores de imágenes funcionarían mejor si se les dieran datos de longitudes de onda en lugar de RGB, o al menos un espacio de color perceptualmente uniforme. Parece más cercano a la verdad que usar a grandes rasgos las longitudes de onda a las que nuestros conos responden por casualidad

    • Hay que tener en cuenta que, justo detrás de los conos, otras células también calculan y agregan las señales de los conos. No hay que olvidar que el color es una construcción del cerebro
      Por estas y otras razones, a menudo hay una fuerte brecha entre estímulo y percepción, por lo tanto no existe algo como un espacio de color perceptualmente uniforme
    • No se necesita inteligencia artificial ni machine learning en absoluto. Basta con medir empíricamente algunas constantes que describen y acotan las no linealidades de varios pigmentos reales, y luego ponerlas en una ecuación de mezcla de pintura relativamente simple
      La pintura tiene propiedades matemáticas predecibles sobre qué color producirá al mezclarse. Solo que, como se mezcla de forma no lineal, no resulta intuitiva para la gente que no ha practicado mucho la mezcla de pintura
      Photoshop y los otros programas comparados en la página muestran una mezcla lineal, que es lo que la mayoría de la gente espera intuitivamente
    • Hay un video de SIGGRAPH Asia 2021 que presenta este enfoque en detalle durante 17 minutos: https://www.youtube.com/watch?v=_qa5iWdfNKg
      Es bastante interesante si te interesan tanto el color aditivo digital como el color sustractivo de los medios físicos
    • Hasta donde sé, la mayoría de las apps de pintura mezclan colores en el espacio sRGB, no en un espacio RGB lineal. Así que puede ser incluso peor que una simple interpolación
  • Esto existe desde hace varios años, pero tiene grandes limitaciones por su licencia no comercial y restrictiva
    https://krita-artists.org/t/implementing-mixbox-mixing-for-k...

  • Recuerdo que en la época de Windows 3.0 había un software llamado Fractal Designer Painter. Tenía varios motores que imitaban con precisión materiales como pastel, óleo, acuarela y gouache, y simulaba mezclas, pinceladas, presión, etc.
    En una época en la que una pantalla de 800x600x24 bits era un lujo, se veía increíblemente realista, y en una computadora i486 era muy lento. Acabo de buscarlo y ahora se convirtió en Corel Painter.
    Me da curiosidad si sigue siendo bueno, y cómo se comparan los algoritmos de antes y de ahora con esta nueva biblioteca. Lamentablemente, los autores no lo compararon con Corel Painter.

    • Sí. Aunque cambió de dueño varias veces, Painter todavía existe, se actualiza cada año y hace todo lo que vi en el artículo.
      La razón por la que uso Painter para arte digital desde los 90 es que mezcla bien los colores y encaja muy bien con herramientas artísticas reales. No solo pinturas: también hay muchísimas opciones como pasteles, lápices, plumas, etc.
      Lo que no ofrecía era una biblioteca para integrar esas funciones en tu propia app, y eso sí suena nuevo y bueno. Pero la insinuación de que nunca antes se había hecho es bastante incorrecta.
    • Tengo la versión de 2015 y, incluso en una PC moderna, sigue funcionando mejor que antes.
  • Me pregunto por qué Secret Weapons no recibió una ronda de venture capital de 100 millones de dólares 2 o 3 años antes de que empezara el boom del video con IA.
    Aparecieron primero con EbSynth, el primer sistema de transferencia de estilo e interpolación de fotogramas clave de video a video basado en IA que se usó ampliamente: https://ebsynth.com/
    EbSynth dio lugar a muchos creadores similares a comediantes como Joel Haver: https://www.youtube.com/watch?v=SY3y6zNTiLs&list=PLKtIcOP0Wv...
    Varias empresas como Kaiber.ai también construyeron tecnología sobre EbSynth y recibieron grandes inversiones semilla: https://kaiber.ai/
    Músicos importantes también usaron EbSynth en videos musicales, ya fuera directamente o a través de estas empresas. Linkin Park: https://www.youtube.com/watch?v=7NK_JOkuSVY, Magdalena Bay: https://www.youtube.com/watch?v=dXLCHvRsgRQ
    Secret Weapons estaba en una buena posición para dominar el video con IA y las herramientas creativas con IA, pero desde afuera parece que dejó pasar esa oportunidad.

    • Solo le di una mirada muy rápida, pero los modelos de difusión de video y EbSynth parecen estar en categorías distintas.
      EbSynth se ve más como un plugin de Final Cut Pro para enmascarado y tracking. La base de clientes esperada puede ser similar, pero las capacidades y recursos que necesita el equipo de ingeniería son bastante distintos.
      Decir que Secret Weapons estaba lista para dominar el video con IA y las herramientas creativas me parece un poco exagerado.
    • Este video es de hace 3 años: https://www.youtube.com/watch?v=6FN7fKlJcPE
      No sabía que ya habían llegado a este nivel hace 3 años.
  • No me interesa mucho la biblioteca en sí; solo quiero la implementación matemática pura para usarla en shaders y cosas así. El algoritmo en GLSL está aquí, y la función que buscan es vec3 mixbox_lerp:
    https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...
    No tengo tiempo para hacer una demo, pero parece bastante bien optimizado y también se ve bien en los ejemplos. Excelente trabajo de quienes lo hicieron.

    • Eso sí, hay que tener cuidado con la licencia.
  • Hay discusiones anteriores de hace 3 años:
    https://news.ycombinator.com/item?id=30116316 71 puntos, 15 comentarios
    https://news.ycombinator.com/item?id=30033611 60 puntos, 13 comentarios
    Me pregunto si alguien probó Rebelle, una app comercial de pintura que usa este enfoque.

    • Rebelle es muy buena. Es rápida y funciona bien incluso en alta resolución.
      Tiene menos funciones que Painter, pero eso más bien es una ventaja.
      Lo que todavía le falta es una sensación adecuada para materiales secos como el carboncillo, y una integración más profunda con la superficie del soporte. Por ahora, en general se parece más a un mapa de profundidad superficial, y no se siente tan rugoso como superficies de madera o papel áspero, ni siquiera como nubes.
      Por ahora es la app que más me gusta, y la mezcla de colores ya es muy buena desde hace un tiempo.
  • Se ve genial, pero al ser All Rights Reserved + CC-BY-NC, es imposible incluirlo como implementación predeterminada en Krita, GIMP o Blender.

  • Pinto miniaturas, y cuando pasas de las etapas básicas y empiezas a usar filtros o blending con glazes, no es muy práctico probar planes de pintado con software. Esto se ve muy bueno.

  • Esto es realmente genial y debería estar como opción en todos los programas de pintura, pero por otro lado me pregunto si no hará más complejo el proceso de aprendizaje del dibujo y la pintura.
    Mezclar colores de pintura no es intuitivo, así que es una habilidad que hay que aprender.
    En casi todos los demás ámbitos de la vida, uno espera que al mezclar A y B ocurra un cambio lineal. Si le pones sal al agua, aumenta el sabor salado; no esperas que en algún momento se vuelva agria y después salada otra vez.

    • Para alguien que pasa de medios reales a digitales, o de digitales a reales, parece que simplificaría la transición.
      Los ejemplos de mezcla del algoritmo Mixbox en la página web se ven como en la vida real, y las mezclas de otros programas más bien parecen incorrectas.
      Dicho eso, no parece que Mixbox tome en cuenta las propiedades físicas reales de los pigmentos, y esas propiedades pueden afectar de forma drástica la mezcla de pigmentos.