«Процедурные пружины» - означает, что никакая динамика не используется для вычисления движения, а все траектории вычисляются по формулам, иначе говоря, с помощью expressions. Тех, кто занервничал при слове expressions, поспешу успокоить: программировать ничего не надо, все формулы создаются автоматически.
В предыдущей сцене выберите объект hairSysteml и выполните операцию Hair=>Delete Entire Hair System, для того чтобы удалить систему волос и все, связанные с ней кривые. Розы распрямятся, так как все контрольные кривые для них были удалены. (Если у вас возникли проблемы на этом этапе, просто удалите вручную все объекты кроме nurbsCirclel и strokel.)
Теперь выберите штрих и выполните операцию Paint Effects=>Brush Animation=>Make Brush Springs.
Запустите анимацию. Ничего не происходит, только в Attribute Editor появилась закладка для какого-то expressionl. Для того, чтобы увидеть пружины в действии, надо как следует потрясти кривую или поверхность, из которой растут штрихи.
Запустите интерактивную анимацию: Solvers=>lnteractive Playback. (Я думаю, вы давно выложили этот пункт меню на полку, чтобы всегда иметь его под рукой).
Во время анимации выберите окружность и Move Tool и хорошенько потрясите ее вдоль оси
X. Розы ответят возмущенным раскачиванием.
Совет. Можно обойтись и без интерактивной анимации. Достаточно предварительно выбрать окружность, выделить на манипуляторе Move Tool ось X, а затем запустить обычную анимацию и трясти окружность средней кнопкой мыши.
Чтобы изменить упругость или жесткость пружин, достаточно выбрать штрих и в атрибутах кисти открыть последний раздел Extra Attributes. Там находятся добавленные в ходе операции Make Brush Spring динамические атрибуты, которые можно редактировать.
Чувствительность к тряске определяется атрибутом Spring Travel. Затухание остаточного движения значением Spring Damp. Нулевое значение Spring Stiffness задает бесконечную жесткость, то есть выключает эффект пружин.
Для взрослых. Вы всегда можете разыскать и модифицировать автоматически созданный expression в окне Expression Editor. Его незамысловатый код свидетельствует о том, что на основе координат кривой, из которой растут штрихи, в текущем и предыдущем кадрах вычисляется вектор силы, направленный в сторону, противоположную движению. Этот вектор присваивается атрибуту кисти Uniform Force, определяющему произвольную деформацию, действующую на штрих.
float Spx = pointOnCurvelnfol.positionX; float Spy = pointOnCurvelnfol.positionY; float $pz = pointOnCurvelnfol.positionZ; float $wx = nurbsCirclel .lastWX; float $wy = nurbsCirclel.lastWY; float $wz = nurbsCirclel.lastWZ; float $vx = nurbsCirclel.lastVX; float $vy = nurbsCirclel.lastVY; float $vz = nurbsCirclel .lastVZ; float Sstiff = roseRedl.springStiffness; float Sistiff = 1-Sstiff; float $damp = 1 - roseRedl.springDamp; float Stravel = roseRedl.springTravel; float Sfx = 0; float $fy = 0; float $fz = 0; iff frame > 2 ){