Прежде всего, всегда заданы начальные условия. Их можно задать вручную, просто расположив объекты в первом кадре надлежащим образом, либо сохранив состояние объектов в любом другом кадре как начальное.
А дальше МАУАрассчитываеттраекторию объектов в каждом кадре на основании информации о положении объектов в предыдущем кадре.
Примечание. Я говорю «положение» объектов, имея в виду, конечно, позиции и скорости объектов. Корректнее говорить о «состоянии» объектов, пусть это и будет слишком психоаналитически.
То есть, чтобы знать о том, где объект будет находиться в сто первом кадре, MAYA должна знать, где объект находился в предыдущем, сотом кадре. В свою очередь, чтобы узнать положение в сотом кадре, ей нужна информация из девяносто девятого и т.д. Таким образом, чтобы рассчитать положение объекта к сто первому кадру, MAYA должна последовательно просчитать все предыдущие сто кадров.
Отсюда следует набор несложных законов.
Закон динамики 1.
Скорость воспроизведения анимации должна быть всегда равна Play Every Frame.
Действительно, если MAYA в режиме воспроизведения real-time начнет «ронять» кадры, расчет траекторий в пропущенных кадрах производиться не будет, и последующие за ними кадры будут вычисляться с ошибкой. При пропуске большого количества кадров это приводит к совершенно неадекватным результатам. Этот закон нарушается чаще всего, и первое, что надо проверить, когда появляются «глюки» при работе с динамикой - это скорость воспроизведения анимации. Коварство заключается еще и в том, что если скорости перемещения небольшие, а сцена не сильно тяжелая, пропуск кадров при проигрывании анимации вызывает лишь незначительное отклонение траектории от аналогичной, но просчитанной в каждом кадре. Но при рендеринге (где траектория просчитывается в каждом кадре) позиции объектов будут слегка отличаться от наблюдаемых в окне камеры. Иногда этим можно пренебречь, иногда - нет.
Поэкспериментируйте.
Искусственно утяжелите сцену с цепочкой шаров.
Например, установите для loft атрибут sectionSpans равным 200.
Проиграйте сцену в режиме realtime, остановитесь в районе пятисотого кадра, запомните его номер, верните sectionSpans в единицу, сдублируйте поверхность.
Теперь снова проиграйте анимацию сначала, но в режиме Play every frame. Остановитесь в том же кадре и сравните результат.
Закон динамики 2.
Анимация должна воспроизводиться всегда только вперед.
Попытки проиграть анимацию назад ни к чему не приводят. MAYA запоминает несколько предыдущих кадров, но сделать расчет движения назад уже выше ее возможностей. Дело в том, что численные методы, лежащие в основе расчета траекторий и используемые Rigid Body Solver, не работают «вспять». Еще раз: положение объекта в текущем кадре вычисляется на основе информации о предыдущем кадре.
Примечание. Некоторым пытливым умам, читающим эту книгу, наверное, посчастливилось закончить школу и даже поступить в технический институт. Те из них, кто доучился курса до третьего, могут смутно помнить названия «численные методы», «метод Эйлера», «метод Рунге-Кутты» и совсем жуткие «методы Адамса». Да, это все из той же оперы. В Attribute Editor для Rigid Body Solver вы даже можете выбрать, какой метод использовать при расчетах и увеличивать точность за счет измельчения шага по времени для борьбы с большими скоростями.