1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Анимация", создана пользователем SENSBoD, 31 янв 2013.

Модераторы: Артер
  1. SENSBoD

    SENSBoD Активный участник

    С нами с:
    09.10.2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    12
    Можно ли привязать готовую анимацию шасси (всего шасси) до элемента slider?
     
  2. diwian diwian

    diwian diwian Мастер

    С нами с:
    05.06.2010
    Сообщения:
    4.742
    Симпатии:
    74
    Баллы:
    83
    Для связей объектов со слайдером(slider) в максе служит Wiere Parameters (правая кнопка мыши).Насчёт анимации я думаю,что попробовать можно.
     
  3. INCUS

    INCUS Знаток

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

    maiden666 Знаток

    С нами с:
    06.04.2010
    Сообщения:
    3.093
    Симпатии:
    87
    Баллы:
    74
    а у макса в выражениях нет параметра времени? ( я так понимаю, идея в том, чтобы готовую анимацию проигрывать с произвольной скоростью), как например у XSI есть параметр Current Frame ( то есть номер кадра), и его можно использовать в выражениях
     
  5. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Попробуйте такой вариант. Пример:
    В новой сцене создаем 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"
     
  6. maiden666

    maiden666 Знаток

    С нами с:
    06.04.2010
    Сообщения:
    3.093
    Симпатии:
    87
    Баллы:
    74
    только мельком взглянул - уже страшно стало
     
  7. diwian diwian

    diwian diwian Мастер

    С нами с:
    05.06.2010
    Сообщения:
    4.742
    Симпатии:
    74
    Баллы:
    83
    Ну вот,пришёл igorznag и всё "испортил" только народ решил "размять" мозги по поводу анимации а он тут как тут(исподтишка) "Нате господа заполучите готовое решение ".А заметили,с каждым разом скрипты всё больше и больше.Прямо уже и страшно становиться,чего дальше будет.
     
  8. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Простой пример:
    В новой сцене создаем один чайник 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 слайдера.
     
Модераторы: Артер

Поделиться этой страницей