Исследование полей шумового потока

Попробуйте изменить параметры самостоятельно: : : : :

Поле потока шума: словно невидимый ветер дует по холсту

Представьте себе совершенно чистый холст. Мы размещаем на нем тысячи крошечных частиц и даем им команду: «Двигайтесь вперед».

Однако мы не указываем каждой отдельной частице, куда именно идти. Дело в том, что по холсту гуляет невидимый «ветер». В одном месте он может дуть влево, в другом — вправо. Чуть дальше направление ветра может изогнуться. Где-то он закручивается в вихрь, где-то течет вперед, словно река, а в иных местах — плавно меняет направление.

Частицы не видят эту «карту ветров». Они просто следуют за направлением ветра в той точке, где находятся в данный момент. Когда тысячи частиц начинают движение, они оставляют за собой тонкие, изящные следы.

Постепенно складывается сложный узор. Он может напоминать 🌬️ ветер, 🌊 текущую воду, ☁️ дым, 🪶 перья или 🧵 шелк — или даже выглядеть как некая незримая сила, струящаяся в пространстве. Это и есть поле потока шума.

Представьте себе «карту ветров»

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

Предположим, что ветер дует по всей площади холста. Здесь: → → → ветер дует вправо. Сдвинемся в сторону: ↗ ↗ ↗ ветер начинает дуть вверх и вправо. Двигаемся дальше: ↑ ↑ ↑ направление ветра меняется на «вверх». Затем: ↖ ↖ ↖ он снова поворачивает. Если заполнить весь холст такими стрелками, мы получим поле потока — карту, описывающую, в каком направлении должен двигаться поток в каждой точке холста. В поле потока частицам нужно просто «следовать за ветром».

Теперь поместим в это поле маленькую частицу. Она оказывается в точке, где направление ветра — ↗, поэтому движется вверх и вправо. На следующем шаге она достигает новой позиции, где ветер сменил направление на →, и начинает двигаться вправо. Шаг спустя: ↘ — она начинает движение вниз и вправо. Заметьте: сама частица не знает, как выглядит вся карта целиком. Ей даже не нужно задаваться вопросом: «Куда я иду?». Ей достаточно лишь постоянно спрашивать: «Я сейчас здесь — в какую сторону дует ветер?» и затем — следовать за ним.

Если частица всего одна, ничего особенного не происходит. Она просто движется, поворачивает, снова движется и снова поворачивает.

Но если мы добавим 100 частиц, всё становится интереснее.

При 1000 частиц траектории начинают переплетаться.

А при 10 000 частиц возникает целостный, плавный узор.

Самое удивительное: мы не рисовали линии, но они выглядят так естественно

Увидев итоговый узор, вы можете задаться вопросом: «Неужели математики сами рисовали эти кривые?» Ответ — нет; мы даже не давали команду «нарисовать здесь изогнутую линию». Мы лишь определили, куда должны двигаться частицы, и позволили им перемещаться самостоятельно. В процессе движения частицы оставляют за собой след. Наложение множества таких следов и формирует конечный рисунок.

Таким образом, создание поля потока на основе шума не предполагает прямого рисования линий потока; вместо этого сам поток генерирует эти линии.

Так почему же это выглядит так естественно?

Если бы мы определяли направление в каждой точке случайным образом, результат мог бы выглядеть примерно так: ↗ ← ↓ → ↖ ↑ ← ↘. Без какой-либо видимой закономерности движение частиц стало бы хаотичным, напоминая «снег» (статические помехи) на экране старого телевизора. Однако «шум», используемый в поле потока, — это не просто набор совершенно независимых случайных чисел; это особый вид шума, характеризующийся непрерывностью и плавностью изменений. Одной из самых распространенных его разновидностей является шум Перлина. Он генерирует значения, которые плавно меняются при переходе от одной точки к соседней, что делает его идеальным инструментом для построения непрерывных полей потока.

Это означает, что если в данной точке направление указывает «вправо», то и в соседней точке оно будет примерно таким же. В следующей точке направление может немного сместиться в сторону «вправо-вверх», а затем продолжить постепенно поворачиваться. Здесь нет резких скачков — например, когда направление «вправо» в одной точке мгновенно сменяется на «вниз» в соседней. Вместо этого направление меняется постепенно — → → ↗ ↗ ↑ ↖ ↖ ← — позволяя частицам плавно поворачивать. Именно поэтому поля потока на основе шума часто создают столь естественное, органичное впечатление.

Что именно такое «шум»?

На этом этапе вы можете спросить: «Но ведь он выглядит таким упорядоченным — почему же его называют шумом?»

«Шум» в данном контексте не стоит воспринимать просто как абсолютно хаотичный беспорядок. Шум Перлина больше напоминает плавное, непрерывное, но при этом случайное изменение. Например: 0,41, 0,43, 0,45, 0,48, 0,52, 0,55... Значения меняются, но без резких, скачкообразных перепадов вроде 0,42 → 0,97 → 0,03 → 0,81.

Таким образом, он не является ни полностью упорядоченным, ни полностью хаотичным; он находится как раз между порядком и случайностью. Именно поэтому он так хорошо подходит для создания визуальных эффектов, выглядящих естественно. Одна из целей разработки шума Перлина — получение таких изменений значений, которые были бы более плавными и естественными по сравнению со стандартными случайными числами.

И вот мы превратили шум в «ветер».

Сам по себе шум — это лишь набор числовых значений, но мы можем преобразовать их в углы. Например: значение шума в определенной точке → преобразование в угол → определение направления → превращение в стрелку → становление частью векторного поля потока. Если применить этот расчет ко всему холсту, цепочка преобразований будет выглядеть так: шум → направление → векторное поле потока → частицы → траектории → поле потока на основе шума.

Краткий обзор процесса

Давайте соберем весь процесс воедино:

Шаг 1: Генерируем поле плавно изменяющегося шума.

Шаг 2: Преобразуем шум в векторы направления.

Шаг 3: Эти векторы образуют невидимое поле потока.

Шаг 4: Размещаем множество частиц на холсте, поверх которого наложено поле потока.

Шаг 5: Каждая частица непрерывно считывает направление поля потока в своей текущей позиции.

Шаг 6: Частицы движутся в направлении, заданном полем потока.

Шаг 7: Частицы оставляют за собой следы.

В итоге формируется плавный узор, созданный на основе поля шума.

Почему это иногда напоминает воду, а иногда — дым?

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

Одним из ключевых параметров является масштаб шума — или степень мелкозернистости турбулентности, — который можно упрощенно определить как «интенсивность изменчивости ветра». При крупном масштабе направление ветра меняется медленно, и частицы могут образовывать 🌊 обширные линии тока. При малом масштабе направление ветра меняется более дробно, и частицы могут создавать 🌀 более сложные, плотные текстуры.

Возникает и интересный вопрос: может ли сам ветер перемещаться? Безусловно. Если распространить шум за пределы горизонтального и вертикального измерений, добавив временную составляющую, то направление ветра в конкретной точке может слегка меняться от момента к моменту. В результате все поле потока начинает медленно смещаться; по мере движения частиц меняется и воздействующий на них «ветер». В итоге получается не статичное изображение, а мир, который постоянно дышит, течет и развивается.

Вы видите «ветер», хотя ветра на самом деле нет

Если бы мы отображали только сами частицы, вы бы увидели лишь множество крошечных точек. Однако картина кардинально меняется, когда каждая частица оставляет за собой след. Частица (●) движется (——), продолжая свой путь. В итоге формируется целостная линия тока. Переплетение линий тока бесчисленного множества частиц создает то самое поле хаотичного потока, которое мы наблюдаем. Таким образом, эстетическая привлекательность изображения рождается из сочетания движения частиц и наслоения их следов.

На изображении нет ни реального ветра, ни воды, ни дыма, ни даже физических частиц — всё это результат математических расчетов.

И все же, когда огромное количество частиц движется в соответствии с плавно меняющимся векторным полем, наш глаз естественным образом воспринимает этот узор как поток. Так математика превращается в движение, движение — в следы, следы — в визуальные образы, а те, в свою очередь, вызывают ассоциации с миром природы.

Чем поля потоков на основе шума отличаются от аттракторов?

Если вы уже изучали математические аттракторы, то поле потока на основе шума (noise flow field) подарит вам совершенно иные впечатления.

Например, аттрактор Де Йонга сосредоточен на итеративном вычислении положения одной точки согласно рекуррентной формуле.

В основе аттрактора Икеды лежит взаимосвязь между вращением, масштабированием и позицией.

А аттрактор Лоренца посвящен трехмерным динамическим системам и хаосу.

Напротив, поле потока на основе шума не фокусируется на том, к какой точке в итоге притянется объект; вместо этого оно делает акцент на том, как множество частиц движется вдоль «невидимого поля потока», напоминая скорее математическую карту ветров.

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

Невидимая карта

Если попытаться объяснить концепцию поля потока на основе шума (noise flow field) максимально просто, представьте себе следующее: на холсте есть невидимая карта. В каждой точке этой карты находится стрелка. Эти стрелки расположены не хаотично: они плавно изгибаются и соединяются друг с другом, образуя непрерывный поток. Затем мы вводим в систему тысячи частиц. Частицы не знают, как выглядит карта; им известны лишь две вещи: «Где я сейчас нахожусь?» и «В какую сторону здесь дует ветер?» Они начинают движение, оставляя за собой следы. В конечном счете, траектории, прочерченные этими частицами, обнаруживают ту самую невидимую карту.

То, что вы видите, — это не просто статичное изображение, а следы движения. Без движения частиц не было бы и следов. Без поля потока частицы не знали бы, куда двигаться. Без шума не было бы таких плавных, естественных изменений направления. Когда эти элементы объединяются — шум → направление → поле потока → частицы → следы → поле потока на основе шума, — невидимое «математическое поле ветра» наконец становится для нас видимым.

Продолжайте исследовать мир аттракторов

Как и аттракторы, шумовые векторные поля демонстрируют удивительную концепцию: простые правила могут создавать сложные визуальные миры.

Если вам нравится создавать абстрактные текстуры с помощью параметров, возможно, вам будет интересно изучить аттрактор Де Йонга и аттрактор Клиффорда.

Если вас интересуют вращение, обратная связь и хаос, попробуйте исследовать аттрактор Икеды.

Если вы предпочитаете необычные траектории движения в трехмерном пространстве, можно поэкспериментировать с аттрактором Аидзавы и аттрактором Лоренца.

Шумовые векторные поля предлагают иной опыт: вместо того чтобы ждать, пока одна точка достигнет цели, вы наблюдаете, как тысячи точек движутся вместе, следуя по невидимой карте.

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

Вы также можете изучить другие удивительные математические узоры или почитать подробнее о шуме в Википедии.

Хотите видеть эти потрясающие математические визуализации каждый раз, когда открываете новую вкладку? Установите расширение для Chrome прямо сейчас и сделайте «Math Wonder Box» страницей новой вкладки.🚀

Узнать больше