Render.ru

Loop анимация

DDDimaXXX

Мастер
Рейтинг
542
#1
Подскажите как сделать луп анимаци допустим идущих ног. Так чтоб конечная точка движения служила началом для нового цикла. С бипедом всё просто...а вот с обычными объектами немогу разобраться. Заранее спасибо!
 

Виталий Мартынов

Активный участник
Рейтинг
11
#2
Выбираеш нужные объекты и нужные ключи. Идеш в Редактор Кривых (Curve Editor) там выбираеш экстраполяцию ( Cicle-of-range по-моему)
это где-то в главном меню. Там есть гарффики показывающие виды повтора выбранных ключей. Выбираеш нужный. Глядя на них несложно понять какой. Нычало цикла должно совпадать по ключам с концом, правда не для всех случаев (например цикл пинг-понг). Подробней почитай литературу по максу.
 

IrakliSpain

Активный участник
Рейтинг
5
#4
Задача такой простой и нужный, а решение так трудно найти...
Но думаю тебя могут помочь в разделе "MAXSCRIPT".
Я навичок низкой степени и этот скрипт написать пока не смогу, но это помоему не сложно сделать:
Выделяются объекты, потом для каждого объекта в выделении на каждом фреиме с помощью циклами надо выяснить, есть ли там анимационный ключ, и скопировать его на "X" количество фреимов в перед.
 

IrakliSpain

Активный участник
Рейтинг
5
#5
Получилось!
Вот тебе твой скрипт:


MyLoopTime = 10
MyLastFrame = 100
MyStartFrame = MyLoopTime + 1

animate on (
for o in selection do (
for t = MyStartFrame to MyLastFrame do (
at time (t - MyLoopTime) NewPosition = o.pos
at time (t - MyLoopTime) NewRotationX = o.rotation.controller.x_rotation
at time (t - MyLoopTime) NewRotationY = o.rotation.controller.y_rotation
at time (t - MyLoopTime) NewRotationZ = o.rotation.controller.z_rotation
at time t o.pos = NewPosition
at time t o.rotation.controller.x_rotation = NewRotationX
at time t o.rotation.controller.y_rotation = NewRotationY
at time t o.rotation.controller.z_rotation = NewRotationZ
)
)
)



Только: этот скрипт не спрашивает есть ли у данного объекта на данном фрейме ключ (это пока не могу сделать) и вставляет подряд на всех фреймов свои ключи, для всех объектов.

Но если все так и решил попробовать: Копируешь этот скрипт, выделяешь всех объектов в программе, потом идешь MAXScript -> New Script - > и Paste.

MyLoopTime - напиши число, сколько длиться твой цикл.
MyLastFrame - для сколько кадров ты хочешь сделать анимацию.

Потом: Tools -> Evaluate All.

П.С. Если кто-нибудь сможет исправьте скрипт, чтобы он мог определить которые ключевые кадры и не наполнял все фреими ключами.
 

Chebu

Знаток
Рейтинг
59
#6
DDDimaXXX
пробовал...связанные объекты разлетаются в стороны
так разберитесь, что и почему разлетается.

если уж никак не получается с out of range, анимируйте на месте, копируйте ключи, затем подгоняйте скорость.


IrakliSpain

Что если анимированы не только позиция и вращение?
 

IrakliSpain

Активный участник
Рейтинг
5
#7
Тогда скрипт не сработает.
Но если будет нужно, можно и добавить другие свойство
 

Chebu

Знаток
Рейтинг
59
#8
IrakliSpain
Тогда скрипт не сработает.
это я понял:) я имею в виду, что за всеми параметрами не угонишься, и автоматизировать тут нечего, благо встроенные средства макса в этом случае и так нормально работают.

Кстати, того, что просит автор, ваш скрипт не делает. Ему нужен цикл анимации со смещением.
 

DDDimaXXX

Мастер
Рейтинг
542
#9
IrakliSpain, спасибо конечно за проделанную работу...но я почти уверен что это делается стандартными средствами в максе
 

DDDimaXXX

Мастер
Рейтинг
542
#10
о...разобрался с Аут оф ранжем...заработало. А не подскажите как это дело в ключи перевести?
 

Chebu

Знаток
Рейтинг
59
#11
в track view меню controller -> collapse controller

проще - скриптами, если нужно - обращайтесь.

Но в любом случае, ключи на каждом кадре.
 

Андрей Омельченко

Активный участник
Рейтинг
16
#12
нет не на каждом , в controller -> collapse controller есть выбор на каком по счёту кадре ставить ключь , третий столбец , если вы это имели ввиду
 

Chebu

Знаток
Рейтинг
59
#13
Андрей Омельченко, я имел в виду, что исходная анимация всё равно поломается и станет трудно редактируемой.
 
Сверху