ty = noise (time); При этом после нажатия кнопки Edit MAYA сама добавит имя объекта к короткому имени атрибута и превратит этот текст в следующую формулу:
pTorusI .translateY = noise(time); Также для ленивых (и любопытных) пользователей предназначено меню Insert Functions в окне Expression Editor. Оно позволяет вставлять имена различных полезных функций в то место текста, где находится курсор. Такие действия, естественно, не освобождают от необходимости знать, что делают эти полезные функции.
Кнопка Delete удаляет expression как объект сцены. Помните о том, что если вы выполняете операцию Break Connection в контекстном меню Channel Box, вы лишь разрываете связь между атрибутом объекта и expression, не удаляя последнего.
Примечание. Предположим, вы собираетесь проанимировать два объекта с помощью expressions.
Для этого вы можете создать один expression, в котором будет описана анимация обоих объектов, например:
pTorusI .translateY = noise(time);
pCubel.translateY = sin(time); Однако, если следовать по иному пути, а именно выделять атрибуты в Channel Box и создавать индивидуальные expressions для каждого объекта, вы можете получить два отдельных expression, каждый из которых описывает анимацию только одного объекта. Какой способ лучше? С точки зрения производительности, наверное, первый, хотя вряд ли вам когда-нибудь удастся заметить разницу. Идеологически, возможно, корректнее второй способ, когда каждый объект, связан только со своей процедурной анимацией. Однако редактировать формулы будет быстрее и удобнее в общем expression, то есть первым способом. Таким образом, нельзя сказать, какой способ лучше это дело вкуса. Результат будет совершенно одинаковым в обоих случаях.
Примеры использования expressions. Телескопическая антенна Разберем пример применения expressions для анимации различных «выдвигающихся» конструкций, типа телескопа. Использование expressions в этом случае едва ли не единственный способ решить поставленную задачу. Никакими констрейнами или операцией Set Driven Key не удастся добиться выполнения массы логических условий, типа «если одно звено выдвинулось на определенное расстояние, то вслед за ним начинает двигаться следующее звено». С помощью логических операторов языка MEL эти «вполне человеческие» требования легко программируются в виде expressions.
Итак, создайте в новой сцене два цилиндра и один локатор.
Поднимите локатор повыше, а один из цилиндров также приподнимите немного и сделайте его радиус немного поменьше другого (не меняя высоты цилиндра).
Самые ленивые пользователи могут открыть сцену telescope_start.ma.
Назовите локатор end, верхний цилиндр - р1, нижний - р2. Помните, что AAAYAчувствительна к маленьким и большим буквам.
Идея состоит в следующем: если верхний цилиндр (pi) в результате вертикального перемещения «высовывается» из нижнего (р2) полностью, нижний цилиндр должен последовать за верхним. Если же верхний цилиндр «входит» обратно в нижний, последний должен перестать двигаться. Представьте себе телескопическую антенну, и вы поймете, о чем идет речь.