Читабельно

Мой путь в генеративном искусстве

Детство

В детстве я мечтал стать изобретателем. Компьютера в семье не было, мне его заменяла бумага в клетку. На ней я симулировал клеточные автоматы, придумывал свои пошаговые игры, рисовал чертежи санок с электроприводом и воздушных змеев. А ещё очень любил собирать разные штуки из конструкторов, которые мне дарил папа. Семья была не богатая, конструкторы были бывшими в употреблении, некоторые детали отсутствовали. Иногда для того, чтобы собрать микроскоп или бинокль, не хватало одной единственной детали.

Компьютер был только у двоюродных братьев, я ходил к ним в гости, смотрел, как они играют, а когда приходила моя очередь, вместо игры создавал HTML-файл и пробовал в нём форматировать текст, ставить картинку на фон и так далее.

Когда дедушка купил мне компьютер, я сразу установил несколько игр. Но я любил не просто играть в игры, а взламывать их и устанавливать там свои правила, придумывать и программировать свои миссии. Вообще, просто в игры играть было нервно и страшно. Программируя игры я выходил из игровой сансары с её миссиями, врагами и целями. Я переходил на другой уровень, становился властелином виртуального мира! Я мог придумать свои миссии, для развлечения создать миллион врагов и заставить их за мной охотиться, хаотически бегать или шагать как на параде. Писать свои правила гораздо увлекательнее, чем играть по чужим.

Ещё больше возможностей появилось, когда мы с нердами-однокласниками записались в школьный кружок при университете, там мы на Borland С++ писали простые игры с пиксельной графикой и несложной анимацией.

Я стал изобретателем, мечта сбылась. Программирование стало для меня волшебным «конструктором», в котором я сам мог создать любую деталь, если мне её не хватало.

Бэкграунд

Это инженерное творчество так меня увлекло, что я поступил в технический университет и закончил магистратуру по САПР.

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

Наверное, поэтому я стал заниматься визуализацией данных, она казалась мне логичным продолжением этой идеи — сделать невидимое видимым. А ещё я постоянно искал занятие, в котором можно было объединить изобразительное искусства и мои скиллы программирования. Визуализация данных тут пришлась очень кстати!

Иногда в датавиз-скрипте были ошибки и я очень радовался полученным гличам, постил их в соцсетях и гордился ими порой больше, чем финальным результатом. Экспериментировал с дата-артом. Есть шутка, что дата арт — это визуализация данных без легенды. Мне потребовалась пара лет, чтобы признаться себе: визуализация данных гораздо прикольнее, если убрать из неё данные. Я открыл для себя код, который визуализирует лишь сам себя.

В визуализации данных есть такое понятие как индексная визуализация (indexical visualisation), это когда явление само визуализирует себя. Например, дым в воздухе показывает своё движение. Генеративный арт — похожее явление: код сам визуализирует свой алгоритм и создавая графические артефакты, выявляет свою природу.

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

Эксперименты с модифицированной симуляцией физарума

Фракальный коридор, сделанный во время лайвкодинга

детерминированная симуляция песка с применением клеточных автоматов

Лайвкодинг и непредсказуемость

И в жизни, и в программировании мне важна непредсказуемость. Если всё уже известно заранее, даже не хочется начинать. Поэтому я так люблю выступать на сцене, программируя процедурную графику в реальном времени, импровизируя. Даже если я репетирую перед выступлением, каждая репетиция и само выступление являются для меня сюрпризом. Я могу неожиданно получить какой-то эффект, который меня удивит.

Даже если код небольшой, мой мозг не способен охватить всю его сложность, поэтому я не могу полностью осознать, как образуется тот или иной фрактал. И это добавляет в работу элемент неожиданности и непредсказуемости. А ещё я могу в какой-то момент почувствовать порыв и начать хаотично удалять или дописывать случайные фрагменты кода. Иногда достаточно изменить одну букву и у тебя — хбдщ! — новый экран совсем. Это ощущение наполняет меня адреналином, приковывает к экрану и невероятно увлекает.

Лайвкодинг-перформанс в галерее Краснохолмской

Ещё один способ отказаться от контроля — концепция «правды материала»

Правда материала

Truth to materials — это архитектурная концепция. Она про то, что природу материала не нужно скрывать. Например, бетон не надо красить или шлифовать неровности от опалубки.

Мне нравится применять эту концепцию к техникам генеративного искусства: позволять алгоритму определять финальный вид работы.

Не заниматься украшательством, а писать минимальный код, который способен создать изображение. Простое, чёрно-белое, без сглаживаний и заигрываний. Оно не притворяется рендером из Cinema 4D, поэтому моментально вычисляется, выглядит смело и брутально.

У цифрового арта своя эстетика, её не надо дополнительно стилизовать, имитировать техники, которыми она не является: живопись, акварельные подтёки краски и прочее.

Если картинка растровая, пусть пиксели будут заметными. Если это реймаршинг, пусть характерные глитчи лезут в глаза. Зачем стесняться шероховатостей? Можно использовать их как уникальную текстуру, как идею, и отдавать им самое заметное место в работе.

Влияние Lo-Fi культуры

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

Я люблю достигать результата с помощью примитивных инструментов. В программировании я люблю, когда код предельно короткий. На практике это нужно редко, разве что сайзкодинг как цель. Например, игра つぶやきGLSL в твитере, когда нужно сделать прикольный шейдер размеров в твит. Когда я загружал проект Клик на Артблокс, я получал удовольствие от уменьшения размера кода. Это магическое ощущение, когда исходный код сжимается до небольшого прямоугольника, который целиком видно на экране.

Исходный код проекта Клик

Некоторые результаты работы этого скрипта

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

Ограничение размера кода заставляет изобретать и проявлять находчивость. Например, одну и ту же функцию можно использовать и для макро и для микропаттерна, как в работе Wholeness Mirage.

Wholeness Mirage использует один и тот же паттерн для микро- и макроуровней

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

Этот принцип касается и моих инструментов: я использую простой текстовый редактор neovim и не могу пользоваться IDE. Они удобные, но очень визуально нагруженные. При моём СДВГ уменьшение визуального шума — необходимость.

СДВГ

Я не знаю точно, СДВГ у меня или нет, но иногда отвлекаюсь от работы каждую минуту, а иногда так в ней залипну, что клещами не оттащишь.

Когда-то пробовал себя воспитывать: блокировал соцсети, ставил задачи на каждый день, сам себе писал отчёты о проделанной работе.

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

Например, я иногда часами не могу уговорить себя взяться за задачу. Тут помогает поставить таймер или — суперчит! — начать задачу и вскоре бросить недоделанной, чтобы руки чесались закончить начатое.

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

Antigravity #35

Zero-player game #1 — бесконечная плоскость, заполненная неповторяющимся узором

Ещё вариант — найти вдохновляющий референс. Архитектура и биологические процессы для меня — бесконечный источник вдохновения.

Часто при программировании я не могу удержать в голове всю картину, приходится рисовать схемы на бумажке или меловой доске, для этого я покрасил несколько стен в квартире меловой краской.

Первые наброски для коммерческого проекта

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


Для меня генеративный арт стал инструментом познания себя, работой, отдыхом, ниточкой, которая связывает меня с этим миром.

Я работаю в трёх направлениях: арт, коммерческие заказы (сотрудничаю с дизайнерами и агентствами) и образование. Мне важно поделиться со студентами вайбом и азартом, который вызвает у меня программирование.

Тем кто не пробовал, рекомендую попробовать, вдруг понравится. Главное — не стремиться к перфекционизму, и радоваться маленьким победам.