본의 이름을 변경했을 때, 애니메이션이 깨지는 현상을 교정

블렌더에서는 이름으로 데이터를 찾기 때문에 이름이 바뀌면 액션의 데이터 호환이 안됩니다. 즉, 데이터는 있는데 모션이 깨지는 현상이 발생합니다. 이를 해결하는 원시적인 해결법은 본의 이름을 옛날 이름으로 바꾼 후, 다시 새 이름으로 바꿔주는 거예요. 이를 모든 액션에 돌아가며 해주면 돼요. 하지만 그걸 언제 해…

이럴 땐 아래의 코드를 복사해서 사용해 주세요. 따옴표 내의 SwordTrail부분을 고쳐서 사용하면 됩니다. 첫번째가 원래 이름, 두번째가 바뀐 이름입니다. ChatGPT가 초안을 짜주었고, 조금 다듬었습니다.

import bpy



def change_fcurve_group_and_data_path(action, old_group_name, new_group_name):

for fcurve in action.fcurves:

fcurve.data_path = fcurve.data_path.replace(old_group_name, new_group_name)



for fcurve in action.fcurves:

if fcurve.group and fcurve.group.name == old_group_name:

fcurve.group.name = new_group_name



def main():

# 모든 액션에 대해 작업

for action in bpy.data.actions:

change_fcurve_group_and_data_path(action, 'SwordTrail', 'sword_trail')



if __name__ == "__main__":

main()

캐릭터를 회전시켜 보자

포트폴리오를 만들 때 모델러에게턴테이블은 필수적인 요소입니다. 이를 만드는 방법은 여러가지가 있겠지만 여기서는 드라이브를 사용해 보도록 하겠습니다.

아마추어 회전값의 Z에서 오른쪽 버튼을 누르고 Add Driver를 누릅니다.

입력을 쓰지 않으므로 X를 눌러 지워주고, Expression란에 이 코드를 복사해 줍니다.

frame*(pi/180)

이제 플레이 시키면 움직입니다.

이 코드는 1프레임에 1도를 돌도록 되어 있습니다. 한 바퀴를 돌려면 360프레임이 필요하겠네요.

반대방향으로 움직이고 싶다면 코드 맨 앞에 마이너스(-)를 붙여주면 됩니다.

-frame*(pi/180)

너무 느리거나 빠르면 코드 맨 뒤에 2배속이나 0.5를 곱해주면 됩니다.

frame*(pi/180)*2
or
frame*(pi/180)*0.5

간혹 파이썬 구문 오류로 안될 때가 있는데 이 경우는 갱신이 안되어 그렇습니다. 이 땐 드라이브창 하단의 업데이트어쩌구 버튼을 눌러주면 해결됩니다.