Между волосами (динамическими кривыми) тоже можно натягивать некоторый набор ограничителей-констрейнов, соединяя их определенными связями. Причем анимируя эти констрейны, можно задавать дополнительные движения кривых. Однако по сравнению с пружинами, натягиваемыми между частицами, есть несколько важных отличий.

Во-первых, между волосами можно натягивать не только пружины (которые больше всего напоминают констрейн типа Rubber Band), но и связи других типов - например, упругие стержни (констрейн типа Stick) или абсолютно жесткие соединения (констрейны типа Transform и Hair to Hair). Все констрейны имеют общую идеологию (за исключением, пожалуй, Hair Bunch) и абсолютно одинаковые атрибуты. Так что можно представлять их себе просто как связи разного типа, накладываемые на контрольные точки динамических кривых прямо во время анимации.

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

Общий принцип наложения связей таков.

Сначала надо выбрать кривые и для них создать констрейн определенного типа (Hair=>Create Constraint). Этот констрейн определяет в первом кадре (!), какие контрольные точки для каждой кривой располагаются ближе всего к его центру (визуально констрейн представляется как локатор), причем этот констрейн выбирает по одной точке с каждой кривой и накладывает связи только на эти точки.

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

Таким образом, выбор точек, на которые накладываются связи, происходит только в начальном кадре анимации. Поэтому в этом кадре вы можете свободно передвигать центр констрейна и видеть, как интерактивно обновляется набор ближайших к нему точек (еще раз напомню: с каждой кривой берется только одна точка). Зафиксировав положение констрейна в первом кадре, вы запускаете анимацию и видите, как ограничивается движение выбранных в первом кадре точек. Никто не мешает вам анимировать положение констрейна, просто вы должны помнить, что набор точек, на которые он влияет, полностью определяется положением констрейна в первом кадре. В остальных кадрах именно эти точки будут следовать за констрейном, если он анимирован.

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

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

Воспользуйтесь предыдущим файлом (hairCylinderStartCurves.ma).

Встаньте в первый кадр. Спрячьте стартовые кривые, если они присутствуют на экране (Hair=>Display=>Current Position).

Выберите все кривые и создайте констрейн Rubber Band (резиновая полоска или нить): Hair=>Create Constraint=>Rubber Band.


⇐ вернуться назад | | далее ⇒