2016-02-26 5 views
1

У меня есть анимация, которая в порядке от 1 до 50 клавиш. после 50-ключа я хочу ключи быть повернут на 180 градусовКак вращать контроллеры во всех выбранных клавишах на 90 градусов по оси y на оси поворота [5,6,7]?

можно использовать следующую команду, чтобы повернуть 1 контроллер в 1 выбранный ключ

//mel 
rotate -y 50 -ws -p 5 6 7; 

, но очень много времени, как я могу это сделать для всех выбранные контроллеры и ключи?

поэтому он имеет прямой способ выполнить команду mel на клавишах. и как продолжать делать что-то подобное?

+1

Здравствуйте, не могли бы вы рассказать нам, что вы пробовали до сих пор?Вы здесь не новы, вы можете знать, что SO не является фабрикой кодов. Дайте нам немного ваших исследований, даже если они неубедительны. – DrHaze

+0

Я новичок в Maya и Mel, чтобы выполнить команду, я пробовал различные способы выбора объектов и ключей, но, похоже, это работает, я смотрел онлайн не смог найти в любом случае, я могу выбрать все объекты с помощью mel и повернуть, но это wouldnt поверните их на клавиши, я хотел бы знать, есть ли какой-либо простой процесс выбора, с помощью которого я могу выполнить команду rotate на всех выбранных клавишах. Мне нужно только указывать в правильном направлении, я могу разработать код сам себе – Gkills

+0

Я бы предложил вам переключиться на Python, прежде чем вы углубитесь в это - фактический код не будет сложным, но Варианты Mel всегда будут более сложными и более сложными, чем эквиваленты python. – theodox

ответ

0

Я делаю это в python, так как это намного проще решить в Python, чем в mel. Это довольно голые кости, но она должна быть хорошей отправной точкой:

import maya.cmds as cmds  # cmds is the python version of mel's api 
obj = 'rig:rig:Root'   # your obj.. in real code you'd make a 
           # function and ask for an object name 
attributes = 'rx', 'ry', 'rz' # need to ask where the keys for on each channel 
rotation_keys = set() # this avoids duplications of key times 

# collect a list of all the frames which have any rotation key 
for attrib in attributes:  
    for key in cmds.keyframe(obj, attribute = 'rx', q=True, tc=True): 
     rotation_keys.add(key) 

# sort them by time, you now have a list of every rotate key time   
keyframe_list = sorted(rotation_keys) 

for key in keyframe_list: 
    if key > 50: 
     # scrub to the right time 
     cmds.currentTime(key) 

     # apply the rotation relatively 
     cmds.xform(obj, rotation = [0,180,0], ws =True, relative = True) 

     # get the channel values and make sure they are all keyed 
     for attrib in attributes: 
      new_value = cmds.getAttr(obj + "." + attrib) 
      cmds.setKeyframe(obj, attribute = attrib, time = key, value = new_value) 
0

Простое решение состоит в группе ваш анимированный узел, и установить ключ, чтобы повернуть группу после того, как кадр 50.

Если это не option, существует общая методика для размещения результата накопленной иерархической анимации на одном узле. Он использует узлы ограничения. Вам не нужно делать какие-либо программы, но вы можете приступить к скриптам, если хотите.

  1. Создайте локатор в начале координат.
  2. Выберите ваш узел и сдвиг выберите локатор.
  3. Выберите Constrain-> Orient
  4. Выберите Constrain-> Point (не обязательно, но визуально полезно)
  5. Выберите только локатор.
  6. Выберите Правка-> ключи-> BakeSimulation [] (ключи от канала коробки, образец на 1, отключить неявный контроль)
  7. Hilight переводить и вращать каналы в окне канала и нажмите кнопку испечь.

Локатор теперь перемещается и вращается вместе с вашим узлом. Значения ключей могут отличаться, если ваш узел находится в некоторой иерархии, но движение должно быть совпадающим. Теперь вы можете изменить движение и передать его обратно с тем же процессом:

  1. Group локатор, установите стержень группы и и анимировать группу , пока локатор не имеет желаемого движения.
  2. Удалить ключи на своем узле.
  3. Выберите локатор и выберите ваш узел.
  4. Выберите Constrain-> Orient, затем выберите Constrain-> Point.

Теперь ваш узел перемещается с измененным движением локатора. На этом этапе вы можете дополнительно модифицировать анимацию локатора, настроить, добавить больше групповых преобразований и т. Д. Ваш узел будет обновляться.

Наконец, выберите свой узел и выберите Keys-> BakeSimulation с теми же параметрами, что и выше, и удалите группу локатора.

 Смежные вопросы

  • Нет связанных вопросов^_^