언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

서브 애님 인스턴스 사용

언리얼 엔진

캐릭터의 애니메이션 블루프린트가 복잡해지기 시작하면서, 다른 애니메이션 블루프린트 안의 애니메이션 블루프린트 일부를 재사용하고플 수가 있습니다. 그럴 때 노드 망을 다시 만들기 보다는, 망을 별도의 애니메이션 블루프린트로 나눈 뒤 Sub Anim Instance (서브 애님 인스턴스)를 사용하여 필요할 때 그 애니메이션 블루프린트에 접근하도록 할 수 있습니다.

여기서는 플레이가능 캐릭터에 영향을 끼치는 로직이 포함된 애니메이션 블루프린트를 만든 뒤, 템플릿의 애니메이션 블루프린트 내 서브 애님 인스턴스를 사용하여 그 로직을 호출하도록 하겠습니다.

여기서는 블루프린트 삼인칭 템플릿에 시작용 콘텐츠 를 포함시켜 사용합니다.

단계

  1. Content/Mannequin/Animations 폴더에서 ThirdPerson_AnimBP우클릭 - 복제 로 사본을 만들고, AltAnimBP 라 합니다.

    SubAnimBP01.png

    이 AltAnimBP 는 ThirdPerson_AnimBP 에서 호출되는 서브 애님 인스턴스로 사용될 것입니다.

    서브 애님 인스턴스로 사용할 애니메이션 블루프린트를 생성할 때, 그것을 사용하고자 하는 애니메이션 블루프린트에서 사용되는 것과 동일한 스켈레톤 애셋을 사용해야 합니다. 우리 예제에서는 템플릿의 애니메이션 블루프린트를 복사했지만, 애니메이션 블루프린트를 처음부터 만드는 경우 스켈레톤을 선택해 줘야 할 것입니다.

  2. AltAnimBP애님 그래프 에서 우클릭 한 뒤 Sub-Graph Input 노드를 추가합니다.

    SubAnimBP02.png

    그러면 Sub Anim Instance 에 In Pose 가 생성되어, 외부 포즈 데이터를 이 애니메이션 블루프린트로 전달할 수 있게 됩니다.

  3. 다시 우클릭 한 뒤 FABRIK 스켈레탈 컨트롤 노드를 추가합니다.

    SubAnimBP03.png

    이 예제에서는 게임플레이 도중 캐릭터가 뛰어다닐 때 IK 를 사용하여 캐릭터의 팔을 공중으로 밀어올리도록 하겠습니다.

  4. 디테일 패널에서 다음 세팅을 FABRIK 노드에 할당합니다.

    • (As Pin) Effector Transform ((핀으로) 이펙터 트랜스폼) 체크를 해제합니다.

    • Location (위치)를 100, 0, 200 으로 설정합니다.

    • Tip Bone (끝 본)을 index_01_l 로 설정합니다.

    • Root Bone (루트 본)을 clavicale_l 로 설정합니다.

    SubAnimBP04.png

  5. 그래프의 FABRIK 노드를 복사한 다음 디테일 패널에서 다음과 같이 변경해 줍니다.

    • Location (위치)를 -100, 0, 200 으로 설정합니다.

    • Tip Bone (끝 본)을 index_01_r 로 설정합니다.

    • Root Bone (루트 본)을 clavicale_r 로 설정합니다.

    SubAnimBP05.png

    그러면 왼팔과 오른팔 둘 다 영향을 받게 됩니다.

  6. FABRIK 노드의 Alpha 핀에 우클릭 하고 변수로 승격 시켜 Effect Alpha 라 합니다.

    SubAnimBP05b.png

  7. 아래와 같이 노드 망을 만듭니다 (Local to ComponentComponent to Local 노드는 자동 생성됩니다).

    SubAnimBP06.png

    애니메이션 블루프린트를 컴파일 하면, 프리뷰 창의 캐릭터가 팔을 위로 올릴 것입니다.

    CompliedBlueprint.png

  8. 콘텐츠 브라우저 에서 Content/Mannequin/Animations 아래 ThirdPerson_AnimBP 를 엽니다.

  9. 애님 그래프 안에서, 우클릭 한 후 Sub Anim Instance (서브 애님 인스턴스) 노드를 추가합니다.

    SubAnimBP07.png

    이 노드를 사용하여 앞서 만든 블루프린트에 접근합니다.

  10. 서브 애님 인스턴스 노드에 대한 디테일 패널에서, Instance Class (인스턴스 클래스)를 AltAnimBP 로 설정합니다.

    SubAnimBP08.png

  11. EffectAlpha 옆의 Expose (노출) 박스를 체크하여 프로퍼티를 노출시킵니다.

    SubAnimBP09.png

    프로퍼티를 노출시키면, 부모 애니메이션 블루프린트의 데이터로 그 프로퍼티를 업데이트할 수 있습니다.

  12. 내 블루프린트 패널에서, Speed 변수를 끌어 놓고 600 으로 나눈 뒤 Effect Alpha 에 연결합니다.

    SubAnimBP10.png

    여기서 캐릭터의 이동 속도를 하나의 값으로 나누어 스켈레탈 컨트롤 적용량 사이의 블렌딩을 만들어 냅니다.

  13. 컴파일에디터에서 플레이 합니다.

최종 결과

아래에서, 캐릭터의 속도가 빨라짐에 따라 지정된 양으로 나눈 뒤 서브 애님 인스턴스 망 안에 적용된 스켈레탈 컨트롤의 양을 구동시키는 데 사용됩니다. 이 예제에서는 Sub-Graph 입력 노드를 사용하여 결과 포즈 데이터를 결정하지만, 별도의 스테이트 머신과 결과 포즈 데이터 생성을 위한 로직을 사용하여 애니메이션 블루프린트를 만들 수도 있습니다.