Анимация в Cinema4D. Продолжение

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

В общем, этот шкаф я полностью закончил в тот момент, когда знакомый нашел более-менее подходящую библиотеку и поставил ее на скачивание (около 500 Мб). Я поинтересовался самой библиотекой, показал на пункт, запрещающий использование в коммерческих целях. В результате работа, строящаяся на поиске и использовании готовых шаблонов, оказалась наименее эффективной. Причем чем сложнее моделируемый объект, тем труднее его найти. Но, как я узнал позже, для моего знакомого это был единственно верный вариант действий, потому как моделировать он, собственно, умел плохо, а фраза: «может, мне пойти на специальные курсы, обучающие творчески мыслить?» меня просто добила. Любой опытный специалист вам скажет, что усидчивость и знания являются залогом вхождения в профессию. Поэтому, на данный момент считаю уместным кратко и понятно пройтись по ключевым особенностям работы в Cinema4D, связанной непосредственно с моделированием, а после мы перейдем к очередному заданию (вернее, заданиям) по анимации.

А что касается моего знакомого, то после краткого диалога, а именно когда он спросил: «А где ты нашел такую текстуру, которая повторяет то, что на фотографиях?» — «Так с самих фотографий и взял», стало понятно, что моделировать он и вовсе не умеет. Можно запастись гипер-быстрым Интернетом, окружить себя множеством библиотек, купить супермощный компьютер — это плюс, но без базовых практических навыков — это фактически ноль.

Пример с моделированием «китайского» компаса. При создании модели использовались все модификаторы NURBS, операция Bool, группирование объектов, переход к полигональному представлению, модификатор Array… в общем, практически все основные приемы стандартного моделирования реальных объектов.


Полигоны и NURBS

Около года назад я уже писал о NURBS-моделировании в КГ и, кстати, рассматривал его на базе Cinema4D в рамках конкретного примера (моделирования автомобилей будущего для заставок игры, посвященной гонкам на Марсе).

Но, повторенье — мать ученья, к тому же за год к нам могли подключиться новички.

Итак, в 3D среди основных существует два различных подхода к процессу моделирования — полигональный и NURBS (по кривым-сплайнам). Разница между этими методами существенна.

В первом случае любая поверхность разбивается на полигоны (обычно трех- или четырехугольники, хотя могут быть и другие варианты). У полигонов есть грани и вершины. Все это может редактироваться.

NURBS-моделирование, как бы это объяснить проще… работает по принципу векторной графики. То есть любой объект — это сочетание кривых (не полигонов). Например, если провести параллель с 2D-анимацией, то в Adobe Flash все нарисованное также сохраняется в виде кривых, поэтому при масштабировании изображения вы не видите потерь в качестве, потому что их нет. То есть вы увеличиваете/уменьшаете размеры кривых, а все остальное строится от них. Кстати, именно этот подход выделил векторную графику как наиболее приемлемую для профессионального производства. Используя в Cinema4D готовые примитивы (куб, сфера, цилиндр, тор и т.п.), вы изначально работаете с NURBS-объектами, и в программе они называются просто объектами. В их параметрах среди всего прочего указывается количество сегментов, на которые нужно разбить трехмерную фигуру, от чего зависит точность отображения формы. А по существу, вы указываете количество промежуточных направляющих кривых. Переход от NURBS к полигонам происходит после операции превращения объекта в редактируемый (Make Editable).

Нужно сказать, что Cinema4D, пожалуй, является одной из самых продвинутых программ в области NURBS-моделирования. Ее уровень в этом вопросе близок с Maya. В некоторых программах, даже очень известных, NURBS-моделирования просто нет (например, как это было в LightWave3D). И еще один важный момент, о котором нужно знать. При переходе от NURBS к полигонам фактически все объекты теряют свои свойства, связанные с размерами, дроблением на сегменты и так далее. Нередко можно встретить варианты, когда для создания анимации или сложных статических сцен такой переход не делается вовсе, то есть все хранится в NURBS. Но это не всегда возможно, потому как требует больших аппаратных мощностей. Почему? Если пристально рассматривать все этапы процесса визуализации (рендеринга)… Хотя, для новичков объясним суть самого процесса. Под визуализацией понимается процесс превращения трехмерной сцены в 2D-изображение, выводимое на экран. На определенном этапе происходит перевод наполнения 3D- сцены в полигональное представление, например, если мы говорим о DirectX, то там еще производится и триангуляция (разбиение на треугольники). Почему мы заострили на этом внимание? Дело в том, что если ваши модели являются NURBS, то для их отображения (не только при рендеринге, но и просто в рамках редактора) программе приходится переводить все в полигональный вид. То есть это одна лишняя операция, которая может оказаться затруднительной при большом объеме вычислений. Поэтому, если компьютер начинает подтормаживать — переводите NURBS в полигоны. Но (как всегда есть одно «но») эта операция не является взаимообратной. То есть от полигонов к NURBS вы уже перейти не сможете.

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

И стоит отметить главную особенность работы в Cinema4D — все изначально отталкивается от NURBS. То есть тут вы не найдете удобного инструментария для быстрого полигонального моделирования с нуля. Хотя, освоив принципы Cinema4D, вы научитесь очень быстрому моделированию. Итак, кратко возвращаемся к азам.

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


Управление просмотром

Управление просмотром в Cinema4D практически идентично Maya. Итак, удерживая на клавиатуре клавишу 1 и нажимая левую кнопку мыши, вы можете перемещаться влево, вправо, вверх, вниз. Удерживая клавишу 3, вы можете вращаться вокруг объекта, находящегося на активном выделении.

Типы кривых

В Cinema4D используется пять различных типов кривых (они доступны как в меню быстрого доступа, так и через главное меню Objects -> Create Spline):
. Linear (прямые).
. Cubic.
. Akima.
. B-spline.
. Bezier.

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

В качестве рабочего примера переключите проекцию обзора на Top (вид сверху) и с помощью Linear Spline нарисуйте линию, включающую много вершин. Все будет смотреться угловато, поскольку в варианте Linear вершины просто соединяются прямыми отрезками. Кривая считается нарисованной после того, как вы нажмете Enter. Если вы замкнули начальную и конечную точки, то кривая будет являться замкнутой, что может нам пригодиться для некоторых модификаторов (что это такое, рассмотрим чуть позже). Хотя есть и другой вариант замыкания. В окне объектов появился Spline, а в свойствах этого объекта вы можете увидеть указатель Close Spline (закрыть сплайн).

А самое интересное, конечно, — это поле Type, в котором выводится тип кривой.

Теперь выделите какую-нибудь вершину или несколько (выделение нескольких объектов производится при нажатой клавише Shift). Как это сделать? Выделите в окне объектов нужный, в нашем случае Spline. В левом меню есть кнопка Use Point Tool (на ней отображено множество точек), по ее нажатии отображаются все вершины.

Так вот, выбрав какую-либо вершину или несколько, вы можете в свойствах объекта Spline просто поменять тип на другой, например, Linear на Akima. В результате изменится вся кривая.

А что делать в случаях, когда мы хотим изменить только фрагмент кривой? Все просто: выделив вершины, нажимаете правую кнопку мыши и в контекстном меню выбираете Soft Interpolation (мягкая интерполяция). В результате эти фрагменты будут представлены в виде кривых Безье, а возле выделенных вершин появятся «ушки» для управления.

Вариант Hard Interpolation (жесткая интерполяция) используется в обратных случаях, например, когда вы не желаете, чтобы возле точки был плавный изгиб, либо просто необходимо создать прямые участки.
В помощь моделерам программа Cinema4D предоставляет дополнительный набор примитивов сплайнов, куда входят различные дуги, шестеренки, звездочки и т.п. Но стоит отметить, что в данном случае вы их будете использовать изначально как NURBS-объекты, а для редактирования будет необходим переход в специальный режим (Make Editable).

NURBS-модификаторы

NURBS-модификаторы в Cinema4D работают как с NURBS-объектами, так и с полигональными, разницы нет.

Всего мы имеем пять рабочих инструментов:
. Hyper NURBS — смягчение и сглаживание форм, создание органичных природных форм. Работа этого модификатора подразумевает значительное увеличение количества полигонов (или сегментов).
. Extrude NURBS — выдавливание формы по контуру.
. Lathe NURBS — токарный станок или, говоря другими словами, создание круглых объемных объектов, форма которых зависит от контура.
. Loft NURBS — форма создается за счет перетекания от одной кривой к другой.
. Sweep NURBS — рельс, то есть имеется какой-либо контур и траектория.

Большинство этих модификаторов, за исключением Hyper NURBS, имеет аналоги во всех известных пакетах 3D-моделирования. Рекомендуется изучить самостоятельно. Без этих инструментов нормальное моделирование невозможно.

Сложение/вычитание объектов

Операция сложения/вычитания объектов производится за счет операции Bool (главное меню, Oblects -> Modeling -> Bool, или меню быстрого доступа). Работает только с двумя 3D-объектами, которые в настройках называются A и B. При загрузке этого модуля в окне объектов появляется Bool. В него вы помещаете два трехмерных объекта, верхний по списку будет А, нижний — B. Далее в окне свойств смотрите доступные операции по взаимодействию форм, где есть сложение и вычитание. Активная опция Create Single Object позволяет представлять результат действия Bool в виде единого объекта, что потом пригодится при переходе в полигональное представление.

Нужно отметить, что булевы операции с объектами часто могут поставить в тупик новичков. Например, построив цепочку из нескольких Bool, внутри которых имеется вычитание или подобные операции (а вы потом помещаете один Bool в другой и т.п.), результат может оказаться неожиданным в силу действия этого самого взаимоотношения логических операций.

Поэтому лучше использовать группировку объектов, что позволяет их представлять как один общий элемент. Например, с одной стороны моделируемого здания у вас есть множество различных окон и проемов. Вы создали объект-стену («Стена»), смоделировали все окна, проемы и т.п. Группируете их (Alt+G, или контекстное меню в окне объектов -> Group Obgects, множество объектов также выделяется при нажатой клавише Shift) в один, назвав эту группу, например, «Проемы». А потом единожды вызываете Bool, в котором используете операцию вычитания: «Стена» - «Проемы».

Пружины-спектрограмма. Каждая из них должна сжиматься, растягиваться в зависимости от частоты (эмулируем процесс, то есть, якобы есть какая-нибудь музыка… а впрочем, в Timeline легко добавляются аудиотреки). И отклоняться они должны в разные стороны.


Массив Array

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

Кстати, есть большая разница между копированием и использованием Array. В первом случае каждый объект является отдельным и самостоятельным. Во втором мы имеем дело с одним объектом и множеством его копий, то есть, изменив этот самый основной объект, мы вносим такие же поправки во все его копии.

Тестовое задание по моделированию

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

Никаких лишних комментариев давать не буду, все отображено на рисунке.

Переходим к анимации

Смоделировав этот компас, вы можете заставить крутиться стрелки и т.п., но мы пойдем другим путем и сегодня совместим моделирование и анимацию. Итак, первое задание… Из объектов Helix Spline и Circle Spline за счет модификатора Sweep NURBS создайте пружину (пример показан на рисунке). Наша задача повторить известную игрушку, когда пружина спускается с горки переворачиваясь (если не знаете, о чем я говорю, спросите у детей). В принципе, вы можете сделать и просто пример со скачущей пружиной. Для изгиба используйте модификатор деформации (Bend Deformation), вынесите его в Timeline и т.п. (это мы закрепляем прошлые знания).

Следующие задания — куб-динамик и дальше

Создаем новый проект, помещаем куб в рабочую область. Затем в свойствах куба указываем количество сегментов по X, Y, Z, равное 5. Делаем куб редактируемым (Make-Editable), появляется каркасная решетка. Включаем режим выделения полигонов (левая панель, кнопка Use Polygon Tool). Переходим в вариант интерфейса Animation, где появляется Timeline. На транспортной панели анимации делаем активным режим Point Level Animation for Record (кнопка с нарисованными точками).

Выделяем центральный полигон одной из граней.

Теперь реализуем анимацию с использованием ключевых кадров (см. прошлые материалы). Задача — получить эффект, как будто бы эта сторона куба работает как диффузор динамика.

Первое усложнение задания:
. Когда вы только установили куб в рабочую область, он воспринимался как NURBS-объект, среди свойств которого можно найти указатель Separate Surfaces. Если вы сделаете его активным, то каждая сторона куба станет отдельным редактируемым элементом. Что нужно сделать? Когда одна сторона куба ухает как диффузор, остальные синхронно отскакивают.

Второе усложнение задания:
. Сделайте диффузор из объекта Bezier NURBS Object (расположен вместе с NURBS-модификаторами).
Третье усложнение задания:
. Сделайте диффузор из усеченного конуса. Кстати, вы можете и полностью смоделировать динамик, используя сплайны (т.е. рисуя) и модификатор Lathe NURBS.

Пружинная спектрограмма

Это веселый пример. Все из нас видели спектрограмму — она отображает амплитудные колебания звука на определенных частотах. Кто не видел… видел в Winamp’е. Показывается она по-разному — столбиками, графиками и т.п. Но у нас ведь есть пружина! Почему бы не сделать анимацию с пружинами. Как их создать, мы уже знаем. Осталось только раскрасить (в спектрограммах используется радужный спектр, низкие частоты обозначаются синим, высокие — красным, вспоминаем: «каждый охотник желает знать, где сидит фазан»). Теперь анимируем движение каждой пружины в отдельности. Получаем спектрограмму.

Творческое задание

Смоделируйте, а потом анимируйте какой-нибудь персонаж (например, живой приемник), в котором имеется динамик, пружины-спектрограмма, глаза-ручки и т.п. Чем смешнее, тем лучше. Работы в формате jpeg (одно статическое изображение из сцены) можете выслать на мой e-mail, наиболее красивые опубликуем в газете с указанием имени автора. Больше призов никаких не будет, потому как, повторюсь, лучший подарок — это профессиональные знания.

Кристофер christopher@tut.by


Компьютерная газета. Статья была опубликована в номере 41 за 2009 год в рубрике soft

©1997-2024 Компьютерная газета