Интервью с разработчиками Krita

Редакция всея linuxgraphics.ru тихо разгребает кармические долги, в связи с чем счастлива наконец представить вашему вниманию интервью с разработчиками Krita — редактора растровой графики из комплекта офисного пакета KOffice.

Баудевейн Ремпт — инженер-программист, всю сознательную жизнь увлекающийся изобразительным искусством, лингвистикой и теологией. Живет в Девентере, Нидерланды.

Сирил Бергер. Работает над докторской в области машинного зрения. В свободное время помимо работы над Krita занимается фотографией (ч/б, пленка), рисует или лазает по горам. Живет в Тулузе, Франция.

Насколько я помню, работа над Krita была возобновлена в 2002 году по причине того, что не было свободной программы для художников, верно?

Баудевейн: Да — вроде того. Я купил графический планшет, в комплекте с которым шла программа Procreate Painter — урезанная версия Corel Painter. Программа сама по себе была не такой уж и хорошей, но существовавшим свободным аналогам до нее было как пешком до Пекина. Меня эта тема настолько заинтересовала, что я прочитал несколько научных работ и диссертаций и понял, что подход Painter сам по себе был достаточно ограниченным. Равно как и подход Photoshop или GIMP. Поэтому я начал работать над собственным проектом, но вскоре понял, что было бы разумнее присоединиться к существующему.

В то время Krita как проект угасал — программа могла показывать многослойные изображения, но рисовать в ней было нереально. Тогдашний руководитель проекта, Патрик Джулиен (Patrick Julien), очень помог мне. Иногда я говорю, что именно он научил меня C++! И вот шаг за шагом я довел Krita до уровня, когда программой стало интересно пользоваться. Тогда к проекту начали присоединяться новые люди, одни — чтобы исправить мои ошибки, другие — потому что им чего-то в ней не хватало.

Сирил: У каждого из нас собственные мотивы работы над Krita. Если Баудевейн заинтересован в рисовании, то Каспер Бёман (Casper Boemann) присоединился к нам потому, что ему нужен был редактор, позволяющий обрабатывать изображения в режиме 16 разрядов на цветовой канал — для проекта симулятора полетов, над которым он тогда работал.

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

Баудевейн: Дело в том, что Krita является очень гибкой основой для всех видов работы с изображениями. В программе непараллельная архитектура и очень гибкая система расширений. Так что если мне, к примеру, интересны рисовательские вещи, то другие разработчики программы предпочитают работать над продвинутыми функциями для фотографов вроде работы в цветовом пространстве CIELAB или ретуши изображений с широким динамическим диапазоном. И это замечательно: в планах стоит создание рабочих пространств, где интерфейс Krita адаптируется к текущей задаче.

Сирил: В принципе, твое определение достаточно точно описывает мою мотивацию. Мне интереснее всего фотография, отсюда работа над расширением для сборки панорам, поддержкой изображений с широким динамическим диапазоном, фильтрами обработки… Но мне также интересно и рисование (которое я отличаю от живописи). Поэтому свое время я посвящаю именно этим двум аспектам Krita. Словом, для меня Krita — инструмент, помогающий творчески подходить к работе с изображениями.

Баудевейн, в мае в ходе презентации на конференции Libre Graphics Meeting ты показал несколько приложений, авторы которых уже в 70-х годах пытались создать имитацию техник живописи. Но научная работа Кубелки-Мунка (КМ), впервые использованная именно в Krita, была написана еще в 30-х годах прошлого века. Как ты думаешь, почему она не использовалась раньше, да и в Интернете упоминаний о ней совсем мало?

Баудевейн: О, она все же использовалась, но в академической среде. Все началось с научной публикации Curtiss, Salesin et all, “Computer Generated Watercolor”. Билл Бакстер (Bill Baxter) и Том ван Лаэрховен (Tom van Laerhoven) продолжили разрабатывать эту жилу с, соответственно, Dab, Impasto и AquaVerve.

Программа Рафа Левьена (Raph Levien) для имитации акварели под названием Wet Dream была первой свободной программой, до известной степени использовавшей эти принципы. Однако Раф предполагал, что результаты его работы попадут в GIMP, а этого так и не случилось.

Еще одна проблема состоит в том, что перейти из RGB в KM и обратно в RGB достаточно сложно. Точность расчетов ограничена, а сами расчеты настолько нагружают центральный процессор, что в исследовательских проектах вычисления часто переносятся на GPU. Но Эмануэле Тампони (Emanuele Tamponi) смог реализовать в Krita цветовое пространство КМ, преобразование в/из которого работает очень быстро даже на устаревших ЦП, причем результат выглядит достаточно реалистично. Надеюсь, что его работа будет использована и в других свободных приложениях.

Хм, а ты не мог бы подробнее рассказать о КМ тем читателям, кто не очень в теме?

Баудевейн: Кубелка и Мунк были учеными, создавшими математическую формулу для расчета отражения света от жидкости, в которой смешаны металлические пигменты. Много позднее исследователи, в числе которых были Кёртис и Бакстер, использовали эти формулы для расчета эффекта смешения цвета естественным путем — то есть, у вас есть смесь из разного количества разных пигментов, а также свет определенного цвета, который под некоторым углом падает на эту смесь — и все это в итоге попадает на сетчатку человеческого глаза. Все немного сложнее, чем я сейчас это описываю, но главная сложность состоит в том, что необходимо перейти от цвета в RGB к KM и обратно, ведь существуют сотни тысяч возможных вариаций пигмента и света, которые могут дать один и тот же цвет в RGB. Именно здесь Эмануэле Тампони и отличился, создав надежную формулу преобразования, позволяющую смешать, к примеру, синий цвет RGB с желтым цветом RGB через КМ и вернуть правдоподобный зеленый RGB.

Академические исследования в этой области попадали в какие-либо закрытые коммерческие приложения последних лет? Следите ли вы за новшествами в программах вроде Painter или ArtRage?

Баудевейн: Да, я стараюсь следить за всеми нововведениями (хотя по большей части имею дело с демоверсиями, поскольку лицензии не всегда мне по карману). В Painter появилась новая система кистей под названием RealBristle, которая, похоже, создана под впечатлением от научной работы Страссмена 86-го года (Strassman S. 1986. Hairy brushes. SIGGRAPH 86). ArtRage — занятная штуковина, но она не идет дальше смешения цветов в RGB (или, возможно, CMYK) и использования GPU для имитации слоев краски при помощи карты рельефа. Наиболее интересная исследовательская работа Билла Бакстера и Тома ван Лаэрховена пока что не осела ни в одном из коммерческих приложений.

Как ты считаешь, возможно ли выделить код имитации в библиотеку, которую можно было бы использовать в других программах вроде MyPaint или Gogh, разработчики которых могли бы тогда внести и свой вклад в разработку?

Баудевейн: Ну, может быть. Не уверен. MyPaint и Gogh написаны, в основном, на Python, так что библиотеке понадобились бы привязки к Python. Но это чисто техническая проблема. Думаю, что MyPaint и Gogh — в большей степени эксперименты с программируемыми, гибкими движками кистей, а Krita может использовать бесконечное количество таких движков. Так что было бы проще реализовать ровно обратное — сделать на Kross расширение для Krita, которое имитировало бы движок MyPaint или Gogh.

Хммм, то есть ты не видишь способа повторно использовать движки имитации кистей из Krita, но видишь способ повторного использования кода реализации КМ? Как это так? :-)

Баудевейн: Код цветового пространства КМ — это просто математика, она легко абстрагируема. А движки кистей — инфраструктура, которая весьма специфична для приложения.

Ну хорошо, а как вы намерены решить вопрос с трехмерностью настоящих картин при имитации?

Баудевейн: В обозримом будущем мы будем идти по пути, проложенному ArtRage и Painter — использовать поле высот через карту рельефа. Я знаю лишь об одном приложении, автор которого не искал легких путей и реализовал настоящую имитацию слоев краски, и это Impasto Билла Бакстера. Реализовать идеи, воплощенные в этой программе, будет сложно, так что мы оставим это на потом!

А что такого сложного в Impasto?

Баудевейн: Krita использует цветовые пространства для имитации больше чем цвета: там где у цветового пространства «поля» для каналов R, G и B или каких-то иных, Krita добавляет влажность, липкость и т.д. Но это, по большому счету, все еще двухмерная структура, даже если там есть слои.

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

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

Баудевейн: Разрешение. Для хорошего рисунка нужна высокая разрешающая способность, без которой ты не сможешь рисовать с высокой степенью детализации, а также большой холст, на котором будет где развернуться и нарисовать сложные объекты. Однако при имитации приходится отслеживать состояние каждого пиксела, поэтому сама имитация работает очень медленно. А это означает, что, как правило, ты ограничен холстом размером 512×512 пикселов.

Баудевейн, возможно, ты уже не помнишь, но в прошлом году в Монреале я спросил тебя, как обстоят дела с проектом Google Summer of Code и удалось ли тебе установить хорошие отношения со своим студентом. Ты тогда ответил, что просто в восторге от него, потому что уже до официального начала проекта Эмануэле активно работал и присылал качественный код. А что в этом году?

Баудевейн: В этом году мы получили меньше слотов, поэтому у нас только один студент. Лукас Тврдый (Lukas Tvrdy) из Словакии пишет имитацию кистей суми-е. Это интересная работа, требующая моделирования физики волосков кисти. В рамках проекта Лукас также разрабатывает инфраструктуру, благодаря которой этот тип модели можно будет использовать и в других кистевых движках.

У проекта отличный прогресс, можно получать замечательные и даже очень необычные эффекты, но дзен суми-е мы пока не достигли.

А как сейчас обстоят дела с поддержкой расширенных устройств ввода и каковы планы по улучшению этой части приложения?

Сирил: Поддержка графических планшетов довольно неплоха, хотя есть недочеты (например, в части определения планшетов; еще не поддерживаются разные дополнительные устройства вроде Airbrush — главным образом из-за того, что у нас их нет). При рисовании учитывается наклон стилуса. Устройства вроде Space Navigator компании 3DConnexion тоже поддерживаются.

Ах да, припоминаю: Этторе Пасквини (Ettore Pasquini) из 3dconnexion сам связался практически со всеми разработчиками релевантного свободного софта и выдал им Space Navigator :-) Что довольно разумно. Вы не пробовали наладить контакты с компаниями вроде Wacom? Ну, поскольку Wacom уже работает с разработчиками linuxwacom и обеспечивает их устройствами, теоретически, они могли бы сотрудничать и с вами, нет?

Сирил: Да, мы пытались связаться с Wacom, но ответ так и не получили. Так что мы попросили помощи у сообщества. Полагаю, после выпуска Krita 2.0 можно будет попробовать еще раз, особенно если учесть, что программа будет работать в Windows и Mac OS X.

Для успеха любого проекта по созданию ПО критически важно иметь сообщество пользователей, использующих программу для решения реальных задач. Как вы думаете, удалось ли вам создать такое сообщество?

Баудевейн: Оно понемногу образуется. Я был изрядно поражен количеством интересных рисунков на DeviantArt, созданных в Krita.

Сирил: Отсутствие организованного сообщества — одно из самых слабых мест Krita. Сейчас появился человек, изъявивший желание поработать над сайтом KOffice (где сейчас находится официальная страничка Krita); еще несколько человек начали работу над отдельным сайтом. В обоих случаях основной задачей является ускорение роста сообщества пользователей и повышение заметности Krita.

Есть ли у вас планы порадовать препрессников функциями вроде треппинга?

Баудевейн: В общем-то, нет. Мне кажется, что лучше создавать в Krita изображение, и уже потом готовит его к печати в программе вроде Scribus.

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

Если говорить о совместном рисовании, то сейчас на арене свободного софта есть только Inkboard (часть Inkscape), DrawPile и кое-какой начальный код в GEGL из SVN (GEGL является новым движком GIMP и используется в паре других приложений — прим.ред.). Вы бы хотели видеть это и в Krita тоже?

Баудевейн: Да, было бы здорово.

Сирил: Да, и более того, мы уже начали работать над этим. К слову, замечу, что в GEGL это локальная совместная работа: там все сводится к возможности дать нескольким процессам одной или нескольких систем (компьютеров) работать над одним изображением, что в итоге сводится к передаче буферов. Что подразумевает наличие достаточно быстрого сетевого соединения.

Ага, а реализовано это будет на уровне рабочей среды KDE, на уровне KOffice, или это будет только для Krita?

Сирил: Всё сразу :-) Сюда можно даже добавить слой Freedesktop. На уровне Krita у тебя есть запись макросов: каждый раз, когда пользователь что-то делает, запись об этом добавляется в память (пока что реализована поддержка лишь нескольких таких действий), а эти действия могут быть сохранены в виде описания с разметкой XML, которое можно передавать по сети.

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

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

Да, но ведь ресурсы можно расшаривать для сессии, разве нет?

Сирил: Разумеется, скорее всего, именно так мы и поступим. Это как раз не такая уж и проблема.

А внутреннее версионирование разве не поможет расправиться со второй частью проблемы?

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

Ну да ладно, что касается уровня KDE/KOffice, сейчас идут дискуссии на тему библиотеки, которая обрабатывала бы соединения и обмен данными (и, возможно, функции текстового редактора, но это Krita явно не касается ;)). В рамках Google Summer of Code в этом году написан код, реализующий совместную работу над документами в Kate, и этот проект послужит отправной точкой для упомянутой библиотеки в KDE.

На уровне Freedesktop (и, частично, на уровне KDE с библиотекой Decibel) есть библиотека Telepathy, берущая на себя задачи по обработке низкоуровневой сетевой части (обмен данными, использование Zeroconf для поиска других пользователей и.т.д.…).

На LGM во Вроцлаве я обратил внимание на то, что некоторые разработчики использовали любую возможность выйти и обсудить важные вещи, касающиеся их проектов, в то время как вы присутствовали на большинстве презентаций и задавали вопросы по существу. Как я понимаю, это из-за того, что вы живете в Европе, и у вас больше возможностей встретиться лицом к лицу. Верно? :-)

Баудевейн: На самом деле, нет. Мы могли бы встречаться, но у каждого из нас работа, семья, университет и т.д. IRC и списков рассылки вполне достаточно для обсуждения планов, а те несколько дней, что у нас есть на LGM, мы используем для знакомства с другими проектами и их участниками. Именно разнообразие обсуждающихся на этой конференции тем и взаимодействие между людьми делает для меня LGM самой важной конференцией года.

Я в курсе, что другие проекты, например, Scribus и GIMP, делают LGM местом ежегодной встречи разработчиков — в прошлом году я пытался сделать то же самое на aKademy, а до того я приглашал всех разработчиков Krita к себе домой в Девентер. Ну и потом, у нас достаточно небольшая команда разработчиков. Если бы нас было больше, встречи лицом к лицу были бы важнее.

Сирил: Соглашусь с Баудевейном. У проекта была всего одна встреча. Это было давно, к тому же, я на нее не попал. За последние два года команда разработчиков KOffice собиралась еще дважды, и там я снова пролетел. Так что единственный раз, когда я встречался с остальными авторами Krita (помимо LGM) — на Akademy в прошлом году. И даже тогда мы большую часть времени провели за разговорами, не касающимися Krita/KOffice напрямую ;). Думаю, это потому, что мы приезжаем на конференции посмотреть, чем занимаются остальные. Потому-то для нас LGM и не является ежегодным местом встречи. И, наверно, потому же нас просят проводить хакатлон до или после конференции. (Хакатлоном по традиции назвают встречу, на которой разработчики только и занимаются тем, что пишут код — прим.ред.)

Каковы ваши впечатления от LGM в целом?

Сирил: Эта конференция стала моим любимым мероприятием, связанным со свободным софтом. Огромное количество самых разных проектов и людей, разнообразие всего, что связано с графикой… Отличный повод встретиться с людьми, которых знаешь по большей части по IRC или спискам рассылки. Опять же, удачный повод обсудить совместную работу проектов, например, OpenRaster.

Баудевейн: Слушай, это просто безумие! Я в полном восторге от LGM: и от встречи разработчиков с дизайнерами, и от широкого диапазона обсуждаемых тем, и от их же глубины, и от самой атмосферы конференции! Опять же, во многом благодаря LGM мы видим инновации: работа Эмануэле над KM, Enfuse Пабло (на самом деле, основным разработчиком Enfuse является Эндрю Михаль — прим. ред.), Spiro — думаю, что скоро мы добавим и академическую составляющую.

Академическую составляющую?

Баудевейн: В научном мире происходят интересные вещи, которые на LGM никак не представлены. В тоже время, публикация исходного кода становится требованием для, скажем, проектов FP7 Еврокомиссии, что становится нормой для академического мира. Если бы мы задействовали университеты и работающих по интересной нам проблематике молодых ученых, это привлекло бы в проекты целую группу творческих людей и заполнило бы пробел между сообществом хакеров и научным миром.

Как далеко сейчас Krita 2.0 и KOffice 2.0 от выпуска?

Баудевейн: По мне, достаточно далеко. Инноваций набралось предостаточно, но переход на новую платформу (с Qt3 на Qt4), в то время как сама платформа то и дело меняется — задача непростая.

Сирил: В этом году новая версия обязательно выйдет. В конце сентября — начале октября выйдет бета-версия KOffice и Krita 2.0. И хотя на тестирование уйдет время, ждать останется уже недолго.

Вы когда-нибудь задумывались о том, что Krita без зазрения совести ломает устоявшиеся стереотипные представления о роли и функциональности редактора графики в офисном пакете?

Баудевейн: О, да. Мы даже начали работать над новым сайтом специально для художников, которым противно пользоваться чем-то, хоть отдаленно связанным с офисным пакетом. И все же, я считаю KOffice пакетом приложений для творческих людей, и Krita отлично сюда вписывается. Вся власть пользователям!

Сирил: Еще как задумывались. И хотя в этом есть толика смысла, подумай и о том, что пользователь Krita может редактировать векторную графику или вставлять в рисунок сложно отформатированный текст, а пользователь KWord — редактировать графику. И для этого даже не надо запускать внешнее приложение. Вместе с тем, есть и маркетинговые соображения — как ты говоришь, ломается стереотип, а это означает, что те, кому нужна программа для работы с графикой, скорее всего даже не посмотрят в сторону офисного пакета. Эту проблему мы пытаемся решить при помощи нового пакета под названием KAtelier, который включает только Krita и Karbon (редактор векторной графики — прим. ред.) и предназначен для художников.

Возможно, вы заметили, насколько сентиментальными могут быть люди по отношению к софту и железу. Не так давно Джиммак пел песнь священному союзу Wacom Cintiq и ArtRage. Черт, даже я иногда отпускаю шуточки на тему того, что у любого непредвзятого пользователя после пяти минут работы с Inkscape пробуждается змея Кундалини :-) Как вы думаете, нормально ли испытывать чувства к чему-то, что, в принципе, является всего лишь молотком?

Баудевейн: Разумеется! Я могу сочинять оды о действительно хорошем молотке. Нет, я прекрасно понимаю, что ты не подразумевал буквальное истолкование метафоры, но попробуй сделать что-нибудь плохими инструментами. Скажем, если ты хочешь построить для детей домик на дереве, но у тебя отстойные инструменты, ты себе заработаешь депрессию, поранишься, а дети с этого дерева еще и упадут. Хороший молоток стоит своей цены. Ведь если инструмент удобно лежит в руке, если он становится продолжением твоего тела и разума, ты к нему привязываешься. С софтом все то же самое. Да, это инструмент — и хотя хорошие инструменты не могут заменить талант, плохие инструменты могут кого угодно сделать калекой. А хорошие инструменты действительно важны и достойны заботы о себе.

1 Trackback / Pingback

  1. Взгляд на Google Summer of Code изнутри

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*