Pigment Mixing into Digital Painting
Mixbox is a new digital painting library that simulates real pigment mixing using the Kubelka & Munk theory, enhancing color depth and quality in art across multiple programming languages and platforms.
Read original articleMixbox is a new library designed for digital painting that simulates real pigment mixing, addressing the limitations of traditional painting software. It utilizes the Kubelka & Munk theory to treat colors as pigments, providing a more realistic mixing experience. The library features a straightforward RGB-in, RGB-out interface and is compatible with multiple programming languages, including C++, Python, and GLSL. Mixbox enhances digital art by allowing for natural gradients, vibrant brushstrokes, and realistic fluid simulations, making it an essential tool for artists using software like Rebelle and Blender. Users can try a demo painter to experience the effects firsthand. Mixbox is available under a flexible licensing model, allowing developers to integrate it into their applications. The library supports various platforms, including Unity and Android Studio, and is designed to improve the quality of digital art by eliminating muddy mixtures and enhancing color depth.
- Mixbox simulates real pigment mixing for digital painting.
- It uses the Kubelka & Munk theory for realistic color interactions.
- The library is available in multiple programming languages and platforms.
- Users can try a demo to experience its features before licensing.
- Mixbox aims to improve the quality of digital art with natural gradients and vibrant colors.
Related
Show HN: Semantic Search of 1000 Top Movies of All Time
The website discusses Mixpeek, a media analysis tool focusing on top movies. It offers demos for analyzing popular movie concepts, assigns relevance scores, and promotes multimodal understanding with easy software upgrades. Based in NYC, Mixpeek provides resources for media analysis.
So you think you know box shadows?
This article explores creative uses of box shadows in web design, covering basics, layering for effects, simulating 3D, and performance considerations. It showcases innovative applications with code snippets and demos.
A Clone of Deluxe Paint II Written in Python
PyDPainter is a user-friendly pixel art program developed in Python with PyGame, inspired by Deluxe Paint. It is open-source, available on GitHub, and includes documentation and community engagement options.
Show HN: Stipple Effect – a scriptable pixel art editor to make game art faster
Stipple Effect is a lightweight pixel art editor for indie game developers, featuring animation support, scripting, layer management, and robust tools for creating and managing video game art assets.
Show HN: OBS Live-streaming with 120ms latency
Broadcast Box is a video broadcasting tool using WebRTC for sub-second latency, supporting multiple streams and peer-to-peer connections. It integrates with OBS and GStreamer, and offers community support.
- Many users express curiosity about the technical aspects and potential applications of the library, noting its innovative approach to color mixing.
- Concerns are raised about the library's restrictive licensing, which may limit its integration into popular software like Krita and GIMP.
- Some commenters reflect on the differences between traditional and digital painting techniques, questioning how true pigment mixing might complicate the learning process for new artists.
- Several users mention existing software, such as Rebelle and Corel Painter, that utilize similar mixing techniques, prompting comparisons with Mixbox.
- There is speculation about why Mixbox hasn't been acquired by larger companies like Adobe, given its impressive capabilities.
In short, they first implemented realistic pigment mixing behavior. But in user testing it turned out non-painters are not good at getting the color they want by mixing; you usually end up with brown. So they had to make an unrealistic mixing algorithm that felt more intuitive.
My first thought, looking at the webpage: "Huh, that's neat. I didn't know that painting software didn't even attempt to do color mixing beyond naive interpolation, though I guess it figures; the physics behind all the light stuff must be fairly gnarly, and there's a lot of information lost in RGB that probably can't be just reconstructed."
Scrolling down a bit: "Huh, there's some snippets for using it as a library. Wait, it does operations in RGB? What's going on here?"
Finally, clicking the paper link, I found the interesting bit: "We achieve this by establishing a latent color space, where RGB colors are represented as mixtures of primary pigments together with additive residuals. The latents can be manipulated with linear operations, leading to expected, plausible results."
That's very clever, and seems like a great use for modern machine learning techniques outside the fashionable realm of language models. It uses perceptual color spaces internally too, and physics based priors. All around very technically impressive and beautiful piece of work.
It rhymes with an idea that's been floating in my head for a bit - would generative image models, or image encoder models, work better if rather than rgb, we fed them with wavelength data, or at least a perceptually uniform color space? Seems it'd be closer to truth than arbitrarily using the wavelengths our cone cells happen to respond to (and roughly, at that).
https://krita-artists.org/t/implementing-mixbox-mixing-for-k...
As I learned several minutes ago now it is Corel Painter.
I wonder, is it still good and how it (both old and new algorithms, I allow that it was simplified down the road!) compares to this new library.
Unfortunately, authors doesn't compare themselves with Corel Painter.
They were first on the scene with EbSynth [1], which was the first widely used AI-powered video-to-video style transfer and keyframe interpolation system. EbSynth gave rise to comedians like Joel Haver [2] and lots of others like him.
Several other companies [3] used EbSynth to base their technology on and wound up raising large seed rounds. Major musicians used EbSynth either directly or through these other companies to make music videos [4,5].
Secret Weapons was in a great position to conquer AI video and AI creative tools, but they seemingly slept on it.
[2] https://www.youtube.com/watch?v=SY3y6zNTiLs&list=PLKtIcOP0Wv... (playlist with all of his animations)
[3] https://kaiber.ai/ and others
[4] Linkin Park https://www.youtube.com/watch?v=7NK_JOkuSVY
[5] Magdalena Bay https://www.youtube.com/watch?v=dXLCHvRsgRQ
https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...
I don't have time to whip up a demo, but it seems like it's pretty well optimized and it looks really nice in the examples. Great work from these folks.
https://news.ycombinator.com/item?id=30116316 (71 points, 15 comments)
https://news.ycombinator.com/item?id=30033611 (60 points, 13 comments)
Has anyone tried Rebelle, the commercial painting app that uses this method?
After all, mixing paint colors is something you have to learn because it's not very intuitive.
Almost everywhere else in life, when you mix A and B, you expect a linear transition to happen. By adding salt to water, you are increasing its saltiness, it's not expected that at some point, the water becomes sour before it becomes salty again.
- RYB mixing (e.g. yellow painting plus blue paint = green). I tested it on a mix of alizarin crimson plus hansa yellow to produce a cold orange (e.g. blood orange).
- Relative behavior of specific pigments. For example, a Prussian blue is almost black when applied thickly, but very chromatic when applied as thinly over white. A cerulean blue is pretty much the same in those two states. I tested this on a Prussian and the app performed well.
The app seems to make the assumption that the artist will always want the paint to mix. In a glaze, a thin transparent layer of paint is applied over dry paint. Effectively the result is a filter (the result will always be darker). To a degree, this can be faked using paint applied in a layer the blend mode of which has been set to multiply. It might be nice to add a drying brush to the tool set which selectively dries the paint to prevent mixing. Maybe also a mode switch to selectively different modes of physical application such as glazing, scumbling and dry brushing. While we are at it, why not add a Tonk mode using which thick paint can be lifted off the surface without smudging.
When I paint digitally, I mix the incredible nuance of real paint... even its smell. When I paint with oils I miss the incredible flexibility of the digital process (blend modes, compositing, even the humble undo). Never the twain...
Which makes the whole thing a bit solipsistic when you think about it.
Here it is in 2021:
https://www.escapemotions.com/blog/rebelle-5-meet-color-pigm...
And here it is currently:
https://escapemotions.com/products/rebelle/manual/starting-p...
That seems like something that Adobe would want to borg.
In traditional, you tend to have some rules that make it easy to get good colors. One method is to restrict your paints to a few primary colors and burnt sienna (or another low saturation brown). Then by mixing these colors you get the colors you want, in a way where these colors have a good relationship with the others. So a simple rule is for instance that you get your green by putting lemon yellow with some black and a bit of sienna to lower the saturation. The relationship is almost 'free' from the properties of the physical pigments if you follow such simple rules.
What's the deal about 'relationship'? Colors are not treated individually, they are perceived in context. In real life, lightning will unify a scene by changing colors. However, there is a semantic superposition that affects it. Grass is green in your mind, so if the color you see is a light blue/purple, the brain will adjust its understanding to match it. This is where many illusions come from (most famously the white and gold/blue and black dress meme come from).
This is a big deal to learn painting, but can be almost completely side-stepped by learning how to mix colors.
In digital however, artists got used to the fact that color is generally treated as HSV and adjusted their approach. So the most commonly taught approach to manage colors is to work in black and white, only dealing with value, which is the most essential component of color. Values are the primary issue because this is fundamentally what implies to our brain what are the normal vectors of light, and so carry almost all 'volume information'. Then, you can apply colors via some layers set to multiply, color and overlay mode. Note that it has some antecedent in the traditional world, called 'grisaille' technique.
So, you can color pick anywhere you want on the color wheel without mixing. The impact of color mixing is actually pretty small. The other technique is called gamut masking; you're only allowed to pick colors on a subset of the color wheel that is in a good HSV relationship with the chosen color scheme. The thing is, even though this is not perceptually accurate, this is good enough.
The main impact of color mixing is that if working with low opacity brushes, the colors will look 'muddy'. This problem is mostly side-stepped by avoiding it altogether with high-opacity brushes, and using other layer blending modes.
Because now most digital artists have learnt through these techniques, bringing techniques that work best coming from the traditional world is not very useful, to say the least. In my own practice, traditional and digital are indeed almost entirely separate activities, at every level. The fundamental, theoretical understanding of all aspects is the same, but it doesn't really matter very much; almost all other artists I ever discuss with do not have such an understanding, and build their practice from a more 'human'-centric foundation (technique and artistic concepts).
I'm of course interested in the space, and it is a bit similar to asking why would people would use bash or plain text; it's not necessarily that these are the best tools, but there is much more to it.
Is it that when you have two colors like RGB(0,0,255) and RGB(255,255,0) there is no easy formula to calculate what a mix of these two colors would look like in the real world?
And therefore one needs a lookup table? And since 16Mx16M is a large number, a complete lookup table is impractical?
Related
Show HN: Semantic Search of 1000 Top Movies of All Time
The website discusses Mixpeek, a media analysis tool focusing on top movies. It offers demos for analyzing popular movie concepts, assigns relevance scores, and promotes multimodal understanding with easy software upgrades. Based in NYC, Mixpeek provides resources for media analysis.
So you think you know box shadows?
This article explores creative uses of box shadows in web design, covering basics, layering for effects, simulating 3D, and performance considerations. It showcases innovative applications with code snippets and demos.
A Clone of Deluxe Paint II Written in Python
PyDPainter is a user-friendly pixel art program developed in Python with PyGame, inspired by Deluxe Paint. It is open-source, available on GitHub, and includes documentation and community engagement options.
Show HN: Stipple Effect – a scriptable pixel art editor to make game art faster
Stipple Effect is a lightweight pixel art editor for indie game developers, featuring animation support, scripting, layer management, and robust tools for creating and managing video game art assets.
Show HN: OBS Live-streaming with 120ms latency
Broadcast Box is a video broadcasting tool using WebRTC for sub-second latency, supporting multiple streams and peer-to-peer connections. It integrates with OBS and GStreamer, and offers community support.