SSUNBORI Archive

3d Generalist를 꿈꾸는 Modeler ssunbori 입니다. 생성형 ai, 모델링 툴, 게임 엔진을 주로 공부하고 있습니다.

Artstation 자세히보기

BLENDER/STUDY

[Blender] 게임 엔진을 위한 리깅 스터디② - Constraint로 Game Rig와 Control Rig 연결하기

ssunbori 2023. 8. 8. 15:22

목차

     

    개요

    지난번 게시글에서는 Game Rig와 Control Rig의 개념과 게임 엔진에 넘길 수 있는 Rig의 종류에 대해 알아보고, Game Rig를 제작하는 과정까지 진행했었습니다. 오늘은 지난번에 이어 Control Rig를 만들고, Game Rig의 개별 뼈에 Control Rig를 Constraint 로 추가해보겠습니다.

     

     


    Control Rig 만들기

    Hierarchy 창에서 Armature 오브젝트를 더블클릭해 이름을 Game Rig로 바꿔주고, Shift+D(복제 단축키)를 눌러 복제한다.

    복제한 리그의 이름을 Control Rig로 수정해준다. (이때, 위치값은 건드리지 않고 Shift+D만 눌러주면 된다)

    ** 지난번 파일을 못찾아서 다른 캐릭터를 리깅해왔다.

    기존 오브젝트 이름을 Game Rig로 바꿔주고, Armature만 Shift D를 눌러 복제(Shift+D > Esc 순서대로 눌러주면 된다)

    Constraint 추가하기

    Game Rig 선택 후 Ctrl+Tab을 눌러 Pose 모드로 바꿔준다. 그리고 원하는 뼈를 선택한 뒤 우측 하단 Properties 패널에서 Bone Constraints 선택 > Copy Transform 을 누른다.

    그리고 Target을 Control Rig(Control Rig 뼈들의 움직임으로 Game Rig를 제어할 거니까)로 설정한 뒤,

    Bone에서 선택한 뼈와 동일한 이름의 뼈를 선택해준다.

    나머지 뼈들에도 모두 동일한 방식으로 Constraint를 추가해 주면 된다.

    각 뼈들에 Constraint를 추가할 때에는 두 가지 방법으로 할 수 있다.

    Constraint 추가하기 : 손으로 Bone 변경

    이 캐릭터처럼 리깅하는 뼈의 개수가 적을 경우, 다른 뼈들에도 Constraint를 복제해서 Bone 부분만 바꿔 준다.

    뼈에 일일이 Constraint를 추가하고, Target을 지정하는 게 번거로우니

    A를 눌러 전체 선택 후, Copy Transform 우측의 ∨ 버튼을 눌러 Copy To Selected를 해주고 나서

    각 뼈마다 이름에 맞는 Control Rig의 Bone을 지정해주면 편하다.

    나머지 뼈들도 전부 각 뼈 이름에 맞게 Constraint에서 Bone을 변경해준다.

    Constraint 추가하기 : Script 사용

    캐릭터 리깅에 사용된 뼈의 개수가 많으면 일일이 뼈를 선택하고 Bone 부분을 바꾸는 데 시간이 오래 걸릴 수 있다.

    이 경우에는 Script를 사용해 Constraint를 추가해줄 수 있다.

    먼저 아까 추가한 Constraint에서 Bone 부분을 삭제하고, A를 눌러 모든 뼈를 선택해준 뒤, Copy to Selected를 눌러 Constraint를 복사해 준다.

    그 다음 Text Editor 패널을 열고, New를 눌러 새로운 텍스트 데이터 블록을 생성한 뒤,

    아래 스크립트를 복사+붙여넣기 해준다.

    import bpy
    #Switch to Pose Mode.
    sel = bpy.context.selected_pose_bones
    
    for bone in sel:
        name = bone.name
        bpy.context.object.pose.bones[name].constraints["Copy Transforms"].subtarget = name
    • 이 스크립트를 실행하기 전에 Pose Mode에 있어야 한다
    • 이 스크립트는 Game Rig와 Control Rig 안의 뼈 이름이 같기 때문에 작동한다. 만약 둘의 뼈 이름이 다를 경우 Script를 변형해서 사용해야 한다

    텍스트를 넣고 나면 이런 모습이다.

    이제 Text 패널에서 재생버튼을 눌러 스크립트를 실행시키면, Bone에 Control Rig와 같은 뼈들이 추가된 것을 확인할 수 있다.

    이제 Object 모드로 전환하고, Text 패널을 닫아준다.

    Control Rig 선택 후, Pose Mode에서 뼈를 움직여 보면, Game Rig도 따라 움직이는 걸 확인할 수 있다.