Monday, May 26, 2008

Lost in Colorspace

Pour travailler en pixel art, il faut bien admettre que les couleurs choisies sont extrêmement importantes. Et avec ma "palette deluxe paint", moi, je suis plutôt mal parti.

Je m'explique: la palette DP est uniquement basée sur le modèle "RVB" des couleurs. Un dégradé de rouges, par exemple, partira du blanc (#ffffff) au rouge pur (#ff0000) pour ensuite aller vers le noir (#000000). entre le rouge et le noir, on aura (en plus de Julien Sorel) des teintes de rouges de plus en plus sombres en abaissant progressivement la composante rouge (seule restante). J'ai toujours utilisé ce modèle-là, mais il a ses limites.

Picking the right colors is of highest importance for pixel art. So far, SEDS is shipped with the "Deluxe Paint II" palette as default and i'm mostly using the palette from the game Tyrian for Bilou ... Which turns to be not a so good idea as it mostly uses "straight" ramps of colors. All my blue rasters, for instance, start with a nearly-white color, then gradually drop greens and reds to get to full-blue and then drop blue too to get to almost-black color.

Unfortunately, it's not very appealing for most situations, and it's clearly unappropriated for "natural" objects such as trees, rocks, etc. A new technique i've learned recently is to build your raster in HSV space, where hue, saturation and value are progressively altered to move from one color to the other. Sticking to a single hue will produce a quite uninteresting trunk for a tree, for instance, while having yellowish-highlight and red-ish shadows will turn out into a more "live" tree -- theoretically, i mean : i still have to test that live.

En particulier, pour des objets "naturels", un moins bon éclairage rend l'objet plus sombre, d'accord (c'est la base du rendu de profondeur), mais aussi d'une couleur moins franche (parce que nous ne voyons bien les couleurs que s'il y a assez d'intensité lumineuse ... repensez à votre dernière balade nocturne :) On aura donc tendance à désaturer les couleurs sombres en plus de réduire leur composante de luminosité, et inversément, à re-saturer les parties plus claires (même si on a jamais vu de zone jaune-orangée sur un tronc d'arbre), pour renforcer le côté "chatoyant" de cet endroit bien éclairé par le soleil ...

Tout ça me donne de nouveaux objectifs et une nouvelle manière de penser le "gestionnaire de palettes" de mon Sprite Editor.

  1. pour pouvoir plus facilement jouer avec les couleurs d'autres artistes, je me fais un petit script qui reprend la palette de n'importe qu'elle image et la propose à la DS par wifi.
  2. le meilleur moyen que j'ai jusqu'ici de trouver une couleur qui m'intéresse est de partir de deux teintes "extrèmes" et de demander un dégradé HSV entre elles. Ce qui m'intéresse particulièrement, ce sont les dégradés qui changent également la teinte et qui me permettent des bruns-roux pour mes troncs d'arbres avec des verts-jaunes pour les feuilles et la végétation.
Les formules de conversion RGB<->HSV sont faciles à trouver (wikipédia-power), mais plutôt moche à convertir en code. Enfin, ça ira, vous bilez pas : j'en ai vu d'autres ;)

All together, that gives me new objectives for the Sprite Editor (and mainly palette edition mode). I'm already working on a way to import colors (via Wifi) from a file laying on your PC during the edition, and using the "quick color selection" widget to manage and sort palette colors (as converters tends to mess them all).
Once this works, i'll try to build a "hsv-raster" feature so that we can feed two colors and pick any intermediaries between them. RGB2HSV functions are easily found on wikipedia, but they're quite ugly to code ...
edit: ça y est: mon SEDS est à nouveau fonctionnel. Il a fallu réorganiser presque toute la gestion de la mémoire vidéo pour pouvoir afficher les rasters importés par wifi. Pfiou.

1 comment:

Unknown said...

tres interressant ce blog ! Je rajoute a mes bookmarks !