Изменить направление гравитации cinema 4d

Обновлено: 06.07.2024

На рис. 1 представлен внешний вид русифицированной седьмой версии программы Cinema 4D. Главное окно программы можно изменять и при этом сохранять свои настройки, что очень удобно при работе в различных режимах.

Модуль Body Paint расширяет возможности программы, с его помощью можно ретушировать изображения и сами трехмерные модели. Работа в режиме Art («Художник») чем-то напоминает редактирование в Adobe Photoshop, особенно при использовании дополнительных модулей (Plug-ins), например Deep Paint. Разница в том, что в Photoshop операции выполняются только с двухмерными объектами, а в Cinema 4D и Body Paint — и с двухмерными, и с трехмерными.

Еще один встраиваемый модуль, Dynamics, управляет физическими процессами, посредством его моделируются гравитация, ветер, столкновение, жесткость и упругость материалов. Игра в бильярд, где учитывается столкновение шаров, падение предмета на натянутую сетку, прогибающуюся под его тяжестью, удар пули о стенку с последующим ее расплющиванием, колыхание ткани — подобное моделирование не вызывает особых сложностей в Cinema 4D с установленным модулем Dynamics.

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

Для обзора сцены Cinema 4D использует 14 камер, имеется и редактор камер. Свет от источников освещения создает тени от объектов, пронизывает прозрачные и полупрозрачные стенки моделируемых фужеров и ваз настолько точно, что после рендеринга у наблюдателя создается впечатление, будто он смотрит фотографию, а не виртуальную трехмерную сцену (рис. 2 и 3).

В программе имеется набор моделей человеческих фигур, очень похожих на те, что есть в Curious Labs Poser (см. «Мир ПК», №10/01, с. 132; №11/01, с. 134). Это фигуры мужчины, женщины и ребенка, которые допустимо видоизменять. Модели живых существ, и в том числе человека, можно создать и самостоятельно (рис. 6). Передвигаются они по настраиваемым траекториям. Кстати, Cinema 4D может использовать подобные модели из Poser. Также существует специальный подключаемый модуль, обеспечивающий возможность интеграции этих двух программ.

Для повышения качества анимации в Cinema 4D применяется технология Ease-In and Ease-Out («Замедление в начале и замедление в конце»). Суть ее в следующем. Обычно объект, созданный в редакторе трехмерного моделирования, перемещается от точки А к точке Б с постоянной скоростью. Однако физические объекты имеют определенную массу, и им нужно преодолевать силы сопротивления. Поэтому в реальном мире объекты начинают движение и постепенно набирают определенную скорость (Ease-In), проходят нужное расстояние и в конце уменьшают скорость до полной остановки (Ease-Out). Вот именно это и моделируется в Cinema 4D.

Система координат

В Cinema 4D используется система координат, аналогичная принятой в Poser: X (ширина), Y (высота) и Z (глубина)*. На оси X откладываются налево отрицательные и направо положительные координаты, на Y — вверх положительные и вниз отрицательные, на Z — вперед отрицательные и вглубь (т. е. от наблюдателя) положительные координаты. В процессе работы над сценой можно блокировать любую из осей координат щелчком на ее значке на панели инструментов или с помощью «горячих» клавиш (X, Y или Z). Это позволяет ограничить перемещение, вращение или масштабирование объекта по выбранным осям.

Существуют World Coordinates (мировые координаты) или Object Coordinates (координаты объекта). Мировые координаты зафиксированы и не могут быть изменены. Координаты объекта допустимо трансформировать в любом направлении, как в пределах самого объекта, так и всей сцены, и поворачивать на любой угол.

Вращение. Изменение позиции координат объекта в Cinema 4D происходит по осям X, Y и Z, а поворот — по осям H, P и B. Это соответствует понятиям, принятым в авиации и космонавтике: курс (или H) отображает величину угла поворота вокруг оси Y, тангаж (или P) — вокруг оси X и крен (или B) вокруг оси Z.

Координатная сетка. Создавая какую-либо физическую модель, ее обычно располагают на определенной плоскости, будь то стол или иная поверхность. В рабочей области Cinema 4D такой плоскостью является координатная сетка. Ее центр — пересечение осей X, Y и Z. При этом выполняются следующие условия.

  • В окне вида Perspective ("Перспектива") линии координатной сетки отображаются по осям X и Z, точка их пересечения является центром координатной сетки.
  • В окне вида XY, или вида спереди (Front), линии координатной сетки отображаются по осям X и Y, ее центр - точка пересечения этих осей.
  • В окне вида XZ, или вида сверху (Top), линии координатной сетки отображаются по осям X и Z, ее центр - точка пересечения этих осей.
  • В окне вида YZ, или вида сбоку (Side), линии координатной сетки отображаются по осям Y и Z, ее центр - точка пересечения этих осей.

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

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

С помощью инструмента Inverse Kinematics («Обратная кинематика») можно перемещать связанные объекты, и они будут двигаться, как будто скрепленные одной цепью. Также можно накладывать ограничения на движение, чтобы имитировать определенный тип сочленения или соединения. Это позволяет избежать ошибок при создании анимационных сцен. Например, известно, что человек не может повернуть шею и голову на 180? как сова (поворот осуществляется в основном за счет движения шеи и частично — головы). Следовательно, на параметры, определяющие угол поворота шеи и головы человека, нужно наложить такое ограничение, чтобы сумма их максимальных значений не превышала 90?.

Моделирование

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

Образцы. Многие сцены могут содержать идентичные объекты, например деревья на холме, лепестки у цветка, трава и т. д. Чтобы не перегружать сцену множественными копиями объекта, следует делать образцы. Изменения, происходящие с материнским объектом (объектом-источником), передаются образцу, но не наоборот. При этом информация по ряду параметров (цвет, размер и т. п.) сохраняется лишь для объекта-источника, а не для остальных, что существенно снижает требования к оборудованию.

Карта рельефа. Не все детали объекта нужно моделировать явно. Вместо того чтобы на апельсиновой кожуре «вырезать» каждую выемку, можно использовать материалы и карты текстур, например Bump Map («Карту рельефа»). Представьте себе, сколько времени придется затратить на то, чтобы создать неоднородную трехмерную поверхность апельсиновой кожуры, и насколько быстрее можно выполнить такую работу, если к шару применить текстуру. Но главное заключается в том, что визуальный эффект в обоих случаях может быть практически идентичным.

Проецирование камеры. Как и многие другие редакторы, Cinema 4D допускает применение фотографий в качестве фона, а согласовать фон и трехмерную сцену можно с помощью технологии Camera Mapping («Проецирование камеры»), создающей иллюзию глубины. При передвижении камеры изображение фона представляется трехмерным. Другое преимущество данной технологии — возможность использования затеняемых материалов при перемещении или добавлении анимированных элементов к фону, что делает его более реалистичным. Однако эффективна указанная технология будет только в случае ограниченного изменения положения камеры. При этом фон должен находиться на некотором удалении.

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

Сплайны. Сплайны — это простые линии, используемые при построении моделей. Их форма и вид определяются некоторым количеством контрольных точек (узлов). Например, контрольные точки В-сплайна задают постоянную гладкость кривой от точки к точке. Контрольные точки сплайна Безье имеют управляющие элементы (направляющие). Манипулируя их положением, можно влиять на кривизну отдельных участков. Программа Cinema 4D включает множество заготовок сплайновых профилей, что удобно для моделирования.

Сплайн из вектора. Этот тип сплайна импортируется из внешних программ. Так, можно взять рисунок формата .ai, сделанный в Adobe Illustrator, и перенести его в Cinema 4D. Внутри программы он появляется в виде сплайна и вполне подойдет для построения трехмерной модели. Таким способом двухмерные изображения логотипов преобразовываются в 3D-модели.

Шрифт. Для создания трехмерного шрифта и логотипов чаще всего выбирают 3D-приложения, поскольку они лучше работают с текстом, чем программы 2D-графики. В Cinema 4D нужно просто ввести текст и подобрать шрифт, а программа уже сама построит сплайны. В дальнейшем с трехмерным текстом, как и с другими аналогичными трехмерными объектами, можно проделывать различные операции, подбирая для них свои стили и формы. Эти стили допустимо применять и к любому другому тексту — по сути, вы создаете свой набор шрифтов.

Extrusion («Выдавливание») — это вытягивание двухмерного профиля или контура вдоль одной из осей координат для построения объемного объекта. Этот режим бывает полезен довольно часто, ведь он позволяет превратить плоский логотип в объемный, что требуется для рекламных роликов.

Lathe («Поворот»). В режиме Lathing сплайновый профиль можно поворачивать по одной из осей. Таким способом конструируется объемная модель (посуда, вазы, купола и т. п.), что несколько напоминает работу гончара, делающего глиняный кувшин на гончарном круге. Однако в данном случае не нужно постоянно вращать сплайн: чтобы фигура имела законченную форму, достаточно задать угол поворота 360?. Кстати, для построения некоторых моделей угол вращения может быть и меньше.

Режим Loft. Применение данного режима (рис. 4) можно сравнить с натягиванием пластичной пленки на какой-нибудь профиль, например на каркас крыла самолета.

Sweep («Вытягивание вдоль пути»). При работе в этом режиме можно вытянуть профиль одного объекта вдоль пути другого. Так, на рис. 5 показано вытягивание конусовидного объекта вдоль кривой.

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

  • Union ("Объединение") - объединяет два перекрывающихся объекта в один;
  • Subtraction ("Вычитание") - вырезает один объект из другого;
  • Intersection ("Пересечение") - оставляет общую область двух пересекающихся объектов.

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

Деформации. Чтобы добиться желаемой формы объекта, при моделировании можно комбинировать множество типов деформаций. Например, если к прямоугольному параллелепипеду применить деформации «Кручение» и «Сжатие», можно получить буровое долото, а добавив деформацию «Изгиб», — олений рог, который можно подкорректировать, изменив масштаб одной из сторон.

HyperNURBS (сверхнеоднородные рациональные В-сплайны). В Cinema 4D HyperNURBS является самой мощной системой моделирования, предоставляющей огромную свободу действий в процессе создания моделей. HyperNURBS подразделяет поверхности объектов, тем самым создавая гладкие каркасы (Mesh). Этот режим наиболее эффективен для моделирования фигур животных и людей (рис. 6).

Карты деформации. Действие карт деформации подобно действию карт рельефа (Bump), но результат их применения более явно выражен. Карта выдавливания представляет собой полутоновое черно-белое изображение, изменяющее геометрию модели при рендеринге. Данный режим требует от модели повышенной мозаичности и детализации каркаса. Белые участки картинки «выдавливают» поверхность модели наружу по заданной оси и на указанную пользователем величину. Черные «вдавливают» ее, а полутоновые воздействуют в разной степени в зависимости от градаций серого. Карты деформации удобнее применять тогда, когда нужно смоделировать что-то мелкое, например гравий. Они поддаются анимации, и следовательно, с их помощью можно имитировать рябь на поверхности воды и небольшое волнение.

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

В заключение обобщим некоторые правила моделирования:

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

Продолжение в следующем номере.

Виктор Солодчук — специалист в области компьютерной графики и анимации, автор книги «Создание анимационного фильма с помощью компьютера« (Изд-во Института психотерапии, М., 2002). Фрагменты из нее послужили основой для этой статьи.

Автор выражает благодарность российскому представительству компании Nemetchek, предоставившему материалы для подготовки этой статьи.

* В других программах, например в 3D Studio Max, используется система координат, в которой ось Y располагается по горизонтали, а ось Z — по вертикали.

Програмирование с использованием OpenGL

Cinema 4D Практическое руководство стр.33

Start - задает начальный момент времени (если выбрать Time) или минимальное расстояние (если выбрать Distance), с которых начинается исчезновение осколков;

Duration - задает период, по истечении которого осколки будут уже не видны.

Чтобы наглядно убедиться во влиянии единиц измерения (Time или Distance) задайте значения Start и Duration как на рис. 2.271. Параметр Time (группа Object) задайте 25%. С помощью поля Kind переключайте единицы измерения для параметров Start и Duration и наблюдайте за изменениями, происходящими в картине взрыва (рис. 2.271).

Группа Gravity (гравитация) содержит настройки воздействия силы гравитации к осколкам (рис. 2.272).

Acceleration - задает ускорение осколков, которое они приобретают под воздействием силы тяготения; по умолчанию задано ускорение свободного падения. В поле тяготения Земли 9,8 м/с 2 .

Variation - позволяет варьировать это значение для различных осколков.

Direction - указывает оси координат, в направлении которых действует сила притяжения; при выборе None действие силы притяжения отключается. Например, чтобы задать падение осколков вниз (на землю), задайте ось - Y World.

Range - задает область действия силы притяжения.

Variation - позволяет варьировать для отдельных осколков значение Range.

Группа Rotation задает параметры вращения отдельных осколков вокруг собственной оси (рис. 2.273).


Speed - задает скорость вращения; задайте 100 единиц и посмотрите динамику взрыва, перемещая ручку регулятора параметра Time в окне проекции;

Decay - задает степень ослабления скорости вращения по мере удаления от эпицентра взрыва; если задать 100%, то при достижении границы взрыва осколки прекращают вращение;

Rotation Axis - позволяет задать ось вращения (X Axis, Y Axis, Z Axis) или центр вращения, в качестве которого предлагается центр гравитации (Center of Gravitation). Задайте различные оси и центр и посмотрите динамику взрыва.

Группа Special (специализированные) задает параметры имитации ветра (Wind) и закручивания (Twist) (рис. 2.274).


Инструмент деформирования FFD (деформатор свободной формы)

Инструмент FFD (Free Form Deformation - деформация свободной формы) позволяет производить деформацию с помощью создаваемого контейнера деформации. Действие деформатора основано на свойстве узлов сетки контейнера деформатора притягивать к себе поверхность деформируемого объекта. Деформация объекта происходит во время перемещения узлов сетки контейнера. Ручек управления деформатор FFD не имеет.

Создадим исходный объект - примитив Sphere (сфера), выберем инструмент в меню Objects -> Deformation -> FFD и расположим их в окне менеджера Objects, как показано на рис. 2.275.


В окне проекции возникнет следующая картинка (рис. 2.276).


Количество сегментов, на которые разделены грани контейнера деформатора, можно изменить через параметры Grid Points X, Grid Points Y и Grid Points Z, задав их в окне менеджера Attributes (рис. 2.277). Размер контейнера можно задать там же через параметр Grid Size.


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

Работа с Thinking Particles в Cinema 4D: первый шаг по направлению к снежным вьюгам

Следующий урок: отсутствует

К этому уроку прилагается 3D-сцена

Созданная при помощи Thinking Particles пыль в воздухе

Некоторое время назад один из завсегдатаев сайта попросил меня написать урок по созданию светящейся в солнечных лучах пыли в воздухе. К сожалению, тогда его просьба застала меня врасплох, так как до тех пор мне не приходилось работать с Thinking Particles, при помощи которых можно реализовать подобный эффект. Однако, вернувшись к высказанному ранее пожеланию, я решил восполнить данный пробел и приступил к изучению вопроса (да, автор сайта тоже учится работе с Cinema 4D — почти каждый вечер на протяжении нескольких лет!). Результаты изучения изложены в данном уроке.

Прежде чем перейти непосредственно к материалу урока, обращу ваше внимание на то, что он включает в себя слово «Начало», и это не случайно: «умные частицы» Cinema 4D — это тема весьма объёмная, и мягко говоря, не самая простая. При помощи «умных частиц» можно создавать как полные аналоги эффектов, легко доступных с использованием обычного эмиттера частиц, так и значительно более сложные и зрелищные эффекты. Но полностью уместить в одном уроке тему «умных частиц» задача не самая простая, поэтому будем двигаться поэтапно.

И ещё одно. Главный вопрос, который может возникнуть у вас при упоминании Thinking Particles, скорее всего, будет выглядеть так: а зачем вообще они нужны, эти частицы, если есть эмиттер?

Ответ на этот вопрос приблизительно следующий: эмиттер частиц в Cinema 4D — всего лишь примитивный суррогат Thinking Particles, с крайне ограниченным диапазоном функциональных возможностей, не позволяющим реализовать сложные эффекты — типа снегопадов, пыли в воздухе, дымящейся или горящей поверхности объектов со сложной геометрией, рассыпания объектов на частицы и многого другого.

Итак, приступим. В данном уроке мы начнём с создания простейшей системы «умных частиц». Сразу же предупреждаю: основная часть работы с «умными частицами» ведётся в редакторе XPresso, работать с последним на протяжении урока нам с вами придётся часто и много.

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

Для начала создадим шар, внутри которого будут создаваться частицы: верхняя панель инструментов, пиктограмма создания объектов, в выпадающем меню — пиктограмма создания сферы.

Создаём сферу, внутри которой буду возникать частицы

Настраивать сферу нет особого смысла, так как степень детальности её геометрии вряд ли серьёзно скажется на нашей системе частиц, поэтому единственное, что мы сделаем — сразу же после создания сферы преобразуем её в полигональный объект и отключим её видимость в редакторе и финальном рендере.

Отключаем у созданной сферы видимость в редакторе и рендере

Далее переходим непосредственно к созданию частиц при помощи редактора XPresso. Создаём тег XPresso, для чего щёлкаем правой клавишей мыши на наименовании сферы, в выпадающем из курсора меню выбираем пункт «Cinema 4D Tags» и выпадающем из него подменю кликаем по пункту «XPresso».

Присваиваем сфере тег редактора XPresso

В списке подобъектов сферы появляется соответствующая пиктограмма. Дважды кликаем по ней, и на экране открывается окно редактора.

Первый объект, который нам с вами предстоит создать — это генератор частиц под названием «PBorn». Щелчок правишей клавишей мыши в любом месте свободного места редактора XPresso, затем путешествие по следующим пунктам в каскаде последовательно выпадающих меню: «New Node» — «Thinking Particles» — «TP Generator» — «PBorn».

Создаём генератор частиц PBorn

В редакторе появляется прямоугольник с заголовком «PBorn» — это так называемый «узел». Обратите внимание, что в менеджере объектов он не отображается.

Небольшое лирическое отступление. Почему работа с «умными частицами» загнана в XPresso, а не в менеджер объектов? Почему генератор «умных частиц» не показан в менеджере объектов так же, как отображается в менеджере обычный эмиттер частиц?

Полагаю, это сделано потому, что большинство объектов трёхмерной сцены — элементы, если можно так выразиться, виртуально осязаемые: они обладают поверхностью или задейстованы в её создании, по большей части видимы, их местоположение в трёхмерной сцене определяет внешний вид объектов и самой сцены. Составляющие же «умных частиц» — куда более абстрактные объекты, не имеющие сами по себе внешнего вида, расположенные «нигде» (или «где угодно»), и представляющие собой не столько элементы трёхмерной сцены, сколько её невидимую программную часть.

К примеру, от положения обычного (штатного) эмиттера в трёхмерной сцене зависит, откуда, из какой точки пространства в сцене будут появляться создаваемые эмиттером частицы. И потому у эмиттера имеются координаты. Местоположение генераторов «умных частиц», в отличие от эмиттера, не имеет ни малейшего значения, поэтому у подобных узлов вкладка координат вообще в принципе отсутствует.

Идём дальше. Генератор частиц нами создан, создаём следующий узел — «PVolumePosition». Щелчок правой клавишей мыши на свободном пространстве редактора XPresso, последовательный выбор пунктов «New Node» — «Thinking Particles» — «TP Helper» — «PVolumePosition». Из названия созданного нами узла ясно, что на него возложены функции размещения частиц в пространстве. Здесь следует оговориться, что этот узел позволяет создавать частицы, заполняя последними внутренний объём какого-нибудь полигонального объекта. Если бы мы хотели создавать частицы не внутри полигонального объекта, а исключительно на его поверхности, то нам с вами следовало бы создать другой узел — «PSurfacePosition».

Создаём узел определения положения частиц «PVolumePosition»

И затем создаём ещё один узел, третий: точно так же, как ранее, правая клавиша мыши — «New Node» — «Thinking Particles» — «TP Standart» — «PsetData».

Создаём узел «PSetData»

Итак, мы создали три узла. Соединяем их так, как показано на изображении ниже: от узла «PBorn» взаимосвязь тянем к порту «Particle» узла «PSetData», в последнем дополнительно создаём порт «Position» (на случай, если вы забыли, как это делается — щёлкаем левой клавишей мыши на синем прямоугольнике в заголовке и в выпавшем списке выбираем порт, который нам необходимо создать), к которому тянем взаимосвязь из узла «PVolumePosition», узел «PBorn» соединяем с узлом «PVolumePosition».

Соединяем три узла взаимосвязями

Обратите внимание: внутри узла «PVolumePosition» красуется слово «Sphere» — это обозначение объекта, внутри которого будут появляться частицы. Обозначение, как вы, вероятно, догдаываетесь, появилось внутри узла не само по себе — для этого необходимо открыть редактор XPresso, подцепить мышкой нужный элемент в менеджере объектов и перетащить его наименование внутрь соответствующего узла.

Далее создаём какой-нибудь полигональный объект, который будет у нас в трёхмерной сцене частицей — это может быть что угодно: куб, сфера, октаэдр, главное — не переборщить с количеством полигонов, ибо в нашей сцене частиц будет реально (или нереально, это как посмотреть) много. Созданный полигональный объект назовём «Particle». Обратите внимание: в отличие от объекта, предназначенного для заполнения частицами, он должен быть видимым!

Для использования генератором частиц созданного нами полигонального объекта в качестве частицы нам придётся продолжить создание ещё нескольких новых узлов в редакторе XPresso. Снова открываем редактор и создаём узлы «P Pass» («New Node» — «Thinking Particles» — «TP Inintiator» — «P Pass») и «Pshape» («New Node» — «Thinking Particles» — «TP Inintiator» — «P Pass»)

Создаём узел «P Pass»

Создаём узел «Pshape»

Первый узел, «P Pass», определяет, на какие частицы будет оказывать влияние эффект, создаваемый вторым узлом, «PSHape». Последний предназначен для указания, что частицы должны выглядеть как полигональные объекты. Для определения, какой именно полигональный объект служит образцом для частиц, цепляем в менеджере объектов созданный нами ранее полигональный объект, который мы назвали «Particle», и перетаскиваем его внутрь узла «PShape», после чего соединяем узлы «P Pass» и «PShape». Определять дополнительно, какие частицы будут выглядеть как сфера, нам нет необходимости — внутри узла «P Pass» значится слово «All», что означает влияние на все создаваемые в трёхмерной сцене частицы. Более сложные варианты мы с вами в данном уроке рассматривать не будем.

Ну и наконец, нам понадобится ещё один вспомогательный элемент — «Particle Geometry». Идём в верхнее текстовое меню, пункт «Simulation» — «Thinking Particles» — «Particle Geometry».

Если мы с вами всё проделали правильно, то нажав на кнопку вопсроизведения анимации, мы видим, как в окне редактора Cinema 4D возникает месиво из множества сфер.

Месиво созданных частиц в виде массы сфер

Исполинские сферы превратились в маленькие шарики

Ну вот, результат уже значительно лучше: в окне редактора перед нами — рой множества крохотных шариков. Это созданная нами в Cinema 4D пока что очень простенькая система «умных частиц».

Вероятно, вы вправе спросить: а зачем было городить весь этот сыр-бор — ведь можно было бы точно так же создать множество точно таких же частиц при помощи MoGraph Cloner, который точно так же умеет заполнять клонами пространство пустотелых полигональных объектов?

Вопрос логичный. Ответ на него выглядит так: поведение созданных генератором «умных частиц» принципиально отличается от поведения размноженных при помощи MoGraph Cloner клонов, что называется, по определению, потому как частицы, извините за тавтологию, подчиняются в Cinema 4D законам поведения частиц (даже если выглядят как полигональные объекты), а клоны — законам поведения объектов. Почувствуйте разницу! Скажем, клонам — как бы они ни были распределены в пространстве — невозможно назначить текстуры огня или дыма, заточенные только под частицы. На клоны и частицы воздействуют принципиально разные эффекторы и модификаторы. И множество иных нюансов, которые мы с вами изучим в следующих уроках.

И да — это наш с вами первый, ещё не очень уверенный, но верный шаг по направлению к эффектным снегопадам и клубящимся в воздухе облакам пыли, водяным всплескам и управляемым огненным вихрям.

Ну а что же можно сделать с созданными нами частицами прямо сейчас, с минимумом усилий?

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

Но чтобы лишний раз напомнить вам, в каком направлении мы с вами движемся — приведу ещё раз изображение, с которого начался данный урок и которое создано автором с использованием простейшей системы «Thinking Particles».

Этим несложным уроком я хочу показать основные принципы работы с примитивами в программе Cinema 4D. Урок предназначен в первую очередь для начинающих пользователей программы, но предполагается, что вы уже знакомы с навигацией в Cinema 4D и применением базовых инструментов, вы также должны понимать что такое менеджер объектов и панель атрибутов. Мы создадим этажерку на колесиках :), посмотрим как работаeт массив (Array) в Cinema 4D, Sweep Nurbs, а также узнаем что может дать применение Global Illumination в сравнении с обычным рендером. В конце урока прилагается готовая к рендеру текстурированная сцена с настроенным освещением. В уроке даже не затрагивается полигональное моделирование, используются лишь обычные примитивы и некоторые другие функции программы, поэтому затруднений не должно возникнуть по ходу урока.

Итак… Для начала попробуем создать вот такой элемент этажерки. Это будет ее «шасси» :).

Из выпадающего меню на панели инструментов в группе сплайнов выберите сплайн окружность и сплайн «цветок» (flower). Для сплайна «цветок» на панели атрибутов установите значение petals равное 3.

Теперь в группе Nurbs в выпадающем меню на панели инструментов выберите Sweep Nurbs. Этим мы добавим этот объект в сцену.

В менеджере объектов перетащите два наших сплайна, созданные перед этим, на объект Sweep Nurbs так, чтобы стрелочка на курсоре изменила свое направление вниз и отпустите кнопку мыши. Теперь наши сплайны стали подобъектами объекта Sweep Nurbs, причем расположены они должны быть именно в таком порядке. Результат должен получиться таким.

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

Добавим в сцену цилиндр. Это будет ось для колеса. Не забудем добавить фаски выделением опции fillet на панели атрибутов.

Добавим в сцену куб из группы примитивов на панели инструментов. Сделаем копию для другой стороны.

Сделаем верхнюю планку копированием одного из примитивов в менеджере объектов и развернем его как показано.

Добавим верхнюю ось копированием уже созданного цилиндра, немного изменив масштаб и развернув в нужное положение.
Наше колесико почти готово :).

Сделаем обод на колесо. Из группы примитивов на панели инструментов выберем примитив torus.
Расположим его в нужное положение и изменяем его масштаб до необходимых пропорций.

Добавим в сцену объект Null из меню Objects – Null Object. Далее выделим в менеджере объектов все наши объекты, которые образуют колесо
(удерживая клавишу Shift), и перетянем их на объект Null, теперь все объекты принадлежат объекту Null – я переименовал его в «колесо», как это видно на скриншоте.

Далее выберем из меню Objects – Modeling – Array (массив). Сделаем объект «колесо» подобъектом для Array, перетянув его как мы делали это раньше. Установим значение для copies равное 3. Вот что должно получиться.

Теперь, при выделенном Array в менеджере объектов, нажмем на клавиатуре клавишу «С». Как видим, наши элементы массива стали доступными для выделения и изменения.

Развернем соответствующие колеса в нужном направлении, как показано.

Я повернул все четыре колеса на 45 градусов для удобства дальнейшего построения.
Теперь у нас есть готовая «колесная база» :) для нашей этажерки.

Добавим полочки. Это уже знакомый нам примитив куб.

Добавим цилиндры, которые образуют стойки, и наша этажерка готова!

Попробуем сделать рендер, предварительно добавив материалы и освещение в сцену.

А вот что получится с применением Global Illumination (глобальное освещение). Время рендера конечно увеличится, но за качество нужно платить… Здесь я не буду затрагивать описание настроек - это тема отдельного урока; замечу только, что в Cinema 4D этих настроек немного, поэтому не стоит пугаться :) (в некоторых программах этих настроек на порядок больше).

Как видно, разница небольшая, но заметная. Можно было бы добавить дополнительные источники освещения, чтобы подсветить темные участки, но зачем тратить свое время на эксперименты, если применяя GI вы получаете сразу хорошее решение?! Так что привыкайте использовать GI для вашего финального рендера – от этого картинка только выиграет. Конечно, для настройки GI тоже требуется время, как правило это приходит методом проб и ошибок.

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

Ну а как быть, если мы с вами хотим не просто разбить предмет, но и изобразить в анимации взаимодействие осколков с окружающей обстановкой? Как заставить осколки падать на пол, подскакивать, подпрыгивать и вообще вести себя по всем законам земной физики? Ведь модификатор взрыва в Cinema 4D с физикой не дружит — он просто разносит полигоны объекта в стороны, и на этом считает свою задачу выполненной. В свою очередь, физика в Cinema 4D отлично отрабатывает задачу взаимодействия отдельных элементов между собой и с окружающими предметами, но — увы! — не умеет превращать трёхмерную модель в набор отдельных элементов. Как быть?

Реалистичный разлёт осколков

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

Когда речь идёт о наборе отдельных полигональных элементов, никакой сложности у нас с назначением им физики не возникает: объединяем элементы в группу и назначаем последней тег динамики со значениями «Apply Tag To Children» и «All» параметров «Inherit Tag» и «Individual Elements» соответственно во вкладке «Collision» — именно так мы с вами настраивали физическую модель автомобиля в предыдущем уроке.

Вывод очевиден: всё, что нам требуется для создания реалистичного разлёта осколков разбитой трёхмерной модели — это в определённый момент времени превратить цельную модель в набор осколков.

Будем исходить из того, что у нас с вами уже имеется некая модель, подготовленная для разрушения — как это сделать, подробно описано в уроке по моделированию взрыва межгалактического грузовика, ссылка на который приведена выше. То есть наша с вами модель уже порезана на неровные полигональные сегменты, и ей уже присвоен модификатор взрыва «Explosion FX». Однако, в отличие от моделирования взрыва в космосе, наши действия будут построены по иному алгоритму. На сей раз задачи, которые мы с вами поручим модификатору «Explosion FX» — это, во-первых, едва заметно, чуть-чуть, в самой первой фазе разделить трёхмерную модель на осколки, с тем чтобы сразу же передать управление физической модели Cinema 4D, которая будет управлять физическим поведением осколков, и во-вторых, придать толщину стенкам исходной модели.

Подготовленная к разрушению трёхмерная модель

Приступаем. Располагаем модель в том месте, где она будет раскалываться на части, и назначаем ей модификатор «Explosion FX» со значением «0» параметра «Time» во вкладке «Object». Это сделано затем, чтобы присвоенный модели модификатор с самого начала придал поверхности нашей модели толщину (соответствующее свойство «Thickness» можно найти во вкладке «Cluster» свойств модификатора). К слову говоря — надеюсь, вам понятно, что в исходном варианте модель для разрушения должна быть «тонкостенной», не имеющей физической толщины стенки, об этой толщине, как мы с вами видим, позаботится модификатор «Explosion FX». Сам модификатор располагаем в центре разрушаемой модели.

Указываем толщину поверхности трёхмерной модели

Начинаем подготовку. Изменяем значение параметра «Time» модификатора «Explosion FX» — вместо нуля указываем какое-нибудь небольшое значение, подбирая его таким образом, чтобы на поверхности модели визуально обозначилось начало деформации поверхности и её разделения на осколки.

Подбираем значение «Time» модификатора для минимальной начальной деформации модели

Здесь непременно следует учесть один тонкий момент: подбирая значение параметра «Time», вы фактически создаёте первую фазу разлёта осколков, и в зависимости от того, насколько высокую скорость разлёта осколков вы хотите изобразить впоследствии при помощи настройки физической модели, вам необходимо правильно подобрать начальную фазу деформации модели, чтобы последующий разлёт осколков выглядел как естественное продолжение деформации её поверхности, без резкого скачка скорости.

Подобрав начальную фазу деформации поверхности модели, переходим к следующему шагу — к так называемому «спеканию» осколков, то есть трансформации деформированной модификатором «Explosion FX» модели в группу отдельных элементов. Выделяем наименование слегка деформированной модификатором «Explosion FX» модели в менеджере объектов, щёлкаем на наименовании правой клавишей мыши и в выпадающем контекстном меню выбираем пункт «Current State To Object». Обратите внимание: выделять и преобразовывать в новый объект следует именно модель, а не подчинённый ей модификатор взрыва!

Создаём копию модели — будущий набор отдельных элементов-осколков

Следующий нюанс, который также может вас смутить при выполнении этой операции: выделив наименование модели в менеджере объектов, вы увидите в рабочем окне модель без каких-либо следов деформации поверхности — это Cinema 4D показывает вам исходную модель, чтобы дать чёткое представление о первоначальной геометрии деформируемого объекта — но преобразование в новую модель создаст деформированную копию вашей модели.

Итак, у вас появилась слегка деформированная копия модели. Осталось превратить её в набор отдельных элементов. Выделяем её наименование в менеджере объектов, после чего переводим взгляд на верхнее меню Cinema 4D, в котором больше всего нас интересует пункт «Functions» — в выпадающем из этого пункта меню нам нужно найти подпункт «Explode Segments» (букв. «Взорвать сегменты», т. е. сделать каждый сегмент отдельной моделью).

Разделяем сегменты модели на группу отдельных элементов

Если вы всё сделали верно, то Cinema 4D на некоторое время задумается, после чего деформированная копия модели разрушаемого объекта в менеджере объектов превратится в группу полигональных элементов. Будьте готовы к тому, что количество элементов может оказаться весьма приличным — у меня, к примеру, получилось в результате вышеописанной операции более пятисот осколков.

Группа осколков в менеджере объектов

Теперь хорошо бы вернуться к свойствам модификатора «Explosion FX», присвоенного исходной модели, и вернуть его параметру «Time» значение «0». Удалять сам модификатор не советую — ведь за ним по-прежнему сохраняется задача создания толщины стенок исходной модели, и если его удалить — в кадре может появиться весьма интересный эффект превращения «тонкостенной» бесплотной модели в «толстостенную», что будет выглядеть по меньшей мере странно.

Далее необходимо решить, в какой момент времени начнётся разрушение модели. Выбрав подходящий кадр, мы с вами сделаем следующее: спрячем из кадра оригинальную модель, и подменим её на группу осколков, расположенных в соответствии со слегка деформированной поверхностью модели — в анимации это будет выглядеть как начало разрушения. Для этого мы переходим в начало анимации, затем выбираем оригинальную модель и закрепляем значение «On» параметра «Visible in Renderer» («Видно при рендере») во вкладке «Basic» её свойств как ключевой кадр.

Закрепляем видимость исходной модели в начале анимации как ключевой кадр

Переходим в выбранный нами в качестве начала разрушения фрейм и меняем значение параметра «Visible in Renderer» свойств исходной модели на «Off», затем также закрепляем это значение как ключевой кадр. Интерполяция для этого значения, как вы догадываетесь, не предусмотрена — исходная модель не будет постепенно таять в кадре (что, к примеру, можно сделать при помощи свойства «Transparency» текстуры модели), она просто дискретно исчезнет в тот момент, когда значение параметра «Visible in Renderer» изменится с «On» на «Off».

Исходную модель в нужный нам момент мы спрятали, теперь необходимо подменить её на группу осколков. Находим группу, открываем вкладку «Basic» её свойств и точно так же указываем два значения параметра «Visible in Renderer», только в первом кадре анимации значение параметра будет задано как «Off» (при котором осколки спрятаны), а в выбранный нами момент для начала разрушения — сменится на противоположное.

Что ещё мы с вами забыли? Настроить физическую модель разлёта осколков, разумеется. Без этого осколки не разлетятся, а модель будет выглядеть на протяжении анимации просто как треснувшая, но сохранившая почти первоначальную форму. Ищем в менеджере объектов наименование группы осколков и назначаем ей тег динамики.

Назначаем группе осколков тег динамики

Рядом с наименованием группы появится пиктограмма тега динамики — выделяем её и переходим к настройке физической модели. Начнём с вкладки «Dynamics» свойств тега — в этой вкладке необходимо убедиться, что активирован параметр «Enabled» (рядом должна стоять галочка), выбрать значение «On» для параметра «Dynamic», и значение «Immediately» («Немедленно») для параметра «Trigger».

Настраиваем физическую модель разлёта осколков

Переходим к вкладке «Collision» («Взаимодействие») — в ней нужно выбрать значение «Apply Tag To Children» («Применять тег к дочерним объектам») для параметра «Inherit Tag» («Наследование тега»), «All» («Всё») для параметра «Individual Elements» («Отдельные элементы») и «Automatic (MoDYnamics)» для параметра «Shape» («Геометрия»), а также обязательно отметить галочкой параметр «Self Collisions» — чтобы осколки при разлёте не проходили друг сквозь друга без взаимодействия.

Настройка взаимодействия осколков с окружающими объектами

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

Последнее, что нам остаётся сделать — это решить, как именно будут двигаться осколки модели: просто осыпаться вниз (для этого у нас всё готово), или же стремительно разлетаться в разные стороны словно при взрыве — это можно сделать самыми разными способами, от уменьшения временного масштаба динамики и силы гравитации трёхмерной сцены, до размещения вокруг осколков модели, со значением «Automatic» параметра «Shape» в теге динамики (в этом случае Cinema 4D воспримет окружающую осколки модель как монолитную — то есть не пустотелую — и во что бы то ни стало с максимальнум усилием постарается высвободить как бы завязшую внутри неё группу осколков).

В общем, при желании можно получить что-то вроде нижеприведённой анимации.

Читайте также: