Вопрос второй. Кто-то выше упоминал про бросание твердых тел. А тут идеальный случай, чтобы вложить шар в конечность персонажа и бросить его, анимируя эту конечность.
Эти вопросы мы сейчас разберем, но сначала сформулируем еще один дополнительный закон динамики и обрисуем методы борьбы с его нарушениями.
Дополнительный закон динамики: Большая скорость - главный враг динамики.
Если вы зададите скорость «выстрела» шара около ста (initialVelocityX=-100), то MAYA еще справится с такой «стрельбой». Однако если установить initialVelocityX=-1000, шар пробьет пирамиду насквозь и умчится вдаль. МАУАпросто «не успеет» обсчитать такие быстрые перемещения. Посудите сами: в первом кадре шар находится над дорожкой, а во втором должен быть уже в районе горизонта. При этом MAYA, конечно, делает дополнительные отсчеты-проверки между соседними кадрами для определения столкновений, но частоты (или густоты) таких промежуточных отсчетов просто не хватает, и на больших скоростях шар просто успевает задевать пирамиду в соседних отсчетах.
Чтобы увеличить частоту проверок между кадрами, надо уменьшить значение атрибута Step Size для ноды rigidSolver, которая отвечает за просчет динамики. Закладку этой ноды всегда можно отыскать в Attribute Editor для любого твердого тела или можно напрямую найти ее в меню Solvers=>Rigid Body Solver.
Уменьшите Step Size до 0.002.
Тогда сверхзвуковой шар будет задевать пирамиду даже на килоскоростях. Очевидно, что уменьшение шага численного метода ведет к увеличению времени просчета динамики, однако за большие скорости приходится платить высокой точностью и увеличенным временем расчета.
Старайтесь избегать появления в сцене высоких скоростей. Они могут возникать не только при заданных начальных перемещениях, но и в результате упругих столкновений или под воздействием сильных полей.
Анимация активности, или ручное бросание твердых тел А теперь попробуем скрестить динамику и обычную анимацию, имитируя бросок шара рукой. Если вы меняли Step Size в ноде rigidSolver верните его в 0.03. А начальное значение скорости шара сейчас не имеет особого значения: ведь мы надеемся унаследовать скорость шара от бросающей руки в момент отпускания.
Установите InitialVelocityX в ноль.
Для начала надо перейти в камеру front и сделать простую руку, делающую бросок в течение сорока кадров. Одного IK Handle вполне хватит для постановки анимации.
Готовый файл с такой рукой называется bowlingHandStart.ma.
Возмущенный комментарий. Если сейчас, исходя из определений активных и пассивных твердых тел, превратить шар в пассивное твердое тело (установив его атрибут active=off) и «вложить» его в руку, создав Point Constrain к, например, IK Handle, то шар беспрекословно приконстрейниться к руке и будет весело раскачиваться над дорожкой… Однако при попытке отцепить его от руки, превратив его в активное твердое тело в каком-нибудь кадре и проанимировав изменение атрибута active с off на on, шар просто начинает подозрительно крутиться в руке.
Виной тому смешивание анимации, возникающее при создании констрейна для уже имеющегося твердого тела. Даже для пассивного твердого тела создается атрибут blendPoint и нода blendPair, позволяющие смешивать анимацию констрейна и динамику.