Ich habe gerade versucht, so etwas für das Studium von Maya und Python zu machen.
Erstellen Sie zunächst eine einfache IK-Animation Setzen Sie den Schlüssel im 1., 5. und 10. Frame auf iKHandle1 So was ...
Backen Sie eine runde Animation Dann werden in allen Frames wie diesem in Joint usw. Tasten gedrückt.
Ich möchte nur 1 5 10 Keyframes von hier löschen. Ich möchte die Animation so ändern, dass es schwierig ist, sie zu korrigieren, da alle Tasten überall gedrückt werden. Ich frage mich, ob das bedeutet. Ich muss es nur unter einem anderen Namen speichern, bevor ich backe ...
Verfahren Erstellen Sie einen Würfel usw. und setzen Sie die Schlüssel in 1,5,10 Frames. Wählen Sie danach zuerst den Würfel, dann das gebackene Objekt und führen Sie den Befehl aus! Ideales Ergebnis Andere Animationen als die im Cube festgelegten Schlüssel werden gelöscht
Ich habe es geschafft
import maya.cmds;
model = cmds.ls(selection=True)[0];
keyTimes = cmds.keyframe(model,query=True);
timeList = range(1, int(max(keyTimes)));
data = list(set(timeList) - set(keyTimes));
selectObjList = cmds.ls(selection=True);
for frameTime in data:
for obj in selectObjList[1:]:
cmds.cutKey(obj, time=(frameTime,frameTime), cl=1);
Es ist unangenehm zu schreiben, wenn man nicht Python werden kann, aber es ist kurz!
Legen Sie den Namen des ersten ausgewählten zu modellierenden Objekts fest
model = cmds.ls(selection=True)[0];
Holen Sie sich Keyframes für das erste ausgewählte Objekt (Duplikate, weil wir alle haben)
keyTimes = cmds.keyframe(model,query=True)
Erstellen Sie eine Liste mit Frame-Nummern bis zur maximalen Zeit (in diesem Fall 1,2,3,4,5,6,7,8,9,10).
timeList = range(1, int(max(keyTimes)));
Keyframe-Unterschiede abrufen (Liste der zu löschenden Keyframes) (2,3,4,7,8,9)
data = list(set(timeList) - set(keyTimes))
Danach durchlaufen Sie das ausgewählte Objekt (mit Ausnahme des ersten). Schleifen Sie mit einer Liste der zu löschenden Keyframes OK mit cutKey!
selectObjList = cmds.ls(selection=True);
for frameTime in data:
for obj in selectObjList[1:]:
cmds.cutKey(obj, time=(frameTime,frameTime), cl=1);
Recommended Posts