2016-04-20 9 views
0

Я делаю простой вентилятор в 3DS MAX и создаю GUI для управления объектом. В настоящий момент в GUI я могу управлять PlayAnimation() и StopAnimation() с помощью кнопки On/Off. Но я пытаюсь сделать слайдер, который затем контролирует скорость анимации. Это (в данном случае) увеличит скорость вращения лопастей вентилятора.3DS Max - Max Script Slider

Но это то место, где я застрял, я не уверен на 100%, как это сделать, и не мог найти что-либо в Google, что поможет мне использовать слайдер для увеличения скорости анимации.

Любая помощь и руководство будут очень благодарны!

MaxScript до сих пор:

try(DestroyDialog GUI)catch() 
Rollout GUI "GUI" 
(
Label lbl_name "Power" 
button btn_on "ON" across:2 
button btn_off "OFF" 
Label lbl_speed "Speed Levels" 
Slider slider 
on btn_on pressed do 
(
    PlayAnimation() 
) 
on btn_off pressed do 
(
    StopAnimation() 
) 
//Slider Here... 
) 
CreateDialog GUI 

ответ

0

Вы ищете playbackSpeed:

try destroyDialog ::GUI catch() 
rollout GUI "GUI" 
(
    checkButton chb_switch "Power" width:50 
    label lbl_speed "Speed Levels" offset:[0,10] 
    slider sld_speed type:#integer range:[1,5,timeConfiguration.playbackSpeed] 

    on chb_switch changed playing do 
     if playing then playAnimation() else stopAnimation() 

    on sld_speed changed val do timeConfiguration.playbackSpeed = val 
) 
createDialog GUI 
0

Изменение скорости воспроизведения изменяется для всей сцены. Все анимированные на сцене будут затронуты ...

Как бы подойти к этому для ваших конкретных потребностей:

  • Изменение вентилятора объект/контроллер вращения кости для линейного регулятора.
  • Установите два ключа на вращение, один в кадре 0 и другой на кадре 100, оба установлены со значением 0.
  • Установите кривую вращения в/из диапазона, для относительного повторения.
  • Добавить контрольную кнопку, чтобы выбрать вентилятор для пользовательского интерфейса. (Возможно, вы захотите манипулировать разными фанатами в одной и той же сцене).

Вот УИ:

try destroyDialog ::GUI catch() 
rollout GUI "GUI" 
(
    -- this local variable stores the two initial keys of your fan 
    local keys = undefined 

    pickbutton pkb_fan "Select Fan" message:"Please select animated fan" autoDisplay:true 
    checkbutton chb_switch "Power" 
    slider sld_speed "Fan Speed" type:#float range:[0, 100.0, 0] 

    -- when the fan is selected, assign its linear rotation keys to the keys variable 
    on pkb_fan picked obj do 
    (
     if (obj != undefined) then 
     (
      keys = obj.rotation.controller.keys 
     ) 
     else (keys = undefined) 
    ) 
    -- turning on the fan is setting the second key frame's rotation to a    
    -- non-zero value. 
    -- turning it off is setting it to zero. 
    -- in this scenario the fan is rotating on its Y axis. 
    on chb_switch changed playing do 
    (
     if (keys != undefined) and (keys.count >= 2) then 
     (
      if (playing) then (keys[2].value = quat 0 1 0 1) 
      else (keys[2].value = quat 0 0 0 1) 
     ) 
    ) 
    -- changing the speed of the fan is moving the second keyframe; assuming 
    -- the key frame value is always the same, 
    -- the closer it moves to the first key frame, the faster it spins, the 
    -- more distant, the slower it spins 
    on sld_speed changed val do 
    (
     if (keys != undefined) and (keys.count >= 2) then 
     (
      local t = 0f 
      if (val > 0.0) then (t = 1.0/val * 100.00) 

      keys[2].time = t 
     ) 
    ) 
) 

createDialog GUI 

Это простой сценарий. Если вам нужно оживить/записать переменную скорость, подход немного изменится.

Надеюсь, вам это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^