이것 저것 개발하고 만들어보기
article thumbnail

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hierarchy, 계층구조는 간단하게 생각해서 부모자식 관계를 뜻합니다.

 

 

3D 툴마다 표시되는 계층구조의 UI는 조금씩 차이는 있지만, 기본적으로 자식 오브젝트는 부모 오브젝트에 상속되어 그룹화 되는 원리는 비슷합니다.

 

 

 

 

 

 

 

 

 

 

 

 

또한 부모는 자식 객체를 여러개 가질 수 있습니다. 

 

 

부모의 자식은 또다른 객체의 부모가 될 수 있습니다.

 

 

하지만 자식은 부모 객체를 여러개 가질 수는 없습니다.

 

 

이 자료 구조를 Tree(트리) 라고 부릅니다.

 

 

 

 

 

 

 

 

 

3D 그래픽스에서의 Hierarchy 

 

 

 

좌측부터 Unity, 3DS MAX, Blender

 

 

 

 

그래픽스에서도 Tree의 자료구조와 비슷한 계층구조로 이루어지는 경우가 많습니다.

 

 

부모자식이 링크되어 있는 경우, 보통은 부모는 자식에게 자신의 Transform 정보를 전달합니다. 

 

 

자동차를 예를 들면, 자동차 본체가 이동함에 따라 바퀴 4개가 움직인다고 가정했을 때, 자동차 본체는 부모(Parent)가 되고 바퀴는 자식(Child)이 됩니다. 

 

 

현실의 자동차와 다른점이 있다면, 자동차 본체의 회전과 위치는 같이 변하지만 본체가 커진다고 해서 바퀴까지 같이 커지지는 않습니다만, 3D 툴에서는 크기 정보까지 같이 링크되어 크기 또한 부모와 같이 변하게 됩니다.

 

 

 

 

 

 

 

 

 

Parent Link 

 

 

 

2022.07.29 - [Aniamtion/Theory] - [3D 이론] 좌표계, Matrix

 

 

좌표계와 밀접한 관련이 생기는 Parent Link는 공간좌표에 대한 기본 이해를 필요로 합니다.

 

 

 

 

 

 

 

 

 

표시된 오브젝트의 Pivot의 Position(또는 Location)은 Parent, 즉 부모 오브젝트가 아무것도 링크되어 있지 않은 World 기준의 Position 값과 Rotation 값을 표시합니다.

 

 

World 의 원점 (0, 0, 0) 의 기준으로 얼마나 이동하고 회전했는지를 표시합니다. 즉 부모 오브젝트가 아무것도 링크 되어 있지 않으면 오브젝트는 기본적으로 World 기준으로 위치를 표시합니다.

 

 

 

 

 

부모인 Cube를 잃은 객체는, 월드 기준 (0, 0, 0) 을 부모로 표시하고 있다.

 

 

 

 

사진에서 Pivot이 부모의 기준으로 표시되게 할 수 있는데, 만약 부모 오브젝트가 없다면 부모는 World가 되는것을 확인 할 수 있습니다.

 

 

 

 

 

 

 

 

 

또한, 사진처럼 부모인 Cube가 움직이면 자식인 Sphere 가 Position, Rotation, Scale 이 변화함에 따라 자식도 같이 변하는 것을 알 수 있습니다.

 

 

부모의 자식인 오브젝트는 부모를 중심축으로 두고 따라 움직이는 것을 알 수 있습니다.

 

 

 

 

 

또한 부모로 링크되어 있는 오브젝트가 있다면 World 기준이 아닌 Parent 오브젝트가 어떤 것이냐에 따라 위치 정보를 다르게 표시합니다.

 

 

 

 

 

 

 

 

 

 

예를 들어, 3D 툴의 부모가 이미 (1, 0, 0) 인 상태에서 링크된 자식(Child)은 실제 World 기준으로 (3, 0, 0)만큼 이동했어도, 

이미 부모가 (1, 0, 0) 만큼 이동했음으로, 자식은 (2, 0, 0) 으로 표시됩니다.

 

 

쉽게 생각하면, 부모가 이동한 거리는 제외되고 자식 오브젝트가 부모로부터 얼마나 움직였는지를 생각하면 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

만약 서로 부모자식으로 링크되어 있는 계층구조를 해제시키면 어떻게 될까요?

 

 

 

 

 

 

 

부모 기준이였던 자식 오브젝트는 링크가 해제됨에 따라 Wolrd 기준으로 위치값이 다시 정렬됩니다.

 

 

Sphere 위치는 기존의 부모가 자신과 움직였던만큼, Wolrd 좌표 기준으로 다시 반환됩니다.

 

 

 

 

 

 

 

 

여기서 한가지 궁금한점이 생깁니다.

 

 

오브젝트가 가지고 있는 Transform 정보는 기본적으로 'Local 정보'를 들고있습니다.

 

 

그렇다면, 링크가 해제되었을때 오브젝트가 가진 Transform 정보는 자식이였을 때, 자신이 가진 정보가 Wolrd 좌표 기준으로 반환 되면 위치가 재정렬 되어 눈에 보이는 위치가 바뀌어야 합니다.

 

 

하지만 위치가 바뀌지 않고 자식과 부모사이의 위치가 변한 만큼 현재 위치로 다시 위치값을 반환합니다.

 

 

 

 

 

 

 

 

 

Blender는 Local 정보를 어떻게 할 것인지를 보여준다.

 

 

 

 

이유는 3DS MAX 나 Unity등 링크가 해제되면 3D 툴에 의해서 자동으로 Local 정보값이 바뀝니다.

 

 

자동으로 변환이 되었다는 정보가 직관적으로 노출되지 않기 때문에, 내부적인 변화를 모르기 쉽습니다. 

 

 

Blender의 경우 링크를 해제할 때, 해제될 오브젝트의 Local 데이터의 값을 어떻게 변환할 것인지 사용자가 선택할 수 있습니다.

 

 

이렇듯 기본적으로 오브젝트는 어떤 3D 툴이든 Local 정보를 들고 있으며, 3D 툴에 따라 부모자식의 링크를 해제할 때 자동 변환이 되느냐 되지 않느냐에 따라 결과가 조금씩 달라질 수 있습니다.

 

 

 

 

 

 

 

Rigging에서는 이 계층구조가 매우 중요해집니다.

 

 

Bone 을 이용한 메카닉 애니메이션에서 부품이 정교하게 맞물려 설득력있게 움직이게 하기 위해서라도 축의 정렬과 부모자식의 순서는 반드시 신경써야 합니다.

 

 

 

 

 

출처 : 캐릭터 셋업 테크닉 (저자 이상원)

'Theory > Graphics Theory' 카테고리의 다른 글

[3D 이론] Normal, Smoothing Group  (0) 2022.08.09
[3D 이론] 좌표계, Matrix  (0) 2022.07.29
profile

이것 저것 개발하고 만들어보기

@Tintana'k