30.09.2019

D Max Скрипт Движения Колес

Автор перевода Viktor.XBB Глава 8: Создание транспортных средств В этой главе мы рассмотрим: Создание модели нового автомобиля (CGA) Создание XML файла (скрипта) для автомобиля Редактирование скорости автомобиля Редактирование массы автомобиля Определение места посадки водителя Настройка камеры для автомобиля Оружие для автомобиля Настройка системы повреждений автомобиля (урон) К этому моменту мы рассмотрели большинство основных принципов, лежащих в основе CryENGINE 3. В этой главе мы рассмотрим некоторые дополнительные возможности путём создания новых транспортных средств, с возможностью использовать их на нашем уровне. Создание модели нового автомобиля (CGA) В этом уроке мы покажем вам, как создать примитивную модель автомобиля, которая будет использоваться в следующем уроке. Этот урок не рассматривается в качестве руководства по моделированию автомобиля, а в качестве шаблона для того, чтобы показать, как должна быть создана модель транспортного средства с возможностью применить к ней XML-сценарий. В этом уроке будет использован 3DSMax для создания и экспорта модели в нужный формат (.CGA). Это интересно.CGA (Crytek Geometry Animation):.CGA файл создается в 3D редакторе и содержит данные об анимации жесткой геометрии тела. Формат поддерживает только напрямую связанные объекты, и не поддерживает каркасную анимацию (костная анимация) с взвешенными вершинами.

Feb 17, 2006 - Таким дополнением может послужить анимация движения. Команду главного меню MAXScript > New Script (MAXScript > Создать макрос). Π*D, где число Π — постоянная величина, а D — диаметр колеса.

Работает вместе с.anm файлами. Рассмотрите урок 'Создание и экспорт статических объектов' Глава 6: Создание актива. Создайте в 3DSMax примитивный объект Box (будет кузовом) и четыре объекта Cylinder (колёса).

Затем добавьте ложный объект Dummy. После создания основных примитивов в 3DSMax мы должны переименовать их. Измените имена объектов в соответствии с примером: Объект Dummy = MyVehicle Объект Box (кузов) = body Переднее левое колесо = wheel1 Переднее правое колесо = wheel2 Заднее левое колесо = wheel3 Заднее правое колесо = wheel4 Это интересно.

Помните, для корректной работы модели и экспорта её в графический двигатель CryENGINE 3, воспользуйтесь функцией X-forms в 3DSMax. Теперь можно установить иерархию объектов в нашей модели, для дальнейшего создания script файла: 1.

В 3DSMaxe воспользуйтесь Schematic View и в нём свяжите все колёса с кузовом (находится в Graph Editors). Свяжите кузов с объектом dummy (MyVehicle). Должно получиться примерно так: Затем, создайте proxy mesh (коллизионную сетку) для тела и каждого колеса.

Убедитесь, что присоединили proxy mesh к каждой детали модели. Proxy mesh могут быть копией той модели, что мы создали, в виде упрощённой геометрии.

Прежде, чем мы экспортируем эту модель, сделайте для неё окончательную настройку: 1. Выровняйте модель автомобиля так, чтобы колёсами он стоял по оси Z в положении 0. Не перемещая тело или колёса, убедитесь, что помощник MyVehicle (dummy объект) расположен в координатах 0, 0, 0. Расположите объект body так, чтобы он имел координаты 0, 0 по осям XY. В окне Left вы должны видеть нечто похожее: После того, как вы установите материал для модели, можно перейти к экспорту. Эту модель мы будем экспортировать в формате.CGA и нам понадобятся следующие настройки экспортёра: 1.

Во вкладке Utilities откройте CryENGINE Exporter. Выберите MyVehicle (dummy объект) и щёлкните кнопку Add Selected. Выберите для экспорта формат Animated Geometry (.cga). Отметьте параметр Export File per Node галочкой (должен иметь значение true). С параметра Merge All Nodes снимите галочку (должен иметь значение false). Сохраните модель 3ds Max по адресу MyGameFolder Objects vehicles MyVehicle.

Щёлкните Export Nodes для экспорта модели в формате.CGA. Как это работает. Проделанные настройки являются основными настройками для.CGA модели и используются для транспорта в CryENGINE 3. Такую же настройку можно увидеть в примере актива для SDK, если рассмотреть модель HMMWV. Полная модель HMMWV может показаться очень сложной, но при этом, на самом деле, она состоит из простых частей. Принцип настройки этой модели точно такой же, как тот, что использовали мы. Главной причиной для разделения модели на части является то, что каждая деталь в итоге выполняет свои функции, подчиняясь программному коду.

Поскольку все четыре колеса представлены раздельно, вы можете управлять их скоростью вращения, анимацией и т.д. Через скрипт для каждого в отдельности. Так как все колёса привязываются к корпусу модели, корпус управляет положением колёс, пытаясь выровняться во время езды. Тело определяется графическим двигателем как основная модель, а все дополнительные элементы, такие как колёса, двери, башни (для танков) подчиняются корпусу. Dummy объект является основой модели для редактора и часто используется, например, при создании LOD для объекта. LOD (Levels Of Detail) - приём в программировании трёхмерной графики, заключающийся в создании нескольких вариантов одного объекта с различными степенями детализации, которые переключаются в зависимости от расстояния объекта до виртуальной камеры.

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

Этот метод использовался в Crysis 2 на примере такси. Такси в игре является моделью обычного гражданского автомобиля. С помощью Dummy на крышу автомобиля был добавлен дополнительный элемент в виде прямоугольного знака такси. Этим способом удалось сэкономить производительность, поскольку обрабатывалась одна и та же модель в разных случаях. Детали для автомобилей и их безграничные возможности Добавление основного тела и четырех колес, чтобы сделать основную автомобильную модель является только началом.

D Max Скрипт Движения Колесика

Можно создать много дополнительных частей, которые будут отсоединены и взорваны через сценарии повреждения, которые мы рассмотрим позже. Возможности безграничны. Создание XML файла (скрипта) для автомобиля В этом примере мы покажем вам, как создать новый сценарий для CryENGINE 3, чтобы редактор мог распознать вашу модель автомобиля как механизм. Для изучения этого примера у вас должны быть элементарные знания в форматировании.XML файлов.

Создайте новый.XML файл в любом XML редакторе (Notepad, Notepad, UltraEdit). Это интересно. Файл MyVehicle.xml должен быть расположен по адресу Game Scripts Entities Vehicles lmplementations Xml. Откройте модель MyVehicle.max созданную в предыдущей теме в 3ds Max, она понадобится нам для того, чтобы в точности описать детали нашего автомобиля, а именно кузов и колёса. Как это делается.

Основные параметры: 1. Первым делом назовём новый файл MyVehicle (именем модели). Далее скопируйте нижеприведённый код в свой.XML файл: Simulation maxTimeStep='0.02' minEnergy='0.'

Отрывок из книги Верстак В. Если вы занимаетесь моделированием и анимацией в программе 3ds Max, вы, скорее всего, уже хотя бы раз создавали колесную и гусеничную технику.

Выполняя модели такого уровня сложности, всегда хочется добавить в них какую-нибудь «изюминку». Таким дополнением может послужить анимация движения. В данном разделе рассмотрим один из способов создания и анимации танковой гусеницы. Для выполнения данного упражнения необходимо загрузить начальную сцену trackstart.max с объектами, которые нам понадобятся в работе (рис. 6.29).

Она находится на прилагаемом к книге компакт-диске в папке CH06 MAX track. Окно проекции Perspective (Перспектива) после загрузки стартовой сцены Сначала необходимо построить последовательность гусеничных звеньев. Это можно сделать двумя способами:.

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

Для этого выполните следующее. В окне проекции Top (Сверху) увеличьте масштаб звена гусеницы так, чтобы оно заняло максимально возможную площадь (так будет проще выполнять измерения и они будут точнее). Измерьте поперечную ширину звена, исключая размер выступающих шипов (реальный размер, который будут иметь звенья, составленные в цепочку). Для этого воспользуйтесь командой главного меню Tools 4 Measure Distance (Инструменты 4 Измерить расстояние). После выполнения команды щелкните на начальной и конечной точках замеряемого участка и на строке состояния. В результате в поле ввода макрокоманды появится необходимая цифра. В моем случае это 3,805 (рис. 6.30).

Строка состояния с результатами измерения 3. Узнайте длину сплайна, который является формой пути для гусеницы. Для этого достаточно выделить сам сплайн и воспользоваться утилитой Measure (Линейка), находящейся на вкладке Utilities (Утилиты) командной панели. В области Shapes (Формы) будет указана длина сплайна (рис. 6.31). Настройки утилиты Measure (Линейка): а — верхняя часть, б — нижняя ПРИМЕЧАНИЕ Если в свитке Utilities (Утилиты) нет кнопки Measure (Линейка), то щелкните на кнопке More (Дополнительно) и выберите в открывшемся окне соответствующую строку. Разделите длину сплайна на ширину звена, и вы получите необходимое количество копий, а также кадров анимации. Я округлил значение, и в результате у меня получилось 90.

Измените количество кадров анимации до 90. Для этого нажмите кнопку Time Configuration (Настройка временных интервалов) в правом нижнем углу 3ds Max. В открывшемся одноименном окне задайте параметру End Time (Время окончания) области Animation (Анимация) значение 90 (рис. 6.32). Окно Time Configuration (Настройка временных интервалов) с измененным количеством кадров анимации Для создания анимации сделайте следующее. В одном из окон проекций выделите звено.

Выполните команду Animation Constraints Path Constraint (Анимация Ограничения Ограничение пути) и укажите на сплайн trackpath. В результате он будет использован в качестве формы пути.

В свитке Path Parameters (Параметры пути) настроек контроллера на командной панели установите флажок Follow (Следовать), чтобы объект поворачивался вместе с поворотом кривой. Установите также флажок Allow Upside Down (Разрешить переворачиваться) (по умолчанию контроллер придерживается одной локальной оси, а у нас замкнутая кривая), выберите ось Y и установите флажок Flip (Обратить) (рис. 6.33).

Свиток Path Parameters (Параметры пути) настроек контроллера 4. Выделите звено и создайте его копию. Для этого воспользуйтесь командой главного меню Tools 4 Snapshot (Инструменты 4 Снимок). В открывшемся одноименном окне установите переключатель в положение Range (Диапазон) и задайте следующие значения параметрам: From (От) — 0, To (До) — 89 и Copies (Копий) — 90. В качестве метода клонирования выберите Instance (Образец) (рис. 6.34). ПРИМЕЧАНИЕ Значение параметра To (До) равно 89, потому что, выполнив полный круг по замкнутой форме, объект вернется в начальное положение.

Результат клонирования одного звена представлен на рис. 6.35. Таким же образом строятся и другие статические последовательности объектов, например элементы ограждения, столбы, кнопки и даже ресницы. Настройки создаваемых копий в окне Snapshot (Снимок) Рис. 6.35. Копии звеньев, созданные с помощью инструмента Snapshot (Снимок) Итак, приступим к анимации. Выполнить вручную анимацию такого количества объектов достаточно сложно, даже если речь идет о простом повторении нескольких операций. Все было бы просто, если бы нам пришлось настроить анимацию 2 или даже 10 звеньев, но у нас их 90. Придется обратиться к макросценарию, который позволит автоматизировать этот процесс.

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

Затем загрузите с прилагаемого компакт-диска начальный файл данного упражнения trackstart.max из папки Программа 3ds Max обладает возможностью отслеживать и записывать почти все команды и действия, выполняемые в процессе работы. Делается это при помощи модуля MAXScript Listener (Интерпретатор MAXScript).

Его окно можно открыть, выполнив команду главного меню MAXScript 4 MAXScript Listener (MAXScript Интер­претатор MAXScript) или нажав клавишу F11. Мы используем его в качестве основного источника списка будущих макрокоманд. Но сначала рассмотрим кратко, что нам надо будет сделать для создания анимированной гусеницы. В первую очередь нам понадобится анимировать имеющееся звено при помощи контроллера Path Constraint (Ограничение по пути). Затем, используя единственный анимированный параметр этого контроллера (процент пути, пройденный звеном гусеницы в пределах анимированного участка), привяжем к нему созданные копии этого объекта, выполнив их относительное смещение.

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

Начнем с настройки записи макрокоманд. Откройте окно MAXScript Listener (Интерпретатор MAXScript), для чего используйте либо одноименную команду главного меню MAXScript, либо клавишу F11.

В открывшемся окне выполните команду меню MacroRecorder Enable (Запись макроса Включить) для включения записи всех выполняемых команд (рис. 6.36). Настройки меню MacroRecoder (Запись макроса) В результате окно интерпретатора разделится на две части: в верхней будут выводиться макрокоманды, соответствующие выполняемым действиям, а в нижней — отладочная информация.

Одновременно нижнее окно является и полем для ввода макрокоманд. Посмотрим, как это все работает. Выделите в сцене звено гусеницы и копируйте его через буфер обмена (или любым доступным способом) с помощью сочетаний клавиш копирования Ctrl+С и вставки Ctrl+V. В результате в верхней части окна появится запись, состоящая из четырех строк. Для исполнения этого кода откройте окно редактора макрокоманд, выполнив команду главного меню MAXScript New Script (MAXScript Создать макрос).

В окне отладчика выделите строки, созданные программой автоматически, и перетащите их в окно редактора. Закомментируйте вторую строку, поставив перед ней два минуса, так как она вызывает окно диалога клонирования объекта и нам не нужна (рис. 6.37). Выполните макрос, воспользовавшись командой меню данного окна File 4 Evaluate All (Файл Оценить все) и предварительно удалив построенную ранее копию звена. Проверьте список объектов, вызвав его кнопкой Select by Name (Выделить по имени), и убедитесь в том, что макрос создал копию объекта track.

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

В одном из окон проекций выделите звено (объект track ). Перейдите на вкладку Motion (Движение) командной панели и в свитке Assign Controller (Назначить контроллер) выберите строку Position: Position XYZ (Положение: положение по XYZ) (рис. 6.38). Свиток Assign Controller (Назначить контроллер) настроек объекта track 3. В этом же свитке щелкните на кнопке Assign Controller (Назначить контроллер) и в появившемся окне Assign Position Controller (Назначить контроллер положения) выберите строку Path Constraint (Ограничение по пути) (рис. 6.39). Окно Assign Position Controller (Назначить контроллер положения) 4.

В свитке Path Parameters (Параметры пути) щелкните на кнопке Add Path (Добавить путь) и в одном из окон проекций укажите на сплайн пути trackpath. В этом же свитке в области Path Options (Параметры пути) установите флажки Follow (Следовать) и Allow Upside Down (Разрешить переворачиваться). В области Axis (Оси) выберите ось Y и установите флажок Flip (Обратить). Как вы видите, настройки такие же, как и для построения статических копий звена (см. рис. 6.33). После выполнения описанных операций откройте окно MAXScript Listener (Интерпретатор MAXScript). Выделите и переместите в окно редактора макрокоманд пять последних строк, относящихся к выбору и настройке контроллера Path Constraint (Ограничение по пути) (рис. 6.40). Окно редактора макрокоманд после добавления кода Если бы мы сейчас запустили на выполнение этот код, то у нас было бы создано еще одно звено, а копии звена с именем track01 был бы присвоен контроллер Path Constraint (Ограничение по пути).

Но обратите внимание на то, что, когда мы выбирали сплайн пути, интерпретатор не внес соответствующую строку в список выполненных операций. В связи с этим в конец кода необходимо дописать в окно редактора следующую строку: $.pos.controller.path=$trackpath. У контроллера Path Constraint (Ограничение по пути) есть один анимируемый параметр — Percent (Проценты), который определяет проценты пройденного объектом пути. Этому параметру автоматически было задано значение нулевого и по­следнего кадра анимации. Однако нам не нужна анимация, устанавливаемая по умолчанию, мы собирается привязывать все копируемые объекты к одному звену — track.

В связи с этим нам необходимо удалить сгенерированные автоматически ключи анимации. Это можно сделать, добавив в код еще одну строку — deleteKeys $.pos.controller.percent.keys. Внимание Знак $ указывает на то, что следом за ним должно идти имя объекта, но так как его нет, то подразумевается выделенный объект сцены. Если сейчас запустить код на исполнение, то мы получим копию объекта track, к которому будет применен контроллер движения вдоль пути trackpath, и все ключи анимации будут удалены из контроллера. Далее нужно построить зависимость, при которой созданная копия объекта будет следовать за основным объектом. Для этого необходимо выполнить следующее. Выделите в одном из окон проекций или выберите из списка скопированный объект track01.

Перейдите к свитку Assign Controller (Назначить контроллер) и щелкните на плюсике, расположенном рядом со строкой Position: Path Constraint (Положение: ограничение по пути), затем щелкните в открывшемся списке на строке Percent: Linear Float (Проценты: линейное значение с «плавающей» точкой) (рис. 6.41). Свиток Assign Controller (Назначить контроллер) настроек объекта track01 3.

Щелкните на кнопке Assign Controller (Назначить контроллер) и в появившемся окне Assign Position Controller (Назначить контроллер положения) выберите строку Float Script (Сценарий, использующий значения с «плавающей» точкой). Щелкните на кнопке OK — откроется окно для ввода сценария. Закройте это окно. Обратитесь к окну MAXScript Listener (Интерпретатор MAXScript), выделите и переместите в окно редактора макрокоманд последнюю строку кода. То, что мы сейчас сделали, позволило нам записать в окно редактора макрокоманд строку кода, меняющую контроллер, созданный по умолчанию, на свой, который можно редактировать с использованием сценария. На рис. 6.42 представлен вид редактора со всеми полученными до настоящего момента командами. Теперь нужно добавить в окно редактора несколько строк, написанных самостоятельно, без помощи окна MAXScript Listener (Интерпретатор MAXScript).

Окно редактора макрокоманд на данном этапе 1. Добавьте первой строкой for i = 1 to 90 do(. Таким образом мы создаем цикл, выполняющий выражение, которое находится внутри круглых скобок, начиная от 1 до 90. Число 90 — это количество копий звена танковой гусеницы (если помните, мы рассчитали их ранее). Удалите закомментированную вторую строку. В конце кода допишите $.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 до 100, а от 0 до 1, то есть используем выражение.0.01 ), и задаем смещение на одно звено (общие проценты пути, деленные на количество звеньев: 1/90=0.011 ).

Затем это выражение умножаем на порядковый номер (он же номер кадра), который в первой строке присваивается переменной i. Но так как код записывается в виде строковой переменной, числовое значение необходимо вынести за кавычки и обозначить как строковую переменную ( i as string ), оставив в кавычках знак умножения. Умножение на число i позволит каждому новому звену смещаться на соответствующую величину. И, наконец, две последние строки кода будут указывать на то, что вся анимация до первого ключевого кадра и после последнего будет повторяться, то есть станет непрерывной, вне зависимости от положения ключевых кадров на шкале анимации. Добавьте эти строки:. setBeforeORT $.pos.controller.percent.controller #cycle. setAfterORT $.pos.controller.percent.controller #cycle 5.

Завершает код закрывающая круглая скобка (рис. 6.43). Окончательный код в окне редактора макрокоманд ПРИМЕЧАНИЕ На прилагаемом к книге компакт-диске в папке CH06 MAX track находится файл trackScript.ms.

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

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

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

СОВЕТ Чтобы быстро изменить временной диапазон шкалы анимации, можно нажать сочетание клавиш Ctrl+Alt, щелкнуть правой кнопкой мыши на шкале анимации и перемещать указатель влево (для уменьшения количества кадров) или вправо (для увеличения). Нажатие этих же клавиш в сочетании с левой кнопкой мыши позволяет изменять начало временного диапазона, установленное по умолчанию в нулевой кадр. Теперь необходимо установить зацикливание для анимации главного звена. Для этого выделите объект track и откройте окно редактора кривых командой Graph Editors Track View — Curve Editor (Графические редакторы Просмотр треков — Редактирование кривых). В левой части появившегося окна выберите анимированный трек для выделенного объекта. После этого в правой части окна выделите существующие вершины и создайте линейное изменение функциональной кривой, щелкнув на кнопке Set Tangents to Linear (Установить линейное управление) (рис. 6.44). Окно редактора кривых с выделенным треком анимации процентов контроллера Path Constraint (Ограничение по пути) В окне редактора кривых щелкните на кнопке Parameter Curve Out-of-Range Types (Типы экстраполяции параметрических кривых).

В открывшемся окне Param Curves Out-of-Range Types (Типы экстраполяции параметрических кривых) щелкните на кнопках со стрелками под значком Cycle (Циклический) (см. рис. 5.81). Теперь все готово к выполнению сценария. Очистите сцену от созданных в процессе экспериментов с кодированием объектов и запустите выполнение сценария. В результате будет создано 90 копий звена гусеницы, распределенных по всей длине сплайна. Запустите воспроизведение анимации и убедитесь, что анимация работает и гусеница движется по сплайну.

ПРИМЕЧАНИЕ Как вы помните, основной объект track имеет два ключа анимации, соответствующих положению 0 и 100% пройденного пути. Если изменять на временной шкале положение ключа, имеющего значение 100%, то будет изменяться скорость движения. Например, передвинув ключ анимации с 400 на 200, вы увеличите скорость движения гусеницы в два раза. Сейчас анимируем движение колес, по которым движется гусеница. Очевидно, что колесо выполнит столько оборотов за один оборот гусеницы, сколько длин окружностей колеса укладывается в длине сплайна.

Разберемся в этом на практике. Сначала узнаем диаметр колеса. Для этого выделите большое колесо и на вкладке Utilities (Утилиты) командной панели щелкните на кнопке Measure (Линейка).

В области Dimensions (Размеры) посмотрите размер колеса по осям Y и Z. Таким образом, диаметр колеса в нашем случае — 16,693. Как известно, длина окружности составляет Π. D, где число Π — постоянная величина, а D — диаметр колеса. Таким образом, длина окружности большого колеса равна 3,14.16,693 = 52,4066. Разделив длину сплайна пути trackpath на полученную величину, узнаем, сколько оборотов сделает колесо за один оборот гусеницы: 344,721 / 52,4066 = 6,578.

Max

Теперь нужно привязать вращение колеса к скорости движения гусеницы. Это можно сделать, воспользовавшись анимацией процентов пройденного пути. ПРИМЕЧАНИЕ Создав зависимость вращения колеса от пройденного главным звеном (track) пути, мы оставляем за собой возможность изменения скорости не только движения гусеницы, но и вращения колес. Для этого сделайте следующее. Выделите колесо Wheel01 и перейдите к свитку Assign Controller (Назначить контроллер) вкладки Motion (Движение) командной панели. В свитке Assign Controller (Назначить контроллер) раскройте список контроллеров для осей поворота и выберите строку Y Rotation: Bezier Float (Y-поворот: значение Безье с «плавающей» точкой) (рис. 6.45). Щелкните на кнопке Assign Controller (Назначить контроллер) и выберите из появившегося списка контроллер Float Expression (Выражение с «плавающей» точкой).

Щелкните на кнопке OK для подтверждения выбора. Свиток Assign Controller (Назначить контроллер) объекта Wheel01 4.

В области Create Variables (Создать переменную) открывшегося окна Expression Controller (Контроллер выражения) создайте переменную pathPerc. Для этого в поле Name (Имя) введите имя переменной и щелкните на кнопке Create (Создать) (рис. 6.46). Переменная pathPerc, созданная в окне Expression Controller (Контроллер выражения) 5. В нижней части окна щелкните на кнопке Assign to Controller (Назначить контроллеру) и в появившемся окне Track View Pick (Выбрать трек) выберите объект track. Раскройте списки его параметров и активизируйте строку Percent: Linear Float (Проценты: линейное значение с «плавающей» точкой) (рис.6.47). Окно Track View Pick (Выбрать трек) 6.

В области Expression (Выражение) окна Expression Controller (Контроллер выражения) введите следующее выражение: degToRad(6.578.360.pathPerc) и щелкните на кнопке Evaluate (Оценить). Разберем это выражение. Функция degToRad, как вы уже знаете, переводит градусы, которыми удобно оперировать пользователю, в радианы, с которыми работает 3ds Max.

Выражение в скобках определяет угол поворота колеса в градусах: количество оборотов колеса на один оборот гусеницы, рассчитанный нами ранее (6,578), умноженное на 360° (один полный оборот в градусах) и умноженное на процент пройденного пути, который мы получаем от объекта track, используя созданную нами переменную pathPerc. Проверьте анимацию, нажав кнопку Play Animation (Воспроизвести анимацию).

Колесо должно вращаться вместе с вращением гусеницы. Теперь нужно связать анимированное колесо с остальными колесами. Это просто сделать, если воспользоваться окном Parameter Wire Dialog (Окно параметров связей) следующим образом. Выполните команду меню Animation Wire Parameters Parameter Wire Dialog (Анимация Параметры связей Окно параметров связей).

В левой части открывшегося окна Parameter Wiring (Связываемые параметры) выберите из списка анимированное колесо (Wheel01 ). Разверните список параметров выбранного объекта, щелкнув на плюсе слева от имени, и выберите из списка строку Y Rotation: Float Expression (Y-поворот: выражение с «плавающей» точкой).

В правой части окна Parameter Wiring (Связываемые параметры) выберите из списка след.