Кто не хочет читать ONLINE, можете скачать доступные части книги:

Скачать часть1 (1.1 Мб) - Ознакомление с программой 3ds MAX

Скачать часть2 (1.4 Мб) - Объекты произвольной формы

Скачать часть3 (2.2 Мб) (не завершена) - Текстурирование

Глава 4: Иерархии объектов (Hierarchy)

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

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

 

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

Если вы новичок, лучше начните работу с нового чистого файла, для этого перезапустите 3ds MAX. Можно не перезапускать, а в меню File выбрать Reset, в случае необходимости сохранить открытую работу, на вопрос Do yo really want to reset (действительно ли вы хотите начать заново) - ответить yes (да). Чтобы нам было удобно, будем работать в увеличенном окне perspective. Для этого сделаем этот вид активным, а в правом нижнем углу нажмём кнопку (MIN/MAX toggle - переключатель). Эта кнопка заменяет четыре вида на один выделенный и обратно.

Создание иерархических связей частей тела

Поставим сферу (sphere). Выберем вращение (rotate ), откроем меню, где можно ввести координаты вращения вручную. Если мы ставили сферу в виде "Перспектива/Perspective" или в виде сверху ("top"), то координаты поворота сферы по всем осям равны нулю. Иначе оне будут иметь друге значения, кратные 90 градусов. Сфера будет служить туловищем нашего персонажа, лучше всего разместить её так, чтобы в исходном положении её повороты вокруг всех осей были равны нулю. Впечатаем в группу координат Absolute:World нули. Теперь нажмём на значок перемещения (move ). По осям x и y абсолютных координат установим нули, для удобства. По оси z - разместим тело примерно на той высоте, на которой оно будет находиться стоя на ногах. Пока эта высота у нас будет приблизительна.

В графе Name ans Color свойств объекта впечатаем body (туловище). Название объекта никак не влияет на его физические свойства, но нам будет удобнее искать его в списке.

Голову сделаем клонировав сферу, сделаем копию (copy), но не instance и не reference. Введём сразу в графу name слово head (голова). Теперь мы можем получить доступ к параметрам сферы, которая служит головой, и сделать её радиус (radius) меньше, не задействовав туловище. Центр координат сферы по умолчанию находится в геометрическом центре сферы. Но можно в параметрах выбрать Base To Pivot, тогда центр координат сферы будет находиться в нижней точке сферы. (При выставлении флажка вы увидите, как сфера поднимится). Если центр координат будет сверху, значит сфера перевёрнута кверх ногами. Поставьте для сферы-головы Base to Pivot и попробуйте её повращать (не отпускайте левую кнопку, тогда по нажатию правой кнопки смоежете вернуть сферу-голову в исходное положение). Вы видите, что сфера вращается вокруг нижней точки.

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

Руки и ноги сделаем при помощи цилиндров (Cylinder). Цилиндр ставится в два приёма: сначала, не отпуская левую кнопку мыши мы задаём его радиус, а затем, отпустив кнопку ведём мышь и определяем высоту. Высота может быть как положительной (направлена вверх), так и отрицательной (вниз). Чтобы было видно наш цилиндр сразу со всех сторон, создавайте его в окне Perspective. Лучше направьте высоту вниз. При необходимости, подправьте параметры цилиндра radius - радиус цилиндра, heigh - высота.

Если цилиндр растёт вверх, переверните его так, чтобы центр координат цилиндра оказался сверху. Поместите цилиндр рядом с туловищем, так, как располагалась бы нога. Центр координат цилиндра (точка, вокруг которой он будет вращаться), должен располагаться примерно на поверхности туловища (Рис. 4.1. ).

Рис. 4.1.

Привяжите ногу к туловищу. Чтобы видеть, что к чему привязано, существует опция во вкладке (display - отображение), в группе Link Display для каждого объекта надо нажать флажок Display Links (отображать связи), тогда для каждого объекта будет виден центр координат в виде октаэдра, а так же связи между объектами. Чтобы не возиться с каждым объектом, выделите их все и нажмите флажок. Связи могут быть не видны под объектами, поэтому в группе чуть выше, которая называется Display Properties (свойства отображения) поставьте для всех объектов флажок See-Trough (видеть насквозь). Объекты станут серыми и полупрозрачными. Теперь видны связи между ними (Рис. 4.2).

Рис. 4.2. Отображение связей между объектами

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

Теперь выделим цилиндр, во-первых, дадим ему имя thigh R (бедро). Буква R - сокращение от right - означает что бедро правое. Левые части тела обозначаются буквами L (left). Такое обозначение принято среди пользователей. Клонируем этот цилиндр (создадим копию). Теперь выберем систему координат Local (Об этом шла речь во введении, раздел Работа с объектами / системы координат в 3ds MAX). Имейте ввиду, что для каждого вида трансформации (перемещение, вращение, масштабирование) надо выбрать систему координат отдельно.

Рис. 4.3. Копирование цилиндра и его перемещение по оси Z локальной системы координат

Система координат повернулась, выберем ось Z и пододвинем цилиндр вдоль неё так, чтобы его торец располагался примерно там же, где торец предыдущего цилиндра. Новый цилиндр унаследовал от своего оригинала не только фундаментальные свойства, но и такие параметры, как включённые опции See-Trough и Display Links. Даже если мы сделали instance или reference клоны, свойства See-Trough и Display Links являются независимыми.

Привяжите наш цилиндр к предыдущему цилиндру и назовите shank R - голень. Теперь попробуйте повращать бедро, а потом голень. Можете придать ноге какую-нибудь другую позу, например чуть согнуть её в колене. Туловище поднимите так, чтобы нога стояла на координатной сетке. Для этого можно воспользоваться другими окнами проекций, либо в перспективе создать плоскость (plane). Плоскость надо искать в геометрических объектах. Проверим, что плоскость находится на уровне нуля по z. В данном случае плоскость служет как вспомогательный объект, для того, чтобы ориентироваться не выходя из вида Перспектива, на какой высоте расположен наш персонаж. Как только нога начнёт исчезать, значит она стала ниже уровня нуля. Не стремитесь разместить персонаж очень точно, мы ведь пока только пытаемся понять, как устроены иерархии объектов.

Руку можно создать примерно так же, как создали и разместили ногу. Но чтобы сэкономить время и научиться полезным приёмам, сделаем следующее. Ккликните на бедро два раза подряд, (клики должны быть осуществлены быстро один за другим). По двойному клику выделяется родительский объект и все привязанные к нему объекты. У вас должно выделиться бедро и голень. Выполните операцию клонирования (вариант copy). В графе "name" пока ничего не пишите, имя можно изменить в любой момент. Теперь пододвиньте полученный клон, и увидите, что у нас скопировались сразу два объекта, причём скопировалась и иерархия между ними.

Рис. 4.4. Копирование иерархической ветви объектов

Разместите руку надлежащим образом. Верхний цилиндр назовите Upper arm R или humerus R - плечевая кость (плечо), а нижний цилиндр Forearm R - предплечие. Измените радиус и высоту цилиндров, сделайте их поменьше. При этом цилиндры могут разойтись. Чтобы подогнать их друг к другу, выберете систему координат Parent и попробуйте подогнать предплечье к плечу. Если совсем всё разъехалось, можно воспользоваться инструментом Align (выравнивание). Кнопка должна быть такой, как показано здесь. Вообще, в зависимости от режима, она может выглядеть по-разному (, , , , ). Нам нужен режим - align to object - выровнять положение, относительно объекта. Предплечие должно быть выделено. После выбора кнопки align to object, изменится курсор, теперь нужно выбрать объект, относительно которого надо выровнять выделенный объект. Нам надо выровнять относительно плеча, поэтому выберем плечо. Теперь откроется диалог (Рис. 4.5.):

Рис. 4.5. Диалог параметров выравнивания одного объекта относительно другого ( - align to object)

В группе Align Position (Local) выбираются координаты, по которым нужно осуществить выравнивание (выбирете все), а ниже в группах Cerrent Object и Target Object выбрирается, что относительно чего выровнять.

Cerrent Object (текущий объект) - тот объект, положение которого мы выравниваем

Target Object (Целевой объект) - объект, относительно которого выравнивается положение нашего объекта.

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

Center (центр) - геометрический центр объекта, определяется как центр параллелепипеда, ограничивающего объект

Pivot Point (опорная точка) - центр координат объекта, либо вспомогательная опорная точка, если имеется.

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

Мы выберем для обоих объектов Cerrent Object (текущий объект) и Target Object (Целевой объект) для обоих Pivot Point, тогда наш объект (предплечие) переместится в пространстве так, чтобы его опорная точка находилась там же, где и опорная точка объекта назначения (плеча).

Так же обратите внимание на то, что ниже есть группы Align Orientation (Local) - выровнять ориентацию и Match Scale - согласовать масштабы. Align Orientation (Local) - задаёт текущему объекту те же значения поворота по вбранным осям, что и у целевого объекта, Match Scale - делает масштабы текущего объекта по выбранным осям такими же, как у целевого объекта.

В нашем случае, ориентацию можно выровнять, можно не выравнивать. Главное, что после выравнивания центры координат обоих цилиндров совпадут. Теперь если выбрать вспомогательную систему координат типа Parent (родительский объект), то мы сможем перемещать предплечие относительно системы координат плеча. Выберем ось z и сместим предплечие вдоль неё в район локтя.

Теперь осталось сделать персонажу ступню и доделать вторую половину. Ступню мы сделаем из объекта Box (ящик), который имеет форму прямоугольного параллелепипеда. Назовём ящик foot R - ступня правая. Если мы его создавали в окне проекции top или Perspective, то опорная точка находится на центре нижней грани ящика. Конечно, можно выбрать размеры ящика так, чтобы он был высокий с узким дном и повернуть его, но это не выход. Допустим, мы хотим, чтобы опорная точка располагалась на ребре ящика, которое будет являться пяткой. Чтобы поменять положение опорной точки, зайдём во вкладку (hierarchy - иерархия). В группе Ajust Pivot (настроить опорную точку) - нажмём affect pivot only.

Рис 4.6. Настройка положения опорной точки ступни

Поверх наших локальных осей появятся большие толстые оси (Рис. 4.6.). Нажмём кнопку перемещение и пододвиним центр системы новых осей в нужное нам место. После этого выключим кнопку Affect Pivot Only.

Примечание: пока кнопка Affect Pivot Only включена, становятся активными кнопки в меню Alignment.

Center to Object - помещает опорную точку в центр объекта.

Align to Object - выравнивает направление осей опорной точки относительно системы координат самого объекта.

Align to World - выравнивает направление осей опорной точки относительно мировой системы координат.

Обратите внимание, что в панели инструментов есть кнопочка-переключатель ( , ).

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

- центр вспомогательной системы координат находится в геометрическом центре объекта.

- центр вспомогательной системы координат помещён в центр Мира.

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

Разместим ступню в нужном месте и привяжем её к голени. Быстро разместить ступню можно при помощи того же инструмента Align to Object, только выбрать выравнивание по координатам x и y, галочку z не нажимать. Если голень стоит под углом к плоскости земли, удачного выравнивания не будет, надо будет подгонять вручную.

Привяжите ступню к голени. Включите для ступни Display Links во вкладке Display, можно так же включить See Trough. Если связи (links) видны плохо, можно в меню вида (если кликнуть по надписи Perspective) поставить галочку напротив Wireframe (каркас). Тогда все объекты будут отображаться в виде сеток, а связи будет видно хорошо. Те объекты, для которых включено See-Trough будут отображены серыми сетками. Чтобы вернуться обратно к режиму оттенения, в меню вида надо выбрать Smooth+Highligth (Сглаживание + блики).

Чтобы сделать вторую руку и вторую ногу, воспользуемся инструментом mirror (отражение). Для этого выделим все части ноги (можно двойным кликом по бедру) и все части руки (нажмём Ctrl и выделим объекты вручную, при нажатой клавише Ctrl двойным кликом выделять иерархии нельзя). Нажмём кнопку mirror. Появится диалог. В группе Mirror Axis нужно выбрать направление, вдоль которого отразить объект. Направление указывается во вспомогательной системе координат, поэтому перед нажатием кнопки Mirror, выбирете систему координат World. Далее идёт группа Clone Selection, где можно выбрать метод клонирования (об этом уже говорилось выше), либо вообще не клонировать объект (no clone).

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

Пока не снялось выделение, переместите отражённые части при помощи мышки так, чтобы они встали на своё место (двигайте только по оси x). Если вы хотите достичь точной симметрии располозжения, придётся сделать это вручную. Сначала выделите бедро правой ноги. Откройте диалог Transform Type-in кликнув правой кнопкой миши по кнопки перемещения move. Скопируйте в буффер обмена занчение координаты x (выделить значение, щёлкнуть првой кнопкой миши и выбрать в развернувшемся меню "копировать/copy", или просто нажать на клавиатуре Ctrl+с). Можете не закрывать окно, выберите теперь левое бедро. Выделите значение координаты x, и вставьте вместо него значение из буфера обмена (правая кнопка миши - выбрать "вставить/paste", либо нажатие клавиш Ctrl+v). (Если кто не знает, плюс нажимать не надо, он означает, что обе клавиши должны быть нажаты одновременно). У координаты x смените знак на противоположный. Если у вас право и лево не перепутано местами, то правой стороне соответствуют отрицательные значения x, а левой - положительные. Координаты y и z должны быть теми же, что и у правой половины. Если вы случайно не сдвинули ваши левые конечности по этим осям, эти координаты подправлять не надо.

Отражение осуществляется за счёт изменения масштабов на отрицательные величины, теперь, если вы выделите какую-нибудь левую часть тела и откроете окно Transform Type-In для масштабов, то увидите, что по оси x масштаб у нас отрицательный.

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

Ту же операцию проделайте для плеча руки.

Если вы всё сделали правильно, то ваша сцена должна выглядеть примерно так (Рис. 4.7):

Рис. 4.7.

Цвета могут быть и другими, они выбираются для объектов случайным образом. Главное, связи должны быть расположены так, как на рисунке. Осталось только переименовать каждую левую часть тела из [часть тела R01] в [часть тела L].

Примечание 1: Вообще, части тела персонажа лучше именовать по следующей схеме:

Имя_персонажа часть_тела L или R.

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

Примечание 2: Объект, к которому привязаны все остальные объекты иерархии, называется корневым объектом (root). В нашем случае, корневым объектом является туловище (body). Если двигать корневой объект, вся иерархия будет двигаться вместе с ним, как единое целое.

Закрепление позиций дочерних объектов. Наследование движения.

Однако, объекты иерархии по-прежнему двигаются друг относительно друга. Неосторожным движением мыши мы можем сбить положение рук, ног или тех или иных их частей. Предохранить объекты от случайного перемещения можно во вкладке Hierarchy . Если нажать кнопку Link Info (информация о связях), то мы увидим две группы: Locks (дверные замки) и Inherit - наследование.

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

Чтобы не ставить флажки каждой части тела по отдельности, выделим все части иерархии, кроме корневого объекта (body). Быстро это можно сделать двойным кликом по body, а затем, удерживая нажатой клавишу Ctrl, один раз кликнуть по body, чтобы снять с него выделение.

Поставим флажки для перемещения (move) по всем трём координатам. Теперь выделите какой-нибудь один объект (кроме body) и попробуйте переместить. Объект не движется. Но он по-прежнему может вращаться и масштабироваться. Если вы попробуете выделить и подвигать body, оно по-прежнему двигается вместе со всеми привязанными к нему частями. Если сейчас поставить флажки для движения объекта body, то и он перестанет перемещаться.

Можете поставить Lock для масштабирования всех частей тела, кроме body.

Свойства Inherit (наследование) - определяют, какие движения и по каким координатам должен повторять дочерний объект за своим родителем. Чтобы понять, что же это означает, поставим флажки Inherit для некоторых координат ступней. Чтобы было видно, что надо поставить, выделим ступню. Выберем систему координат Local. Если у нас была включена кнопка move (движение), вспомогательная система координат ступни исчезла. Это произошло потому, что мы запретили для ступни движение по всем направлениям. Если мы сейчас уберём флажок для одной из координат, то увидем соответствующую ось.

Если вы убрали флажок, поставьте его на место и нажмите кнопку Rotate. К сожалению, здесь названия осей видны плохо. Чтобы сориентироваться в их направлении, надо либо вспомнить, какой цвет какой оси соответствует (x - красный, y - зелёный, z - синий), либо нажать Scale (если мы не запрещали масштабирование). Если у нас запрещено и Move и Scale, чтобы увидеть оси, придётся временно убрать в одной из этих трансформаций запрещающие флажки.

Рис. 4.8. Настройка параметров наследования трансформаций дочерними объектами

На рисунке 4.8. видно, что система координат показана при нажатой кнопке Scale (масштабирование), потому что масштабирование у нас не запрещено. Оси масштабирования направлены так же, как и у собственной системы координат ступни, поскольку у нас выбрана вспомогательная система координат Local.

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

Рис 4.9. Вращение ноги при отключённом наследовании поворота по оси X у ступни.

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

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

Здесь можно скачать модель, которая должна была получиться в результате наших стараний (формат 3ds MAX 6).


<< Назад Оглавление   Вперёд >>
homepage: http://teapot3d.narod.ru
Используются технологии uCoz