Comments 13
Помимо стандартного есть ещё интересные варианты вроде суммы октав по модулю summ(abs(noise)) (rounded noise) или summ(1 — abs(noise)) (ridgid noise)

А ещё есть интересная штука под названием domain warped noise: когда вместо noise(x,y) берём
noise( x +noise(x + ?,y + ?), y + noise(x + ?,y + ?) )
или даже
(x,y) = noise( x +noise(x + ?,y + ?), y + noise(x + ?,y + ?) )
noise( x +noise(x + ?,y + ?), y + noise(x + ?,y + ?) )
Получается гораздо более мрамор, чем в оригинальной презентации.

Для турбулентности же ещё весьма эффектен curl noise. Когда для получения турбулентности используется векторное поле, полученное смещением координат поперёк градиента перлина. Этот метод, кстати, давным давно используется для «симуляции» потоков жидкостей и газов в 3D анимации. Если посмотреть любой ролик на ютубе с примерами — сразу можно вспомнить кучу роликов с этим эффектом. Очень уж он характерно выглядит.

Кстати весьма неплохо заходит и для фейковой симуляции в реальном времени, поскольку весьма прост и неожиданно эффективен.

Примеры почти всего этого можно на shaderToy.com найти по названию.

Ну блин, как так: статья про шум Перлина — и без картинки собственно шума Перлина?


Взял код оригинальной реализации от самого Кена Перлина (если верить комментарию в коде) и с ним сделал картинку, чтобы исправить это недоразумение:



Впрочем, там есть параметр n, позволяющий делать «облака», которые есть в посте. Вот тот же самый шум, но с n равным 2, 3 и 4 (у последней картинки диапазон и правда ±0.707):


Кошмарный перевод. Читать больно. Нужно стараться понять текст и пересказывать своими словами, а не переводить дословно. Не работают те же обороты при переносе из английского в русский. нельзя так делать.
from perlin import PerlinNoiseFactory


Вот обожаю такие примеры =) Все просто и понятно, хорошо отражает материал статьи.
(и да, кто не понял, это сарказм)

Я не понял в чем сарказм. Я вообще не понял в чем суть комментария. Я не обожаю такие комментарии.

А я понял. Где, собственно, реализация шума Перлина? Это всё равно, что в статье про асимметричное шифрование долго втирать, как это реализовано, как выбирать простые числа и т.п., а потом в разделе код написать:
Вы долго ждали этого, код в студию!
openssl enc -aes-256-cbc -k secret -P -md sha2

Вы какими местами читаете текст-то?


Хорошо, вот, пожалуйста, конечно. Вот реализация на Python. Не знаю, смогу ли я обосновать выделение в отдельный модуль, да и как-то лень.
Спасибо, жаль, в своё время не наткнулся на такую статью, пришлось разбирать код шейдеров с www.shadertoy.com
Я без понятия, что это за распределение; точно не нормальное


Лапласа?
Пока не пробовал реализовать, разбираюсь с теорией. Не понял, как это при линейной интерполяции, получилась кривая с изломами. Как интерполяция на отрезке могла изменить значение на его границах?
Разобрался. Дело в том, что интерполируется не сам градиент, а
его скалярное произведение на вектор
от узла до точки. И при этом оказывается, что в линейной интерполяции «левое значение» оказывает слишком большое влияние даже у «правого» конца интервала.
Почему для одномерного шума в качестве значений в узлах берутся числа именно из диапазона [-1, 1]? Это эвристическое ограничение ради большей гладкости результата? Или эти магические константы всё-таки строго привязаны к чему-то?
Only those users with full accounts are able to leave comments. Log in, please.