пятница, 4 декабря 2015 г.

Настройка анимации ступеней эскалатора посредством maxscript

Имеем анимированную по сплайну ступеньку эскалатора. Задаем скорость движения ступеньки около 0.5 м/c.
Далее необходимо накопировать ступеньки по пути с заданным сдвигом:

------------------------------------------------------------
for i = 1 to 10 do
(
    asd = instance $
    moveKeys asd.pos.controller.percent.controller 20f
    select asd
    )
------------------------------------------------------------

Соответственно эта строчка регулирует количество копий(10 шт):

for i = 1 to 10 do

 А эта строка - сдвиг на 20 кадров:

moveKeys asd.pos.controller.percent.controller 20f

Величина 20f подбиралась опытным путем, таким образом, чтобы ступени были на максимально корректном расстоянии друг от друга. 
Можно и в другую сторону сдвигать: -20f



Тонкую настройку - подгонку ступеней можно провести небольшой реглировкой их скорости, т.е. углом наклона анимационной линии:
 Этой строчкой меняем угол наклона (работает только с выделенными ступенями):
-----------------------------------------------------------------------
for i in selection  do i.pos.controller.percent.controller.keys[2].value = i.pos.controller.percent.controller.keys[2].value - 0.001
------------------------------------------------------------------------
Смысл в том, что верхний ключ немного смещается вверх или вниз сразу для всех ступеней.
После, примерно, двадцатикратного применения этой строки (Ctrl+E) удалось точно подогнать ступени эскалатора.

Спасибо за внимание.

Поворот в локальных координатах вокруг выбранной оси.

for i in selection do i.transform = (rotateZmatrix (random 0 100))*i.transform

К примеру, таким образом, все эти окна  были открыты на угол от 0 до 100 градусов за время нажатия клавиш Ctrl+E.