Графические программы для Linux
Хотя программы для работы с изображениями и графические оболочки ОС — это абсолютно разные классы ПО, степень совершенства первых существенно зависит от того, насколько развиты вторые: дело в том, что при наличии графической оболочки разработчики могут пользоваться (и пользуются) ее библиотеками, что значительно ускоряет и облегчает создание новых продуктов. Именно поэтому, кстати, лучшими машинами для профессиональной работы с графикой остаются компьютеры Macintosh, где графический интерфейс был предусмотрен первоначальным проектом.
В ОС Linux с ее традициями виртуозного владения командной строкой графические оболочки до самого недавнего времени были развиты слабо, однако сейчас, с превращением Linux из системы для специалистов в систему для массового пользователя, ситуация стала изменяться. И конечно, стремительное совершенствование оболочек вызвало прорыв в ряде областей графического программного обеспечения. В 2000 г. разработчики популярных графических программ для других платформ начали выпускать их Linux-версии. Так, уже вышли широко известный пакет обработки растровой графики CorelPHOTO-PAINT, полная версия мощного и оригинального пакета создания трехмерной графики Blender, рендерер профессионального трехмерного пакета Maya, а недавно к ним присоединился и знаменитый редактор векторной графики CorelDRAW. В ближайшем будущем ожидаются также универсальные системы RealSoft4 и SoftImage XSI для работы с трехмерной анимацией. Все компоненты Linux, связанные c графикой, значительно усовершенствовались, а драйверы графических плат стали гораздо качественнее и обновляются более регулярно.
Однако не все задачи, связанные с компьютерной обработкой изображений, требуют вывода графики на экран: есть и чисто вычислительные, такие как стандартная обработка множества однотипных изображений (скажем, при подготовке графических материалов для крупного Web-сайта) или рендеринг, т. е. построение картинок по текстовым описаниям сцен. В подобных случаях графический интерфейс превращается в ненужный балласт и источник потенциальных ошибок, и поэтому предоставляемая Unix-подобной архитектурой Linux возможность обойтись без оконной системы, когда в ней нет необходимости, в сочетании с развитыми средствами автоматизации рутинных процедур тоже оказывается востребованной. Особый интерес она представляет для крупных корпораций, осуществляющих масштабные узкоспециализированные проекты. Linux-сообщество справедливо гордится тем, что под управлением этой ОС была реализована значительная часть рендеринга знаменитого «Титаника», но звездный час Linux в данной сфере, по-видимому, впереди.
Houdini — очень мощный и популярный пакет: слева — процесс моделирования головы, справа — настройка мимики лица |
Попробуем окинуть взглядом горизонты ПО для графики и дизайна, работающего в среде Linux. В основном речь пойдет о бесплатных, а иногда и открытых (т. е. доступных в виде исходных текстов) программах. Открытость системы Linux и многих продуктов для нее очень важна, поскольку позволяет пользователям, имеющим программистскую квалификацию, корректировать программы в соответствии с собственными нуждами, а также создавать новое ПО на основе существующего, не проделывая заново всю работу и не повторяя чужих ошибок.
Конечно, далеко не все интересные проекты доводятся до завершения: многие замораживаются из-за того, что инициаторы утрачивают к ним интерес, не в состоянии продолжать работу за недостатком свободного времени и т. д. Но если в мире коммерческого ПО проекты, переставшие развиваться, исчезают бесследно, то здесь они остаются в Сети, а значит, имеют шанс увлечь других энтузиастов и в их руках превратиться в новые, более совершенные программы. Открытость каждого конкретного продукта мало помогает его продвижению, но наличие большого числа таких программ очень положительно влияет на развитие всей среды.
Вообще говоря, использование открытых продуктов может регламентироваться самыми разными лицензиями, условия которых варьируют от полного отсутствия ограничений до запрета внесения в исходный текст каких бы то ни было изменений, но в таблице для каждой программы указано лишь, доступны ли в принципе ее исходные тексты. Самая известная и популярная открытая лицензия — GNU GPL (GNU General Public License — универсальная общественная лицензия GNU), на основе которой распространяются ядро и многие компоненты Linux, — позволяет модифицировать исходный текст программы для создания нового продукта, но требует, чтобы полученный продукт также лицензировался на условиях GPL (т. е. программист не может сделать такую разработку закрытой). Вариант GPL под названием LGPL (Library GPL — библиотечная GPL), применяемый для некоторых библиотек, допускает их включение в состав коммерческого закрытого продукта.
Вegemot — простенький 3D-редактор, распространяется свободно |
Для программистов и оптимистов
Чтобы определить перспективу развития того или иного класса программ, важно знать, с помощью каких средств их реализуют. Хорошие и удобные инструменты разработки всегда способствуют появлению значительного количества программ с разнообразными свойствами. Как же обстоит дело с инструментальными средствами в Linux?
X-сервер и графические библиотеки
Основой основ графики в Linux является X-сервер, служащий мостом между аппаратными графическими ресурсами компьютера и программами с графическим интерфейсом. На подавляющем большинстве машин с Linux используется открытый X-сервер XFree86; в 2000 г. разработчики подарили миру его четвертую версию. В новой версии XFree86 заработал намного быстрее и качественней, благодаря чему пользователи Linux получили возможность манипулировать окнами не хуже, чем в Windows.
Но XFree86, в отличие от Windows API, содержит только самые базовые средства для обращения к графическим ресурсам компьютера, поэтому при создании приложений разработчики обычно используют специализированные графические библиотеки: GTK+, QT, FOX, FLTK, Lesstif, XSTEP и др. (библиотека Motif, популярная на заре развития Linux, сейчас применяется почти исключительно с коммерческими Unix-системами). Все они представляют собой надстройки над X-сервером и обращаются к его функциям.
Самыми распространенными графическими библиотеками для Linux стали сейчас GTK+ и QT, примерно аналогичные по уровню развития и по мощности Windows API. Обе они предоставляются бесплатно вместе с исходными текстами, но первая лицензируется на условиях GPL, а вторая — на условиях собственной лицензии разработчика (норвежской компании Troll Tech), запрещающей модифицировать исходный текст библиотеки: он доступен лишь для ознакомления. В последнее время наметился определенный перевес в сторону GTK+ — в демократичной среде побеждает самый демократичный инструментарий. Руководство Troll Tech постепенно пересматривает свою лицензию в сторону большей либерализации, однако главное ограничение пока сохраняется.
Библиотека GTK+ (GIMP Toolkit) первоначально создавалась для пакета обработки растровой графики GIMP (GNU Image Manipulation Program), но сейчас разработчики поставили себе цель сделать ее в самом деле универсальной, т. е. способной работать на многих платформах (Unix, Windows, BeOS) и языках программирования (Cи, Cи++, Паскаль, Perl, Eiffel, Guile, JavaScript, Python и пр.).
Приложений, основанных на GTK+, насчитывается несколько сотен. В их числе — оконная среда GNOME (GNU Network Object Model Environment — среда GNU на базе сетевой объектной модели), в которой с помощью CORBA-объектов выстраиваются и приложения, и оконная система, и сама платформа разработчика. Благодаря GNOME появляется возможность в дальнейшем реализовать для Linux (и для многих других платформ) динамическое встраивание объектов, аналогичное Microsoft ActiveX.
Конкурирующая с GTK+ библиотека QT использована для построения второй «главной» графической оболочки Linux — KDE (K Desktop Environment — среда рабочего стола K). Пользователи любят ее за завершенность, надежность и сходство с Windows, хотя это, конечно, далеко не такой универсальный продукт, как GNOME, и значительно менее новаторский.
И для GTK+, и для QT/KDE существуют средства визуального программирования, так что создание оконных интерфейсов в Linux, как и в Windows, сейчас больше напоминает верстку, чем кодирование. Для QT/KDE доступны такие надежные и мощные продукты, как KDE Studio 2, K Develop 1.2, QT Architect 2, QTez 0,93. Библиотека GTK+ пока отстает: из программ визуальной разработки для нее достаточно зрелым является, пожалуй, только коммерческий пакет Visual GTK 1.0.
С точки зрения пользователя разница между GTK+ и QT невелика: независимо от того, на основе какой из них разработано приложение, оно будет запускаться из любой оболочки рабочего стола. Правда, последние версии программ обычно требуют самых свежих версий библиотек, а установка их не всегда проста, но можно обновить весь дистрибутив. Две библиотеки вполне способны сосуществовать на одной машине, в том числе и работать параллельно. GTK+ может также эмулировать интерфейс QT, что облегчает перенос программ из QT в GTK+.
Realsoft — недорогая коммерческая программа с потенциалом highand-продуктов |
Специализированные библиотеки
Помимо библиотек, обеспечивающих обращение прикладной программы к функциям X-сервера, в Linux имеются и средства для работы с графикой на низком уровне — прежде всего для взаимодействия с 3D-ускорителями. Наиболее признанным официальным стандартом трехмерной графики в Linux считается OpenGL, реализованный в нескольких библиотеках, как коммерческих, так и свободно распространяемых. Однако стандартом де-факто стала библиотека Mesa3D, к которой можно обращаться из программ не только на Си/Си++, но и на интерпретируемых языках, таких как Python или TCL/TK. Средства работы с Mesa3D имеются в GTK+, QT и других библиотеках, обращающихся к X-серверу.
Доступ к функциям 3D-ускорителя из Java-программ обеспечит недавно выпущенный компанией JavaSoft бесплатный пакет Java 3D API 1.3 для Linux. Существует, кроме того, независимый проект реализации OpenGL на Java — GL4Java. Нашлись и энтузиасты, готовые перенести в среду Linux разработанную Microsoft технологию Direct3D: так, на момент написания этой статьи библиотека Quesa уже поддерживала 86% функций 3D API.
Другую группу специализированных библиотек составляют библиотеки для работы с графическими файлами. В основном они невелики и ориентированы на какой-то один тип или на небольшое число типов файлов: например, Giflib обеспечивает поддержку формата gif; ilib — форматов ppm, png и jpg; g2 позволяет работать с Postscript-шрифтами; gltt — со шрифтами TrueType. Но существует и пара библиотек-гигантов, разработанных для графических редакторов GIMP и ImageMagick и поддерживающих десятки различных графических форматов. Для работы с файлами, содержащими трехмерные модели, очень удобны функции и библиотеки из проектов трехмерных редакторов, распространяемых по открытой лицензии, о которых мы поговорим ниже.
Высокоуровневые графические библиотеки
Для работы с трехмерной графикой на более высоком уровне существует еще три типа доступных библиотек. Первый — реализации Open Inventor, нового высокоуровневого объектно-ориентированного стандарта описания трехмерных сцен, второй — библиотеки САПР, а третий — так называемые 3D-engines, т. е. средства для быстрого создания трехмерных игр и интерактивных программ. Стандарт Open Inventor уже зарекомендовал себя как промышленный и, очевидно, со временем сменит OpenGL. Он является детищем компании SGI — законодателя мод в трехмерной графике, а значит, пришел надолго и основательно. Open Inventor обладает более интеллектуальным интерфейсом и позволяет гораздо быстрее создавать интерактивные трехмерные приложения, мало зависящие от платформы. Компания SGI бесплатно распространяет инструментарий для поддержки своего стандарта, но, кроме того, есть еще несколько его реализаций, как коммерческих, так и свободных.
Библиотеки САПР предназначены для применения в науке и технике, но их широкие возможности визуализации, моделирования, обработки поверхностей и построения сцен пригодятся любому разработчику трехмерных программ, тем более что они распространяются вместе с исходными текстами. Из этих библиотек наиболее популярны Open CASCADE и VARKON — чрезвычайно мощные и универсальные инструментарии, признанные промышленностью и ставшие уже стандартом де-факто.
Из библиотек для разработки трехмерных игр и интерактивных программ ни одна пока не претендует на то, чтобы быть стандартом, но от этого они не делаются менее привлекательными. В некоторых из них имеются средства анимации персонажей (character animation), обмена данными (импорта и экспорта) с пакетами трехмерной графики, реализованы распознавание столкновений объектов (collision detection), спецэффекты, автоматический дизайн уровней или даже персонажей и многое другое. Иными словами, в этих пакетах уже реализована вся основная программистская работа, а процесс построения игр и приложений максимально автоматизирован, так что разработчик может почти не заниматься техническими деталями, а полностью сосредоточиться на содержании и дизайне своей программы. Хорошими примерами здесь могут служить мощная бесплатная библиотека для разработки игр GIZMO3D, поддерживающая анимацию персонажей и работу с файлами формата 3D MAX, не менее мощная и вдобавок открытая CrystalSpace, а также 3D-MasterSuite.
Какой же вывод можно сделать из приведенного перечня программ? По-видимому, в Linux достаточно инструментария для создания программ, работающих с растровой и трехмерной графикой (векторная, увы, пока отстает). Дело только за авторами, которые действительно их напишут.
Для пользователей
Даже не зная, что ОС Linux создавалась программистами и для программистов, об этом легко было бы догадаться, сравнив состояние ПО для разработчиков и для конечных пользователей. До прошлогоднего прорыва ситуацию можно было бы оценить просто как катастрофическую, да и сейчас разрыв еще достаточно велик. Но простые дизайнеры все-таки не останутся вообще без рабочих инструментов. Для Linux существует несколько коммерческих и бесплатных редакторов растровой графики. В первую очередь здесь необходимо назвать флагманский открытый пакет GIMP (GNU IMage Processing), обладающий множеством разнообразных достоинств. В частности, он, в отличие, например, от Adobe Photoshop, не только позволяет качественно обрабатывать готовые материалы, но и имеет развитые средства для создания изображений «из ничего» — возможность, весьма полезная для Web-дизайнеров и разработчиков трехмерной графики. Пакет имеет интерфейсы для различных языков скриптов, и для него разработано множество дополнительных модулей (plug-ins).
Другой популярный и мощный открытый пакет для работы с растровой графикой — ImageMagick. А пакет CorelPHOTO-PAINT 9, бесплатная Linux-версия которого вышла в прошлом году, вряд ли нужно представлять читателям «Мира ПК»: он смог завоевать себе достойное место на жестком конкурентном рынке Windows.
Из коммерческих продуктов отметим растровый редактор Photogenics 5.0, а также систему подготовки «бумажных» и электронных публикаций Canvas 7. Коммерческим (в отличие от CorelPHOTO-PAINT, распространяемого бесплатно) является и CorelDRAW для Linux — единственный серьезный пакет для работы с векторной графикой, представленный в этой ОС.
В области трехмерной графики для Linux сложилась своеобразная ситуация. Так как создание полноценного «трехмерного» пакета — работа достаточно масштабная, а значит, сложная и дорогостоящая, разработчики предпочитают писать специализированные программы для решения определенных задач, таких как рендеринг или трехмерное моделирование.
Лучше всего разработаны на настоящий момент средства рендеринга, т. е. программы, которые получают на входе текстовые описания сцен и выдают на выходе соответствующие им графические изображения или наборы изображений. Свободно распространяемые продукты обеспечивают очень высокое качество рендеринга и в определенных отношениях даже превосходят коммерческие системы. Самые популярные пакеты данного типа — это открытые PovRay и Rayshade, а также бесплатный, но закрытый BMRT; он работает с собственным языком описания сцен, совместимым с RIB (RenderMan Interface Bytestream) — форматом профессиональных пакетов фирмы SGI. В большинстве же программ рендеринга используется язык описания сцен PovRay, ставший уже почти стандартом для трехмерной графики в Linux.
Из доступных через Internet бесплатных программ моделирования назовем быстро развивающуюся Mops, довольно мощную систему построения моделей твердых тел IRIT, пакет Nurbana, работающий главным образом с nurbs-поверхностями, и несложный удобный редактор моделей K-3D. Если первые версии многих подобных продуктов позволяли строить только простые модели, то теперь в некоторых из них уже можно создавать готовые сцены, а также использовать внешние или внутренние рендереры.
Ведется, несмотря на всю сложность этой задачи, и разработка универсальных сред для дизайнеров и аниматоров. Безусловным лидером в этом классе является программа Blender, уровень которой c выходом второй версии поднялся до профессионального. Однако существуют и другие интересные проекты, такие как Moonlight Atelier — редактор трехмерной графики с типичным интерфейсом в стиле Unix. К сожалению, перестала развиваться открытая программа MindsEye с хорошо продуманным интерфейсом, и почти остановилась разработка другого открытого пакета — PMR, имеющего полный набор инструментов для подготовки профессиональной графики, а также огромные библиотеки готовых текстур и моделей. Но оба продукта доступны в виде исходных текстов, так что при наличии энтузиастов их совершенствование может быть продолжено.
Какой же вывод можно сделать из сказанного выше? Несомненно, на вопрос, вынесенный в заголовок статьи, следует ответить утвердительно. Правда, графика в Linux слабее, чем в Windows, но стоит ли расстраиваться, например, по поводу катастрофического отставания Linux в области средств подготовки печатных изданий, если и Windows, где они вполне развиты, не в состоянии конкурировать с Macintosh? Не будем забывать и о таком важном факторе, как цена: профессиональные графические пакеты для Windows весьма недешевы, а среди сравнимых с ними по мощности программ для Linux много бесплатных и открытых.
Итак, тем, кто хочет создать свою дизайн-студию, не тратя массы денег на программное обеспечение и не прибегая к услугам пиратов, ОС Linux вполне подойдет. Для нее разработано уже немало качественного ПО, доступного через Internet, часто снабженного неплохой документацией как для программистов, так и для пользователей. Чтобы подкрепить сказанное выше, мы будем периодически освещать отдельные Linux-продукты более подробно на примерах реализации конкретных задач.