Анимация движения танковой гусеницы

Владимир Верстак

Часть первая

Если вы занимаетесь моделированием и анимацией в программе 3 ds max , то вас навряд ли обошла стороной такая тема как моделирование колесной и гусеничной техники. Создавая модели такого уровня сложности, всегда хочется добавить еще какую-нибудь «изюминку» к выполненной работе. Таким дополнением может послужить анимация движения. В настоящем упражнении мы рассмотрим один из способов создания и анимации танковой гусеницы.

СОВЕТ

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

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

ПРИМЕЧАНИЕ

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

рис. 1

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

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

  1. Построить длинную цепочку из повторяющихся элементов, а затем деформировать ее по сплайну.
  2. Анимировать одно звено с использованием сплайна, а затем создать копии этого звена со смещением: один кадр анимации - одно звено.

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

  • Позиционируйте окно проекции Top (Сверху) так, чтобы звено гусеницы по высоте заняло максимально возможную площадь (так будет проще делать замер и меньше его погрешность);
  • Выполните замер поперечной ширины звена, исключая размер выступающих шипов (реальный размер, который будут иметь звенья, составленные в цепочку). Для этого воспользуйтесь командой главного меню Tools>Measure Distance (Сервис>Измерить расстояние). После вызова команды щелкните на начальной и конечной точке замеряемого участка и в строке состояния, а так же с поле ввода макрокоманды появится необходимая цифра. В моем случае это 3,805 (рис. 2 )
рис. 2
  • Узнайте длину сплайна, который является формой пути для гусеницы. Сделать это просто, достаточно выделить сам сплайн и воспользоваться утилитой Measure (Линейка), находящейся на вкладке Utilities (Сервис) панели управления. Там, в группе Shapes (Формы), будет указана длина сплайна (рис. 3).

ПРИМЕЧАНИЕ

Если в свитке Utilities (Сервис) нет кнопки с именем Measure (Линейка), она может находиться в списке утилит, доступных по нажатию на кнопку More (Дополнительно).

рис. 3
  • Разделите длину сплайна на ширину звена и вы получите необходимое количество копий, а так же кадров анимации. Округлив значение до целого числа, у меня получилось 90.
  • Выполните изменение количества кадров анимации до 90. Сделать это можно воспользовавшись кнопкой Time Configuration (Настройка временных интервалов) , расположенной в правом нижнем углу интерфейса программы. После того, как откроется одноименное окно диалога, установите в поле End Time (Время окончания) группы Animation (Анимация) значение 90 (рис. 4)
рис. 4

Начнем с анимации, и для ее построения выполните следующее:

  • Вы одном из окон проекций выделите звено.
  • Выполните из главного меню команду Animation>Constraints>Path Constraint (Анимация>Ограничения>Ограничения пути) и укажите на сплайн track_path в качестве формы пути.
  • В свитке Path Parameters (Параметры пути) установите флажок на Follow (Следовать) для того, чтобы объект поворачивался вместе с поворотом кривой, флажок на Allow Upside Down (Разрешить переворачиваться) - по умолчанию контроллер придерживается одной локальной оси, а у нас замкнутая кривая, выберите ось Y и установите флажок на Flip (Обратить) (рис. 5)
рис. 5
  • Выделите звено и выполните создание его копий, для чего воспользуйтесь командой главного меню Tools>Snapshot (Сервис>Снимок). В результате откроется одноименное окно диалога (рис. 6), где установите переключатель на Range (Диапазон), а в полях From (От), To (До) и Copies (Копий) установите значения 0 , 89 и 90 соответственно. Метод клонирования укажите как Instance (Образец).
рис. 6

ПРИМЕЧАНИЕ

Значение поля To (До) равное 89 объясняется тем, что выполнив полный круг в замкнутой форме объект вернется в начальное положение.

Полученный результат клонирования одного звена представлен на рисунке (рис. 7).

рис. 7

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

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

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

Наверное, ни для кого не секрет, что программа 3 ds max обладает возможностью отслеживать и записывать почти все команды и действия, выполняемые в процессе работы. Делается это при помощи модуля MAXScript Listner (Интерпретатор MAXScript ), вызвать который можно из главного меню или с использованием клавиши быстрого доступа F11. Для нас эта возможность окажется основным источником списка будущих макрокоманд. Но прежде чем что-то делать, давайте обратимся к рассмотрению последовательности шагов, которые нам необходимо будет выполнить на пути создания анимированной гусеницы.

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

Давайте перейдем от теории к практике. Начнем с настройки записи макрокоманд. Вызовите окно диалога MAXScript Listner (Интерпретатор MAXScript ), для чего используйте либо одноименную команду главного меню либо клавишу быстрого доступа F11 . В меню открывшегося окна MacroRecoder (Запись макроса) щелкните на строке Enable (Включить) для включения записи всех выполняемых команд (рис. 8).

рис. 8

Окно интерпретатора разделено на две части: в верхней выводятся макрокоманды, соответствующие выполняемым действиям, а в нижней отладочная информация. Одновременно нижнее окно является и полем для ввода макрокоманд. Давайте посмотрим как это все работает. Выделите в сцене звено гусеницы и выполните его копирование через буфер обмена (или любым доступным способом) с помощью клавиш быстрого доступа Ctrl+с и вставки Ctrl+v. В результате выполненных действий в верхней части окна появится запись, состоящая из трех строк. Для исполнения этого кода откройте окно редактора макрокоманд, для чего выполните из главного меню команду MAXScript>New Script ( MAXScript>Создать макрос). В окне отладчика выделите строки, созданные программой автоматически и перетащите их в окно редактора. Закомментируйте вторую строку, поставив перед ней два знака «минус» (она вызывает окно диалога клонирования объекта и нам не нужна) (рис. 9) и выполните макрос, воспользовавшись командой меню окна диалога File>Evaluate All (Файл>Оценить все), предварительно удалив уже построенную копию звена. Проверьте список объектов, вызвав его кнопкой Select By Name (Выделить по имени) и убедитесь в том, что макрос создал копию объекта track.

рис. 9

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

  • В одном из окон проекций выделите звено с именем track.
  • Перейдите на вкладку Motion (Движение) командной панели и в свитке Assign Controller (Назначить контроллер) выберите строку с именем Position : Position XYZ (Положение: Положение по XYZ ) (рис. 10).
рис. 10
  • В этом же свите щелкните на кнопке Assign Controller (Назначить контроллер) и в появившемся окне диалога Assign Position Controller (Назначить контроллер положения) выберите строку с именем контроллера Path Constraint (Ограничения по пути) (рис.11)
рис. 11
  • В свитке Path Parameters (Параметры пути) щелкните на кнопке Add Path (Добавить путь) и в одном из окон проекций укажите на сплайн пути track_path .
  • В этом же свитке, в группе Path Options (Параметры пути) установите флажок на Follow (Следовать), флажок на Allow Upside Down (Разрешить переворачиваться), выберите ось Y и установите флажок на Flip (Обратить). Настройки такие же, как и для построения статических копий звена (рис. 5)

После выполнения описанных выше операций, обратитесь к окну диалога MAXScript Listner (Интерпретатор MAXScript ), выделите и переместите в окно редактора макрокоманд пять последних строк, относящихся к выбору и настройке контроллера Path Constraint (Ограничения по пути) (рис. 12).

рис. 12
 

Часть вторая

Если бы мы сейчас запустили на выполнение этот код, то у нас было бы создано еще одно звено и присвоен копии звена с именем track01 контроллер Path Constraint (Ограничения по пути). Но обратите внимание на то, что когда мы выбирали сплайн пути, интерпретатор не внес соответствующую строку в список выполненных операций. В связи с этим, необходимо дописать в окно редактора следующую строку: $.pos.controller.path=$track_path .

Как уже говорилось ранее, у контроллера Path Constraint (Ограничения по пути) есть один анимируемый параметр - Percent (Проценты). Это проценты пройденного объектом пути, и они автоматически установились в нулевом и последнем кадре анимации. Но нам не нужна анимация, устанавливаемая по умолчанию, мы собирается все копируемые объекты привязывать к одному звену - track . В связи с этим нам необходимо удалить сгенерированные автоматически ключи анимации. Это можно сделать, добавив в код еще одну строку - deleteKeys $. pos . controller . percent . keys .

ПРИМЕЧАНИЕ

Обратите внимание на то, что вначале всех строк стоит знак $ и далее идет точка. Этот знак указывает на то, что следом за ним должно идти имя объекта, но т.к. его нет, то подразумевается выделенный объект сцены.

Если сейчас запустить код на исполнение, то мы получим копию объекта track, к которому будет применен контроллер движения вдоль пути track_path и все ключи анимации будут из контроллера удалены. Далее нужно построить зависимость, при которой созданная копия объекта будет следовать за основным объектом. Для этого необходимо выполнить следующие операции:

  • Выделите в одном из окон проекций или выберите из списка скопированный объект track01.
  • Перейдите к свитку Assign Controller (Назначить контроллер) и щелкните на знаке плюс, расположенной рядом со строкой Position : Path Constraint (Положение: Ограничения по пути) и щелкните в открывшемся списке на строке Percent: Linear Float (Проценты: Линейное значение с плавающей точкой) (рис. 13)
рис. 13
  • Щелкните на кнопке Assign Controller (Назначить контроллер) и в появившемся окне диалога Assign Position Controller (Назначить контроллер положения) выберите строку с именем контроллера Float Script (Скрипт, использующий значения с плавающей точкой).
  • Щелкните на кнопке Ok и откроется окно для ввода скрипта. Закройте это окно.
  • Обратитесь к окну диалога MAXScript Listner (Интерпретатор MAXScript ), выделите и переместите в окно редактора макрокоманд последнюю строку кода.

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

рис. 14

Пришло время добавить в редактор несколько строк, написанных самостоятельно, без помощи окна диалога MAXScript Listner (Интерпретатор MAXScript ).

Начнем с самого начала.

  • Добавьте первой строкой for i = 1 to 90 do ( , что будет означать создание цикла выполняющего выражение, находящееся внутри круглых скобок, начиная от одного до 90. Число 90 - это количество копий звена танковой гусеницы (если помните, их мы рассчитали ранее).
  • Удалите закомментированную вторую строку и немного видоизмените третью. Сейчас она и четвертая строка должны выглядеть так:

next_track=copy $track

select next_track

  • Здесь мы создаем переменную с именем next_track , которой присваиваем значение созданной копии звена. Это делается для того, чтобы в следующей строке мы могли, обратившись к копии по имени, выделить ее, и все дальнейшие операции применять уже к копии основного объекта.
  • В самом низу кода допишите выражение $.pos.controller.percent.controller.script ="at time (currenttime) $track.pos.controller.percent*0.01+0.011*"+i as string.

В первой части этого выражения мы обращаемся к скрипт-сонтроллеру, созданному в предыдущей строке и присваиваем ему строковое выражение, находящееся в правой части. Что же оно означает? А означает оно следующее: в текущий момент времени ( at time ( currenttime ) ) присвоить контроллеру выделенного объекта, управляющему процентами ( $. pos . controller . percent . controller . script ), значение процентов контроллера объекта track ( $ track . pos . controller . percent ) деленное на 100, т.к. на самом деле значение процентов считается не от нуля до ста, а от нуля до единицы (иначе говоря, *0.01 ) и прибавляем смещение на одно звено (общие проценты пути, деленные на количество звеньев: 1/90=0.011 ). Далее все значение, расположенное в правой части умножаем на порядковый номер (он же номер кадра), который в первой строке присваивается переменной i . Но, так как код записывается в виде строковой переменной, числовое значение необходимо вынести за кавычки и обозначить его как строковую переменную ( i as string ), оставив в кавычках знак умножения. Умножение на число i позволит каждому новому звену смещаться на соответствующую величину.

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

setBeforeORT $.pos.controller.percent.controller #cycle

setAfterORT $.pos.controller.percent.controller #cycle

  • Завершает весь код закрывающая круглая скобка (рис. 15)
рис. 15

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

ВНИМАНИЕ

Должен обратить ваше внимание на то, что минимальное значение скорости должно устанавливаться сразу, так как регулировка скорости в дальнейшем возможна будет только в сторону увеличения.

Установите общее число кадров анимации в 400, для чего откройте окно диалога Time Configuration (Настройка временных интервалов) и в поле End Time (Время окончания) введите значение 400. После этого в одном из окон проекций выделите объект track и передвиньте ключевой кадр из 100-го, созданного по умолчанию в 400-ый.

СОВЕТ

Быстрым способом изменения временного диапазона шкалы может служить комбинация клавиш быстрого доступа Ctrl + Alt в сочетании нажатием и удержанием правой кнопки мыши на шкале анимации. Перемещение курсора влево или право позволит либо уменьшать, либо увеличивать временной диапазон анимации. Нажатие этих же клавиш в сочетании с левой кнопкой мыши позволяет изменять начало временного диапазона, установленное по умолчанию в ноль.

И последнее, что необходимо сделать - это установить зацикливание для анимации нашего главного звена. Для этого необходимо выделить объект track и открыть окно редактора кривых. Чтобы сделать это выполните из главного меню команду Graph Editors>Track View - Curve Editor (Редакторы графов>Просмотр треков-Редактирование кривых), в результате откроется окно редактора кривых, в левой части которого необходимо выбрать анимированный трек для выделенного объекта (рис. 16).

рис. 16

В окне редактора кривых щелкните на кнопке Parameter Curve Out - of - Range Types (Типы экстраполяции параметрических кривых) , в результате чего откроется окно диалога Param Curves Out - of - Range Types (Типы экстраполяции параметрических кривых). В этом окне щелкните на кнопках со стрелками под значком Cycle (Циклический) (рис. 17).

рис. 17

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

ПРИМЕЧАНИЕ

Хочу напомнить о том, что основной объект с именем track имеет два ключа анимации соответствующих положению нуля и ста процентам пройденного пути. Если изменять на временной шкале положение ключа, имеющего значение 100 процентов, будет происходить изменение скорости движения. Например, передвинув ключ анимации с 400-го на 200-ый вы увеличите скорость движения гусеницы в два раза.

Продолжим построение анимации и выполним анимацию вращательного движения колес, по которым движется гусеница. Если представить себе вращение колеса в зависимости от движения гусеницы, то можно сказать, что колесо выполнит столько оборотов за один оборот гусеницы, сколько в длине сплайна укладывается длин окружностей колеса. Давайте попробуем разобраться в этом на практике. Первым делом узнаем диаметр колеса. Для этого необходимо выделить большое колесо и во вкладке Utilities (Сервис) командной панели щелкнуть на кнопке Measure (Линейка). В группе Dimensions (Размеры), посмотрите размер колеса по осям Y и Z . Таким образом, значение диаметра колеса будет составлять в нашем случае 16.693 .

ПРИМЕЧАНИЕ

Как уже упоминалось выше, если в свитке Utilities (Сервис) нет кнопки с именем Measure (Линейка), она может находиться в списке утилит, доступных по нажатию на кнопку More (Дополнительно).

Как все мы помним из математики, окружность составляет 2pi*R или pi*D , где число pi постоянная величина, а D наш диаметр колеса. Таким образом длина окружности большого колеса равна 3.14 * 16.69=52.4066 . Разделив длину сплайна пути track_path на полученную величину, узнаем сколько оборотов сделает колесо за один оборот гусеницы: 344.721/52.4066=6.578 . Осталось только привязать вращение колеса к скорости движения гусеницы. Сделать это можно еще раз воспользовавшись анимацией процентов пройденного пути.

ПРИМЕЧАНИЕ

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

Для анимации колеса обратимся к вкладке Motion (Движение) панели управления.

  • Первым делом выделите колесо с именем Wheel01 и перейдите к свитку Assign Controller (Назначить контроллер).
  • В свитке Assign Controller (Назначить контроллер) раскройте список контроллеров для осей поворота и выберите строку с именем Y Rotation: Bezier Float ( Y Поворот: Значение Безье с плавающей точкой) (рис. 18)
  • рис. 18
  • Щелкните на кнопке Assign Controller (Назначить контроллер) и выберите из появившегося списка контроллер Float Expression (Выражение с плавающей точкой). Щелкните на кнопке Ok для подтверждения выбора.
  • В левой части открывшегося окна диалога Expression Controller (Контроллер выражения), в группе Create Variables (Создать переменную) создайте переменную с именем pathPerc , для чего в поле Name (Имя) впишите имя переменной и щелкните на кнопке Create (Создать) (рис. 19).
рис. 19

В нижней части окна диалога щелкните на кнопке Assign to Controller (Назначить контроллеру) и в появившемся окне диалога Track View Pick (Выбрать трек) выберите объект с именем Track и, раскрыв его списки параметров, активизируйте строку Percent : Linear Float (Проценты: Линейное значение с плавающей точкой) (рис. 20)

рис. 20
  • В правой части окна диалога Expression Controller (Контроллер выражения), в окне Expression (Функция) запишите следующее выражение: degToRad (6.578*360* pathPerc ) и щелкните на кнопке Evaluate (Оценить).
  • Проверьте анимацию, щелкнув на кнопке Play Animation (Воспроизвести анимацию) . Колесо должно вращаться вместе с вращением гусеницы.

Давайте вернемся немного назад и разберемся в том, какое выражение было записано в окне функции. Необходимо отметить, что программа 3 ds max рассчитывает все повороты в радианах, а мы привыкли оперировать градусами. Этим вызвана первая запись - degToRad () . Выражение в скобках не что иное, как угол поворота колеса в градусах. Складывается он из количества оборотов колеса на один оборот гусеницы, рассчитанный нами ранее ( 6.578 ), умноженное на 360 градусов (не что иное как один полный оборот в градусах) и умноженное на процент пройденного пути, который мы получаем от объекта track с использованием созданной нами переменной pathPerc .

Сейчас, когда одно колесо анимировано, можно связать эту анимацию с остальными колесами. Сделать это просто, если воспользоваться окном диалога Parameter Wire Dialog (Окно диалога параметров связей). Для этого выполните следующие действия:

  • Выполните из главного меню команду Animation>Wire Parameters>Parameter Wire Dialog (Анимация >Параметры связей>Окно диалога параметров связей), в результате чего откроется окно диалога Parameter Wiring (Связываемые параметры).
  • В левой части окна диалога выберите из списка анимированное колесо ( Wheel01 ). Разверните список параметров выбранного объекта щелкнув на знаке «плюс» слева от имени и выберите из списка строку Y Rotation: Float Expression ( Y Поворот: Выражение с плавающей точкой).
  • В правой части окна диалога выберите из списка следующее большое колесо - Wheel02 .Так же разверните списки параметров и выберите строку с именем Y Rotation: Bezier Float ( Y Поворот: Значение Безье с плавающей точкой).
  • Щелкните на кнопке со стрелкой, указывающей слева направо, что будет указывать на то, что выбранный параметр левого объекта будет управлять выбранным параметром объекта справа.
  • Щелкните на кнопке Connect (Соединить) для завершения создания связи (рис. 21)
рис. 21
  • Повторите вышеописанные операции назначения связей для двух оставшихся больших колес. В моем случае это колеса с именами Wheel03, Wheel04 .

Для меньших колес, расположенных в верхней части гусеницы, необходимо изменить выражение, записываемое в поле Expression for Y _ Rotation (Функция для поворота по оси Y ) на следующее: Y_Rotation+degToRad((7.379-6.578)*360) (рис. 22). Это выражение означает, что угол поворота по оси Y малого колеса будет равняться углу поворота большого колеса плюс угол, который получился из разницы количества оборотов большого и малого колеса помноженного на 360 градусов. Количество оборотов малого колеса считается по той же формуле, что и для большого, т.е. длина пути делится на длину окружности колеса.

рис. 22

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

  • В главной панели инструментов щелкните на кнопке Select By Name (Выделить по имени) и выберите из списка все объекты с именем track . Это не что иное, как все звенья танковой гусеницы.
  • Щелкните на выделении правой кнопкой мыши и выберите из контекстного меню команду Hide Selected (Спрятать выделенное).
  • Немного выше правого верхнего колеса постройте объект Rectangle (Прямоугольник) небольшого размера (рис. 23). Форма и размер этого объекта не имеют принципиального значения, так как он будет выступать лишь в роли вспомогательного объекта, к которому будут привязываться вершины сплайна пути.
рис. 23
  • Выделите построенный прямоугольник, если он не остался выделенным после построения и перейдите на вкладку Utilities (Сервис) командной панели и в одноименном свитке щелкните на кнопке Reset XForm (Сбросить преобразования).

ВНИМАНИЕ

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

  • В окне проекции Left (Слева) выберите сплайн пути ( track_path ) и перейдите к вкладке Modify (Изменить) командной панели.
  • Перейдите на уровень редактирования вершин и выберите две вершины, расположенные рядом с правым верхним колесом (рис. 24)
рис. 24
  • Примените к выбранным вершинам модификатор Linked XForm (Связанное преобразование), который можно найти в списке модификаторов вкладки Modify (Изменить).
  • В свитке Parameters (Параметры) (рис. 25) модификатора Linked XForm (Связанное преобразование) щелкните на кнопке Pick Control Object (Указать контролирующий объект) и в одном из окон проекций выберите построенный прямоугольник.
рис. 25
  • Выполните проверку сделанной привязки, для чего в окне проекции Left (Слева) выделите и произвольно переместите прямоугольник. Вместе с прямоугольником должны перемещаться вершины сплайна пути.
  • Отмените выполненные перемещения, вернув вершины сплайна пути в исходное состояние.
  • Привяжите к прямоугольнику правое верхнее колесо, для чего на главной панели инструментов щелкните на кнопке Select and Link (Выделить и связать) , затем щелкните на колесе и когда курсор примет соответствующий вид, перетащите его на прямоугольник.
  • Снова выполните проверку правильности привязки, перемещая прямоугольник. На сей раз, вместе с вершинами сплайна, будет перемещаться колесо.
  • Далее необходимо выполнить такие же привязки для всех остальных колес. Отличие состоит лишь в том, что для выбора необходимых вершин применяется модификатор Spline Select (Выбор сплайна) или Edit Spline (Редактирование сплайна). Давайте рассмотрим пример привязки следующего колеса.

  • Выполните копирование прямоугольника или постройте новый и разместите его напротив второго колеса (рис. 26).
рис. 26
  • Если вы построили новый прямоугольник выполните сброс преобразований, для чего перейдите на вкладку Utilities (Сервис) командной панели и в одноименном свитке щелкните на кнопке Reset XForm (Сбросить преобразования).
  • Вернитесь к стеку модификаторов сплайна пути, для чего выделите сплайн track_path и перейдите к вкладке Modify (Изменить).
  • Выберите из списка модификаторов модификатор Spline Select (Выбор сплайна).
  • Перейдите на уровень редактирования вершин, развернув список подобъектов модификатора и выбрав строку Vertex (Вершина).
  • Выделите две вершины, расположенные у основания второго колеса.
  • Примените к выбранным вершинам модификатор Linked XForm (Связанное преобразование), выбрав его из списка модификаторов.
  • В свитке Parameters (Параметры) (рис. 27) модификатора Linked XForm (Связанное преобразование) щелкните на кнопке Pick Control Object (Указать контролирующий объект) и в одном из окон проекций выберите второй прямоугольник.
рис. 27
  • Привяжите ко второму прямоугольнику второе колесо, для чего на главной панели инструментов щелкните на кнопке Select and Link (Выделить и связать) , затем щелкните на колесе и когда курсор примет соответствующий вид, перетащите его на прямоугольник.
  • Проверьте анимацию.

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

По этой ссылке можно скачать архив (980 kb) с видеороликом к данному уроку.

 


Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6430