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

Автоматическое передвижение TimeSlide'a(Ползунок)

Тема в разделе "MAXScript", создана пользователем GrndWrath, 27 апр 2012.

Модераторы: Savin Denis
  1. GrndWrath

    GrndWrath Пользователь сайта

    С нами с:
    24.04.2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Здравствуйте,

    у меня такой вопрос - как сделать возможным(при движении любого объекта, в сцене), автоматическое
    передвижение слайдера времени( на панели анимации), на заранее определенное расстояние(к примеру 3 кадра)
    Вот к примеру, двигаем сферу, и ползунок автоматически передвигается на 3 кадра и создает ключик.
    При этом скрипт должен быть автоматическим, то есть включил его - работает для всех объектов(Даже если объекты Vertex, Скелет, и тд),
    Как такое реализовать.
    Много времени это сэкономит

    P.S.
    Мое Javascript(и то я его только начал познавать) мнение на этот счет
    max script еще не изучал
    var timesliderMove = slidertime
    var GetFunctioOfmovingobject (orGetCurrientObjPosition тут запрашиваем позицию у объекта в сцене, если она меняется то у нас True) = dTheFunction
    var Fnew Function = dThefunction
    var MoveSliderFunction = MoveSlider
    var addkeys = add keys function
    var getFnctnsliderposition = slider position
    function(var i = 0; i<0;i++)
    По идее нужно запрашивать позицию слайда(чтоб не получилось что слайд на 37 кадре и мы его снуляем до 3), если она 0 то перемешаем на 3( или как она в макс скрипте добавляется)
    if (Fnew Function == true)
    timeSlider(Тут я реалино не знаю не использовал maxscript, могу только догадыватся) (slider position)Короче тут я реально запутался вроде еще If Добавлять надо Move slider (незнаю) to 3 || add key)
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Пример для частного случая:
    1. В новой сцене создаем одну сферу. Запускаем скрипт.
    2. Перемещаем сферу с помощью мыши, используя Transform gizmos.
    Код:
    global igorznag_ms_temp=0;
    fn move_slider=
    (
    if(mouse.buttonStates[1]==true and igorznag_ms_temp==0)then 
    (igorznag_ms_temp=1;animButtonState=true;slidertime+=3)
    if(mouse.buttonStates[1]==false)then (igorznag_ms_temp=0;)
    )
    deleteAllChangeHandlers id:#igorznag_ms
    when transform objects changes id:#igorznag_ms handleAt:#redrawViews do move_slider();
    when geometry objects changes id:#igorznag_ms handleAt:#redrawViews do move_slider();
     
  3. GrndWrath

    GrndWrath Пользователь сайта

    С нами с:
    24.04.2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Очень классно спасибо

    А с костями и вертерх поинтами это уже отдельно ?

    Мм не мог бы ты скинуть ссылки где есть примеры работы с Vertex и Костями.

    Может моих знаний в JavaScript хватит для того чтобы адаптировать скрипт ко всем объектам - которые есть в сцене,

    НО скрипт получился классный, спасибо

    P.S.
    igorznag_ms_temp - так обозначается сфера ?

    Сделать бы под него отдельную менющку где выбираешь на сколько ячеек передвигать слайдер и выбирать к каким именно объектам, костям,Vertex, или просто объектам.
     
  4. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Нет
    Нет
    Код:
    try(destroyDialog igorznag_ro_ms) catch()
    rollout igorznag_ro_ms "Move Slider"
    (
    -- GlobalVariables Declarations
    global igorznag_ms_temp=0;
    -- GUI 
    spinner spOffsetFrames "Offset Frames" fieldWidth:45 range:[1, 1e+9, 3] type:#integer  pos:[5,5]
    button btnRefresh "Refresh" pos:[5,30]
    button btnDeleteAll "Delete All" pos:[65,30]
    -- Functions
    fn move_slider=
    (
    if(mouse.buttonStates[1]==true and igorznag_ms_temp==0)then 
    (igorznag_ms_temp=1;animButtonState=true;slidertime+=spOffsetFrames.value)
    if(mouse.buttonStates[1]==false)then (igorznag_ms_temp=0;)
    )
    fn when_handler=
    (
    deleteAllChangeHandlers id:#igorznag_ms
    when transform objects changes id:#igorznag_ms handleAt:#redrawViews do move_slider();
    when geometry objects changes id:#igorznag_ms handleAt:#redrawViews do move_slider();
    )
    -- Event Handlers
    on igorznag_ro_ms open do when_handler();
    on btnRefresh pressed do when_handler();
    on btnDeleteAll pressed do deleteAllChangeHandlers id:#igorznag_ms
    )--end rollout igorznag_ro_ms 
    createDialog igorznag_ro_ms 132 55
     
  5. GrndWrath

    GrndWrath Пользователь сайта

    С нами с:
    24.04.2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Класс спасибо, скрипт просто прекрасен, вопрос - как его адаптировать и к костям ?

    А в прочем ) где можно раздобыть полный список, того как в скрипте выглядит сфера или кость.

    Ну то что вы объявляли - ro_ms
     
  6. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Я не знаю. Что такое объект-кость? Как создать объект-кость в программе 3ds Max?
    FAQ форума MaxScript
    MAXScript Reference
     
  7. GrndWrath

    GrndWrath Пользователь сайта

    С нами с:
    24.04.2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Спасибо разобрался с Bone, но только конкретным тем что в 3ds max созданное мной(За то сейчас создает для него ключики, по идее можно сделать скрипт который будет брать все bone(Правило - Getboneinscene), и к примеру располагать их в Gue, и просто при нажатии на нужную bone в Gui Скрипте, будет применяться ваше правило - как вам идея, ) ,

    вот бы правило - для любых созданных bone, использовать ваши - скрипт правила.


    Интересно как выделить bone, по средствам скрипта.


    Если такое правило создать ro_ms_выделитьлюбыеbone то ваш скрипт будет применяться практически ко всему что можно анимировать, ну если только камеры и еще мелкие детали.
     
  8. GrndWrath

    GrndWrath Пользователь сайта

    С нами с:
    24.04.2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Дописал в скрипте Objects(ко всем), теперь скрипт работает ко всем объектам в сцене. Спасибо
     
  9. GrndWrath

    GrndWrath Пользователь сайта

    С нами с:
    24.04.2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Появилась огромная необходимость возвращать, при нажатии ALT+Z Слайдер на место ключа, который был удален.


    То есть удалил 5-ый ключ, нажал ALT+Z Ключ вернулся и TimeSlider вернулся на положение 5-того ключа.


    Я знаю знаю, надо хоть как то и мне принять в этом участие, немного самому подумать.

    Но вообще очень классный получается скрипт.
     
Модераторы: Savin Denis

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