Всем привет !!!
Возникла проблема с решением достаточно простой задачи, нужно было сделать коробку передач на основе шестерней, решил использовать скрипты , и все было бы хорошо если не одна проблема , при простой передачи вращения, типа "угол вращение ведущей" =" угол вращения ведомой умножен на соотношения количества их зубов" не подошел , так как при переключении передачи происходит скачек как будто вся система все предыдущее время вращалась на текущей передаче, пошел другим путем , решил воспользоваться командой rotate <имя объекта> <угол>
и опять ....
Проблема в том что теперь ведомый вал крутится примерно в 3 раза быстрее ,думал но то ,что беру разницу между кадрами , а процедура вызывается при каждом тике , попробовал тики, вообще вращение отсутствует .....
ПРИСОВЕТУЙТЕ ЧТО-ТО
Приведу пример кода
(скрипт вспомогательного объекта)
dr1= at time f $Driver_dummy.rotation.controller.'Y Rotation'
dr2= at time (f-1) $Driver_dummy.rotation.controller.'Y Rotation'
temp= dr1-dr2 -- Вычисляем дельту угла ведущего вала
if 0 == gear_pos then k=0 -- проверяем текущую активную передачу
else
if 1 == gear_pos then k=temp*0.44
else
if 2 == gear_pos then k=temp*0.81
else
if 3 == gear_pos then k=temp*1.25
else
if 4 == gear_pos then k=temp*2.13
rot_ang = eulerangles 0 k 0 -- вращаем ведомый вал
rot_obj=$Val_2
rotate rot_obj rot_ang
Возникла проблема с решением достаточно простой задачи, нужно было сделать коробку передач на основе шестерней, решил использовать скрипты , и все было бы хорошо если не одна проблема , при простой передачи вращения, типа "угол вращение ведущей" =" угол вращения ведомой умножен на соотношения количества их зубов" не подошел , так как при переключении передачи происходит скачек как будто вся система все предыдущее время вращалась на текущей передаче, пошел другим путем , решил воспользоваться командой rotate <имя объекта> <угол>
и опять ....
Проблема в том что теперь ведомый вал крутится примерно в 3 раза быстрее ,думал но то ,что беру разницу между кадрами , а процедура вызывается при каждом тике , попробовал тики, вообще вращение отсутствует .....
ПРИСОВЕТУЙТЕ ЧТО-ТО
Приведу пример кода
(скрипт вспомогательного объекта)
dr1= at time f $Driver_dummy.rotation.controller.'Y Rotation'
dr2= at time (f-1) $Driver_dummy.rotation.controller.'Y Rotation'
temp= dr1-dr2 -- Вычисляем дельту угла ведущего вала
if 0 == gear_pos then k=0 -- проверяем текущую активную передачу
else
if 1 == gear_pos then k=temp*0.44
else
if 2 == gear_pos then k=temp*0.81
else
if 3 == gear_pos then k=temp*1.25
else
if 4 == gear_pos then k=temp*2.13
rot_ang = eulerangles 0 k 0 -- вращаем ведомый вал
rot_obj=$Val_2
rotate rot_obj rot_ang
Вложения
-
107,7 КБ Просмотров: 330