maya Python 베이크 한 애니메이션을 다시 수정하고 싶습니다.

6603 단어 파이썬maya
maya와 python의 공부도 전혀 이런 것을 만들어 보았다고 할 뿐··.

우선 간단한 IK 애니메이션 만들기

1,5,10 프레임째의 iKHandle1에 키를 설정
이런 느낌을・・・




둥근 애니메이션 베이크
그러면 Joint 등에도 이런 느낌으로 모든 프레임에 키가 쳐진다


여기에서 1 5 10 키프레임만 떠나 삭제하고 싶다.
그렇게 하기 위해 애니메이션 변경하고 싶지만 어디 그대로라면 모두 키를 치고 버리고 있기 때문에 수정이 어렵습니다.
라고 할까.
베이크하기 전에 다른 이름으로 저장하면 좋지만 ....

만들고 싶은 명령



절차
1개 cube등을 작성해, 1,5,10프레임에 키를 설정.
그런 다음 먼저 cube를 선택한 다음 베이크 한 객체를 선택하여 명령 실행!
이상적인 결과
cube로 설정된 키 이외의 애니메이션이 삭제됨

시행착오한 결과



어떻게 든

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);


파이썬 할 수 없다면 쓰기가 기분 나쁘지만 짧게 걸린다!

간단한 해설



선택한 첫 번째 객체의 이름을 모델로 설정

model = cmds.ls(selection=True)[0];

최초로 선택한 오브젝트의 키 프레임을 취득 (모두 취득하고 있으므로 중복이 있다)

keyTimes = cmds.keyframe(model,query=True)

최대 시간까지 프레임 번호 목록 만들기 (이 경우 1,2,3,4,5,6,7,8,9,10)

timeList = range(1, int(max(keyTimes)));

키 프레임 차이를 얻습니다 (지우는 키 프레임 목록) (2,3,4,7,8,9)

data = list(set(timeList) - set(keyTimes))

그리고는 선택된 객체 (첫 번째를 들여다 봅니다)로 루프를 돌려,
추가로 삭제할 키 프레임 목록에서 루프를 돌려,
cutKey!에서 확인

selectObjList = cmds.ls(selection=True);
for frameTime in data:
    for obj in selectObjList[1:]:
        cmds.cutKey(obj, time=(frameTime,frameTime), cl=1);

좋은 웹페이지 즐겨찾기