Вы занимаетесь трехмерной анимацией и задумали переходить в Linux? Или просто хотели бы попробовать свои силы в создании компьютерных мультфильмов, но не готовы ни потратить крупную сумму на необходимое ПО, ни пользоваться пиратскими программами? Тогда вам поможет только Blender — единственный бесплатно распространяемый многоплатформный полнофункциональный пакет для подготовки и анимации трехмерных сюжетов.
Разработкой и продвижением Blender занимается голландская компания NaN (Not a Number). Первоначально бесплатным был лишь его урезанный вариант с блокировкой части функций, которые активизировались по ключу, стоившему 95 долл. Однако сейчас все ограничения сняты; более того, компания обещает полностью или частично открыть исходные тексты Blender в случае прекращения работы над ним. Впрочем, пока он активно развивается, и на посвященном пакету сайте www.blender.nl появляется все больше документации к нему. Полная документация существует только в печатном виде, и от ее продажи NaN получает основной доход.
Актуальная на настоящий момент версия пакета имеет номер 2.12; она реализована для множества платформ — SGI, Sun, FreeBSD x86, Linux x86, Linux Alpha, Linux PPC (Macintosh), BeOS x86, Windows, что весьма убедительно свидетельствует о серьезности намерений разработчиков и, главное, о живучести Blender на рынке. Программа нетребовательна к ресурсам и будет прекрасно работать, например, на машине с процессором MMX 166, 64 Мбайт памяти и видеоплатой S3 Virge. Ниже речь пойдет о версии для Linux.
Что делает анимационная программа
Пакет Blender является универсальным редактором для подготовки трехмерных роликов и, подобно другим аналогичным программам, позволяет создавать фильмы различных стилей: синтетического, с которым мы знакомы по компьютерным играм, «рисованного», напоминающего традиционные мультфильмы, а также фотореалистичного. Конечно, полного правдоподобия достичь очень сложно, это требует высокого профессионализма и больших затрат времени, но степень «приближения к действительности» можно варьировать. Все проекты реализуются по единой технологии, и это, пожалуй, самая приятная особенность трехмерных редакторов.
Итак, в каком бы стиле вы ни работали, для создания анимационного ролика вам потребуются следующие шаги.
- Моделирование. Для каждого пространственного объекта, так или иначе участвующего в фильме, от главного героя до табуретки, первым делом строится объемная модель. Чаще всего она представляет собой каркасную сетку (mesh), т. е. определяющий форму объекта набор точек, соединенных отрезками, — как бы проволочный каркас. Главная задача при создании сетки заключается в том, чтобы расположить ее вершины в нужных местах, и во всех трехмерных редакторах предусмотрены разнообразные инструменты, помогающие это сделать.
- Подготовка текстур, определяющих поверхность будущих объектов. Сложность данной части работы над фильмом очень зависит от требуемой степени его реалистичности, и, например, в «рисованном» стиле, где изображение намеренно упрощенное, ее можно вообще пропустить. Вообще говоря, за каждый параметр поверхности отвечает особая текстура; чаще всего используются текстуры поглощения света, прозрачности, отражения, цвета и рельефности. Удобнее всего создавать и обрабатывать текстуры в каком-либо мощном редакторе растровой графики.
Рис. 1. Текстурирование среза дерева с применением процедурной текстуры - Определение материала и текстурирование поверхности моделей. Чтобы «надеть» на каркасную сетку поверхность, необходимо определить свойства материала, из которого «сделан» объект: какого он цвета, как отражает (поглощает, преломляет) свет и т. д. В мощных профессиональных трехмерных редакторах имеется множество инструментов для работы с материалами, а вот в более простых и дешевых программах их мало, поэтому там невозможно создавать фотореалистичные изображения. Задав материал поверхности, можно наложить на него подготовленную текстуру или несколько текстур, если поверхность должна быть неоднородной. Для упрощения этой работы часто применяются так называемые процедурные текстуры — наборы инструкций, определяющие свойства поверхности в зависимости от каких-либо параметров. Например, такая текстура позволит корректно стыковать рисунок в двух плоскостях на срезе дерева (рис. 1).
- Формирование сцены. Когда все модели готовы, их следует собрать вместе и разместить в пространстве, а также определить положение и характеристики виртуальных источников освещения и камер. Если нужно, подключаются спецэффекты: туман, объемный свет, огонь и т. д.
- Анимация персонажей. В современных анимационных программах достаточно определить только ключевые положения персонажей и способ расчета промежуточных кадров, а сам расчет выполняется автоматически. Чтобы художник мог работать в «рисованном» или фотореалистичном стиле, программа должна обеспечивать так называемую анимацию мягких тел, суть которой заключается в изменении формы каркасов. Для этого существует несколько методов, но очень желательно, чтобы поддерживалось применение скелетонов (англ. skeleton — скелет, костяк), когда для объекта определяются набор костей и способы их сочленения. На стадии анимации происходит и первичное озвучивание фильма.
- Заключительные операции: рендеринг, обработка его результатов и монтаж готового материала в единый файл. На стадии рендеринга строятся изображения для кадров, просчитанных на этапе анимации. Это длительный процесс, и для уменьшения его продолжительности сцену часто подвергают предварительной обработке.
Результаты рендеринга также можно обработать с помощью различных фильтров. Так, при создании «рисованных» роликов используются фильтры, значительно упрощающие изображение, и благодаря им оно начинает напоминать некомпьютерные мультфильмы. В определенных случаях для окончательной обработки фильма применяются специализированные программы видеомонтажа, позволяющие совмещать синтезированное изображение с реальным (снятым на видеопленку), строить плавные переходы от одной сцены к другой, вводить дополнительные спецэффекты и звуковое сопровождение.
Посмотрим теперь, какие средства для обеспечения каждого из перечисленных шагов есть в Blender.
Моделирование
Работа над компьютерным фильмом начинается с моделирования персонажей и объектов, а знакомство с новой анимационной программой — с изучения предназначенных для этого средств. И конечно, впечатление от них во многом определяет оценку программы в целом.
Заготовками для модели чаще всего служат пространственные, или, как более принято говорить, объемные примитивы (многогранник, шар, цилиндр...), которые совмещаются и преобразуются с помощью различных инструментов. Что касается Blender, то в нем начиная с версии 1.7 присутствует один из самых совершенных таких инструментов, который в разных пакетах именуется по-разному, а здесь называется S-Mesh (subdivision — mesh). S-Mesh выполняет сглаживание (subdivision) вершин каркасного (mesh) объекта и сходна с функцией metanurbs пакета Lightwave, однако использует несколько более простую технику. Из-за этого возможности сглаживания в Blender несколько беднее, чем в Lightwave, но зато с ними значительно проще работать. Создание персонажа может быть сведено к построению достаточно простой конструкции и несложным манипуляциям с вершинами каркасного объекта (рис. 2).
Рис. 2. Сглаживание каркасного объекта с помощью функции S-Mesh |
Для эффективного использования таких инструментов, как S-Мesh, очень важно удобно организовать работу с вершинами каркаса. В Blender это сделано вполне удачно. Отметим, что в нем, в отличие от многих других редакторов трехмерной графики, все операции с каркасными и полигональными объектами ориентированы на работу с вершинами, и после применения S-Mesh нельзя превратить каркасный объект в полигональный с бо,льшим разрешением.
Последнее ограничение можно преодолеть, применив последовательно операции Subdivision и Smooth; впрочем, при хорошем стиле моделирования это не потребуется.
Весьма полезная при моделировании органических поверхностей функция MetaВall в Blender обеспечивает не меньше возможностей, чем в коммерческих программах. Она позволяет строить сглаженные переходы не только между сферами, но и между цилиндрами, а созданную с ее помощью поверхность можно преобразовать в полигональный объект для дальнейшего редактирования.
Функция Lattice (решетка) помогает при редактировании каркасных объектов, особенно имеющих много вершин. На готовый объект накладывается решетка с нужным числом вершин, и каждая ее вершина становится управляющей (аналогично функции X-Form в пакете 3DStudioMax).
Итак, инструменты для пространственного моделирования представлены в Blender весьма хорошо. А вот работа с кривыми поддерживается слабо; видимо, разработчики считают, что соответствующие методы устарели и не слишком нужны пользователям.
Текстурирование
Пакет располагает и довольно мощными средствами текстурирования. Подобно другим высокоуровневым редакторам трехмерной графики, он позволяет задавать различные параметры, относящиеся к физическим свойствам поверхностей, накладывать друг на друга текстуры с эмуляцией рельефности, разбивать поверхности на участки с различными текстурами и параметрами материала (аналогично функции multy sub/object в 3DStudioMax или surface в LightWave). Есть несколько готовых процедурных текстур и возможность подключать дополнительные с помощью модулей расширения.
Управление текстурированием в программе также на высоте. Обеспечивается коллекционирование материалов для сцены, что облегчает и навигацию по текстурам, и создание новых текстур на основе уже проработанных. Предусмотрены работа с несколькими слоями на каждый материал и смешивание текстур из разных слоев, имеются встроенные средства просмотра графических изображений и даже такая нетрадиционная функция, как раскрашивание объекта в реальном времени по вершинам, что бывает полезно для разрисовки сложных моделей с большим числом полигональных элементов.
Скажем здесь же о рендеринге. Его качество довольно высоко, а для режима radiosity, в котором, чтобы обеспечить максимальное правдоподобие, расчет освещения выполняется по очень сложному алгоритму, имеются инструменты оптимизации сцены, которые позволяют значительно сократить время рендеринга. Однако решающую роль при создании сцен все равно играет мастерство художника, а Blender предоставляет достаточно инструментов для реализации любых замыслов.
Из недостатков средств текстурирования отметим отсутствие интерактивных инструментов размещения текстур на поверхности модели — правда, они характерны главным образом для высокопрофессиональных пакетов. Слабо разработано и взаимодействие между слоями текстур, которое, впрочем, редко используется непрофессионалами.
Анимация
Далеко не все коммерческие продукты обладают такими возможностями анимации, как Blender. Здесь хорошо развиты средства анимации мягких тел, могут быть анимированы большинство параметров материалов и самих объектов, так что с этой точки зрения Blender вполне может считаться программой «средней тяжести».
В Blender представлены оба главных способа компьютерной анимации — по ключевым кадрам и при помощи кривых, причем по ходу работы над сюжетом можно переходить из одного режима в другой. Для интерполяции между кадрами разрешается использовать по выбору полигональные кривые, кривые Безье и В-сплайн.
Для анимации мягких тел в Blender можно использовать как минимум четыре метода. Первый — MetaВalls — позволяет анимировать отдельные элементы моделей, построенные на основе шара или цилиндра. Второй — анимация вершин каркасных объектов — представляет собой неплохую альтернативу морфингу. С помощью третьего — «решеток» (Lattices) — можно создавать очень интересные эффекты, сходные с «искривлением пространства» (space-warp) в 3DStudioMax. И наконец, четвертый метод — скелетоны — является универсальным средством «оживления» персонажей и любых предметов.
Анимация при помощи скелетонов считается сложнейшим искусством, но разработчики Blender упростили ее до предела, сохранив тем не менее достаточную гибкость этого метода. Например, динамику взаимодействия костей, составляющих скелетон, нельзя регулировать вручную, зато она автоматически настраивается оптимальным образом. Поэтому после построения скелетона можно сразу же приступить к его анимации, минуя стадию настройки, которая в таких пакетах, как Lightwave или 3DStudioMax, обычно занимает несколько часов.
Еще одно упрощение — цепь костей «освобождена» (т. е. способна двигаться) только в одной плоскости. Это, пожалуй, существенное ограничение, но подавляющее большинство механических соединений именно так и устроено. Чтобы элемент мог двигаться в нескольких плоскостях, можно добавить дополнительную цепь костей. Область действия кости на каркас задается радиусом влияния, что вполне стандартно для анимационных пакетов.
В заключение отметим еще две полезные возможности — средства анимации частиц и управление анимацией с помощью скриптового языка Python. В целом средства анимации Blender оставляют весьма благоприятное впечатление. Они не слишком перегружены и вместе с тем позволяют создавать сложные сцены.
Интерфейс
Интерфейс — самая нестандартная часть Blender, и к нему подчас сложно приспособиться тем, кто успел привыкнуть к другой анимационной программе. Однако если работать в Blender регулярно, обнаруживается, что интерфейс программы поразительно удобен. Главная его особенность — размещение всей информации в плавающих окнах со средствами навигации. Окно любого типа можно перемещать и масштабировать, и это обеспечивает максимально широкие возможности настройки рабочего пространства.
Схему расположения окон и их типы можно запоминать, создавая таким путем специализированные настройки интерфейса не только для типов работ (моделирование, анимация, работа с материалами), но и для отдельных объектов. Это существенно экономит и время, и пространство, так что можно продуктивно работать даже с 15-дюймовым монитором.
В пакете довольно много различных типов окон. Собственно рабочим пространством аниматора является окно сцены, где можно задавать различные проекции и режимы отображения. Окно меню обеспечивает управление рабочим процессом; в верхней его части находится ряд кнопок, обеспечивающих доступ к панелям меню для работы с текстурами, материалами, редактирования объектов, настройки параметров radiosity, рендеринга, анимации, работы со скриптами и т.д. В окне схематического представления сцены можно более наглядно отобразить ее иерархическую структуру и получить непосредственный доступ ко всем участвующим в ней объектам, что облегчает манипуляции со сложными сценами. Существуют также окна для анимации, настройки среды Blender, работы с файлами, просмотра изображений, просмотра сцен, полученных путем рендеринга, и др. Более подробное описание интерфейса можно найти на сайте www.blender.nl, а мы остановимся на основных моментах, которые необходимы, чтобы приступить к работе.
Рис. 3. Основное меню операций Blender |
Основное меню операций Blender (рис. 3) вызывается нажатием клавиши . Левая колонка содержит подменю первого уровня, а правая — второго. Меню Add (добавить), находящееся в самой верхней позиции, предоставляет доступ к различным объектам, которые можно поместить в сцену: объемным примитивам, кривым, источникам освещения, MetaВall-объектам, скелетонам, вспомогательным пустым объектам (Empty Objects), решеткам (Lattices), тексту. Перед тем как выбрать объект, следует определить его положение с помощью 3D-курсора и нажать в нужном месте левую кнопку мыши.
Разместив объект внутри сцены, можно перейти к его редактированию. Для этого следует нажать клавишу и зафиксировать в окне меню кнопку Edit, обозначенную четырехугольником. В окне появится панель с многочисленными командами редактирования; конкретный их набор будет зависеть от типа объекта.
Для трансформации объектов и их составных частей при редактировании используется левая кнопка мыши, а для выделения — правая.
После определения формы объекта наступает очередь материала. Сначала нужно, по-прежнему оставаясь в меню редактирования объекта, определить индекс материала, а затем перейти в меню редактирования материалов, создать там требуемый материал и настроить его свойства. Если необходимо, можно перейти в меню работы с текстурами и задать дополнительные свойства поверхности.
Такова общая последовательность действий для создания и текстурирования моделей. Рассмотрим теперь практический пример — построение на основе MetaВall-объектов модели кисти руки и настройку скелетона для ее анимации.
Создание модели кисти
Технология создания органических поверхностей при помощи метаповерхностей уже давно пробивается на рынок пакетов трехмерной графики. Наибольшее развитие она получила в предназначенном для пакета 3DStudioMax коммерческом модуле MetaReyes, где можно не только задавать сложнейшие формы метапримитивов, но и анимировать их. Главное достоинство этой технологии — относительная простота создания органических выпуклостей и впадин на поверхности.
Заметим, что даже при работе с самыми развитыми продуктами метаповерхности применяются ограниченно, в основном для создания «мускулистых тел». Но в Blender метаповерхности можно использовать также на первом этапе подготовки поверхности модели, чтобы затем конвертировать их в каркасный объект и дополнительно подогнать друг к другу, как будет показано ниже. Об основах теории метаповерхностей можно прочесть в статье Андрея Шерстюка «Поверхности свертки в машинной графике» («Открытые системы», № 4/2000, с. 72).
Итак, загрузим Blender и, не трогая никаких настроек, приступим к размещению на сцене MetaВall-объектов. Для этого нажмем клавишу и перейдем в меню Add?MetaВall (Добавить?MetaВall-объект). Тем, кто впервые создает модель с помощью функции MetaВall, рекомендуется перемещать 3D-курсор и расставлять MetaВall-объекты по предполагаемой схеме, а затем подогнать их друг к другу, применяя трансформации и масштабирование. Чтобы использовать цилиндрический MetaВall-объект, нужно задать в меню редактирования объектов его тип — Tube X, Tube Y или Tube Z. Цилиндрические MetaВall-примитивы объекта в Blender должны быть ортогональными и параллельными друг другу. Это, конечно, существенные ограничения, но если учитывать их при планировании модели, можно добиться неплохих результатов.
Рис. 4. Первый эскиз модели кисти руки |
На рис. 4 показан самый первый эскиз модели, составленной из сферических MetaВall-объектов. Теперь трансформируем объекты, выделяя их правой кнопкой мыши и фиксируя результаты левой, выполним необходимые перемещения и изменения размеров, пользуясь соответственно клавишами G и S, а также определим цилиндрические объекты. В результате модель приобретет вид, представленный на рис. 5. Осталось отрегулировать общие настройки метаповерхности в меню редактирования, и первый этап подготовки модели будет завершен.
Рис. 5. Вид модели после серии трансформаций |
Следующий шаг — доводка каркасной модели. Для этого в основном меню операций выберем пункты Оbject?Сonvert menu (Объект?Меню конвертирования) и Мesh (в действительности это единственный доступный формат). Blender создаст каркасный объект, представляющий собой точную копию исходной группы MetaВall-объектов. Сама группа больше не понадобится, так что ее можно удалить или переместить в другой слой.
Далее у нас есть два пути: либо применить решетку деформации, либо непосредственно отредактировать каркас по вершинам.
Для создания новой решетки разместим 3D-курсор в центре одного из пальцев и зададим в основном меню операций команду Add?Lattice (Добавить?Решетку), а затем перейдем в меню редактирования и определим там число сегментов. Теперь нужно установить «родственную связь» между решеткой и кистью, нажав +P и затем кнопку Make parent (сделать родителем). При перемещении вершин полученной решетки форма пальца будет меняться, так как поверхность всегда устремляется за управляющей вершиной решетки. Поманипулируем решеткой, чтобы получить новую, более сложную поверхность пальца, и зафиксируем результат командой Apply deform (применить деформацию). Повторим те же действия с другими пальцами и проработаем основание кисти. Для удобства можно назначать решетку отдельным частям модели.
Если предполагается редактирование каркаса по вершинам, то при конвертации группы MetaВall-объектов в каркасную модель лучше задать для каркаса относительно небольшое число вершин (оно определяется параметром Wiresize MetaВall), а затем вызвать команду S-Mesh, которая дополнительно сгладит поверхность каркаса. Целесообразно применить также инструмент Proportional vertex editing (пропорциональное редактирование вершин), сглаживающий деформации вершин и позволяющий, редактируя одну вершину, воздействовать на соседние с ослаблением эффекта по мере удаления от нее. Результат, показанный на рис. 6, получен подгонкой каркаса при помощи этого инструмента.
Рис. 6. Окончательный вид каркасной модели |
Создание скелетона
В Blender скелетоны строятся довольно просто. Выберем во всплывающем меню пункт Add?Ika и нарисуем на рабочем поле столько костей, сколько нужно для данной модели, прерывая отрисовку нажатием клавиши . Чтобы поместить полученную цепочку костей внутрь каркаса модели (рис. 7), будем переходить в режим редактирования, нажимая клавишу . Вообще говоря, кости не обязательно сразу переносить внутрь каркаса: можно сначала анимировать «голый скелет» и лишь затем «надеть» на него объект. Это не очень наглядно, зато требует меньшего объема вычислений, а значит, позволяет сэкономить время.
Рис. 7. Поместим цепочку костей внутрь каркаса модели |
Разместив все кости, приступим к созданию скелетона. Сначала выделим каждую цепочку и нажмем для нее комбинацию клавиш +K, выбрав пункт . Выделим каркас и скелетон, затем свяжем их, нажав +P и выбрав во всплывающем меню метод связи Skeleton.
Следующий шаг — настройка областей влияния костей. Выделим настраиваемую цепочку и войдем в меню редактирования костей. Зададим радиус влияния цепочки на каркас в меню Deform max dist (Максимальное расстояние для деформации), степень этого влияния в меню Deform weight (Вес деформации) и инерционность каждой кости в меню Limb weight (Вес конечности). Вот, собственно, и вся настройка. Теперь можно анимировать кисть или придавать ей различные формы (рис. 8).
Рис. 8. Теперь можно анимировать кисть |
Выводы
Бесспорно, Blender адресован не только любителям, но и профессионалам, реализующим высокие творческие замыслы. На это указывают и весьма совершенные инструменты редактирования и анимации мягких тел, и развитые средства текстурирования, и наличие механизма для подключения дополнительных модулей, и мощный язык скриптов, и многое другое. Пожалуй, столько возможностей — даже слишком много для бесплатной программы. И хотя пакет недотягивает по функциональной насыщенности до таких «монстров», как 3DStudioMax3.1, LightWave 6 или RealSoft4, он способен стать вполне реальной альтернативой им.
Если же необходимы более сложные инструменты, то можно использовать, например, RealSoft4 или Houdini. Так или иначе, у Linux есть что предложить дизайнерам трехмерной графики и аниматорам.
С Виталием Галактионовым можно связаться по e-mail: fastkick@mail.ru