Автор статьи взял простой алгоритм — Perlin noise fields — и сделал из него 25 разных изображений. Суть такая: каждый пиксель холста получает направление силы, заданное через Perlin noise вместо случайных чисел. Получается плавное «поле», по которому движутся частицы. Алгоритм он реализовал на Processing, добавил классы для наборов частиц и слоёв.
Первые варианты были простыми: белый фон, чёрные частицы с низкой прозрачностью. Потом инвертировал цвета — стало интереснее. Добавил слои с фиолетовой палитрой — вышло неожиданно красиво. На итерации 3 уже показалось, что идеи кончились, но автор продолжил. Он менял толщину линий и прозрачность (до 1%) — серый цвет появлялся будто из ниоткуда. Случайно переключил stroke cap линий с круглого на квадратный — текстура стала напоминать угольный карандаш.
Для цвета использовал генератор на основе золотого сечения в цветовом пространстве HSB. Пробовал рисовать дуги вместо линий, варьировал насыщенность и яркость. В итерации 8 менял насыщенность в зависимости от времени жизни частицы — получились эффектные «языки пламени». Один результат напомнил автору зелёные облака из «Короля Льва», он развил эту идею.
Когда снова упёрся в потолок, начал экспериментировать с композицией: делал сложный фон, сверху тонкие детали. В итерации 11 из-за бага в коде получилась дымка с пятнами чёткости — автор случайно удалил код, и изображение осталось единственным в своём роде. Потом рисовал круги с неровными краями, звёздное небо, кометы с меняющейся толщиной линии. Слои чёрных и белых штрихов дали плавные серые градиенты.
Дошёл до имитации осенних листьев, симуляции акварели из скетча на OpenProcessing. Менял масштаб Perlin noise — линии становились то мелкими каракулями, то длинными плавными дугами. Для итерации 21 рисовал букву «X» движущимися частицами. В финале использовал треугольники: брал два положения частицы, добавлял третью точку со смещением — вышло интенсивно и хаотично.
Мораль автора: креативность — это процесс, а не состояние. Ограничения помогают, а не мешают. Большинство удачных решений родилось из случайностей и «неудач». Чтобы придумать сложное, нужно сначала сделать простое и итерировать. И перестать ждать вдохновения — просто сесть и работать.