Анимация в Cinema4D

Высокополигональная анимация напоминает ситуацию с профессиональным звуком в начале-середине 90-х. Тогда из-за малых компьютерных мощностей и сложности расчетов каждое действие нужно было обдумывать заранее. Создать законченный продукт за одни сутки было фактически нереально. Сейчас все проще: раз-два, там посмотрел, там переставил и т.п., да и многие музыкальные творения стали напоминать пятиминутки. То есть удешевление и осовременивание производства снизило качество продукции. И… обленило специалистов. У представителей молодого поколения я заметил одну интересную тенденцию, а именно, они не могут освоить даже стандартные технологии. Хотя, вроде бы, нате вам все на тарелочке… Поэтому те, кто в начале- середине 90-х ждал по несколько часов(!) завершения расчетов, сегодня имеют преимущества.

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

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

Правило

Если вы занимаетесь анимацией в 2D, то вы должны уметь красиво и быстро рисовать. Если в 3D — моделировать. То есть заниматься трехмерной анимацией, не имея опыта моделирования, пожалуй, рановато. Причем под моделированием в данном случае понимаются не только конкретные навыки создания сложных и простых полигональных и сплайн-конструкций и владение соответствующим инструментарием. Нужно качественно освоить мэппинг (нанесение текстурных координат), текстурирование. В рамках Cinema4D также есть уникальный режим BodyPaint, который позволяет рисовать на объемных моделях, его нужно знать.

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

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

Продолжим…

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

. геймдеве;
. архитектурном дизайне;
. дизайне интерьеров;
. инженерии и производстве;
. создании полиграфической продукции, логотипов и т.п.;
. телевидении;
. кино;
. видео;
. мультипликации.

Если говорить об архитектурном дизайне, дизайне интерьеров, инженерии и производстве, телевидении, кино, видео и мультипликации, то Cinema4D в этих отраслях нет равных. Если кто со мною начнет спорить, значит, он никогда не работал с Maxon Cinema4D. При этом не секрет, что лучшей программой по работе с частицами является Maya, по интеграции с видео — Lightwave3D. Что касается 3ds max он просто стоит на стыке всего и вся, к тому же к нему привыкли.

Геймдев — это практически единственная отрасль, где существует явная потребность в lo-poly (низкополигональном) моделировании, во всех остальных мы работаем в hi-poly. Но при этом следует понимать, что за качество нужно расплачиваться аппаратными ресурсами и временем расчетов. Поэтому… Самым главным моментом в hi-poly является структуризация рабочих процессов. Приведу простейший пример из жизни. Не так давно меня попросили сделать 3D-макет бара с мебелью и т.п. Я сделал полностью чистый макет и без текстурирования отдал его на сверку заказчику, потому как после возвращаться к моделированию будет сложновато. Он все принял, но потом ему не понравилось, как выглядят диваны. Заменять объекты в готовой сцене, когда расставлен свет, загружены текстуры, используется «волшебная палочка» HyperNURBS и все оптимизировано под расчеты данной конкретной сцены, не то что затруднительно, а на самом деле все приходится перебирать заново. Но некоторые заказчики обычно этого не понимают, для них 3D- моделирование ассоциируется с работой в фотошопе. То есть, «нравится – не нравится», «а тут бы я поменял». В итоге «а тут бы я поменял» от заказчика вылилось еще в четыре часа моей работы (при этом считаю, что в Cinema4D я работаю быстро, а сколько бы это заняло у менее опытного специалиста, представить сложно). То есть, hi-poly моделирование — это не фотошоп.

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

На самом деле описано условная структуризация работы, потому как обычно все пляшет от задачи.

Задание со скачущим мячом

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

Итак, опишем наше задание, причем выполнять его будете вы. Для этого хватит знаний, которые были изложены в предыдущих материалах по Maxon Cinema4D. Само задание схематично отображено на рисунке. Не знаю как кто, а ваш покорный слуга привык все изначально описывать на бумаге. . Мяч летит, сталкивается с поверхностью, деформируется, отскакивает от нее и так далее. В процессе движения он вращается вокруг своей оси. . Изначально нам нужно посчитать все на бумаге. То есть, примерное время длительности сцены. Допустим, она будет длиться три секунды. . Создаем новый проект. В его настройках (Edit -> Project Settings) указываем количество кадров. Итак, три секунды… при fps равном 30 мы получаем 90 кадров, которые собственно и указаны по умолчанию.

. Создаем объект мяч (подойдет обычная сфера). По умолчанию стоит разбиение на 24 сегмента, подойдет ли это нам? В принципе, нужно отталкиваться от размеров самого объекта. Поскольку, работая с деформацией, мы возможно (!) будем переходить на полигональный уровень (дело в том, что вариантов решения задачи — масса), то чем меньше точек для редактирования, тем удобнее. С другой стороны, чем меньше сегментов, тем больше наш мяч будет похож на многогранник. Более опытный специалист Cinema4D скажет, что потом для сглаживания мы сможем использовать HyperNURBS, но все равно, сглаживание этого модификатора будет распространяться уже на многогранник. Поэтому количество сегментов определяйте исходя из того, что сфера должна оставаться похожей на сферу. Определились. Пока не делаем объект редактируемым Make Editable, то есть не переходим к полигональному представлению.

. Переходим в режим интерфейса Animation либо просто в контекстном меню вызываем окно Timeline. Теперь заставим наш мяч вращаться вокруг своей оси. Ставим движок транспортной панели анимации на нулевом кадре. Нажимаем кнопку Record. Этим самым мы запомнили изначальное состояние. После этого переводим движок на 90-й кадр. Высчитываем… допустим, за всю сцену он перекрутится вокруг себя пять раз, а это угол 1800 градусов. Нажимаем инструмент вращения. Обратите внимание на то, что в окне свойств появится управление настройками Modeling Axis/Snap Settings. Для удобства использования инструмента вращения в Snap Settings делаем активным флажок Enable напротив надписи Rotate, указываем количество градусов — это шаг, с которым будут вводиться изменения. По умолчанию стоит 5. Подходит. Теперь, находясь в 90-м кадре, «накручиваем» угол поворота 1800. Нажимаем Record, то есть запоминаем это состояние. Включаем анимацию на воспроизведение — мяч вращается.

. Рисуем траекторию движения. Возвращаемся в режим интерфейса Standart. Рисовать траекторию лучше в одном из окон проекций вида слева или справа (Right, Left). Для рисования траектории используйте сплайны (естественно, вы их и будете использовать).

Хотя вы можете использовать вариант с ключевыми кадрами, как это было описано в прошлой части материала, то есть покажете ключевые точки движения, и промежуточные кадры будут рассчитываться автоматически. Но в этом случае вы столкнетесь со сглаживанием кривых (в данном случае самой траектории), в результате чего сформируется нечто, подобное затухающей синусоиде. А нам нужно четко реализовать отскоки. Имея под руками сплайн, все получается гораздо удобнее. Отредактируйте все и вся. Причем в качестве основы сплайна можно использовать обычную прямую линию (не Акима и не Безье), расставив несколько промежуточных точек, чтобы создать ощущение криволинейности (также в контекстном меню есть управление интерполяцией, чем можно воспользоваться). Дело в том, что даже при угловатой траектории движение будет сглаживаться.

Нарисовав траекторию, переходим в режим интерфейса Animation либо просто в контекстном меню вызываем окно Timeline. Там мы увидим два объекта: Sphere и Spline. Выделив Sphere в меню Timeline Objects, выбираем пункт Spline To Position Track (см. прошлый материал). В отрывшемся окне набираем Spline, нажимаем OK. В результате автоматически сформируется движение объекта Sphere по траектории Spline. Смотрим анимацию — объект скачет по траектории и вращается вокруг свой оси. Все хорошо, движемся дальше. Хотя… нет, нужно отрегулировать время. То есть траектория у вас дробится на опорные точки, и само движение идет по ним равномерно. Но при этом полет мяча перед столкновением можно чуть замедлить по времени и т.п. То есть все опорные точки можно перерасставить в Timeline курсором мыши.

. Провозившись с траекторией и реализовав правдоподобность движения, приступаем к реализации деформации.

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

Деформацию мы сделаем автоматизированной, переведя нашу сферу в режим редактирования. Но… есть один нюанс. Вернее,отличие. Дело в том, что наш мяч вращается, то есть вращаются и его оси. Если бы он не вращался, то все было бы очень примитивно. То есть, в первой точке приземления нам нужно сплюснуть мяч. В нашем варианте с вращением это не так просто, как может показаться на первый взгляд, ведь оси будут повернуты под определенным углом, а параметр Scale работает только по ним. Поэтому настал черед кропотливой работы. Мы будем изменять месторасположение вершин. Принцип действия такой же, как и с анимацией обычных объектов, только для того, чтобы запоминать движения вершин, граней или полигонов, необходимо включить соответствующий режим. Делается это с помощью кнопки Turn On/Off Point Level Animation for Record (кнопка с точками, расположенная на транспортной панели анимации).

То есть, сплющивание мы практически моделируем. И так в каждой контрольной точке деформации.

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

Дополнительное задание:

. Допустим, наш мяч падает в грязную лужу. Соответственно, на нем должно появиться пятно после первого падения, еще одно после второго и так далее. Делается это за счет изменения текстур. Реализуйте.

Камера и свет

Установите естественное освещение (объект Light как Omni). Теперь нам нужно все эффективно показать с движением камеры, нацеленной камеры (объект Camera with Target, см. прошлый материал). Цель… куда ее поместить? Если мы ее совместим с мячом, то камера у нас будет скакать вместе с ним, это неинтересно. Поэтому создаем нулевой объект, который будет прямолинейно двигаться за мячом. В качестве оного может использоваться вообще любой объект, например, сфера или куб, только в его свойствах мы отключаем видимость в рамках визуализации (Basic —> Visible in Renederer —> Off).

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

Но нам нужен дополнительный свет. Ключевой мы можем сделать с помощью объекта Light with Target, и двигаться он будет вместе с камерой по ее же траектории. При этом, если вы хотите сделать динамичную игру света, то источник света может отставать или опережать камеру, а также для нее можно предусмотреть собственную движущуюся цель (по аналогии с той, что мы делали для камеры).

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

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

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

Вот такой простой пример с мячом:).

P.S. Изначально я, конечно, хотел вам показать скриншот для иллюстрации примера с дизайном интерьера, но потом подумал, что, возможно, нарушу авторские права на еще нереализованный дизайн. В общем, hi-poly 3D-моделирование — это не фотошоп, и согласования выполнения работы идут по опорным точкам по водопадному принципу работы согласно утвержденному заданию. То есть, если моделирование утверждено на определенном этапе, то его потом нельзя так просто поменять в рамках готовой сцены. К сожалению, некоторые наши дизайнеры, многие из которых страдают «синдромом Бога», непрофессиональны, а уж о том, что они сами могут освоить 3D-пакеты либо представить себе, что это такое вообще — речи не идет.

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


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

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