Журнал LinuxFormat - перейти на главную

LXF73:GIMP

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

gimp Живые фракталы

Майкл Дж. Хаммел (Michael J Hammel) желает развлечься, так что он предлагает вам путешествие с одним их самых творческих фильтров Gimp.

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

Итак, я начал игру с несколькими художественными (artistic) модулями Gimp и как всегда увлёкся фильтром Flame. Этот модуль основан на открытом исходном коде, автором которого является программист и художник Скотт дрейвс (Scott Draves). Он использовал длинные строки цифр (похожих на генетический код, с точки зрения Скотта) для создания случайных фигур – пылающих фракталов. Их можно раскрасить в Gimp стандартными и вашими собственными градиентами, так что результат работы фильтра Flame и других утилит, основанных на том же исходном коде, может быть очень впечатляющим. На некоторых сайтах вы можете найти целые выставки таких картин (примеры, во врезке «Ссылки»), многие из которых имеют сказочный или космический оттенок.

фильтр Flame

Вообще говоря, этот фильтр умеет не более чем рисовать случайные фрактальные изображения. Вы можете определить некоторые начальные значения и настроить размер и положение картинки, но на самом деле у вас нет способа контролировать результат так же хорошо, как это возможно для фильтра “IFS Fractal” (Filters > Render > Nature > IFS Fractal). Но если вы копнёте поглубже, то узнаете, что в фильтре Flame есть маленький секрет – это анимация. Скотт дополнил оригинальную версию кода, от которого произошёл Flame, создав новые инструменты для работы с тем же типом изображений. если скомбинировать их с фильтром Gimp, то можно получить действительно удивительный результат. как вы увидите, фигуры, созданные во Flame, можно использовать в качестве исходных данных для другой программы дрейвса под названием Flam3. Она создаёт целую серию изображений, основываясь на первой версии, полученной от Gimp, и эта серия может затем превратиться в фильм при помощи FFmpeg или mpeg2encode. И это именно то, чем я предлагаю заняться в сегодняшней статье.

Всё, что нам нужно,чтобы начать наш проект – это краткое описание Flame. Этот фильтр можно вызвать из меню Filter > Render > Nature. Открыв окно, вы увидите уменьшенный вариант вашего фрактала. На страничке с двумя закладками находятся бегунки для настройки параметров генерации и позиции камеры, а меню в нижней части позволяет выбрать определённую цветовую карту. Можно выбрать любой вариант градиентов, но если выбрать свой собственный (Custom) вариант, то любые изменения в редакторе градиентов будут отображены в окне предварительного просмотра только после того, как изменение какой-либо другой настройки вызовет перерисовку окна предварительного просмотра.

для изменения типа картинки используется кнопка [Edit]. По её нажатию открывается второе диалоговое окно, очень похожее на окно фильтра QBist (Filters > Render > Pattern > QBist), в котором есть три строки с тремя окнами предпросмотра в каждой. В центре находится текущий вариант, щелчок на любом другом делает текущим его и обновляет остальные варианты. В нижней части окна находится ползунок, который позволяет изменять скорость генерации предварительных вариантов картинки. Вообще говоря, чем выше скорость, тем менее сложная картинка получится в результате, но для этого фильтра сложность – всего лишь вопрос стиля.

Ниже ползунка расположена кнопка [randomize], которая создаёт полностью новую картинку, основываясь на варианте, выбранном в правом меню. Всего можно использовать девять разных вариантов, и переключение с одного на другой обычно вызывает появление совершенно другого изображения. Это значит, что, используя меню Variations, вы не сможете внести маленькие изменения. Получение нравящейся вам картинки происходит в основном методом проб и ошибок. как я говорил раньше, у вас нет тотального контроля за результатом работы этого фильтра, но это не мешает им пользоваться. Просто найдите хороший вариант – что-нибудь достаточно причудливое – и сохраните его.

создаем отдеЛьное изобраЖение

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

Подготовка холста

Img 73 65 1.jpg

В окне инструментов нажмите Ctrl+N, чтобы открыть диалог создания нового холста. Используйте размер по умолчанию, 400x320 точек. если в диалоге выбрано другое значение, просто нажмите кнопку «Reset». щелчок по кнопке OK приведёт к открытию окна с вашей картинкой. При помощи «X» в окне инструментов установите цвета фона и переднего плана по умолчанию и перетащите цвет переднего плана (чёрный) на холст.

добавляем немножко звёзд

Img 73 65 2.jpg

Откройте фильтр Hurl (Filters > Noise > Hurl). Задайте параметр Random Seed равным 10, параметр Randomization равным 70% и Repeat равным 11. Нажав OK, примените этот фильтр к вашей картинке. Сделайте картинку чёрно-белой с помощью Layer > Colors > Desaturate, откройте диалог Levels (Layer > Colors > Levels) и настройте Input level примерно так, как показано на иллюстрации.

размывание фона

Img 73 65 3.jpg

Скопируйте слой (Layer > Duplicate Layer). щёлкните на оригинальном слое, чтобы сделать его активным. Откройте фильтр Gaussian Blur (Filters > Blur > Gaussian Blur) и задайте параметр Blur Radius равным 2,5 в обоих направлениях, нажмите [ОК]. щелкните на втором слое и переведите его в режим «Addition». Осталось только слить слои воедино при помощи Layer > Merge Visible Layers.

добавляем звёздных искр

Img 73 65 4.jpg

Выделите несколько овальных областей (при нажатой кнопке [Shift] новая область добавляется к предыдущим). растушуйте их на 10-35 точек (Select > Feather). Откройте фильтр Sparkle (Filters > Light Effects > Sparkle). Установите ползунки примерно так же, как на иллюстрации. Параметр Spike Density должен быть маленьким – именно он определяет, сколько использовать звёздочек.

нарисуйте пламя

Img 73 66 1.jpg

Итак, теперь мы готовы к фильтру Flame. Поскольку этот фильтр полностью заменяет содержание слоя, вам потребуется для начала создать новый, прозрачный слой для него (Layer > New Layer). Откройте фильтр. Вы можете взять вариант картинки по умолчанию или создать свою собственную версию. Все девять вариантов в диалоговом окне Edit в вашем распоряжении.

сохраните результат.

Img 73 66 2.jpg

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

анимаЦия во FLaM3

После того, как вы сохранили хотя бы одну картинку в файл, вы готовы к созданию огненной серии. для начала сохранённый файл нужно преобразовать в XML с помощью Flam3-convert, а затем передать его Flam3 как основу для серии изображений. Вам понадобится скачать и скомпилировать приложение Flam3. Версию для Linux вы найдёте на сайте Flam3 (смотрите врезку «Ссылки» внизу справа). распакуйте полученный архив при помощи команды

tar xvzf Flam3-2.6.tar.gz

Перейдите в каталог Flam3. У этого приложения нет никаких особенных требований, так что просто наберите

cd Flam3-2.6
./configure
make

В результате вы получите несколько программ: Flam3-render, Flam3-convert, Flam3-animate и Flam3-genome. Flam3-render можно использовать для создания одиночного изображения, но мы только что сделали это фильтром Flame в Gimp, так что нам нет необходимости разбираться с этой программой. Вы можете установить Flam3 в вашу систему с помощью make install, но для этого потребуются права root, или же вам придётся воспользоваться Autoconf для настройки каталогов инсталляции.

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

После того, как программа откомпилировалась, следующим шагом будет преобразование сохранённого вами фильтра Flame в формат Flam3 XML. Этого легко добиться при помощи, например, такой команды:

cat ~/.gimp-2.2/flame/fractured-glass |./Flam3-convert > glass.xml

Фильтр Flame сохраняет своё описание в обычном текстовом файле в каталоге flame в пользовательской папке Gimp 2.2 по умолчанию. Программа для преобразования, Flam3-convert, читает данные из стандартного ввода и преобразует в XML-файл, который мы назвали glass.xml. Теперь используем его для создания нашей серии изображений. В отличие от большинства приложений UNIX, Flame3 принимает параметры из переменных окружения оболочки. Самый простой способ передать их – это указать в одной командной строке с вызовом приложения:

template=vidres.Flam3 repeat=10 Flam3-genome > new.Flam3

Переменные окружения template и repeat – это параметры программы Flam3-genome. Чтобы получить полный список, запустите любое из приложений Flam3 с параметром командной строки -?.

создание набора картинок.

Итак, если вы освоились с основами работы утилит Flame3, приступим к создания нашего набора картинок. Первым шагом будет преобразование начальной конфигурации в набор контрольных точек. Это делается при помощи приложения Flam3-genome. Оно реализует генетический алгоритм, который выполняет мутации, скрещивание и отбор вариантов изображений согласно теории дарвина. команда для запуска будет примерно такой:

verbose=1 aspect_ratio=1.6 gs=3.5 ss=2.5 template=article.xml repeat=20
../Flam3-genome > control.Flam3

Параметр verbose полезен для того, чтобы видеть, что происходит, так как если его не указать, то вы не увидите вообще ничего. Соотношение сторон я указал соответствующим моему монитору, который работает в режиме 1280x800 точек. если вы не укажете эту опцию, соотношение сторон будет взято из оригинального фильтра Gimp (420x300). Параметры gs и ss увеличивают качество и размеры изображений, которые будут получены в итоге. Их значения подобраны довольно произвольным образом – я просто хотел увеличить размер картинки так, чтобы качество не пострадало. два оставшихся параметра опускать нельзя. Template должен указывать на XML-файл, задающий начальные условия работы программы. Мы создали его чуть рань- ше, утилитой Flam3-convert. Параметр repeat задаёт количество контрольных точек. каждая контрольная точка будет вариантом оригинальной картинки.

Полученные контрольные точки определяют общий скелет анимации, причём каждая из точек основана на первоначальной настройке фильтра Flame. Мы можем сгенерировать по одной картинке на контрольную точку и соединить их в очень короткий фильм, в котором они будет сменять друг друга с большой скоростью. Но лучше будет создать набор промежуточных кадров, позволяющий плавно перейти от одного дизайна к другому. Это можно сделать всё той же программой Flam3-genome, передав ей файл с контрольными точками. команда будет во многом похожа на предыдущую.

verbose=1 sequence=control.Flam3 nframes=120 ../Flam3-genome > seq.Flam3

Новый параметр, sequence, указывает на файл с последовательностью контрольных точек, а nframes задаёт число кадров, которые надо генерировать для каждой точки. каждый новый кадр слегка повёрнут и чуть более похож на следующую контрольную точку. Полученный результат осталось передать приложению для анимации, Flam3-animate.

verbose=1 ../Flam3-animate < seq.Flam3

Запуская эту команду, приготовьтесь к тому, что она создаст огромное множество файлов с картинками. каждая картинка – кадр фильма, скорость смены кадров примерно 30-60 в секунду, так что фильм получится не слишком длинным. Изменяя параметр nframes во втором вызове Flam3-genome можно уменьшить число кадров; кроме того, можно изменить число контрольных точек. Поиграйте с этими утилитами, чтобы лучше их узнать.

создание фильма

После того, как у вас появилась большая куча картинок, вы готовы к созданию фрактального фильма. Это проще всего сделать с помощью приложения Ffmpeg – «швейцарского ножа» в преобразовании видео под Linux. Самая простая команда, собирающая из текущего каталога все JPEG-картинки и генерирующая видеоролик в avi-формате, который потом можно просмотреть в Mplayer или Xine выглядит так:

ffmpeg -i %04d.jpg movie.avi

код 04 обозначает, что каждая jpeg-картинка начитается с номера из четырёх цифр. если мы используем параметр prefix в процессе анимирования серии, мы сможем добавить в начало имён файлов что-то ещё, но для этого примера номера из четырёх цифр вполне достаточно. Создание фильма из тысячи картинок 420x300 точек происходит не слишком долго – на моём ноутбуке это занимает максимум несколько минут (Intel Pentium M 1.5GHz и 512MB памяти).

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

mplayer -fs -vo x11

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

Вы можете посмотреть на получившийся у меня фильм на моём web-сайте (см/ врезку «Ссылки»), и я надеюсь, что у вас получилось создать такой же разноцветный, сумасшедший фильм для себя. Ну как, вам понравилось работать с фракталами? Очень малое число художников занимается этим на коммерческом уровне. для большинства это просто выход творческих сил и способ получить удовольствие. Вскоре мы вернёмся к замене зубов и рисованию логотипов. В конце концов, работа продолжается...

Персональные инструменты
купить
подписаться
Яндекс.Метрика