Render.ru

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

GrndWrath

Пользователь сайта
Рейтинг
2
#1
Здравствуйте,

у меня такой вопрос - как сделать возможным(при движении любого объекта, в сцене), автоматическое
передвижение слайдера времени( на панели анимации), на заранее определенное расстояние(к примеру 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)
 

igorznag

Мастер
Рейтинг
103
#2
Пример для частного случая:
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();
 

GrndWrath

Пользователь сайта
Рейтинг
2
#3
Очень классно спасибо

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

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

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

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

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

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

igorznag

Мастер
Рейтинг
103
#4
А с костями и вертерх поинтами это уже отдельно ?
Нет
igorznag_ms_temp - так обозначается сфера ?
Нет
Сделать бы под него отдельную менющку где выбираешь на сколько ячеек передвигать слайдер
Код:
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
 

GrndWrath

Пользователь сайта
Рейтинг
2
#5
Класс спасибо, скрипт просто прекрасен, вопрос - как его адаптировать и к костям ?

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

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

igorznag

Мастер
Рейтинг
103
#6
вопрос - как его адаптировать и к костям ?
Я не знаю. Что такое объект-кость? Как создать объект-кость в программе 3ds Max?
А в прочем ) где можно раздобыть полный список, того как в скрипте выглядит сфера или кость.
FAQ форума MaxScript
MAXScript Reference
 

GrndWrath

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

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


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


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

GrndWrath

Пользователь сайта
Рейтинг
2
#8
Дописал в скрипте Objects(ко всем), теперь скрипт работает ко всем объектам в сцене. Спасибо
 

GrndWrath

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


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


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

Но вообще очень классный получается скрипт.
 
Сверху