Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Свободные программы в офисе и дома

Автор: А. А. Ракитин

Глава 6. Создание 3D моделей с помощью Blender

Для чего может понадобиться 3D моделирование?

Пространственное компьютерное моделирование существует довольно давно. Эта область развивалась в основном благодаря киноиндустрии, а также архитектурному и конструкторскому проектированию. При выпуске фильма можно существенно сэкономить, если выполнять спецэффекты виртуально. В авиации, архитектуре и многих других областях также возможна экономия. Но, что еще более важно, 3D моделирование в этих случаях позволяет избежать неочевидных ошибок, найти правильные решения в сложных ситуациях.

Однако, это всегда была непростая область. Проблем с моделями было по крайней мере две.

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

Вторая - программное обеспечение для 3D моделирования, да и компьютер для его запуска были довольно дороги. Их могли позволить себе только крупные или богатые организации.

С появлением достаточно мощных персональных компьютеров и доступного программного обеспечения эта технология буквально "пошла в массы". Мало того, с появлением 3D принтеров потребительского класса и сервисов 3D печати в Интернет любой желающий может теперь получить не виртуальную модель, а реальное изделие из пластика или даже из металла.

Объемное моделирование и индустрия 3D печати стремительно набирают обороты. Вот уже и NASA планирует использовать эту технологию в космосе, где невозможно иметь под рукой все запасные части и в магазин за ними не пойдешь. На производстве и дома с помощью объемных принтеров изготавливают литейные формы для лопаток турбин, дома, оружие, зубные протезы, ювелирные украшения, игрушки и многое другое. Эта технология позволяет уже сегодня "печатать" ткани из живых клеток. Что будет завтра - никто даже вообразить себе не может.

Наконец, и это очень характерно для людей и для человечества в целом, многие люди занимаются 3D моделированием просто для развлечения. Ведь это действительно так похоже на волшебство.

Сегодня создание компьютерных пространственных моделей является одной из самых бурно развивающихся технологий. Без сомнения есть смысл овладеть ею. Ну а в каком объеме - каждый решает сам.

Логика 3D моделирования

Пространственное компьютерное моделирование является хорошо проработанной областью со своей устоявшейся методологией и терминологией. Эта технология быстро развивается и специалистам давно уже неинтересно возвращаться к основам. Как правило, в большинстве книг по 3D моделированию почти ничего не говорится о том, из каких элементов состоит пространственная модель и какие шаги требуются, чтобы ее создать. Однако, без понимания этих моментов овладеть техникой невозможно. Недостаточно просто перечислить имеющиеся в программе инструменты и рассказать как ими пользоваться. Такой подход еще как-то работает для описания плоских (2D) графических редакторов, но только потому, что все с детства хорошо представляют себе процесс рисования на бумаге. Напротив, опыт пространственного моделирования у большинства людей почти отсутствует. Поэтому есть смысл остановиться немного на основах этой технологии.

Для понимания логики 3D удобно выделить три уровня абстракции:

  • Объект - обычно это пространственная фигура, которая не содержит в своем составе других фигур, то есть является неделимой. Например, яблоко или бокал. Также объект может состоять из многих составляющих, но при этом все равно быть неделимым - цепь. Или он может состоять из отдельных неразличимых частиц - дым, вода.
  • Сцена - совокупность многих объектов. Примерами сцены могут служить натюрморт или мебель в комнате. В состав сцены часто входят также и вспомогательные элементы вроде задников для создания фона или плоскости для настройки освещения.
  • Мир - окружение сцены. В реальности всегда имеются источники света вне сцены, часто есть фон, который не связан ни с какими задниками и существует сам по себе. Могут присутствовать такие явления как дождь, туман, ветер и тому подобное. В моделировании все это входит в понятие мира.

    Мир требуется не всегда. Например, в конструкторском моделировании он как правило не нужен. Для архитектурного моделирования мир, наоборот, очень важен.

В общем случае для получения качественной 3D модели нужно создать объекты, расположить их на сцене и, возможно, настроить мир. На этом собственно моделирование заканчивается. Для конструктора. Но не для художника.

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

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

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

Очень часто 3D редактор и рендер входят в состав единого программного пакета. Мало того, качественные редакторы могут работать с различными рендерами. Например, Blender имеет в своем составе два штатных рендера, а также допускает подключение некоторых внешних. Подробнее о рендерах будет рассказано отдельно. Сейчас важно знать лишь то, что выбор программы-рендера должен быть произведен в самом начале моделирования. Это связано с тем, что смена рендера для готовой модели потребует новой настройки материалов, освещения и параметров визуализации, даже если объекты и сцена не изменялись.

Теперь, когда логика пространственного моделирования понятна, можно перейти к описанию последовательности действий при создании законченной работы. Попутно будет объясняться смысл некоторых базовых понятий.

Как уже говорилось, моделирование начинается с создания объектов. В компьютерном 3D моделировании объекты состоят из полисеток (от англ. mesh, сеть). Поверхность любого объекта выглядит примерно как показано на рисунке. Видно, что полисетка состоит из ребер, которые являются отрезками прямых линий. Точки, в которых ребра соединяются, называются вершинами. Наименьшая часть поверхности, ограниченная ребрами называется гранью. Обычно грань имеет четыре ребра, но может быть ограничена и тремя. Грань - это всегда часть плоскости.

Пример полисетки
Пример полисетки.

Объекты, составленные из плоскостей, выглядят угловато. Поэтому любой 3D редактор имеет инструменты для сглаживания поверхности.

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

Как правило, реальные объекты имеют объем, который заполнен материалом, например пластиком, металлом или стеклом. В противоположность этому, компьютерные объекты ничем не заполнены. Они имеют грани, которым можно назначить свойства, имитирующие какой-либо материал. Но если удалить грань, то под ней никакого материала не будет. Об этом надо помнить при моделировании.

Каждая грань имеет нормаль. Понятие нормали очень важно в 3D моделировании, оно используется при расчете освещенности.

Нормаль - это вектор. Как говорилось выше, грани - это, как правило, четырехугольные или треугольные плоскости. На каждой такой плоскости можно установить перпендикулярный к ней вектор. Направление этого вектора будет однозначно связано с ориентацией плоскости в пространстве глобальных координат XYZ (подробнее о системе координат будет рассказано в следующем разделе). Эта связь сохранится даже если вектор переместить сдвигом параллельно самому себе с поверхности в начало координат (в точку X=0,Y=0,Z=0). Подобные вектора называются нормалями потому что все они нормализованы - имеют одинаковую длину равную 1. При этом направление вектора нормали определено, если известны величины координат XYZ его конца. Этого достаточно, поскольку важно только направление вектора. Потому, что это направление однозначно определяет наклон грани в пространстве сцены.

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

Назначение материала - это очень условное определение процесса. Как уже говорилось, объекты в 3D всего лишь имеют оболочку, которая обозначает их форму. Задача состоит в том, чтобы эта оболочка выглядела максимально близко к тому, что мы ожидаем от реального предмета. "Металл" должен иметь вид металла, "стекло" - вид стекла и так далее.

Добиваться сходства позволяют множество приемов, но два являются базовыми.

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

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

Иногда все это не срабатывает. Многие поверхности настолько неоднородны, что задать для них правильное сочетание параметров невозможно. Примеров множество - кирпичная кладка, ржавчина, травяной газон, срез дерева с его характерным рисунком. В таких случаях используют текстуры. Фактически текстура - это просто кусочек изображения реально существующего объекта (или очень похожего на него), например, деревянной доски. Если закрыть таким изображением поверхность на моделируемом объекте, то может получиться очень похоже. Некоторые готовые текстуры, как правило, имеются прямо в редакторе. Текстуры можно также создавать самостоятельно из фрагментов цифровых фотографий. А в Интернете существуют целые библиотеки текстур на все случаи, в том числе и свободных.

Сцене всегда требуется освещение. Хорошее освещение делает сцену. Потребуется установить в нужных местах источники света и задать их яркость, а возможно и спектр. Если используются направленные источники, то необходимо выбрать для них направление и угол раскрытия луча. Художники и фотографы давно выявили закономерности в этих вопросах и их опыт в 3D очень востребован. Не менее важны собственная наблюдательность и желание экспериментировать.

Возможно, что потребуется настроить некоторые атмосферные явления, такие как ветер, туман, дождь, снег.

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

Процесс визуализации имеет и свои специфические настройки, такие как количество проходов лучей света, отображение теней от источников света, влияние освещенности объектов друг на друга и многие другие.

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

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

Почему Blender и что это означает

В приложении имеется небольшое описание Blender и истории его создания. Но можно сказать кое-что еще.

Кроме Blender есть и другие программы для работы с 3D, в том числе и свободные. Например, MeshLab, Wings3D или Blend4Web. Они имеют своих поклонников и свой круг задач. Но другого такого мощного, удобного, универсального, надежного и свободного программного обеспечения для пространственного моделирования на компьютере, как Blender, не существует.

Blender является специализированным программным обеспечением. Он предназначен для конкретной цели, для создания пространственных компьютерных моделей. И адресован специалистам в этой области. Но доступен всем. Что это значит?

В первую очередь то, что Blender является отлично сделанным и тонким инструментом, хотя и довольно сложным. Чтобы им пользоваться, надо во многом разобраться. Не в программе, нет. Во всяком случае, не только в ней. В принципах создания моделей и их визуализации. Например, для того, чтобы получить реалистично выглядящее изображение металлического предмета, надо понимать оптические свойства металлической поверхности. Кроме того, надо понять возможности программной реализации этих свойств и правильно их использовать. Другой пример - освещение. Для правильной постановки света требуется знать соответствующие приемы. Ничего сложного, это известно художникам с незапамятных времен. Но в этом необходимо разобраться.

Те инструменты, которые имеются в Blender, работают в соответствии с реальной, физически обусловленной логикой. Поэтому научиться ими пользоваться несложно. Если понять физику. Во всяком случае, здесь не встретятся совершенно необъяснимые нелогичности, придуманные программистами для пользователя и, якобы, упрощающие его работу. Разработчики Blender - профессионалы высокого уровня и надо им верить, следовать за их идеями. В результате всегда оказывается, что они правы и что те инструменты, которые они предлагают и те приемы, которые рекомендуют, являются оптимальными.

Какое-то время назад Blender критиковали за невнятный интерфейс. После выхода версии 2.5, когда эта часть была кардинально переработана, такая критика потеряла актуальность. Сейчас интерфейс очень хорош. Особенно, если привыкнуть использовать горячие клавиши. В этом случае работа идет быстро и приносит удовольствие.

Вот что говорит создатель Blender Тон Розендааль:

"Мы работаем для людей, которые считают себя художниками и создают 3D в одиночку или в составе небольших команд. Определение художник довольно расплывчато: в него можно включить инженеров, промышленных дизайнеров, архитекторов и ученых."

и еще:

"Я бы ни за что не стал бы ставить своей целью получение среднего результата я хочу поднять планку среднего результата."

При овладении Blender есть и объективные трудности.

Русскоязычных материалов по теме Blender в Интернете довольно много. Но большинство публикаций носят фрагментарных характер - как правило, они посвящены какому-то одному частному вопросу. Обычно нужно прочитать несколько статей, чтобы хоть как то разобраться в теме.

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

Не все материалы, которые имеются в Интернете, написаны грамотно. Не только с точки зрения языка, но просто технически грамотно. Тем более в такой сложной и объемной области как 3D моделирование.

Ладно, можно добавить, что не все профессионалы готовы поделиться знаниями. Что есть неочевидные моменты, которые почти не раскрыты вообще ни в каких источниках. Что, в конце концов, писать документацию или учебник вообще не самое интересное занятие.

Но все это можно преодолеть, оно стоит того.

Оглавление   Следующий раздел: Объекты