MaxScript Простейшея задача |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
MaxScript Простейшея задача |
12/01/2010, 16:42
Сообщение
#1
|
|
Уже не новичок Группа: Пользователи Сообщений: 12 Регистрация: 20/05/2007 Пользователь №: 52 335 |
Необходимо: задать перемещение(поворот) объекту(не принципиально объект будет вращаться вокруг другого объекта или вокруг своей точки опоры), далее необходимо запустить анимацию(это получается), но! В чем суть всей темы? Как остановить анимацию на сотом кадре? Пробовал десятки вариантов ничего не получается... Скорее всего неправильно ввожу команду stopanimation.
macroScript PlayStop category:"mOS" ( select $LDV s=cylinder pos:[-40.135,-2.46636,9.80702] animate on( at time 100 (about s rotate $ (quat -70 z_axis)) ) playanimation() if slidertime==100f do stopAnimation() ) (slidertime - пишется красным(на всякий случай, а может так и должно быть)) Сообщение отредактировал iCube - 12/01/2010, 16:53 |
|
|
12/01/2010, 17:24
Сообщение
#2
|
|
самоучитель Группа: Участник Сообщений: 2 858 Регистрация: 12/02/2004 Пользователь №: 4 541 |
в хелпе чето написано,
There is an important restriction to understand when using these functions: Calling playAnimation() is a thread-blocking call internally in 3ds Max and does not return until the playback is stopped by the user clicking the Stop Play button or another thread executing a stopAnimation(). The only way to achieve the latter in MAXScript currently is to call stopAnimation() from a scripted rollout panel handler such as a button press handler or from a scripted controller script. If you invoke playAnimation() in code run from the Listener, you will not be able to invoke stopAnimation() from the Listener, because the Listener is blocked inside the playAnimation() call. не знаю, много букв, чтото угрожающее вроде) попробовал вариант с таймером, скорее всего он перректален, но работает останавливается после сотого кадра ( rollout ug "" width:100 height:50 ( timer tmr "Timer" pos:[13,16] width:24 height:24 interval:20 on tmr tick do ( if slidertime >100f do ( stopAnimation() destroydialog ug ) ) ) createdialog ug playanimation() ) |
|
|
12/01/2010, 18:06
Сообщение
#3
|
|
MaxMan Группа: Пользователи Сообщений: 231 Регистрация: 11/11/2005 Пользователь №: 17 731 |
iCube,
в вашем примере проверка (if slidertime==100f ) выполнится один раз, в момент запуска скрипта. Сделать так, чтобы проверка выполнялась всё время, пока играется анимация, можно двумя (очевидными) способами: 1)как предложил secco, по событию таймера. 2)используя коллбэк-функцию. |
|
|
13/01/2010, 13:56
Сообщение
#4
|
|
Уже не новичок Группа: Пользователи Сообщений: 12 Регистрация: 20/05/2007 Пользователь №: 52 335 |
Огромнейшее спасибо за ответы!!!! Все получилось
|
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 23/04/2024 - 23:21 |