Render.ru

Slider и готовая анимация

SENSBoD

Знаток
Рейтинг
38
#1
Можно ли привязать готовую анимацию шасси (всего шасси) до элемента slider?
 
Рейтинг
82
#2
Для связей объектов со слайдером(slider) в максе служит Wiere Parameters (правая кнопка мыши).Насчёт анимации я думаю,что попробовать можно.
 

INCUS

Знаток
Рейтинг
29
#3
Не, не....При записи на слайдер, мы фактически делаем ту же самую, классическую анимацию, только она привязана не ко времени ползунка трек бара,
а к физическому перемещению слайдера, на который, кстати, можно потом ставить классические ключи уже для его непосредственной анимации.
Wire Parameters - это больше для бесконечной связи каких-то параметров...
А анимация, записанная на слайдер - это анимированные графики выбранных треков, ограниченные пределами ползунка слайдера.
Записывать на него нужно через Manager Reaction.
На счёт переноса уже готовой анимации не уверен, можно ли...
 

maiden666

Мастер
Рейтинг
112
#4
а у макса в выражениях нет параметра времени? ( я так понимаю, идея в том, чтобы готовую анимацию проигрывать с произвольной скоростью), как например у XSI есть параметр Current Frame ( то есть номер кадра), и его можно использовать в выражениях
 

igorznag

Мастер
Рейтинг
103
#5
Можно ли привязать готовую анимацию шасси (всего шасси) до элемента slider?
Попробуйте такой вариант. Пример:
В новой сцене создаем 2 чайника и один слайдер.
Анимируем положение и вращение чайников с помощью ключей.
Перемещаем Time Slider в первом кадре анимации.
Открываем окно Curve Editor.
Auto Select включаем Animated.
Auto Expand включаем Animated.
Auto Scroll включаем Selected
Выделяем чайники.
Нажимаем правую кнопку мыши на выделенные дорожки и выбираем пункт Collect Parameters.
В окне Parameter Collector устанавливаем название "Master" для свитка.
Создаем еще один пустой свиток с названием "Slave" и выделяем его.
Название свитков не имеет значение. Имеет значение порядок свитков и порядок параметров.
Создаем копии (Clone>Copy) чайников. Выделяем копии чайников.
Устанавливаем контроллер Float Script для выделенных дорожках копиях чайников.
Нажимаем правую кнопку мыши на выделенные дорожки и выбираем пункт Collect Parameters.
Выделяем оригинальные (не копии) чайники и прячем их (Hide).
Выделяем слайдер.
Устанавливаем контроллер Bezier Float для дорожки Slider01>Object (Slider)>value
На панели Modify устанавливаем значение для Value, Minimum, Maximum.
Value - это текущий кадр анимации
Minimum - это первый кадр анимации
Maximum - это последний кадр анимации
Выделяем слайдер. Запускаем скрипт. В новом окне нажимаем кнопку Apply.
Перемещаем Time Slider в нужном кадре.
Включаем кнопку Select and Manipulate и изменяем/анимируем значение Value слайдера.
Код:
try destroydialog igorznag_reaction_manager catch()
rollout igorznag_reaction_manager "Reaction Manager"
( button btn_apply "Apply"
on btn_apply pressed  do
( if(selection.count==1)then
( obj=selection[1]
if(classof obj==sliderManipulator)then
( ci=ParamCollectorOps.getActiveCollection()
if(ParamCollectorOps.numRollouts ci==2)then
(
r1np=ParamCollectorOps.getNumParameters ci 1
r2np=ParamCollectorOps.getNumParameters ci 2
if(r1np==r2np and obj.value.controller!=undefined)then
( for i=1 to r1np do
(
param1_index=ParamCollectorOps.getParameterIndex ci 1 i
param2_index=ParamCollectorOps.getParameterIndex ci 2 i
param1_controller=ParamCollectorOps.getParameterAnim param1_index
param2_controller=ParamCollectorOps.getParameterAnim param2_index
if(param1_controller!=undefined and classof param2_controller==float_script)then
(
param2_controller.AddObject "slider" obj.value.controller
param2_controller.AddObject "contr1" param1_controller
str="try(with animate off at time (int slider.value) contr1.value)catch 0"
param2_controller.script=str
)--if(param1_controller!=undefined and classof param2_controller==float_script)
)--for i=1 to r1np do
)--if(r1np==r2np and obj.value.controller!=undefined)then
)--if(ParamCollectorOps.numRollouts ci==2)then
)--if(classof obj=sliderManipulator)then
)--if(selection.count==1)then
)--on btn_aplly pressed  do
); createDialog igorznag_reaction_manager
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
 
Рейтинг
82
#7
Ну вот,пришёл igorznag и всё "испортил" только народ решил "размять" мозги по поводу анимации а он тут как тут(исподтишка) "Нате господа заполучите готовое решение ".А заметили,с каждым разом скрипты всё больше и больше.Прямо уже и страшно становиться,чего дальше будет.
 

igorznag

Мастер
Рейтинг
103
#8
только мельком взглянул - уже страшно стало
Простой пример:
В новой сцене создаем один чайник Teapot01 в начале координат и один слайдер Slider01.
Включаем кнопку Auto Key. Перемещаем Time Slider в кадре 30.
Перемещаем чайник из точки (0,0,0) в точку (50,0,0).
Выключаем кнопку Auto Key. Перемещаем Time Slider в кадре 0.
---------
Выделяем слайдер и на панели Modify устанавливаем Value=0, Minimum=0, Maximum=30.
Создаем копию чайника Teapot01 с названием Teapot02.
Открываем окно Curve Editor.
Устанавливаем контроллер Bezier Float для дорожки Slider01>Object (Slider)>value
Устанавливаем контроллер Float Script для дорожки Teapot02>Transform>Position>X Position.
В окне Script Controller в группе Create Variable создаем переменную с названием "contr".
Нажимаем кнопку Assign Controller и выбираем дорожку Teapot01>Transform>Position>X Position
Создаем переменную с названием "slider".
Нажимаем кнопку Assign Controllerи выбираем дорожку Slider01>Object (Slider)>value.
В поле Expression пишем следующий код:
Код:
try(with animate off at time (int slider.value) contr.value)catch 0
Нажимаем кнопку Evaluate. Закрываем окно Script Controller.
Выделяем чайник Teapot01 и прячем его (hide).
Перемещаем Time Slider в нужном кадре (например в кадре 60).
Включаем кнопку Select and Manipulate и изменяем (анимируем) значение Value слайдера.
 
Сверху