Faites du bruit !
Faites du bruit !
Bonjour,
Pour les besoins de la cause, je me suis penché sur les algorithmes de bruit. Pour ceux qui ne sauraient pas de quoi il est question ou pour délimiter le contexte, une fonction de bruit est une fonction pseudo-aléatoire, c'est-à-dire qu’elle produit « une série de nombres qui s'approche d'un aléa statistiquement parfait » (cf. wikipedia). Plus particulièrement, les fonctions de bruits cohérents qui conservent une certaine régularité dans les valeurs produites. Par exemple, un nuage a une structure aléatoire mais pourtant cohérente à la différence de la « neige » que l’on pourrait voir sur un téléviseur qui, bien qu’aléatoire, est totalement incohérente.
On pourrait ne pas voir immédiatement l’utilité de ces fonctions pourtant pour toutes les raisons où nous aurions besoin d’un coté aléatoire mais cohérent, ces fonctions viennent apporter une solution intéressante. Par exemple :
- Mouvement aléatoire autour d’un axe défini, tremblement, …
- Texture (bois, marbre, roche, béton, …)
- Formation de terrain (heightmap)
- Lumière
- …
Nous avons tous d’ailleurs utilisé des fonctions de bruit. Dans photoshop, dans un générateur de texture, bien souvent intégré dans un outil de modélisation (Blender, …). Pour pousser plus loin le sujet, voici deux pages détaillant le concept :
http://www.xna-connection.com/post/Algo ... Noise-en-C
http://www.siteduzero.com/tutoriel-3-68 ... rents.html
Bref, quand on parle de bruit ( ) en 3D, on trouve rapidement Ken Perlin et Libnoise.
Ken Perlin est le précurseur dans la texture procédurale pour avoir inventer le « Perlin Noise » en 1983 utilisé dans le film Tron http://cs.nyu.edu/~perlin/.
Libnoise est une librairie écrite en c++ réalisé par Jason Bevins se basant, en partie, sur Perlin Noise et fournissant un ensemble d’outil permettant d’exploiter ces fonctions de bruit. http://libnoise.sourceforge.net/
Pour la plateforme qui nous réunit ici, j’ai cherché quelque chose rassemblant libnoise et c#. Voici le résultat :
- http://www.big-black-block.com/tools/libnoisexna, portage assez scolaire de Libnoise mais passablement lié à XNA
- http://forum.unity3d.com/threads/68764- ... d-to-Unity, une adaptation de la précédente mais passablement lié à unity
- http://libnoisedotnet.codeplex.com/, portage assez scolaire de Libnoise et pas de lien particulier.
Après épluchage du code et quelques heures de lecture sur le sujet, je me suis rendu compte que :
- libnoise xna/unity utilisait le code de Bevins basé lui-même sur la première version du Perlin Noise
- les trois avaient plus ou moins fait l’impasse sur pas mal de sujet, enfin se sont bornés au portage scolaire de Libnoise sans trop savoir ce qu’il y avait sous le capot.
En quête d’un projet assez velu en c#, histoire de travailler en profondeur avec, je me suis lancé dans mon propre portage de libnoise qui, comme son aïeul, est en licence LGPL. J’ai conservé le principe de « Portable » de libnoise, c'est-à-dire qu’elle n’est pas liée à autre chose que System. On peut donc l’embarquer dans une version WebPlayer d’un projet (mono, microsoft, xna, unity, ...). Par contre, j’ai beaucoup modifié le modèle et réalisé des optimisations dans le code, enfin autant que je pouvais. Pour le moment, cela reste une version Beta c'est-à-dire que :
- Ca compile
- Visiblement ça fonctionne, bien que tout n’a pas été testé
- Des changements plus ou moins profond sont susceptibles de se produire dans le modèle.
Je fournirai des détails sur l’implémentation dans ce sujet mais pour faire court, pour une fois , je conclurai cette présentation avec des exemples.
Voici le dépôt du projet pour obtenir le code source : http://code.google.com/p/libnoise-dotnet/
Voici un programme de démonstration, en fait c’est mon cheval de test : http://www.burnweb.net/libnoise/Win-Des ... .0.0.b.zip
Voici une vidéo d’une ancienne version de ce programme : http://www.youtube.com/watch?v=buYhZDEv5UQ
Voici un webplayer de démonstration, en fait mon cheval de test pour Unity : http://www.burnweb.net/libnoise/Unity3D-WebPlayer/ . J’ai repris le package démo « Procedural » fourni par Unity 3d et je l’ai adapté. J’ai aussi ajouté deux exemples supplémentaires : Création procédural d’un Mesh terrain et création dynamique d’une texture avec sa normal map. Utilisez N et P pour naviguer entre les scènes … la souris ou le clavier pourront être utiles dans certains cas.
Voici le package du webplayer de démonstration : http://www.burnweb.net/libnoise/Unity3D ... itypackage
Il contient la dll Libnoise compilé et les classes utiles pour Unity3D (dans le dossier Libs)
Il reste encore du travail à faire dessus avant de fournir une version stable, notamment compléter la documentation du code et fournir des détails d’implémentation. Toutefois, j’ai fortement conservé le modèle de Libnoise. Sa documentation et ses tutoriaux sont donc valables à quelques détails près. Vous pouvez aussi avoir des exemples d’utilisation soit dans le package unity soit dans « libnoise-dotnet demo ». Divers autres agencements seront fait (des projets spécifiques dotnet et unity seront réalisé pour produire des dll ciblées, …). Le projet évoluera donc au fur et à mesure de mes besoins, ou des votres … A ce sujet, toute contribution est accepté, en test, en code, en commentaires, en doc
Pour les besoins de la cause, je me suis penché sur les algorithmes de bruit. Pour ceux qui ne sauraient pas de quoi il est question ou pour délimiter le contexte, une fonction de bruit est une fonction pseudo-aléatoire, c'est-à-dire qu’elle produit « une série de nombres qui s'approche d'un aléa statistiquement parfait » (cf. wikipedia). Plus particulièrement, les fonctions de bruits cohérents qui conservent une certaine régularité dans les valeurs produites. Par exemple, un nuage a une structure aléatoire mais pourtant cohérente à la différence de la « neige » que l’on pourrait voir sur un téléviseur qui, bien qu’aléatoire, est totalement incohérente.
On pourrait ne pas voir immédiatement l’utilité de ces fonctions pourtant pour toutes les raisons où nous aurions besoin d’un coté aléatoire mais cohérent, ces fonctions viennent apporter une solution intéressante. Par exemple :
- Mouvement aléatoire autour d’un axe défini, tremblement, …
- Texture (bois, marbre, roche, béton, …)
- Formation de terrain (heightmap)
- Lumière
- …
Nous avons tous d’ailleurs utilisé des fonctions de bruit. Dans photoshop, dans un générateur de texture, bien souvent intégré dans un outil de modélisation (Blender, …). Pour pousser plus loin le sujet, voici deux pages détaillant le concept :
http://www.xna-connection.com/post/Algo ... Noise-en-C
http://www.siteduzero.com/tutoriel-3-68 ... rents.html
Bref, quand on parle de bruit ( ) en 3D, on trouve rapidement Ken Perlin et Libnoise.
Ken Perlin est le précurseur dans la texture procédurale pour avoir inventer le « Perlin Noise » en 1983 utilisé dans le film Tron http://cs.nyu.edu/~perlin/.
Libnoise est une librairie écrite en c++ réalisé par Jason Bevins se basant, en partie, sur Perlin Noise et fournissant un ensemble d’outil permettant d’exploiter ces fonctions de bruit. http://libnoise.sourceforge.net/
Pour la plateforme qui nous réunit ici, j’ai cherché quelque chose rassemblant libnoise et c#. Voici le résultat :
- http://www.big-black-block.com/tools/libnoisexna, portage assez scolaire de Libnoise mais passablement lié à XNA
- http://forum.unity3d.com/threads/68764- ... d-to-Unity, une adaptation de la précédente mais passablement lié à unity
- http://libnoisedotnet.codeplex.com/, portage assez scolaire de Libnoise et pas de lien particulier.
Après épluchage du code et quelques heures de lecture sur le sujet, je me suis rendu compte que :
- libnoise xna/unity utilisait le code de Bevins basé lui-même sur la première version du Perlin Noise
- les trois avaient plus ou moins fait l’impasse sur pas mal de sujet, enfin se sont bornés au portage scolaire de Libnoise sans trop savoir ce qu’il y avait sous le capot.
En quête d’un projet assez velu en c#, histoire de travailler en profondeur avec, je me suis lancé dans mon propre portage de libnoise qui, comme son aïeul, est en licence LGPL. J’ai conservé le principe de « Portable » de libnoise, c'est-à-dire qu’elle n’est pas liée à autre chose que System. On peut donc l’embarquer dans une version WebPlayer d’un projet (mono, microsoft, xna, unity, ...). Par contre, j’ai beaucoup modifié le modèle et réalisé des optimisations dans le code, enfin autant que je pouvais. Pour le moment, cela reste une version Beta c'est-à-dire que :
- Ca compile
- Visiblement ça fonctionne, bien que tout n’a pas été testé
- Des changements plus ou moins profond sont susceptibles de se produire dans le modèle.
Je fournirai des détails sur l’implémentation dans ce sujet mais pour faire court, pour une fois , je conclurai cette présentation avec des exemples.
Voici le dépôt du projet pour obtenir le code source : http://code.google.com/p/libnoise-dotnet/
Voici un programme de démonstration, en fait c’est mon cheval de test : http://www.burnweb.net/libnoise/Win-Des ... .0.0.b.zip
Voici une vidéo d’une ancienne version de ce programme : http://www.youtube.com/watch?v=buYhZDEv5UQ
Voici un webplayer de démonstration, en fait mon cheval de test pour Unity : http://www.burnweb.net/libnoise/Unity3D-WebPlayer/ . J’ai repris le package démo « Procedural » fourni par Unity 3d et je l’ai adapté. J’ai aussi ajouté deux exemples supplémentaires : Création procédural d’un Mesh terrain et création dynamique d’une texture avec sa normal map. Utilisez N et P pour naviguer entre les scènes … la souris ou le clavier pourront être utiles dans certains cas.
Voici le package du webplayer de démonstration : http://www.burnweb.net/libnoise/Unity3D ... itypackage
Il contient la dll Libnoise compilé et les classes utiles pour Unity3D (dans le dossier Libs)
Il reste encore du travail à faire dessus avant de fournir une version stable, notamment compléter la documentation du code et fournir des détails d’implémentation. Toutefois, j’ai fortement conservé le modèle de Libnoise. Sa documentation et ses tutoriaux sont donc valables à quelques détails près. Vous pouvez aussi avoir des exemples d’utilisation soit dans le package unity soit dans « libnoise-dotnet demo ». Divers autres agencements seront fait (des projets spécifiques dotnet et unity seront réalisé pour produire des dll ciblées, …). Le projet évoluera donc au fur et à mesure de mes besoins, ou des votres … A ce sujet, toute contribution est accepté, en test, en code, en commentaires, en doc
Dernière édition par gabriel le 04 Déc 2011 13:48, édité 1 fois.
Prochainement sur vos écrans
Re: Faites du bruit !
Salut Gabriel.
Toujours cet esprit de partage qui fait plaisir.
J' ai bien regarder ton test, et la video.
Je ne devine pas encore, avec précision, les futurs applications de cet outil, mais je devine qu'il va être
puissant.( a moins que j'ai vraiment rien pigé !!)
Une IA pour des ennemis qui ne se jeteraient pas bétement sur le joueur?(a titre d'exemple)
j'ai hate de lire les autres coms....qui seront plus concréts que le mien.
Toujours cet esprit de partage qui fait plaisir.
J' ai bien regarder ton test, et la video.
Je ne devine pas encore, avec précision, les futurs applications de cet outil, mais je devine qu'il va être
puissant.( a moins que j'ai vraiment rien pigé !!)
Une IA pour des ennemis qui ne se jeteraient pas bétement sur le joueur?(a titre d'exemple)
j'ai hate de lire les autres coms....qui seront plus concréts que le mien.
Dés fois j'bug, dés fois j'bug pas.
Re: Faites du bruit !
Le bruit ^^ je pense plutôt que c'est pour rendre certain Object le plus réel possible on parle de texture.
Exemple j'utilise C4D et je me sert de bruit pour imiter la texture des vagues je vais en rajouter 1 pour l’écume
Et je m'en sert en (Normal Map) pour donner du relief par exemple ^^ etc ... seul problème moi je vais faire ça aléatoirement et peu être pas bien ^^ et ça me prend des heures à obtenir un résultat qui me conviens.
La si je comprend bien c'est Aléatoire et cohérents en tout cas ça me dépasse ^^
je viens de regarder les testes ses classes .
donc si je me trompe pas c'est ça , mais je laisse les spécialistes être plus claire .
Moi pour moi le Noise c'était dans les logiciel vidéo ^^ mais apres avec la 3D j'ai vu que je m'en sert tout le temps .
Exemple j'utilise C4D et je me sert de bruit pour imiter la texture des vagues je vais en rajouter 1 pour l’écume
Et je m'en sert en (Normal Map) pour donner du relief par exemple ^^ etc ... seul problème moi je vais faire ça aléatoirement et peu être pas bien ^^ et ça me prend des heures à obtenir un résultat qui me conviens.
La si je comprend bien c'est Aléatoire et cohérents en tout cas ça me dépasse ^^
je viens de regarder les testes ses classes .
donc si je me trompe pas c'est ça , mais je laisse les spécialistes être plus claire .
Moi pour moi le Noise c'était dans les logiciel vidéo ^^ mais apres avec la 3D j'ai vu que je m'en sert tout le temps .
Bienvenue !
Re: Faites du bruit !
C'est de l'aléatoire contrôlée en effet, par une source externe.
La nature est souvent faite comme ça en plus, c'est jamais un aléatoire absolu, sans règle ni direction, mais un aléatoire guidé par quelque chose.
C'est très intéressant en effet, moi je connaissais plus les fractales dans ce truc là (je suivais à l'époque un thread de fractales en C++/Qt sur developpez.com), lié à l'optimisation des vitesses de calcul. http://qt.developpez.com/defis/01-buddhabrot/
Je me suis amusé à te lire, as always
La nature est souvent faite comme ça en plus, c'est jamais un aléatoire absolu, sans règle ni direction, mais un aléatoire guidé par quelque chose.
C'est très intéressant en effet, moi je connaissais plus les fractales dans ce truc là (je suivais à l'époque un thread de fractales en C++/Qt sur developpez.com), lié à l'optimisation des vitesses de calcul. http://qt.developpez.com/defis/01-buddhabrot/
Je me suis amusé à te lire, as always
Re: Faites du bruit !
Bonjour,
C'est vrai que l'utilité ne pourrait pas immédiatement sauter aux yeux, d'autant plus que c'est exclusivement du code. La lib ne fournit que les ustensiles, libre aux utilisateurs de faire leurs propres cuisines avec. J'ai tenté de montrer, au travers du projet exemple, des utilisations variées :
- Enchainement aléatoire de couleur et d'intensité, on ne passe pas d'une couleur à l'autre brutalement (bleu -> rouge) mais plutôt par une transition plus ou moins prononcée
- mouvement aléatoire, pareil que pour les couleurs, par transition plus ou moins prononcée
L'utilisation immédiate pourrait être la création de terrain. Bien souvent, on se creuse pour avoir une base de départ qui soit à la fois variée (aléatoire) mais pourtant cohérente (plaine, colline, montagne). J'avais vu une vidéo où l'utilisateur rendait ce coté aléatoire par de large coup de pinceaux de différentes textures et duretés (avec le terrain unity) ... approche qu'on peut aussi avoir avec photoshop. Le problème est que chaque action modifie irrémédiablement l'ensemble. C'est à dire que je ne peux pas supprimer (simplement) la nieme action. Avec l'approche bruit et module, on spécifie plusieurs rendus (plaine, colline, montagne) puis on les assemble pour obtenir un rendu final. On peut faire varier des paramètres à tous les niveaux pour impacter le rendu final. Autre avantage, et non des moindres, si nous fournissons les même paramètres en entrée, nous obtenons le même résultat en sortie ... De plus, pour chaque primitive, en fournissant un seed différent ( int32 donc à priori 2 147 483 647 possibilités) on obtient un résultat différent, par contre un même seed donnera le même résultat pour deux appels successifs.
On peut donc ne conserver que le paramétrage et générer à la volée le rendu ... Alors attention sur ce point aux performances. Pour calculer une image de 256*256, il faut appeler la fonction de bruit 65536 fois (pour chaque pixel), si à cela on ajoute un sumFractal de base (6 octaves) (somme des appels consécutifs d'une fonction de bruit à différentes fréquence), on appelle la fonction 65536 * 6 soit 393216 fois ... Ceci dit, la lib calcule cette image en 0.175 secondes (sur ma machine). Plus la taille augmente ou plus le nombre de modules imbriqués augmente plus le temps de calcul s'allonge. En plus, c'est du c# c'est donc fatalement moins proche de la machine. Le même code en c++ divise le temps de calcule de 40% environ. Les fonctions de base peuvent être même portée dans le GPU et Ken Perlin souhaiterai même que la fonction soit portée au niveau hardware.
Bref, chacun sa tambouille. On peut par exemple pré-calculer une texture mur "gratté légèrement écrasé" en niveau de gris puis l'utiliser dans un projet et l'affiner en runtime avec une couleur. Bon cecit dit, ce n'est pas fait pour remplacer les outils du marché, c'est fait pour avoir un outil de ce type, sous forme de code, à disposition dans un projet.
Par exemple, j'ai eu à faire avec des astéroïdes. Mon graphiste préféré ma pondu un modèle de base (une boule) avec une texture, au chargement de la scène, j'applique un bruit léger pour déformer mon modèle de base et créer rapidement une dizaine de modèles différents (aléatoire mais cohérents )
db22 : Ouip voilà, tu utilises cela en permanence. Essaye de créer une texture peau d'orange avec photoshop et le pinceau ... là, tu obtiens rapidement une texture aléatoire mais cohérente, on va dire réaliste
Franck: IA non .... quoique, ca peut t'aider pour imprimer une cheminement non rectiligne, aléatoire mais cohérent (exemple extrême : le mec bourré qui rentre chez lui, pas vraiment en ligne droite, plutôt hératique mais il arrive quand même chez lui )
Cayou: Le bruit, enfin le bruit cohérent, peut-être considéré comme fractale dans le sens où
# il a des détails similaires à des échelles arbitrairement petites ou grandes ;
# il est trop irrégulier pour être décrit efficacement en termes géométriques traditionnels
(cf. Wikipedia)
Tu peux par exemple utiliser une fractale pour générer une plante et utiliser une fonction bruit pour ajouter les distorsions. Ainsi, tu obtiens des résultats différents en faisant varier tes paramètres de bruits. Amuse toi à dessiner 15 feuilles d'arbres différents pour comprendre
Bon, je ne plaide pas ma cause, c'est juste un outil.
C'est vrai que l'utilité ne pourrait pas immédiatement sauter aux yeux, d'autant plus que c'est exclusivement du code. La lib ne fournit que les ustensiles, libre aux utilisateurs de faire leurs propres cuisines avec. J'ai tenté de montrer, au travers du projet exemple, des utilisations variées :
- Enchainement aléatoire de couleur et d'intensité, on ne passe pas d'une couleur à l'autre brutalement (bleu -> rouge) mais plutôt par une transition plus ou moins prononcée
- mouvement aléatoire, pareil que pour les couleurs, par transition plus ou moins prononcée
L'utilisation immédiate pourrait être la création de terrain. Bien souvent, on se creuse pour avoir une base de départ qui soit à la fois variée (aléatoire) mais pourtant cohérente (plaine, colline, montagne). J'avais vu une vidéo où l'utilisateur rendait ce coté aléatoire par de large coup de pinceaux de différentes textures et duretés (avec le terrain unity) ... approche qu'on peut aussi avoir avec photoshop. Le problème est que chaque action modifie irrémédiablement l'ensemble. C'est à dire que je ne peux pas supprimer (simplement) la nieme action. Avec l'approche bruit et module, on spécifie plusieurs rendus (plaine, colline, montagne) puis on les assemble pour obtenir un rendu final. On peut faire varier des paramètres à tous les niveaux pour impacter le rendu final. Autre avantage, et non des moindres, si nous fournissons les même paramètres en entrée, nous obtenons le même résultat en sortie ... De plus, pour chaque primitive, en fournissant un seed différent ( int32 donc à priori 2 147 483 647 possibilités) on obtient un résultat différent, par contre un même seed donnera le même résultat pour deux appels successifs.
On peut donc ne conserver que le paramétrage et générer à la volée le rendu ... Alors attention sur ce point aux performances. Pour calculer une image de 256*256, il faut appeler la fonction de bruit 65536 fois (pour chaque pixel), si à cela on ajoute un sumFractal de base (6 octaves) (somme des appels consécutifs d'une fonction de bruit à différentes fréquence), on appelle la fonction 65536 * 6 soit 393216 fois ... Ceci dit, la lib calcule cette image en 0.175 secondes (sur ma machine). Plus la taille augmente ou plus le nombre de modules imbriqués augmente plus le temps de calcul s'allonge. En plus, c'est du c# c'est donc fatalement moins proche de la machine. Le même code en c++ divise le temps de calcule de 40% environ. Les fonctions de base peuvent être même portée dans le GPU et Ken Perlin souhaiterai même que la fonction soit portée au niveau hardware.
Bref, chacun sa tambouille. On peut par exemple pré-calculer une texture mur "gratté légèrement écrasé" en niveau de gris puis l'utiliser dans un projet et l'affiner en runtime avec une couleur. Bon cecit dit, ce n'est pas fait pour remplacer les outils du marché, c'est fait pour avoir un outil de ce type, sous forme de code, à disposition dans un projet.
Par exemple, j'ai eu à faire avec des astéroïdes. Mon graphiste préféré ma pondu un modèle de base (une boule) avec une texture, au chargement de la scène, j'applique un bruit léger pour déformer mon modèle de base et créer rapidement une dizaine de modèles différents (aléatoire mais cohérents )
db22 : Ouip voilà, tu utilises cela en permanence. Essaye de créer une texture peau d'orange avec photoshop et le pinceau ... là, tu obtiens rapidement une texture aléatoire mais cohérente, on va dire réaliste
Franck: IA non .... quoique, ca peut t'aider pour imprimer une cheminement non rectiligne, aléatoire mais cohérent (exemple extrême : le mec bourré qui rentre chez lui, pas vraiment en ligne droite, plutôt hératique mais il arrive quand même chez lui )
Cayou: Le bruit, enfin le bruit cohérent, peut-être considéré comme fractale dans le sens où
# il a des détails similaires à des échelles arbitrairement petites ou grandes ;
# il est trop irrégulier pour être décrit efficacement en termes géométriques traditionnels
(cf. Wikipedia)
Tu peux par exemple utiliser une fractale pour générer une plante et utiliser une fonction bruit pour ajouter les distorsions. Ainsi, tu obtiens des résultats différents en faisant varier tes paramètres de bruits. Amuse toi à dessiner 15 feuilles d'arbres différents pour comprendre
Bon, je ne plaide pas ma cause, c'est juste un outil.
Prochainement sur vos écrans
Re: Faites du bruit !
Bonsoir,
Une mise à jour permettant d'exporter une noisemap en heightmap 8 (byte) , 16(ushort) et 32(float) bits au format raw. Le raw32 ne servira à rien dans unity, enfin ..., par contre les raw8 et le raw16 permettent d'importer directement la map dans l'éditeur de terrain. J'ai aussi mis à jour le webplayer et le package.
Une mise à jour permettant d'exporter une noisemap en heightmap 8 (byte) , 16(ushort) et 32(float) bits au format raw. Le raw32 ne servira à rien dans unity, enfin ..., par contre les raw8 et le raw16 permettent d'importer directement la map dans l'éditeur de terrain. J'ai aussi mis à jour le webplayer et le package.
Prochainement sur vos écrans
Re: Faites du bruit !
gourance ....
Dernière édition par gabriel le 08 Déc 2011 15:41, édité 1 fois.
Prochainement sur vos écrans
Re: Faites du bruit !
Bonjour,
Nouvelle mise à jour pour intégrer ShapeFilter. L'idée est de pouvoir générer du bruit dans une ou plusieurs zones d'une noise map. Ca permet, par exemple,
- sur une texture brique, de générer le bruit sur la brique et pas dans les jointures
- donner une forme grossière à un terrain et générer dans les zones que l'on souhaite
Techniquement c'est payant car ca réduit les temps de calcul proportionnellement à la surface à traiter. Sur les exemples qui suivent, les perfs sont multipliés par deux. En effet, le filtre s'applique sur le NoiseMapBuilder, il n'appelle donc les modules bruits que quand c'est nécessaire. Su un terrain avec de l'eau, on a peut-être pas forcément de calculer les fonds marins ... à moins de faire de la plongée !
Package et webplayer à jour.
Alors sans s'étendre sur le sujet, les images :
Si on prends de base un module simplexPerlin avec un module Billow ca donne çà
Bon çà parle pas trop alors on y ajouter un gradient de couleur Terrain pour voir à quoi peut ressembler le terrain
Bon ok. Seulement moi je veux le générer dans des zones précises et ainsi donner une forme de base
Forme rigolote mais stupide mais c'est juste pour les besoins de la cause
ca donne alors çà, avec la même configuration de module
Bon ca parle pas encore alors on applique notre gradient
rooohh des petites îles
Bon on balance çà dans Unity
hop ... on voit bien le smiley. Bon, comme on est pas sur mars, on ajoute un peu d'eau
Voilàààààà
Nouvelle mise à jour pour intégrer ShapeFilter. L'idée est de pouvoir générer du bruit dans une ou plusieurs zones d'une noise map. Ca permet, par exemple,
- sur une texture brique, de générer le bruit sur la brique et pas dans les jointures
- donner une forme grossière à un terrain et générer dans les zones que l'on souhaite
Techniquement c'est payant car ca réduit les temps de calcul proportionnellement à la surface à traiter. Sur les exemples qui suivent, les perfs sont multipliés par deux. En effet, le filtre s'applique sur le NoiseMapBuilder, il n'appelle donc les modules bruits que quand c'est nécessaire. Su un terrain avec de l'eau, on a peut-être pas forcément de calculer les fonds marins ... à moins de faire de la plongée !
Package et webplayer à jour.
Alors sans s'étendre sur le sujet, les images :
Si on prends de base un module simplexPerlin avec un module Billow ca donne çà
Bon çà parle pas trop alors on y ajouter un gradient de couleur Terrain pour voir à quoi peut ressembler le terrain
Bon ok. Seulement moi je veux le générer dans des zones précises et ainsi donner une forme de base
Forme rigolote mais stupide mais c'est juste pour les besoins de la cause
ca donne alors çà, avec la même configuration de module
Bon ca parle pas encore alors on applique notre gradient
rooohh des petites îles
Bon on balance çà dans Unity
hop ... on voit bien le smiley. Bon, comme on est pas sur mars, on ajoute un peu d'eau
Voilàààààà
Prochainement sur vos écrans
Re: Faites du bruit !
Mais c'est super ça ^^ Toute suite avec les images je comprend beaucoup mieux
en tout cas c'est excellent.
en tout cas c'est excellent.
Bienvenue !
Re: Faites du bruit !
ces images me rappelle quand je faisais de l'analyse d'image où y'avait un algo de détection des formes via la montée des eaux, on passait par des images filtrées afin de trouver les formes et de reconnaître les objets.
Très intéressant cela dit
Très intéressant cela dit