5
votes

Is anyone aware of where to find or implement the Kubelka-Munk function to mix colour like natural paint? Emanuelle Tamponi implemented this function in Krita, an open source project, but I can't find anywhere that this, or a similar method, is shared to 'naturally' mix colours. It may be that it's commercially sensitive or private, but if you don't ask you won't find out!

3
Are you asking if anyone has implemented this in Cocoa? The function itself is easily found via Google.Rob Keniger
Good spotting. No I'm asking how to use this function, or similar, to naturally mix colours - such as shown in the video. I think the tricky part will be converting rgb values to the inputs of the function.glenstorey

3 Answers

5
votes

Feel free to re-use the code we have in krita. It's in calligra/krita/plugins/extensions/painterlyframework. It does need the pigment library as a back-up, but I guess you can easily abstract away from that.

Note however that the code is under the GPLv2+ license. If you reuse the code or the illuminants files your code also need to be GPL.

(for more info, please contact me -- [email protected] or boud on #krita on irc.freenode.net, I'm the maintainer for Krita).

3
votes

Here's an implementation I created that uses a simplified Kubelka-Munk model. It assumes assumes all colors have the same concentration when blending and that all colors are opaque. If it is useful feel free to use it in whatever manner you wish.

https://github.com/benjholla/ColorMixer

3
votes

There is not enough information provided by RGB values alone to perform a true Kubelka-Munk computation, as you need both absorbance and scattering curves across the visible spectrum. Instead, you could generate representative reflectance curves from RGB values, and then use the reflectance information to perform the subtractive mixture, for example, by computing the weighted geometric mean of the two reflectance curves.