In my rhythm game, I have a note object which can be of a different color depending on the note chart. I could use a sprite sheet with all the different color variations I use, but I would prefer to parametrize this. (Each note sprite is made of different shades of a hue. For example a red note has only red, light red and dark red.)
How can I colourise a sprite anew?
I'm working with OpenGL, but any algorithm or math explanation will do. :)
Answer
I'd probably use a single color image (eg. your note-sprite) with alpha channel and then color the whole image with your base-color. So, something like in the following image (from wikimedia commons):
If your color was red, you would then color the note (all the black parts) with the same red. What you would need in addition, is a grayscale image with the shading of the note. Then combine the shading with the flat color by using blend-modes like Multiply and/or Screen.
Another, probably simpler approach would be to just have a grayscale image where you would multiply each color component with your selected color. So if you have a gray value of 0.5
, and a red color RGB(1.0, 0.0, 0.0)
, that would result in RGB(0.5, 0.0, 0.0)
for the given pixel.
Update: Here's an example image to illustrate what I mean with the blend-modes:
Of course you could just use the shadow layer if you don't need the highlights (which is basically the same as the simpler approach mentioned above).
No comments:
Post a Comment