본문 바로가기
Unreal

[Unreal] Bone, Socket

by imagineer_jinny 2024. 10. 15.

 

언리얼 엔진에서 **Bone(본)**과 **Socket(소켓)**은 둘 다 캐릭터나 오브젝트의 애니메이션 및 트랜스폼 관리에 사용되지만, 그들의 용도와 목적은 약간 다릅니다. 각각을 자세히 설명하겠습니다.

 

1. Bone (본)

은 주로 스켈레탈 메시(Skeletal Mesh)와 관련된 개념입니다. 본은 애니메이션에서 메쉬를 움직이게 하는 뼈대의 구조를 형성하는 요소입니다. 캐릭터의 스켈레탈 메시에는 여러 개의 본이 있으며, 각 본은 메쉬의 특정 부분을 움직이거나 회전시킵니다.

  • 역할: 캐릭터나 스켈레탈 메쉬의 움직임을 제어합니다. 본은 계층적(hierarchical) 구조로 되어 있으며, 부모 본이 움직이면 자식 본도 함께 움직입니다. 예를 들어, 팔의 상위 본이 움직이면 팔 전체가 움직이는 방식입니다.
  • 애니메이션 제어: 본을 이용하여 애니메이션을 만들거나 적용할 수 있습니다. 캐릭터의 걷기, 달리기, 점프 등의 동작은 본들의 움직임을 통해 표현됩니다.
  • 계층적 관계: 본들은 계층 구조를 따르며, 상위 본(부모)이 움직이면 그 하위 본(자식)도 함께 영향을 받습니다. 이 방식은 스켈레탈 메쉬의 자연스러운 움직임을 표현하는 데 유리합니다.

예시:

  • 팔, 다리, 손가락 등 캐릭터의 특정 부위를 제어하는 본.
  • 얼굴 애니메이션에서 눈, 입, 코를 움직이는 본.

 

2. Socket (소켓)

소켓은 스켈레탈 메시의 특정 본에 붙일 수 있는 참조점입니다. 소켓은 본에 부착되지만, 소켓 자체는 애니메이션에 의해 움직이지 않고, 본의 움직임에 따라 위치와 회전값을 가져옵니다.

  • 역할: 소켓은 본에 추가적인 기능을 부여합니다. 소켓을 통해 무기나 아이템을 캐릭터의 손에 장착하거나, 다른 오브젝트를 본에 따라 움직이게 할 수 있습니다. 예를 들어, 캐릭터의 손 본에 소켓을 추가하여 무기를 장착할 수 있습니다.
  • 사용 예: 본에 추가적으로 액세서리아이템을 장착하고자 할 때 주로 사용됩니다. 소켓은 본이 움직일 때 함께 움직이므로, 소켓에 부착된 아이템도 자연스럽게 따라 움직입니다.
  • 독립적인 회전 및 위치 조정: 소켓은 본과 연결되어 있지만, 소켓 자체의 위치와 회전값을 독립적으로 조정할 수 있습니다. 이를 통해 아이템이 본의 움직임을 따르면서도, 사용자가 원하는 위치와 방향으로 배치되도록 할 수 있습니다.

예시:

  • 캐릭터의 손 본에 소켓을 추가하여 무기나 도구를 장착.
  • 머리 본에 소켓을 부착하여 모자나 장신구를 배치.
  • 차량 본에 소켓을 사용해 캐릭터가 그 위에 앉거나 다른 오브젝트를 부착.

 

주요 차이점

항목Bone(본)Socket(소켓)

역할 메쉬의 움직임과 애니메이션을 제어 본에 부착된 아이템이나 액세서리를 제어
계층 구조 계층적 구조로, 부모-자식 관계를 가짐 본에 붙지만, 독립적으로 위치와 회전을 조정 가능
애니메이션 본의 움직임은 애니메이션으로 직접 제어 소켓은 본의 애니메이션을 따르지만 자체 애니메이션 없음
사용 예 캐릭터의 팔, 다리, 얼굴 등 움직임 제어 무기, 도구, 액세서리 등의 위치 및 회전 제어

 

요약

  • Bone은 캐릭터의 스켈레탈 메쉬에서 움직임을 제어하는 뼈대를 형성하며, 계층적 구조로 동작하는 애니메이션의 기본 단위입니다.
  • Socket은 본에 부착되는 포인트로, 무기나 아이템을 장착하거나 다른 오브젝트를 캐릭터의 특정 위치에 배치하는 데 사용됩니다.

 

 

 

Q. 그럼 소켓은 본 자체를 움직이는게 아니니까 소켓으로 휘는 활을 만들거나 그러진 못하겠네?

 

맞습니다! **소켓(Socket)**은 본의 위치나 회전을 독립적으로 조정할 수 있지만, 소켓 자체는 본의 움직임에 의존하기 때문에 **본처럼 변형(스케일 변경, 휘어짐)**을 직접 제어할 수는 없습니다. 즉, 소켓으로 휘어지는 애니메이션을 만들거나 복잡한 변형을 표현하는 것은 불가능합니다.

소켓은 단순히 특정 지점에 오브젝트를 부착하고 그 지점을 기준으로 위치 및 회전만 제어하는 용도로 사용됩니다. 따라서 소켓으로는 활처럼 휘어지는 애니메이션이나 동작을 만들기 어렵습니다.

휘는 활을 만들려면?

휘어지는 활과 같은 복잡한 변형을 표현하려면 **Bone(본)**을 사용해야 합니다. 본을 통해 활을 구성하는 여러 부분(예: 양 끝과 중간 지점에 본을 추가)으로 나누고, 이를 통해 활이 휘어지는 애니메이션을 만들 수 있습니다.

 

휘는 활을 구현하는 방법

  1. 스켈레탈 메쉬 준비: 활 모델을 3D 모델링 도구에서 만들 때, 활이 휘어질 수 있도록 활에 여러 개의 본을 추가합니다. 보통 활의 양 끝과 중간 부분에 본을 배치합니다.
  2. 본 애니메이션 설정: 언리얼 엔진 내에서 본 애니메이션을 만들어 활이 당겨질 때 자연스럽게 휘는 모양을 설정합니다. 활의 양 끝 본을 축으로 잡아당기는 애니메이션을 추가하고, 중간 부분이 자연스럽게 휘어지도록 본을 움직이거나 회전시킵니다.
  3. 스켈레탈 메시 컴포넌트: 활을 캐릭터에 장착하려면, 캐릭터의 손 본에 소켓을 추가하여 활을 장착하고, 활 자체는 스켈레탈 메시로 설정합니다. 스켈레탈 메시 컴포넌트는 본 기반의 애니메이션을 지원하기 때문에, 활이 당겨질 때 본 애니메이션을 재생하여 활이 휘어지는 모습을 구현할 수 있습니다.
  4. 애니메이션 블루프린트 설정: 활을 당기는 동작이 있을 때, 해당 애니메이션을 재생하도록 애니메이션 블루프린트를 설정하여 활이 캐릭터의 동작에 맞춰 휘어지도록 만듭니다.

이렇게 본을 사용하면 활과 같은 복잡한 변형 동작을 자연스럽게 구현할 수 있습니다.

 

정리

  • 소켓본의 위치나 회전만 제어할 수 있으며, 휘어짐이나 변형을 직접적으로 구현할 수 없습니다.
  • 휘는 활 같은 복잡한 변형은 을 사용하여 구현해야 하며, 본 애니메이션을 통해 활이 자연스럽게 휘어지도록 설정할 수 있습니다.

댓글