web-dev-qa-db-fra.com

Bruit simplex vs bruit Perlin

J'aimerais savoir pourquoi le bruit Perlin est toujours aussi populaire après la sortie de Simplex. Le bruit simplex a été créé par Ken Perlin lui-même et devait reprendre son ancien algorithme, qui était lent pour les dimensions supérieures et de meilleure qualité (aucun artefact visible).

Le bruit simplex est apparu en 2001 et au cours de ces 10 années, je n'ai vu que des gens parler de bruit Perlin lorsqu'il s'agissait de générer des cartes topographiques pour les terrains, de créer des textures procédurales, etc.

Quelqu'un pourrait-il m'aider, y a-t-il un inconvénient du bruit simplex? J'ai entendu des rumeurs selon lesquelles le bruit Perlin est plus rapide en ce qui concerne le bruit 1D et 2D, mais je ne sais pas si c'est vrai ou non.

Merci!

33
raRaRa

"Si ce n'est pas cassé, ne le répare pas."

Voyez si vous pouvez trouver quelqu'un qui vous dit pourquoi Simplex est mieux. "C’est plus rapide et s’applique à plusieurs dimensions" et "des tentatives de bruit simplex visant à réduire la complexité des fonctions de bruit de dimension supérieure" ont été ce que j’ai trouvé. La plupart d'entre nous travaillons dans 2 ou 3 dimensions, peut-être 4 si nous avons la chance de faire quelque chose avec le temps.

Je pense qu’il est juste de dire que l’utilisation de Perlin en temps réel est trop lente et trop lente à gérer, que le bruit standard de Perlin est suffisant dans la plupart des cas. Dans les pré-rendus (tels que ceux utilisés dans l'industrie du film), le temps n'a pas vraiment d'importance, car les rendus sont lents de toute façon; et dans les simulations en temps réel, nous disposons de suffisamment de moyens pour réduire la portée du traitement en cours, de sorte qu'il est improbable que vous génériez des cartes de bruit massives toutes les quelques nanosecondes/millisecondes - il s'agit simplement d'une optimisation de base en temps réel.

21
Engineer

Je ne serais pas du tout surpris si c'était simplement à cause de son nom. Vous devez choisir entre le bruit Perlin et le bruit Simplex. Ce dernier est plus récent et présente certains avantages. Mais, vous savez, cela ressemble à la version "simple" des deux. Je vais avec le plus complexe; le bruit est supposé être complexe, n'est-ce pas?

Les gens ont tendance à être plutôt irrationnels.

21
Confusion

Une certaine préférence pour le bruit Perlin classique peut venir de la possibilité d'utiliser des valeurs connues donnant des caractéristiques visuelles connues, par opposition à l'investissement du temps nécessaire pour trouver les paramètres d'entrée nécessaires pour obtenir une sortie équivalente en utilisant un bruit simplex.

[simplex noise] a un caractère visuel légèrement différent, il n’est donc pas toujours un remplacement direct par plug-in du bruit classique. Les applications dépendant des caractéristiques détaillées du bruit classique, telles que la taille précise de l'entité, la plage exacte de valeurs ou les statistiques d'ordre supérieur, peuvent nécessiter des modifications pour donner un aspect esthétique à la place du bruit simplex.
Stefan Gustavson Bruit simplex démystifié

6
Pikalek

Ken Perlin a breveté son algorithme de bruit simplex. Son algorithme classique n'est pas breveté à ma connaissance.

5
Kelvin M

Juste une expérience anecdotique, la raison pour laquelle j'ai utilisé le bruit classique de Perlin était parce que Ken Perlin avait une implémentation C du bruit classique de Perlin, tout en fournissant une implémentation Java de bruit amélioré de Perlin. Aussi bête que cela puisse paraître, le bruit classique de Perlin était plus facile à copier-coller dans mon programme, c'est pourquoi je l'ai utilisé. J'ai toujours eu l'intention de porter cette implémentation en Java, mais Perlin classique semblait fonctionner assez bien, je ne me suis donc jamais soucié de l'ajouter.

Stefan Gustavson a de très bonnes implémentations de Simplex Noise en C, ici

3
bobobobo

Je n'ai pas encore travaillé avec le bruit simplex, mais je peux penser à plusieurs raisons:

  • Peut-être parce que nous sommes habitués aux carrés et aux angles de 90 degrés? Les carrés, les cubes, ... nous sont beaucoup plus naturels que les triangles, les tétraèdres ou les hyper-tétraèdres.
  • Chaque couche dans le bruit perlin est juste un bitmap simple.
  • La sortie du bruit perlin se compose de carrés faciles à daller. Et les textures sont souvent des carreaux carrés.
  • Vous utilisez généralement un bruit de faible dimension. D'après mon expérience, la 2D et la 3D sont les plus courantes.
  • Le bruit simplex est tout simplement plus difficile à comprendre un outil
  • Les échantillonneurs d’une carte graphique peuvent probablement effectuer l’interpolation pour les bitmaps orthogonales telle qu’elle est utilisée dans le bruit perlin, mais pas l’interpolation sur les bitmaps à 60 degrés utilisés dans le bruit simplex. (ce point peut être faux, je n'ai pas travaillé avec des cartes graphiques depuis quelques années)
1
CodesInChaos

Je répondrais franchement à la question, je dirais que c’est parce que Perlin noise est très simple à comprendre. Le bruit simplex, en revanche, est beaucoup plus complexe et demande beaucoup de choses. Mettre en place une implémentation Perlin est beaucoup plus facile que simplex et utilise donc davantage. Cela n'aide pas le cas de simplex que les deux soient très similaires dans les visuels (surtout après avoir manipulé le bruit un peu).

Kenneth Perlin lui-même a conçu l'algorithme simplex pour une implémentation basée sur le matériel et a donc pris des décisions de conception facilitant ce processus. Un exemple de ceci peut être vu dans cette sélection, du brevet.

Besoin de mémoire de table: l'algorithme original de bruit s'appuyait sur un certain nombre de recherches de table, qui sont assez raisonnables dans une implémentation logicielle, mais qui, dans une implémentation matérielle, sont coûteuses et constituent un goulot d'étranglement, en particulier lorsque plusieurs instances de la fonction Noise sont requises en parallèle. Idéalement, une implémentation Noise ne devrait pas dépendre de la présence de tables de taille significative.

0
Entalpi