Дублировать суставы для колёс и переименовать
переименовывать l_wheel_jt_01, r_wheel_jt_01 - начиная от начала танка и двигаться к корме танка
поставить в ведущие катки l_gear_jt_01 (2 сустава передний и задний)
поставить в ведущие катки r_gear_jt_01 (2 сустава передний и задний)
поместить суставы в центр колёс и сместить в сторону корпуса,
все суставы должны повёрнуты по оси Z (Рис.12)
(если не понятно где у колеса центр, можно выделить вертексы колеса и сделать кластер
HotBox > Deform > Cluster - будет находится в центре выделенных вертексов)
Рис.12
Перед командой Skin можно объединить точки на геометрии (Edit Mesh > Merge)
произвести привязку суставов к колесам,
выделить суставы колёс + wheels_mesh, затем: Skin > Bind Skin (Рис.13)
l_gear_jt_01 - сустав ведущие лев. колёса (2 сустава)
r_gear_jt_01 - сустав ведущие пр. колёса (2 сустава)
l_wheel_jt_01 - сустав лев. колёса
r_wheel_jt_01 - сустав пр.колёса
(для правки карты весов, можно использовать любой из 2 вариантов ниже
HotBox > Windows > General Editor > Component Editor - переключится на вкладку Smooth Skins
HotBox > Skin > Paint Skin Weights)
Рис.13
Выделить все суставы колёс (Рис.12) и сделать дочерними по отношению к base_jt (в Outliner)
root_jt
┗ base_jt
┗ r_gear_jt_01
┗ r_wheel_jt_01
┗ l_gear_jt_01
┗ l_wheel_jt_01
l_tread_jt_01 - все сегменты лев. гусеницы дочерние по отношению к root_jt
l_tread_jt_01 - все сегменты пр. гусеницы дочерние по отношению к root_jt
извлечь содержимое Step_02 а группу удалить
Выделить drive_ctrl + base_jt далее:
Constrain > Parent - зайти в настройки (Рис.14) и применить Apply
Рис.14
Надо вычислить радиус колеса:
HotBox > Create > Measure Tools > Distance Tool
зажать привязку к точкам клавиша “V” указать центр колеса и край колеса
это будет радиус (пример: 33.036)
(после измерения радиуса колеса в Outliner появятся
locator1 - locator1 - distanceDimension1 - это можно удалить)
Выделить контроллер drive_ctrl далее в окне Channel Box > Radius
вставить число которое получили в ходе измерения радиуса колеса (пример: 33.036)
далее: клик RMB по строке Radius и выбрать Lock Selected (заблокировать выбранное)
Нужно вычислить один оборот движения гусеницы по сплайну
для синхронизации вращение колёс с гусеницей:
открыть Script Еditor (находится в Command Line внизу)
или Windows > General Editors > Script Еditor
на вкладке Python ввести следующие значения затем нажать кнопку “Excute” (Рис.15)
import math
r = 33.036
pi = math.pi
c = 2 * pi * r
print c
Если версия Maya 2022 или новее, то всё что после слова print должно быть в скобках, пример: print (c)
в версии Maya 2022 начали использовать Python 3.0
если версия Maya ниже 2022 то без скобок, пример: print c
из за того что версия Python 2.7
Рис.15
После вычислений в Script Еditor получится: 207.571309808 - это оборот гусеницы вокруг колеса (Рис.16)
Рис.16
На вкладке Python ввести следующие значения затем нажать кнопку “Excute” (Рис.15)
(r = 33.036 - это радиус колеса из Пункта 5.4)
(d = 882.620912 это число дистанции (d) для того чтобы вычислить его:
нужно выделить контроллер траектории движения гусениц (r_tread_curve) далее:
ввести в строку MEL (внизу) “arclen” и нажать Enter, в Script Еditor появится число 882.620912 (рис.17)
import math
r = 33.036
pi = math.pi
c = 2 * pi * r
d = 882.620912
revs = d / c
print (revs)
Если версия Maya 2022 или новее, то всё что после слова print должно быть в скобках, пример: print (c)
в версии Maya 2022 начали использовать Python 3.0
если версия Maya ниже 2022 то без скобок, пример: print c
из за того что версия Python 2.7
Рис.17
После вычислений в Script Editor получится: print revs 4.25213346111 (Рис.18)
4.25213346111 это число означает: что для каждого цикла оборота гусеницы колесо вращается ~ 4 раза
Рис.18
(это колесо будет ведомое от него будут вращатся остальные лев. колёса)
Выделить l_wheel_jt_01 + r_wheel_jt_01 + drive_ctrl
затем открыть Windows > Node Editor и нажать input connections (с лево вверху кнопка в виде входа)
Все действия с нодами в Node Editor выделены зелёным цветом.
(Рис.19 ноды curveShape можно выключить Node Editor > Display > No Shapes)
Пункт 6.2
drive_ctrl - с пр. вывода > Drive
соединить с лев.вводом - l_wheel_jt_01 > Rotate > Rotate X
Тоже самое сделать для правой стороны
drive_ctrl - с пр. вывода > Drive
соединить с лев.вводом - r_wheel_jt_01 > Rotate > Rotate X
Рис.19
проверка: выделить drive_ctrl затем в Channel Box выбрать Drive и повращать колесо с помощью MMB
(после проверки возвратить значения в исходное состояние)
Выделить содержимое блокнота tank_drive_expression.txt затем открыть:
Windows > Animation Editors > Expression Editor вставить в окно Expression
(никакие объекты сцены не должны быть выделены перед копированием скрипта в Expression Editor)
Нажать кнопку create затем переименовать в поле Expression Name “tank_expression”
и нажать Edit (внизу окна) затем Close.
Если выдаёт ошибку, повторить предыдущие пункты рига.
Проверка: во вьюпорте при перемещении контроллера drive_ctrl - по оси Z:
колёса l_wheel_jt_01; r_wheel_jt_01 должно вращатся
(после проверки возвратить значения в исходное состояние)
(это колесо будет ведомое от него будут вращатся остальные)
Выделить l_wheel_jt_01 + l_wheel_jt_01 + drive_ctrl затем открыть
Windows > Node Editor и нажать input connections (input connections - с лево вверху кнопка в виде входа)
клик по пустому месту Node Editor > RMB выбрать Create Node
в открывшимся окне Utilities > multiply Divide - переименовать в l_wheel_multiplyDivide
Utilities > plus Minus Average - переименовать в l_wheel_plusMinusAverage
в Node Editor дабл клик по l_wheel_multiplyDivide откроются атрибуты
во вкладке Multiply-Divide Attributes > input 1 (по оси X)
выставить количество оборотов колеса (к примеру 4.252 число из пункт 5.7)
выпадающие меню Operation на: Multiply
если нет пункта “input 1D[1]” то надо сделать следующее:
в строку MEL (внизу Maya) вставить
“ setAttr l_wheel_plusMinusAverage.input1D[1] 1; ” и нажать Enter
l_wheel_plusMinusAverage - с пр. вывода > Output1D
соединить с лев. вводом - l_wheel_jt_01 > Rotate > Rotate X
(не закрывать Node Editor для пункта 9, и сделать тоже самое для правой стороны)
Сделать дубликаты нодов (Ctrl+D)
l_wheel_multiplyDivide - l_wheel_plusMinusAverage переименовать их:
r_wheel_multiplyDivide - r_wheel_plusMinusAverage
в Node Editor дабл клик по r_wheel_multiplyDivide откроются атрибуты
во вкладке Multiply-Divide Attributes > input 1 (по оси X) - добавить минус
(к примеру -4.252 число оборотов колеса из Пункт 5.7)
выпадающие меню Operation на: Multiply
drive_ctrl - с пр. вывода Rotate > Rotate Y
соединить с лев. вводом - r_wheel_multiplyDivide > input 2 > input 2X
r_wheel_multiplyDivide - с пр. вывода Output > OutputX
соединить с лев. вводом - r_wheel_plusMinusAverage > input 1D > input 1D[1]
если нет пункта “input 1D[1]” то надо сделать следующее:
в строку MEL (внизу Maya) вставить
“ setAttr r_wheel_plusMinusAverage.input1D[1] 1; ” и нажать Enter
r_wheel_plusMinusAverage - с прав. вывода > Output1D
соединить с лев. вводом r_wheel_jt_01 > Rotate > Rotate X
Проверка: во вьюпорте при вращении drive_ctrl
два колеса синхронно вращаются r_wheel_jt_01, l_wheel_jt_01
(после проверки возвратить значения в исходное состояние)
Выделить все суставы колёс одной стороны к примеру правой, далее:
Windows > Node Editor и нажать input connections (вверху кнопка в виде входа)
Нод между r_wheel_plusMinusAverage и r_wheel_jt_01
(на Рис.19 выделен жёлтым кругом unitConversion538 - цифры порядковые)
Эту ноду соединять со всеми колёсами следующим образом.
Рис.19
unitConversion538 - с пр. вывода > Output
соединить с лев. вводом - r_wheel_jt_02 > Rotate > Rotate X
По порядку соединить все колёса с нодом unitConversion538
для удобства можно выделить нод unitConversion538 и нажать клавишу “2”
что бы отобразить вывод Output
с колёсами противоположной стороны сделать всё тоже самое, повторить Пункты 10.1 - 10.2
Проверка: во вьюпорте при перемещении и повороте контроллера drive_ctrl
колёса должны вращатся
(после проверки возвратить значения в исходное состояние)
Рис.20
Сделать дочерними следующие объекты
по отношению к drive_ctrl (рис.20)
drive_ctrl
┗ r_tread_curve - контроллер правый гусеницы
┗ l_tread_curve - контроллер левый гусеницы
┗ r_tread_up_object - правый Locator для гусениц
┗ l_tread_up_object - левый Locator для гусениц
Выделить “drive_ctrl” открыть Node Editor и нажать на input and output connections
(в верху окна Node Editor кнопка входа с 2 треугольниками)
Пункт 12.2
в Outliner выделить оба локатора l_tread_up_object + r_tread_up_object
и переместить их в Node Editor с помощью MMB
Пункт 12.3
Клик по пустому месту RMB выбрать Create Node
в открывшимся окне Utilities > multiply Divide - переименовать в l_tread_multiplyDivide
Дабл клик по ноде l_tread_multiplyDivide, откроются атрибуты
во вкладке Multiply-Divide Attributes переключить выпадающее меню Operation на Divide далее:
во вкладке Multiply-Divide Attributes > input 2 (по оси X)
вставить число (минус) - 1530.768 это число получили так:
4.25213346111 умножить на 360 = 1530.768046
(4.25213346111 - это число оборотов колеса, получено в: пункт 5.7,
умножение можно произвести в Script Editor вкладка Python - вставив это выражение:
print 4.25213346111 * 360.0 затем нажать Execute (выполнить)
Чтобы вычисление производилось правильно, нужно использовать именно точку для дробных чисел
(если версия Maya 2022 то всё что после слова print должно быть в скобках, из за версии Python 3.0)
Пункт 12.4
l_wheel_plusMinusAverage - с пр. вывода - Output 1D
соединить с лев. вводом - l_tread_multiplyDivide > Input 1 > Input 1X
если нет “Output 1D” нажать Other > Display (вверху окна) > Show Non-Keyable
Пункт 12.5
l_tread_multiplyDivide - с пр. вывода - Output > Output X
соединить с лев. вводом - l_tread_up_object > Tread Cycle (буквы курсивом)
(не закрывать Node Editor для пункта 12.6 и сделать тоже самое для правой стороны)
Проверка: во вьюпорте при перемещении, вращении контроллера “drive_ctrl”
левая гусеница должна двигаться вместе с колёсами
если вдруг гусеница вращается в обратную сторону: убрать минус от значения 1530.768 пункт 12.3
(после проверки возвратить значения в исходное состояние)
Пункт 12.6
Дублировать (Ctrl+D) нод l_tread_multiplyDivide - переименовать в r_tread_multiplyDivide
Проверить параметры: дабл клик по ноду r_tread_multiplyDivide - откроются атрибуты
проверить следующие:
во вкладке Multiply-Divide Attributes > input 2 > 1530.768 - число из Пункта 12.3
выпадающее меню Operation переключить на Divide
Пункт 12.7
r_wheel_plusMinusAverage - с пр. вывода - Output 1D
соединить с лев. вводом - r_tread_multiplyDivide > Input 1 > Input 1X
Пункт 12.8
r_tread_multiplyDivide - с пр. вывода - Output > Output X
соединить с лев. вводом - r_tread_up_object > Tread Cycle (буквы курсивом)
Проверка: во вьюпорте при перемещении, вращении контроллера “drive_ctrl”
обе гусеницы должны двигаться вместе с колёсами
(после проверки возвратить значения в исходное состояние)