Моделируем в Maxon Cinema 4D

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

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

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

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

Колонны

Первый вопрос, который может возникнуть, — с масштабом. На самом деле можно работать и на крупном, главное, чтобы были соблюдены пропорции. То есть вы должны понимать, что один этаж имеет высоту всего два-три метра, здания того времени абсолютно не были небоскребами, при этом диаметр колонн вы можете представить самостоятельно — от 1 до 3 метров. Но это "наши" метры. При моделировании лучше все увеличивать в десятки, а то и сотни раз, иначе вы будете работать с миниатюрой, что в рамках пакета достаточно трудоемко.

Примечание: во всех пакетах 3D-моделирования цвет осей соответствует основным цветам аддитивной палитры, для быстрого запоминания: XYZ = RGB. Согласитесь, очень легко.
Вертикалью у нас будет Y.

Создаем колонну

Колонна состоит из пяти ключевых элементов:
1. высокий цилиндр с ребристой поверхностью (назовем его "основное тело");
2. фигурные обода по верхнему и нижнему краям "основного тела", их два;
3. нижний переход к массивному основанию;
4. верхний переход, симметричный нижнему.

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

***

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

Основная поверхность обода. В проекции XY рисуем кривую, при этом стоит помнить, что мы рисуем профиль обода, который будет огибать колонну радиусом 200 м (в нашем масштабе). Соответственно, позиции X крайних точек должны быть равны 200 м. Нарисовали, подправили, имеет смысл присвоить ему отдельное имя. В окне свойств делаем двойной щелчок указателем мыши на названии Spline, открывается поле ввода, куда мы вписываем "Профиль обода" (названия можно вводить по-русски даже в англоязычной версии). Теперь включаем модификатор Lathe (проще его переводить, как "токарный станок"), который находится в закладке с NURBS объектами. Он отобразится в окне объектов как Lathe NURBS, но пока ничего не произойдет. Поэтому в этом же окне указателем мыши берем "Профиль обода" и переносим его как drag'n'drop в Lathe NURBS. Получаем готовую поверхность — уже красиво. Идем дальше, но не забываем переименовывать объекты, в частности LatheNURBS можно назвать "Lathe обода". Теперь необходимо добавить украшения, и на данном этапе вы научитесь принципам работы с деформаторами.

"Украшения"

Берем сферу, называем "элемент N1", радиус = 40 м, настраиваем координаты X=-200, Y устанавливается по высоте верхней поверхности обода. Специально настраиваем окно просмотра, чтобы было удобно работать…

Примечание: управление в Maxon… Масштаб — вращение колесиком мыши. Смещение — нажатое колесико плюс клавиша "1", вращение просмотра — нажатое колесико плюс клавиша "3".

Затем обращаемся к закладке деформаторов. Изначально выбираем Bulge (раздутие). Деформаторы появляются изначально в окне объектов как отдельные элементы, а их привязка координатного нуля соответствует нулевому отсчету сцены. С помощью режима drag'n'drop в окне объектов помещаем Bulge в "элемент N1". Исправляем его координаты и размеры, теперь нулем будет центр объекта "элемент N1", то есть необходимо поставить нули, параметр Strength в рамках Bulge управляет силой раздутия (положительные и отрицательные проценты), а Curvature указывает на характер кривой этих изменений (с улыбкой вспоминаем шутку про курвиметр из сериала "Убойная сила" и идем дальше). Координата Y деформатора Bulge по существу показывает его смещение относительно нулевой точки объекта по вертикали, и поскольку мы хотим сделать несимметричный вариант именно по этой оси, то настраиваем смещение. То же самое производится и с X, в результате чего у нас получается несимметричная поверхность. Также окажется полезным изменение угла деформации относительно "элемента N1", что делается в тех же координатных настройках Bulge.

Я сделал такие варианты для этого деформатора:
. X=-27 м;
. Y=18 м;
. Z=0;
. все остальное в координатах — нули, кроме угла R.B = 14 градусов;
. в наcтройках параметров объекта (закладка Object) размеры: 100-125-100 м, режим (Mode) — Limited, Strength = -85%, Curvature = 96%. Нужно сказать, что сужение оказалось недостаточным, поэтому точно таким же образом в "элемент N1" мы помещаем другой деформатор — Taper. Производим сходные действия. Мои настройки были таковыми:
. все в координатах нули, кроме угла R.B = 77 градусов;
. размеры: 90-90-90 м, режим (Mode) — Limited, Strength = 61%, Curvature = 100%.

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

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

Точно таким же образом создаем "элемент N2", но в качестве исходной фигуры выбираем не сферу, а капсулу, разместив ее специальным образом и подобрав размеры. В качестве модификаторов я использовал два Bulge, один из которых повернут на 90 градусов по горизонтали.

Можно сказать, заготовка для ключевых элементов украшения у нас сделана. Чтобы не загромождать просмотр отображений направляющими деформаторов, сделайте все из них невидимыми в рамках редактора. Для этого нужно войти в свойства каждого из них, закладку Basic и указать напротив Visible in Editor положение Off.

Теперь имеет смысл объединить "элемент N1" и "элемент N2" в единую поверхность. Производится это с помощью логической операции Bool. Она вызывается из специального меню модификаторов Modeling. В появившийся в результате в окне объектов элемент Bool с помощью drag'n'drop мы помещаем "элемент N1" и "элемент N2". В окне настроек Bool, в закладке Object указываем на тип операции, а именно Boolean Type — A union B. Теперь нам необходимо создать множество объектов представленного типа, расположенных по окружности — нашему ободу. Многие скажут, что проще всего это сделать с помощью модификатора Array, который располагается в модификаторах Modeler. Он позволяет равномерно расположить однотипные объекты по окружности с указанием ее радиуса, при этом вы выбираете количество элементов, а также амплитудные изменения (изменения положения по вертикали) и тому подобное. На самом деле это модификатор не так удобен, как может показаться на первый взгляд, особенно в случаях, когда мы используем сложные по структуре элементы. На маломощных машинах настройка работы с этим модификатором достаточно проблематична. Мы пойдем другим путем, тем более что объектов нужно разместить не так много, поэтому воспользуемся обычным копированием.

Примечание: горячие клавиши Ctrl+C/Ctrl+V, как и все другие, работают только при включенной английской раскладке клавиатуры.

Для начала переименуем наш булевый объект в "украшение", чтобы понимать, с чем мы работаем. После этого, когда он выделен, то есть отмечен красным цветом в окне объектов, нажимаем Ctrl+C. Далее не спешим. Выбираем режим курсора "поворот" (Rotate Tool). При этом сразу же обращаемся к окошку свойств, перейдя в закладку Snap Settings. Делаем активным указатель Enable Snapping и в разделе Quantize делаем активным указатель Enable Rotate, где по умолчанию высветится установка в 5 градусов (можно оставить так, а можно и поменять на значение 15). Что мы сделали на самом деле? Если бы мы не включили такую привязку, то угол поворота любого объекта шел бы с градацией в 0.1 градуса. Это очень неудобно, например, для случаев, когда мы хотим быстро и точно расположить объекты. Поэтому мы несколько автоматизировали процесс.

Теперь нажимаем Ctrl+V, поверх предыдущего появляется новый объект, что также отражено и в окне с элементами, располагаем его, повернув на 15 градусов. И так далее, пока мы полностью не заполним окружность основания. Займет это не больше минуты.

После этого, выделив в окне объектов все имеющиеся "украшения" (удерживание Shift), группируем их в один (Alt+G, либо в pop-up меню по нажатию правой кнопки мыши выбираем пункт Group Objects). В окне объектов появится элемент Null Object, который мы переименовываем в "Украшения N1". Теперь разгруппируйте этот объект Shift+G и удалите все копии, кроме основного экземпляра. Копирование фактически предусматривает создание нового объекта. Мы же можем сделать проще, создав его дубликаты, которые будут отображаться, но иметь прямую привязку к родительскому объекту. Для этого мы его выделяем, после чего выбираем вариант из меню Modeling — Add Instance Object (или просто Instance). В нем автоматически будет храниться дубликат, смещаем его на 15 градусов, а дальше проверим одну наглядную вещь. Попробуйте внести изменения в родительский (исходный) объект и вы увидите, как они отобразятся на дубликате. Копия же не будет так реагировать, поскольку является самостоятельным объектом. Воссоздаем "Украшение N1", но уже с помощью дубликатов. Полноценные копии далеко не всегда выгодно использовать, к тому же на уровне мелких объектов, потому как это существенно повлияет на скорость расчетов. Всем появившимся элементам Instance необходимо присвоить свои имена, это важно не только во избежание путаницы при моделировании, проблема может возникнуть при экспорте моделей.

Теперь поэкспериментируем с Array на самом простом уровне. Добавим объект сфера, выставив небольшой радиус (например, 8 м), отнеся ее по X и Y таким образом, чтобы она расположилась на поверхности обода. Выбираем Array и помещаем в него в окне объектов нашу сферу. Настраиваем радиус, координаты и количество копий. Количество копий нужно считать как указанная цифра + 1, коим является исходный объект. Смотрим на результат. Переименовываем Array в "Украшения N2".

На самом деле варианты Array и с дубликатами по существу являются очень схожими по вложенному принципу действия.

Переход к основанию

Честно сказать, ваш покорный слуга не особо искушен в вопросах истории архитектуры, поэтому примем во внимание тот вариант, что римские колонны отличаются от греческих именно формой переходных элементов. То есть у греков они сплюснуты и напоминают завиток толстого листа, а в Риме они являются конусообразными. Скорее всего, так:) Извиняюсь, если ошибаюсь.

Итак, мы немного усложним задачу и сделаем вариант, когда поверхность переходит из круглого сечения в квадратное. Для начала сгруппируем все оставшиеся элементы нашего обода в один объект, назвав его "Фигурный обод", и чтобы он нам не мешал при следующем этапе проектирования, отнесем его на расстояние (например, указав координату Х равную 1000).

Теперь в кривых выбираем окружность. Делаем настройки — располагаем в плоскости XZ, радиус равен 200 м, координата Y=200. После этого в тех же шаблонах кривых выбираем звезду (Star Spline). Почему не прямоугольник? Мы сделаем чуть более сложную форму, то есть прямоугольник с вогнутыми сторонами. В настройках Star указываем, что количество вершин (Points) будет равно 4, внешний радиус равен 350 м, внутренний — 250 м. После этого выбираем модификатор LoftNURBS. Помещаем в него звезду и окружность, в результате чего получаем необходимый объект. Но он будет повернут не так, как нужно. Поэтому поверните как звезду, так и окружность на 45 градусов (плюс или минус).

Чтобы сделать его еще более сложным по форме, можно использовать два модификатора Tape, один из которых расширит объем у основания, а второй необходим для сужения верхнего сечения до необходимого радиуса в 200 м. Для контроля точности последнего можно взять еще одну окружность и сверяться по ней, после чего ее удалить.

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

"Основное тело" колонны

Это самая простая деталь. Из кривых выбираем шаблон шестеренки (Cog Wheel). Располагаем его в плоскости XZ. Внешний радиус — 200 м, средний — 180 м, внутренний — 180 м, параметр Bevel — 56%. Дело в том, что данная форма предусматривает наличие зубьев с изломом, поэтому и предусмотрен дополнительный средний (middle) радиус, в данном случае он нам не нужен. Называем этот элемент "сечение колонны".

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

Итак, мы пошли по легкому пути.

Следующим этапом идет выбор модификатора ExtrudeNURBS, который подразумевает выдавливание по заданному шаблону. Запускаем, помещаем в него с помощью drag'n'drop "сечение колонны" и переходим к свойствам ExtrudeNURBS. Нас интересует прежде всего главное, расположенное в закладке Object — Movement. Здесь указывается, в какую сторону происходит выдавливание (по умолчанию стоит 20 м по Z). Исправляем все, выставив нули, и начинаем считать. Итак, 200 м нашего масштаба соответствуют 1 м реального. Четырехэтажное здание имеет высоту примерно 8-12 м, что соответствует нашим 1600-2400 м. Выбираем 2000 м, потому как 400 м (200+200) у нас будут занимать переходы к основаниям.

Вставляем это значение для оси Y и получаем колонну. После производим сборку.

Сборка колонны

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

Итак, сделав это задание, вы научились:
. Использованию шаблонов кривых. Управлению основными настройками.
. Ознакомились со структурой рабочего интерфейса программы.
. Поняли суть координатной привязки и взаимодействий.
. Модификатор создания поверхности путем вращения профиля — LatheNURBS.
. Деформатор вздутия формы — Bulge.
. Деформатор сужения формы — Taper.
. Модификатор свободной деформации — FFD.
. Логическая операция взаимодействия поверхностей — Bool.
. Привязке к координатной сетке, а также модификация инструмента Rotate Tool.
. Группировке множества объектов.
. Созданию копий.
. Созданию дубликатов.
. Использованию модификатора создания массива вращения Array.
. Создание сложных поверхностей по кривым — LoftNURBS.
. Модификатор выдавливания по шаблону — ExtrudeNURBS.
. Сборке готовой модели.

Перед тем как написать этот материал, я проделал следующие этапы работы:
1. Подготовка небольшого ТЗ — около 5 минут.
2. Создание колонны — 5-7 минут.

В качестве самостоятельного теста попробуйте создать несколько различных колонн. И вскоре вы ощутите скорость моделирования, присущую Maxon Cinema 4D. На данном этапе отметим, что мы вообще не пользуемся полигональным моделированием — вся главенствующая работа происходит на уровне NURBS.

Продолжение следует…

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


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

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