Симплексный шум против шума Перлина - PullRequest
36 голосов
/ 22 июня 2011

Я хотел бы знать, почему шум Perlin до сих пор так популярен после выхода Simplex.Симплексный шум был создан самим Кеном Перлином, и предполагалось, что он перенял его старый алгоритм, который был медленным для больших размеров и с лучшим качеством (без видимых артефактов).

Симплексный шум появился в 2001 году и превысил эти 10годы я видел, как люди говорят о шуме Перлина, когда речь идет о создании карт высот для ландшафта, создании процедурных текстур и т. д.

Может ли кто-нибудь мне помочь, есть ли недостатки у симплекс-шума?Я слышал слухи о том, что шум Перлина быстрее, когда речь идет о 1D и 2D шумах, но я не знаю, правда это или нет.

Спасибо!

Ответы [ 8 ]

23 голосов
/ 04 августа 2011

«Если он не сломался, не чините его.»

Посмотрите, сможете ли вы найти кого-нибудь, кто скажет вам, почему Симплекс лучше.«Это быстрее и распространяется на несколько измерений» и «попытки симплексного шума уменьшить сложность функций шумов более высокого измерения» были тем, что я обнаружил.Большинство из нас работают в 2 или 3 измерениях, возможно, в 4, если нам повезет, что мы что-то делаем со временем.

Я думаю, что справедливо будет сказать, что в Perlin недостаточно использования в реальном времени, что слишкоммедленно обрабатывать, что для большинства целей достаточно стандартного шума Перлина.В предварительном рендеринге (например, используемом в киноиндустрии) время не очень важно, так как рендеринг все равно медленный;а при моделировании в реальном времени у нас есть достаточно способов уменьшить объем текущей обработки, поэтому маловероятно, что вы будете генерировать массивные карты шума каждые несколько нано / миллисекунд - это просто базовая оптимизация в реальном времени.

22 голосов
/ 23 июня 2011

Я бы не удивился, если бы это было просто из-за названия.Вы должны выбрать между шумами Perlin и Simplex.Последний новее и имеет некоторые преимущества.Но, вы знаете, это звучит как «простая» версия двух.Я пойду с более сложным;шум должен быть сложным, не так ли?

Люди, как правило, довольно иррациональны.

7 голосов
/ 12 ноября 2012

Некоторое предпочтение классическому шуму Перлина может исходить из возможности использовать известные значения, приводящие к известным визуальным характеристикам, в отличие от затрат времени, необходимого для поиска входных параметров, необходимых для получения эквивалентного выхода с использованием симплексного шума.

[симплексный шум] имеет немного иной визуальный характер, поэтому он не всегда является прямой заменой классического шума плагином.Приложениям, которые зависят от детальных характеристик классического шума, таких как точный размер элемента, точный диапазон значений или статистика более высокого порядка, может потребоваться некоторая модификация, чтобы лучше выглядеть при использовании симплексного шума.
Симплексный шум Стефана Густавсона демистифицированный

6 голосов
/ 20 июля 2015

Кен Перлин запатентовал свой алгоритм симплексного шума.Его классический алгоритм не запатентован, насколько мне известно.

4 голосов
/ 21 декабря 2012

Лишь некоторый случайный опыт, причина, по которой я использовал классический шум Perlin, заключалась в том, что Кен Перлин имел C реализацию классического Perlin шума, в то же время предоставляя Java реализацию улучшенного шума Perlin. Как это ни глупо звучит, классический шум Перлина было проще скопировать и вставить в мою программу, поэтому я и использовал его. Я всегда собирался портировать эту реализацию Java, но классический Perlin, казалось, работал достаточно хорошо, поэтому я никогда не удосужился добавить его.

У Стефана Густавсона есть несколько очень хороших C-реализаций Simplex Noise, здесь

1 голос
/ 26 апреля 2017

Я бы ответил на вопрос прямо, я бы сказал, что это потому, что шум Перлина очень прост, чтобы разобраться.Симплексный шум, с другой стороны, намного более сложный и привлекательный зверь.Подготовка и запуск реализации Perlin намного проще, чем симплекс, и, таким образом, получает большее использование.Это не помогает случаю симплекса, что оба очень похожи на визуальных элементах (особенно после того, как вы немного измените шум).

Кеннет Перлин сам разработал алгоритм simplex для аппаратной реализации итаким образом принимаются дизайнерские решения, которые делают это проще.Один из примеров этого можно увидеть в этой цитате из патента.

Потребность в табличной памяти: оригинальный алгоритм Noise основывался на ряде табличных поисков, что вполне разумно в программной реализации,но которые в аппаратной реализации являются дорогостоящими и представляют собой узкое место, особенно когда параллельно требуется несколько экземпляров функции Noise.В идеале реализация Noise не должна полагаться на наличие таблиц значительного размера.

1 голос
/ 22 июня 2011

Я еще не работал с симплексным шумом, но могу подумать о нескольких причинах:

  • Возможно, потому что мы привыкли к квадратам и углам 90 градусов? Квадраты, кубики, ... гораздо более естественны для нас, чем треугольники, тетраэдеры или гипертетраэдеры.
  • Каждый слой с перлин-шумом - это просто растровое изображение.
  • Вывод перлин-шума - это легко мозаичные квадраты. И текстуры часто являются плитками квадратов.
  • Вы обычно используете низкий размерный шум. По моему опыту, 2D и 3D являются наиболее распространенными.
  • Симплексный шум просто сложнее понять, орудие
  • Вероятно, сэмплеры в графической карте могут выполнять интерполяцию для ортогональных растровых изображений, используемых в перлин-шуме, но не интерполяцию для растровых изображений с углами 60 градусов, используемых в симплексном шуме. (этот пункт может быть неправильным, я не работал с видеокартами в течение нескольких лет)
0 голосов
/ 25 мая 2019

симплексный шум выглядит хуже imho, и многие люди думают, что в более высоких измерениях он выглядит "все более и более плохо". Я бы по-прежнему рекомендовал использовать его вместо perlin для большинства приложений, так как большинство из них будет использовать не только простой симплекс, но его октавы, которые выглядят примерно так же, как октавы perlin и значительно быстрее для октав.

...