|
|
||
|
||
|
|
||
| Страница 1 из 31 |
d|g Не так страшен черт: Просматривая сообщения на различных форумах, посвященных программе 3DS MAX, можно отметить очень низкий интерес к написанию скриптов на языке MAXScript. На фоне того, как широко используются скрипты в MAYA, причина сложившейся ситуации приобретает дополнительный интерес. И, как мне кажется, она не в недостатке навыков программирования у компьютерных художников, но это тема отдельного разговора: В данном уроке на примере анимации зубчатой передачи рассматривается применение скрипт контроллеров традиционным методом с помощью окна Track View и с использованием MAXScript. Загрузите сцену reducer.max и просмотрите анимацию. Сцена содержит колесо и шестерню, делительный диаметр которых соответственно 30 и 20. Предположим, что Alpha - это угол поворота колеса, тогда угол поворота шестерни равен - Alpha * 3.0 / 2.0. Это значение необходимо перевести в радианы, умножив на (pi / 180.0). Давайте добавим анимацию для шестерни: - нажмите кнопку Open Track View в панели Main Tool Bar, после чего откроется окно Tracks - выделите трек Rotation объекта LargerGear, нажмите кнопку Assign Controller и назначьте ему контроллер Local Euler XYZ - назначьте треку Rotation объекта SmallerGear контроллер Local Euler XYZ Обратите внимание на значение 9.0 в треке Local Z Rotation, позднее оно будет использовано в качестве поправки, которая появляется из-за того, что шестерня после создания была повернута вокруг оси Z - назначьте треку Local Z Rotation объекта SmallerGear контроллер Float Script - щелкните правой кнопкой мыши трек Local Z Rotation и в появившемся меню выберите Properties - в появившемся окне Script Controller введите следующую строку: (-$LargerGear.rotation.controller.Local_Z_Rotation.controller.value * 3.0 / 2.0 + 9.0) * pi / 180.0 - закройте окна Script Controller и Tracks - просмотрите анимацию Приведенную выше последовательность действий можно записать на языке MAXScript следующим образом: -- назначаем контроллер Local Euler XYZ трекам Rotation объектов LargerGear и SmallerGear -- назначаем треку Local Z Rotation объекта SmallerGear контроллер Float Script $SmallerGear.rotation.controller.Local_Z_Rotation.controller = float_script () -- изменяем значение контроллера Float Script в треке Local Z Rotation объекта SmallerGear Затратив немного времени на добавление элементов управления для указания объектов, передаточного отношения, поправки, направления, можно получить удобный инструмент для анимации различного вида передач (зубчатых, ременных, цепных и т.д.). Подробный урок по элементам управления можно найти в разделе уроков, а полную версию скрипта - на моей страничке, посвященной MAXScript. Замечу, что с его помощью можно создавать многоступенчатые передачи. Надеюсь, что эта статья немного приоткроет дверь в интересный и загадочный мир MAXScript. |