언리얼 엔진에서 **Bone(본)**과 **Socket(소켓)**은 둘 다 캐릭터나 오브젝트의 애니메이션 및 트랜스폼 관리에 사용되지만, 그들의 용도와 목적은 약간 다릅니다. 각각을 자세히 설명하겠습니다.
1. Bone (본)
본은 주로 스켈레탈 메시(Skeletal Mesh)와 관련된 개념입니다. 본은 애니메이션에서 메쉬를 움직이게 하는 뼈대의 구조를 형성하는 요소입니다. 캐릭터의 스켈레탈 메시에는 여러 개의 본이 있으며, 각 본은 메쉬의 특정 부분을 움직이거나 회전시킵니다.
- 역할: 캐릭터나 스켈레탈 메쉬의 움직임을 제어합니다. 본은 계층적(hierarchical) 구조로 되어 있으며, 부모 본이 움직이면 자식 본도 함께 움직입니다. 예를 들어, 팔의 상위 본이 움직이면 팔 전체가 움직이는 방식입니다.
- 애니메이션 제어: 본을 이용하여 애니메이션을 만들거나 적용할 수 있습니다. 캐릭터의 걷기, 달리기, 점프 등의 동작은 본들의 움직임을 통해 표현됩니다.
- 계층적 관계: 본들은 계층 구조를 따르며, 상위 본(부모)이 움직이면 그 하위 본(자식)도 함께 영향을 받습니다. 이 방식은 스켈레탈 메쉬의 자연스러운 움직임을 표현하는 데 유리합니다.
예시:
- 팔, 다리, 손가락 등 캐릭터의 특정 부위를 제어하는 본.
- 얼굴 애니메이션에서 눈, 입, 코를 움직이는 본.
2. Socket (소켓)
소켓은 스켈레탈 메시의 특정 본에 붙일 수 있는 참조점입니다. 소켓은 본에 부착되지만, 소켓 자체는 애니메이션에 의해 움직이지 않고, 본의 움직임에 따라 위치와 회전값을 가져옵니다.
- 역할: 소켓은 본에 추가적인 기능을 부여합니다. 소켓을 통해 무기나 아이템을 캐릭터의 손에 장착하거나, 다른 오브젝트를 본에 따라 움직이게 할 수 있습니다. 예를 들어, 캐릭터의 손 본에 소켓을 추가하여 무기를 장착할 수 있습니다.
- 사용 예: 본에 추가적으로 액세서리나 아이템을 장착하고자 할 때 주로 사용됩니다. 소켓은 본이 움직일 때 함께 움직이므로, 소켓에 부착된 아이템도 자연스럽게 따라 움직입니다.
- 독립적인 회전 및 위치 조정: 소켓은 본과 연결되어 있지만, 소켓 자체의 위치와 회전값을 독립적으로 조정할 수 있습니다. 이를 통해 아이템이 본의 움직임을 따르면서도, 사용자가 원하는 위치와 방향으로 배치되도록 할 수 있습니다.
예시:
- 캐릭터의 손 본에 소켓을 추가하여 무기나 도구를 장착.
- 머리 본에 소켓을 부착하여 모자나 장신구를 배치.
- 차량 본에 소켓을 사용해 캐릭터가 그 위에 앉거나 다른 오브젝트를 부착.
주요 차이점
항목Bone(본)Socket(소켓)
역할 | 메쉬의 움직임과 애니메이션을 제어 | 본에 부착된 아이템이나 액세서리를 제어 |
계층 구조 | 계층적 구조로, 부모-자식 관계를 가짐 | 본에 붙지만, 독립적으로 위치와 회전을 조정 가능 |
애니메이션 | 본의 움직임은 애니메이션으로 직접 제어 | 소켓은 본의 애니메이션을 따르지만 자체 애니메이션 없음 |
사용 예 | 캐릭터의 팔, 다리, 얼굴 등 움직임 제어 | 무기, 도구, 액세서리 등의 위치 및 회전 제어 |
요약
- Bone은 캐릭터의 스켈레탈 메쉬에서 움직임을 제어하는 뼈대를 형성하며, 계층적 구조로 동작하는 애니메이션의 기본 단위입니다.
- Socket은 본에 부착되는 포인트로, 무기나 아이템을 장착하거나 다른 오브젝트를 캐릭터의 특정 위치에 배치하는 데 사용됩니다.
Q. 그럼 소켓은 본 자체를 움직이는게 아니니까 소켓으로 휘는 활을 만들거나 그러진 못하겠네?
맞습니다! **소켓(Socket)**은 본의 위치나 회전을 독립적으로 조정할 수 있지만, 소켓 자체는 본의 움직임에 의존하기 때문에 **본처럼 변형(스케일 변경, 휘어짐)**을 직접 제어할 수는 없습니다. 즉, 소켓으로 휘어지는 애니메이션을 만들거나 복잡한 변형을 표현하는 것은 불가능합니다.
소켓은 단순히 특정 지점에 오브젝트를 부착하고 그 지점을 기준으로 위치 및 회전만 제어하는 용도로 사용됩니다. 따라서 소켓으로는 활처럼 휘어지는 애니메이션이나 동작을 만들기 어렵습니다.
휘는 활을 만들려면?
휘어지는 활과 같은 복잡한 변형을 표현하려면 **Bone(본)**을 사용해야 합니다. 본을 통해 활을 구성하는 여러 부분(예: 양 끝과 중간 지점에 본을 추가)으로 나누고, 이를 통해 활이 휘어지는 애니메이션을 만들 수 있습니다.
휘는 활을 구현하는 방법
- 스켈레탈 메쉬 준비: 활 모델을 3D 모델링 도구에서 만들 때, 활이 휘어질 수 있도록 활에 여러 개의 본을 추가합니다. 보통 활의 양 끝과 중간 부분에 본을 배치합니다.
- 본 애니메이션 설정: 언리얼 엔진 내에서 본 애니메이션을 만들어 활이 당겨질 때 자연스럽게 휘는 모양을 설정합니다. 활의 양 끝 본을 축으로 잡아당기는 애니메이션을 추가하고, 중간 부분이 자연스럽게 휘어지도록 본을 움직이거나 회전시킵니다.
- 스켈레탈 메시 컴포넌트: 활을 캐릭터에 장착하려면, 캐릭터의 손 본에 소켓을 추가하여 활을 장착하고, 활 자체는 스켈레탈 메시로 설정합니다. 스켈레탈 메시 컴포넌트는 본 기반의 애니메이션을 지원하기 때문에, 활이 당겨질 때 본 애니메이션을 재생하여 활이 휘어지는 모습을 구현할 수 있습니다.
- 애니메이션 블루프린트 설정: 활을 당기는 동작이 있을 때, 해당 애니메이션을 재생하도록 애니메이션 블루프린트를 설정하여 활이 캐릭터의 동작에 맞춰 휘어지도록 만듭니다.
이렇게 본을 사용하면 활과 같은 복잡한 변형 동작을 자연스럽게 구현할 수 있습니다.
정리
- 소켓은 본의 위치나 회전만 제어할 수 있으며, 휘어짐이나 변형을 직접적으로 구현할 수 없습니다.
- 휘는 활 같은 복잡한 변형은 본을 사용하여 구현해야 하며, 본 애니메이션을 통해 활이 자연스럽게 휘어지도록 설정할 수 있습니다.
'Unreal' 카테고리의 다른 글
FRunnable Class (0) | 2024.10.02 |
---|---|
Event Dispatcher은 꼭 써야 할 때 쓰자(Delegate) (0) | 2024.08.20 |
[Unreal] Multiplayer Game Study (0) | 2024.07.04 |
[Unreal] 부모 객체의 스케일 변경이 자식 객체의 위치에 영향을 준다 (0) | 2024.06.07 |
[Unreal] Custom Event vs Create Event (0) | 2024.06.05 |
댓글