Подтвердить что ты не робот

Симплексный шум против шума Perlin

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

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

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

Спасибо!

4b9b3361

Ответ 1

"Если он не сломался, не исправляйте его".

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

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

Ответ 2

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

Люди склонны быть довольно иррациональными.

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

У Stefan Gustavson есть очень хорошие C-реализации Simplex Noise, здесь

Ответ 6

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

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

Ответ 7

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

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

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

Ответ 8

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