Моделирование и анимация гусеницы танка, велосипедной цепи

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

Можно было, конечно, использовать Path Deform. Но при этом звенья объекта тоже повторяют изгибы траектории, и их геометрия <плывет>. Издалека - еще ничего, но вблизи - мрак:

Пришлось напрячься.

И вот - результат, которым мы решили поделиться со всеми единомышленниками.

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

Мы расскажем о том, как это удалось сделать, на примере танковой гусеницы.

  1. Моделируем трак гусеницы.


Можно, конечно, условно представить трак в виде параллелепипеда с двумя цилиндрами-осями, но это было бы грустно. Поэтому предлагаем вам сделать что-то вроде объектов, изображенных на рисунке: сам трак, передняя ось (потоньше и подлиннее) и задняя ось (потолще и покороче). Очень важно, чтобы Pivot Points всех объектов находились строго по их центру в плане, у осей, естественно, по их геометрическому центру, и у всех трех должна совпадать координата Z. То есть в окне проекций Front все Pivot Points должны лежать на одной прямой.

Далее возможны два варианта моделирования - сгруппировать все три объекта, либо преобразовать их в один объект Editable Mesh, кому как больше нравится.

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

Группируем эти объекты в один, именуем его #001, и (это важно!) переносим Pivot Point группы в центр задней оси (толстого цилиндра).

  1. Строим гусеницу из траков

Выделим трак-группу #001, и, используя кнопку Shift и инструмент Select & Move, создадим 20 (количество - просто для урока, взято <с потолка>) копий трака таким образом, чтобы тонкая ось каждого последующего трака попала в центр толстой оси предыдущего.

Далее - соединим траки друг с другом для дальнейшего <натягивания> их на траекторию. Для этого выделим объект #001 и начнем назначать связи объектам при помощи инструмента Select and link. #001 будет дочерним по отношению к #002, #002 - по отношению к #003, и так далее до конца цепочки. При этом не забывайте, что, щелкнув по объекту #002, надо снять все выделения, затем выделить объект #002 и щелкнуть по объекту #003, вновь снять выделение и так далее до конца.

Гусеница готова.

  1. Располагаем гусеницу по траектории.

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

Далее - самое интересное. <Натягиваем> цепь на траекторию. Для этого выделяем последнее звено #021. В главном меню открываем команды:

От объекта #021 к курсору протянется белая пунктирная линия. Щелкаем мышью сначала на объекте #001, затем на сплайне-траектории. Цепь <запрыгивает> на траекторию.

Появляются новые (очень полезные) объекты - Point 01 - 04. Количество точек соответствует количеству точек сплайна-траектории. О пользе этих точек - чуть позже.

Далее надо лишь отредактировать сплайн таким образом, чтобы начало трака #001 совпало с концом трака #021, то есть замкнуть гусеницу путем изменения протяженности сплайна. Сплайн-траектория редактируется путем перемещения упомянутых выше точек.

Получилось замечательно, не правда ли?

Анимировать эту гусеницу совсем не сложно.

Вновь выделяем последний трак #021 и анимируем по времени параметр % Along Path, находящийся в свитке параметров Motion - Parameters. Попробуйте пока просто изменить его - гусеница <поползет> вдоль траектории.

  1. Крепим гусеницы к танку.

Естественно, гусеницу надо анимировать лишь после того, как вы закончите анимацию самого танка, чтобы привести ее движение как минимум в соответствие с его скоростью и разворотами. Как же <зацепить> всю эту сложную систему с обратной кинематикой за корпус танка? Простой привязкой траектории к корпусу вы ничего не добьетесь. Попробуйте выделить и вращать по всем осям либо траки гусеницы, либо сплайн траектории. Гусеницу сразу начинает уводить куда-то вбок. Решение - в операциях с точками сплайна-траектории.

Но сначала создадим вторую гусеницу.

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

Теперь можно дорисовать корпус танка.

Далее выделяем все точки обеих траекторий. При помощи инструмента Select & Link привязываем их к корпусу танка. Проверка: выделяем корпус танка и вращаем его. Гусеницы следуют за движениями корпуса. Все, система <танк+гусеницы) представляет собой единое целое.

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

Анимированные гусеницы танка можно посмотреть на прилагаемом файле tank.gif.

Кстати: почему-то у нас при создании второй гусеницы сбились порядковые номера ее траков. Макс создал два трака с номером #022, и мы не сразу нашли последний трак для его анимации. Будьте внимательны.

  1. Интересные детали для любителей <покопаться поглубже>

Нам бы хотелось остановиться еще на ряде интересных, на наш взгляд, моментов, с которыми вы можете оказаться один-на-один в ходе моделирования подобных объектов. Мы с ними столкнулись, и, поверьте, они выпили немало нашей крови.

Если вы помните, мы обещали также рассмотреть второй вариант моделирования - представить звенья объекта не в виде групп, а в виде Editable Mesh. На этом примере мы и поговорим о встречающихся нюансах.

Итак,

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

Закончить цепочку можно простым цилиндром - осью.

Вот и первый интересный нюанс: зачем нужен этот последний объект-цилиндр.

Дело в том, что при размещении звеньев цепи на сплайне-траектории они ложатся на нее своими Pivot Points. Начало первого звена не привязано к другим звеньям, поэтому на изгибах траектории это звено будет располагаться по касательной к траектории. Нам необходимо что-то, что <притянет> начало звена к траектории. Именно эту роль и играет первый цилиндр. Он фактически и будет первым звеном цепи. При замыкании цепи на траектории он войдет вовнутрь оси последнего звена, и не будет виден.

Резонный вопрос: Почему этого не происходит, когда звенья представляют собой сгруппированные объекты?

Ответ: Не знаем.

Есть только одно предположение. Когда мы сдвигаем Pivot Point группы в центр ее оси, Pivot Point каждого объекта группы остается на своем месте. Вы можете проверить это, открыв группу. Возможно, именно Pivot Point переднего объекта и притягивает передний край звена к траектории.

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

Дело в том, что когда мы представляем звенья цепи (или траки гусеницы) в виде Editable Mesh, 3DSMax предоставляет нам дополнительные параметры для настройки (в случае <групп> эти параметры отсутствуют).

Если звенья объекта <ведет>, зайдите в свиток параметров Hierarchy - IK - Rotational Joint - Preferred Angle. Эти углы мы редактировали <методом тыка>, так как не смогли объяснить, в каком случае какой угол надо менять. Иногда решения бывают самыми неожиданными.

Так, например, когда велосипедная цепь легла с перекосом, пришлось каждому звену углы по осям X и Y сделать равными 0, а по оси Z - 90 градусов.

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

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

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

Цепь готова. Пример использования - привод подводной лодки из мультфильма (на рисунке).

  1. Важная деталь для пользователей 3dsMax5.0

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

Для анимации гусеницы необходимо предварительно осуществить описанные ниже действия, в противном случае вы сможете лишь <натянуть> ее на траекторию.

Выделите последний трак в цепи.

Во вкладке Animation выберите Constraints.

Теперь для проверки попробуйте покрутить счетчик траектории во вкладке Motion.

Есть еще одно Но. Несмотря на то, что стоит галочка constant velocity (равномерное движение), движение вовсе не становится равномерным (почему - непонятно).

Исправить это можно в окне редактирования треков (Graph editors ->Track view - curve edition).

Вы увидите на экране примерно следующее:

Выделите эту кривую и нажмите на кнопку, обведенную синим.

Кривая изменит свою форму

Нажмите на эту кнопку еще раз.

Все. Кривая распрямилась. Движение стало равномерным.

Вот, собственно, и все, чем мы хотели с вами поделиться.

Будем рады, если эти <записки двух сумасшедших> смогли помочь вам в решении аналогичных проблем, и вы вспомните нас добрым словом.

Удачи вам, коллеги.

Файлы к уроку: 1-lesson-002.max 1-lesson-005.max

402 0 850 11
7
2005-12-05
В конце пункта 1 : "Группируем эти объекты в один, именуем его #001, и (это важно!) переносим Pivot Point группы в центр задней оси (толстого цилиндра)." Последнее делать не надо - так как последний трак не будет находится вдоль сплайна !!! А в общем урок очень обзорный и полезный!!!
2005-12-05
Приношу извенения - в уроке написано всё правильно - Закончить цепочку можно простым цилиндром - осью.
2008-09-12
Читал этот урок давно, когда только начал. Понравилось спасибо!!!
2010-02-19
не удалось повторить гусеницы танка. перепробовал все возможные варианты с группировкой деталей и поотдельности, с коррекцией углов поворота и без. жаль что прикрепленные файлы не дожили до "наших дней" и "рассеялись в вечности".
2010-05-12
а как можно сделать след от гусеницы?
2011-03-03
У меня тоже проблема с созданием второй гусеницы. При копировании всех элементов первой, вторая, каким-то образом привязывается к первой и их невозможно разъединить. Помогите пожалуйста с решением данной проблемы. С уважением IIIMEJIb. [img]http://nextsoft-obmen.at.ua/photo/1-0-692[/img]
2013-05-28
В 2014 Максе операцию копирования гусеницы, возможно, придется повторить пару раз: 1) копировал (после него копии самих элементов гусеницы не создаются, а вот хелперсы копируются и отвязываются от траектории), 2) ctrl+z 3) копировать ысче раз После второго копирования, удачного, удалять хелперсы, т.к. они теперь не будут привязаны к траектории (либо удалить перед первым копированием хэлперсы, но не пробовал). Затем выбрать траекторию (сплайн) поочередно каждой гусеницы, нажать "создать хелперсы" (на вкладке Modify появится) и редактировать трак каждой гусеницы как описывается в уроке...
RENDER.RU