Главная › Форумы › Анимация и ригинг › Движение по нескольким кривым
Помечено: path, кривая, ограничитель, путь, сurve
Здравствуйте!
Столкнулся с небольшим затруднением.
Задача такая — есть плоскость и две кривые(Path или\и Bezier). Требуется сделать так, чтобы плоскость могла «подхватывать» проигрывание движения (без поворотов) по кривым в нужный момент времени (К примеру с 0 по 30 кадр, плоскость движется за счет назначение ключевых кадров. Затем 20 кадров плоскость движется по кривой_1. Дальше 5 кадров плоскость движется за счет назначения ключевых кадров и наконец 20 кадров по кривой_2)
Есть несколько способов движения объекта по кривой:
1) Указать в плоскости Object -> Relations -> Parent кривую
При этом плоскость устанавливается в начальную позицию кривой и все манипуляции нужно производить уже от неё.
-Но этот вариант отпадает т.к. используется только 1 кривая.
2) Добавить модификатор «Curve» плоскости.
-Исключаем из-за искажения плоскости.
3) Добавить ограничение(constraints) «Clamp To».
— Отпадает, т.к. плоскость привязывается к кривой намертво…
4) Добавить ограничение(constraints) «Follow Path»
— Если кривая только одна, то это хороший работающий вариант (хотя все равно присутствует начальная привязка к началу кривой, но в отличии от «Clamp To» не мёртвая). Но если использовать несколько таких ограничителей (для каждой кривой), то они соединяются друг с другом и плоскость двигается совершенно не так и не там.
Других способов движения объекта по кривой мною найдено не было.
(А хотелось бы. Например модификатор, работающий как ограничитель «Follow Path», но который не привязывает плоскость к кривой, а только двигает её по пути, изображенной ею, с заданными параметрами «начала кадра» и «конца кадра» движения.)
Я пока нашел только 2 решения этой проблемы:
1) Пользоваться ограничителем «Follow Path», при этом подменяя плоскость её копией каждый раз, кода нужно произвести движение по следующей кривой. (очень муторный вариант)
2) Каким то образом преобразовать движение по ограничителю «Follow Path» так, чтобы он появился в Graph Editor не в виде кривой «NurbsPath», а в виде кривых движения самой плоскости по осям X Y и Z. Но как этого добиться я без понятия. (В ограничителях же нет кнопки «применить анимацию движения на сам объект» :) )
Подскажите пожалуйста, как решить эту проблему. Может быть всё намного проще чем я думаю и есть более простой способ решить эту задачу. Надеюсь на вашу помощь.
В целом, Вы перебрали почти все (если не все) возможные варианты. Я так сразу ничего нового и не припомню, но можно попробовать сделать следующее:
Преобразовать кривую в меш, из-за чего у нас появится нужное нам количество вершин. Сместить центр плоскости в нужное место и начать устанавливать курсор на каждой вершине кривой, перемещать к курсору плоскость и ставить ключевой кадр.
Но все уйдет мин 15 конечно, но зато она проследует весь путь кривой.
Если придумается позже более человечный способ — дам знать :)
Преобразование кривой в меш и смещение плоскости по полученным вершинам вполне хороший действенный способ (а учитывая в наличии инструмента «Automatic keyframe» 15 минут превратятся в 5 :) ). И даже скорость проигрывания анимации можно отрегулировать в «Dope Sheet».
К примеру, нужно сделать так, чтобы плоскость двигалась по 4-м одинакового вида кривым, но начиная с разных мест. Создаётся анимация движения по одной кривой. При её копировании через «Dope Sheet» (для создания остальных 3-х движений) создаётся движение плоскости в том же(!) самом месте. Чтобы это исправить, нужно скорректировать положение кривых в «Graph Editor» (предварительно отключив авто привязку к сетке, иначе вся кривая будет испорчена). Заморочено, но вполне реализуемо получаться.
Однако возникает другой вопрос — как скопировать такую анимацию для другого объекта например на другой сцене (Scene), в том же файле. И как вообще можно сохранить такую анимацию на будущее, если потребуется её использовать повторно, но в другом месте?
Само собой если будет найден более человечный способ я буду только рад, но и этот уже что-то (еще бы проблему с сохранением и переносом анимации на другой объект решить) :) .
Немного удивляет, что ни у кого вообще не возникает потребности в движении объекта по пути описываемых несколькими кривыми без привязки самого объекта к ним… Везде используют только одну кривую на объект и при этом объект к ней привязывается.
П.С: С метками темы я немного напортачил, всё слитно получилось :\
Можно еще попробовать сделать так, как я делал в уроке про риггинг гусениц танка. Использовать движение одного объекта по кривой, он, естественно, будет искажаться, а затем его скрыть и привязать к нему другой объект. В итоге он (второй) будет следовать по пути первого, но без искажения.
P.S. Метки поправил :) Их через запятую писать надо.
Ваш урок про риггинг гусениц танка немного про другое и как всегда — 1 объект одна кривая.
Но упоминание про скрытие объектов натолкнуло меня на еще одну модель реализации «движения по нескольким кривым».
Как это работает:
Имеется: «главная» плоскость; две кривые; две вспомогательные плоскости.
К каждой кривой приписывается по одной вспомогательной плоскости с помощью ограничителя «Clamp To».
В «главной» плоскости для каждой вспомогательной плоскости создаётся ограничитель «Copy Location».
А дальше с помощью ключей анимации на «видимость\ не видимость» ограничителя «Copy Location» и передвижения как вспомогательных плоскостей так и главной плоскости, создаётся как бы правильное передвижение по нескольким кривым. (Само собой вспомогательные плоскости выключаются для рендера)
Скорость проигрывания регулируется через «Dope Sheet».
Переносимость на другие объекты\ в другие сцены очень хорошая (вспомогательная плоскость с кривой великолепно копируется).
В общем пока это самый оптимальный найденный вариант. :)
Привет,спустя столько лет прошло с заданного с вопроса, столкнулась с подобной проблемой. Уже вышел блендер 2.8. Так вот тут можно воспользоваться таким:
-выделяем объект который движется по кривой
-идем в Object-Animation-Bake Action
Зная сколько кадров наш объект проходит по нужному участку выставляем в меню с какого по какой фрейм считать ключи или вариациями бейкаем всё а потом что не нужно удаляем и печем с нужного кадра по нужный следующий путь объекта и так по кускам до конца.