Accueil > Flash-AS3 > Seed-Based Noise Generator (=>fait du bruit avec ta graine)

Seed-Based Noise Generator (=>fait du bruit avec ta graine)

cover

donc en fait c’est parti d’un effet de calque trouvé sur ART FROM CODE. je sais plus où mais KP disait que c’était juste un coup de blendMode pour avoir des boulettes qui se mixent. puis après je suis tombé sur le blog de pixelero et notamment ces deux articles :

qui ont violemment démystifiéles histoires de metaballs qui m’avaient ébaubies:

bref… donc je me mets à faire trois boulettes en blendmode.DIFFERENCE et oh miracle: c’est beau.
donc après deux trois tests de Math.random() * stage.stageWidth, ça devenait vraiment très beau, très complexe.

“haha me dis je, tu vas devenir maître du monde avec ça mon gars.”
sauf que, ben … Math.random() quoi… des fois c’était joli mais des fois juste moche (genre tout coincé dans un coin).
pourquoi le perlinNoise il arrive à tomber sur des valeurs connues et pour quoi je devrais toujours m’en remettre à un chiffre aléatoire?
hein ?! pourquoi ?
donc j’ai cherché de quoi me faire un algo de distribution PSEUDO ALEATOIRE ou autrement appelés PRNG pour Pseudo Random Number Generator.
heureusement deux trois gars étaient passés par là dont POLYGONAL. évidemment il a encore envoyé du pâté et je dois bien admettre que j’ai pas tout compris.
néanmoins, dans ses sources, il donne le lien qui tchue: lien où les gars expliquent une implémentation toute conne d’un truc auquel je ne comprends toujours pas tout mais qui marche.
en gros le principe de l’algo c’est qu’on lui passe une base et un multiplicateur (seed based random number generator)et qu’il va pouvoir générer une série de valeurs apparemment aléatoire mais malgré tout sérielle (ce qui est normal pour une série).
donc après avoir implémenté cette saloperie, j’ai fait des essais sur le positionnement des boulettes sur la scène et ça marche plutà´t bien.
du moins j’ai mon truc où en entrant 2 valeurs, on obtiendra toujours le même résultat.
démo:

ce qui est remarquable c’est le fait de pouvoir changer les paramètres et qu’il se ’souvienne’ des configs…c’est pas un miracle, c’est du pseudo aléatoire.

la classe est à peu près anti-con:

Noise.process( bd, octaves, seed, scale, filter, randomSize ); où:

  • bd est un bitmapData
  • octaves est le nombre d’itérations du bruit
  • seed le multiplicateur de base
  • scale le facteur d’échelle( 1 est dense, 4 est très très zoomé)
  • filter si jamais tu veux coller un filtre entre chaque passe ( un blur ou tout autre Bitmapfilter )
  • randomSize une booléenne qui redimensionne ou non les bulles

les changement d’échelle amènent un espèce de grain très beau et rien que le mouvement qui fait grandir le bruit mérite que tu laisse le bouton scale appuyé.

à noter quelques propriétés sympas accessibles via un Array statique :

  • Noise.colors : les couleurs du dégradé défaut [ 0xFFFFFF, 0x000000 ];
  • Noise.alphas : la répartition des alphas défaut [ 1, 1 ];
  • Noise.repartition : la répartition des plages de couleur défaut [ 0,255 ];

et surtout une petite crassouille de mon cru:

  • static public var blendModes:Array = [ BlendMode.DIFFERENCE ];

qui est utilisé à chaque itération pour drawer la bulle façon:
blendModes[ i % blendModes.length ]; donc si on met différents BlendModes, il va les appliquer un par un à chaque couche.
bon, c’est pas simple à piger donc: vla lrendu de base: Noise.blendModes = [ BlendMode.DIFFERENCE ];

puis avec la série: Noise.blendModes = [ BlendMode.DIFFERENCE, BlendMode.ADD ];

puis avec la série: Noise.blendModes = [ BlendMode.DIFFERENCE, BlendMode.ADD, BlendMode.SUBTRACT ];

bref des heures d’amusement, c’est tellement beau que j’ai envie de pleurer.

nicoptere Flash-AS3 , , , , ,

  1. 21/12/2008 à 19:43 | #1

    Je trouve ça assez joli quand on s’amuse avec les curseurs des valeurs. Je suis sûr que tu peux faire quelque chose en programmant une animation avec ces valeurs. Surtout que ça n’a pas l’air très gourmand comme calcul.

  2. 22/12/2008 à 13:32 | #2

    Oui, c’est une très jolie expérience,
    je suis tout bonnement épaté.

  3. 23/12/2008 à 11:16 | #3

    c’est sympa quand tu restes cliqué sur un des curseur pour changer le scale… ca fait une anim presque dans le genre fractale ou tu (dé)zoomes dedans a l’infini

  4. 24/12/2008 à 10:53 | #4

    ça rend super bien, avec des layers de couleurs je pense que tu devrais arriver a faire un truc bien psychédélique :)

  5. 30/12/2008 à 00:29 | #5

    ça biche mec !

  6. 02/02/2009 à 07:46 | #6

    Merci Nicopere pour ta réponse à ma question sur mediabox sur les quillemets: Je me suis aussi intéressé à la notion de "bruit aléatoire" avec ce jeu:

    gilleschomel.perso.neuf.f…

    J’espère qu’il t’intéressera…

  7. 02/02/2009 à 08:58 | #7

    salut pentamatch :)
    content que ça t’aie aidé.

    les visuels sont tristes mais le concept est bien (comme le pentamatch d’ailleurs). je m’atendais pas à une application dans un jeu. comme quoi … :)

  1. Pas encore de trackbacks