samedi 9 janvier 2010

Génération procédurale : Perlin

Tout geek dans la programmation jeux vidéo qui se respecte doit forcément en venir là un jour : la génération procédurale.
Premièrement, ca simplifie et accélère le processus de création dans un jeu vidéo. De deux, ca consiste seulement à utiliser de la programmation pour prétendre qu'on est créatif. De trois, "génération procédurale" ca sonne bien et ca donne l'air intelligent.

Le point de départ lorsqu'on s'intéresse à la génération procédurale, c'est Perlin. Vous n'allez peut-être pas le croire, mais même si son nom ressemble à un de ces vieux grecs (Thalès, Pythagore...) qui sont toujours aussi utiles de nos jours, Perlin lui, n'as pas 2000 ans d'avance. Il est même encore en vie.

Ce qu'il nous a apporté, c'est le bruit de Perlin. C'est à dire une fonction aléatoire pas si aléatoire. On peut dire aussi du bruit cohérent. Bon alors c'est quoi la différence entre un bruit non cohérent et un autre qui l'est? Rien de mieux qu'une image pour expliquer:

Une belle texture pour un nuage!
Ca peut également servir de heightmap.
Avec ça comme base, on peut générer des tas d'autres choses.

Vous voulez faire pareil?
Alors vous aurez besoin de la fonction de bruit de Perlin, ici sur son site. Attention, ça ne donne pas le résultat nuage que je vous ait montré.
Pour avoir ce résultat, il faut combiner plusieurs bruits de perlin. Ici il y a un tutorial qui explique bien comment faire.

Attention! Si vous voulez utiliser la fonction du bruit de perlin, celle qui est donnée sur son site retourne une valeur entre -1 et 1. Alors que pour produire une image les composants red green et blue sont entre 0 et 255. L'erreur serait de multiplier uniquement par 255, mais ca donnerait quelque chose entre -255 et 255. Soit ca fait bugger votre programme, soit vous obtiendrez une image avec des zones noires uniformes (car les valeurs entre -255 et 0 sont transformées en 0).



Pourquoi je vous parle de ça? En 3GS on a commencé les textures générées procéduralement, et comme je vous l'ait dit, il faut bien commencer par le commencement. Et donc chez moi ça donne ceci :

2 commentaires:

  1. Sur Facebook, j'aurrais cliqué sur le bouton "j'aime".
    Là je laisse un p'tit mot en te souhaitant bon courrage pour la suite.
    @++
    CyberTwister

    RépondreSupprimer
  2. Tiens, justement le dernier Canard PC parle de génération procédurale. Si vous vous intéressez au sujet, un dossier de 6 pages y est consacré.
    A voir ici:
    http://www.canardpc.com/news-46153-dossier_du_canard__pc_212___les_jeux_a_generation_procedurale.html

    RépondreSupprimer