Риг торсионной подвески танка со сложной гусеницей. Часть 2

Часть 2

Часть 1 здесь.


Прилинковываем звено к первому Dummy.




И делаем LookAt Constraint на второй Dummy



В появившемся свитке переключателями осей выставляем звено в правильное положение. И сразу в Select Upnode назначаем ориентиром главный контроллер и выключаем галочку World. Если здесь всё сделано правильно, то звенья не будут переворачиваться при переходе с нижней на верхнюю часть гусеницы.



Создаём с помощью инструмента Array остальные звенья и соответствующие им Dummy, подгоняя шаг так, чтобы совпадал с шагом траков.



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



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



Получаем вот такой результат



Теперь смоделируем работу подвески. Выберем сплайн, по которому движется гусеница и добавим ему модификатор Spline IK Control. Поставим галочку No Linking и нажмём Create Helpers. Создадутся Dummy на точках сплайна, перемещая которые, мы сможем управлять изгибом гусеницы. Только теперь сплайн траектории гусеницы необходимо отлинковать, а все вновь образованные Dummy прилинковать к главному контроллеру. Это важно!!! Иначе при наклонах главного контроллера сплайн будет необъяснимо гнуться.



Теперь привяжем вращение катков к вращению контроллера. Наложим на катки какую ни будь текстуру для наглядности. Далее выбираем каток, заходим в Curve Editor, ПКМ на нужной оси вращения, в меню Assign controller…, выбираем Float Expression. Создаём любую переменную, в Assign to Controller выбираем вокруг какой оси вращается контроллер. Пишем выражение в Expression, где дополнительная константа – начальный угол поворота. Все значения как всегда подбираются экспериментально и зависят от диаметра катков.





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






Теперь будем привязывать вертикальную работу подвески к контроллерам. Делаем это тем же методом, только выбираем перемещение соответствующего контроллера по оси Z. В моём случае в выражении константа -2 компенсирует положение контроллера по оси Z равного 200см.



Создадим ограничение движения контроллера рычага подвески. В Assign Controller добавим ему Float Limit на Z Position.



И зададим ограничения на 30 см выше и ниже текущей позиции



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



Теперь необходимо сделать так, чтобы он всегда был сориентирован вертикально относительно танка. Для этого во вкладке Animation, Constraints выбираем Orientation Constraint и указываем главный контроллер в качестве ориентира.



Прилинкуем каток и управляющие гусеницей Dummy к нему



Повторим последние операции со всеми катками на торсионах. Можно так же во вкладке Animation сделать Set as Skin Pose для контроллеров, что бы их можно было вернуть в начальное положение после манипуляций.



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

Спасибо за внимание! А также за лайки и подписку на мои работы в Artstation!
585 0 850 10
0
RENDER.RU