В уроке рассказывается как с помощью xpresso и coffee создать анимацию сложного механизма, управляемую минимальным числом параметров.
В рассматриваемой сцене вся анимация (движение рамки, пленки, валиков катушек) является зависимостью от угла поворота треугольника Рело — объекта TR.
Рассмотрим вначале грейферный механизм, состоящий из рамки (ramka) и рычагов TopLeftBar, TopRightBar, BottomLeftBar, BottomRightBar, HorBar.
Перемещение рамки (ramka) задается xpresso выражением, присоединенным к объекту XpressoHolder.

Смысл вычисления состоит в выборе определяющей угловой точки треугольника Рело в зависимости от соотношений координат x и y трех угловых точек ТР. Углы поворота рычагов вычисляются с помощью выражения, прикрепленного к объекту TopL.

Координаты верхних рычагов TopLeftBar, TopRightBar не вычисляются, потому что они являются подчиненными объектами к объекту ramka, а нижние координаты и вовсе неизменны (они закреплены внизу к объектам stoika1 stoika2). C рычагом HorBar ситуация обратная — для него вычисляются координаты, но угол поворота неизменен (рычаг всегда горизонтален).

Рассмотрим движение кинопленки — объект Film. Профиль формы пленки задается сплайном FilmSpline. Необходимо было создать иллюзию того, что пленка снимается с верхней катушки bobina1, проходит через ролик Rolik1, далее через кадровую рамку FilmFrame, Rolik2 и наматывается на катушку bobina2. При этом катушки вращаются равномерно, но в районе рамки движение происходит скачками, т.е. пленка движется только 1/4 времени полного оборота треугольника Рело. В остальное время (3/4 периода) пленка в районе кадровой рамки неподвижна (происходит проецирование кадра). При этом происходит образование петель. Во время проецирования кадра увеличивается верхняя петля (подача пленки левой катушкой) и уменьшается нижняя (смотка ленты нижней). Во время продвижения пленки в рамке наоборот — верхняя петля уменьшается, нижняя увеличивается. При этом за время всего периода общая длина участка от Bobina1 к Bobina2 остается постоянной.
Такая модель реализована с помощью вспомогательного объекта top_, его перемещение вверх — вниз руководит верхними точками сплайна FilmSpline и задается углом поворота ТР. Перемещение top_ происходит с помощью Xpresso, которое к нему присоединено.

FilmSpline имеет тип B-Spline, что позволяет изменять только положение точек, получая в любом случае довольно гладкую кривую.
Итак, верхние точки FilmSpline перемещаются по вертикальной оси также как и объект top_.

Для сохранения постоянной длины всего сплайна необходимо перемещать нижние точки FilmSpline, но на какое расстояние? Для решения этой задачи использовался метод половинного деления, известный всем с детства по игре «больше-меньше», который позволяет за небольшое количество шагов получить необходимую и достаточную точность. Алгоритм был реализован на Coffee (см. объект Film).

В нем нижние точки поднимаются и опускаются и методом половинного деления находится такое их положение, при котором длина сплайна FilmSpline остается постоянной. (1800)
До этого момента мы говорили только про форму сплайна FilmSpline, но ничего не было сказано непосредственно про движение кадров. Движение кадров имитируется смещением текстуры по объекту Film. Это смещение задается xpresso выражением, присоединенным к объекту Film.

К объекту Film также присоединено вспомогательное xpresso выражение, которое помогает рассчитать, сколько раз текстура уместится на ленту без растяжения.

Угол поворота катушек bobina1 и bobina2, а также роликов Rolik1 и Rolik2 (группа rotors) вычисляется xpresso выражениями как отношение смещения текстуры к радиусу ролика или бобины.

Таким образом, в TimeLine все движение грейферного механизма с пленкой управляется единственным треком TR->Rotation.B.
Мы рассмотрели, как анимация всех частей столь сложного механизма как киноаппарат может быть задана как зависимость от всего одного параметра. Это позволяет впоследствии очень тонко и удобно управлять движением всего механизма.
Сцена была разработана при создании фильма
Круглый треугольник Рело. Скачав его, можно посмотреть, как работа рассмотренного механизма выглядит на экране.