Artoke

리깅 파이썬: 본 계층은 트리다 — 자료구조로 보는 스켈레톤

리깅 파이썬: 본 계층은 트리다 — 자료구조로 보는 스켈레톤 대표 이미지
출처: 본 계층은 트리다 — 자료구조로 보는 스켈레톤

트리, 우리 주변의 나무처럼 컴퓨터 세상에도 있어요!

리깅 파이썬: 본 계층은 트리다 — 자료구조로 보는 스켈레톤 도식트리는 컴퓨터 세상에서 우리 주변의 나무를 거꾸로 세워 놓은 모습과 비슷해요. 맨 위에 루트 노드 하나가 있고, 그 아래로 자식 노드들이 가지처럼 뻗어 나가죠. 여기서 노드(node)는 데이터가 담기는 '마디'이고, 노드와 노드를 잇는 선을 간선(edge)이라고 불러요. 이렇게 여러 노드가 계층적으로 연결된 구조가 트리예요.

예를 들어, 학교를 생각해 보세요. 학교는 가장 큰 '루트' 노드이고, 각 교실은 그 아래에 있는 '자식 노드'들이에요. 선생님은 교실을 관리하고, 교실 안에는 학생들이 있죠. 이렇게 트리는 복잡한 정보를 계층적으로 정리하는 데 정말 유용해요.

트리의 특징: 부모와 자식 노드

트리에서 중요한 특징 중 하나는 각 노드가 부모 노드와 자식 노드 관계를 가지고 있다는 거예요. 부모 노드는 위에 있고, 자식 노드는 아래에 있어요. 단, 루트 노드는 부모가 없어요. 이 구조 덕분에 정보를 쉽게 찾거나 정리할 수 있어요.

예를 들어, 가족 관계를 트리로 표현할 수 있어요. 할아버지가 루트 노드라면 아빠와 삼촌이 그 아래 자식 노드가 되고, 아빠 아래에는 나와 동생이 다시 자식 노드로 붙어요. 각 노드는 자기 아래쪽으로 하위 트리를 이루기 때문에, 세대 간의 관계를 한눈에 파악할 수 있죠. 다만 배우자처럼 같은 세대의 관계는 부모-자식 구조로 표현되지 않는다는 점은 기억해 두세요.

트리 순회: 위아래로 탐색하기

트리를 탐색하는 방법을 '순회'라고 해요. 트리의 모든 노드를 빠짐없이 방문하는 과정을 말하죠. 크게 두 갈래로 나뉘는데, 한 가지를 끝까지 파고드는 깊이 우선 탐색(DFS)과, 같은 깊이의 노드부터 차례로 훑는 너비 우선 탐색(BFS)이에요. 깊이 우선 탐색은 노드를 방문하는 순서에 따라 다시 전위 순회, 중위 순회, 후위 순회로 나뉘어요.

깊이 우선 탐색은 마치 나무를 탐험하는 것 같아요. 한 가지 가지를 따라 내려가다가 더 이상 갈 곳이 없으면 위쪽으로 돌아와서 다른 가지를 탐험해요. 이렇게 하면 복잡한 구조도 단계적으로 이해할 수 있어요.

트리 활용: 리깅 실무에서의 적용

리깅(rigging) 작업에서 트리 구조는 복잡한 시스템을 정리하고 관리하는 데 큰 도움이 돼요. 애니메이션 캐릭터의 골격은 골반이 루트, 척추와 다리가 그 자식, 팔과 손가락이 다시 그 아래로 이어지는 전형적인 트리예요. 부모 조인트를 회전시키면 자식 조인트가 함께 따라 움직이기 때문에, 팔 전체를 한 번에 들어 올리는 동작도 부모 하나만 조절하면 되죠.

물론 계층이 깊어질수록 다루기가 까다로워져요. 노드가 수백 개로 늘어나면 어느 조인트가 어디에 붙어 있는지 헷갈리고, 부모를 잘못 지정하면 팔을 움직였는데 머리가 따라 도는 식의 문제가 생겨요. 그래서 실무에서는 이름 규칙을 정해 두고, 작은 계층부터 만들어 올라가는 방식을 많이 써요.

알면 좋아지는 점

트리를 이해하면 복잡한 데이터나 시스템을 더 효율적으로 다룰 수 있어요. 예를 들어, 파일 시스템이나 웹사이트의 카테고리 구조를 이해하는 데 큰 도움이 돼요. 이런 구조를 알고 있으면 정보를 빠르게 찾거나 관리하는 데 훨씬 용이해져요.

모르면 겪는 문제

만약 트리 구조를 모르면, 데이터를 정리하거나 복잡한 시스템을 이해하는 데 어려움이 생길 수 있어요. 예를 들어, 애니메이션 캐릭터의 골격 구조를 효과적으로 제어하지 못해 자연스러운 움직임을 만들기 어려울 수 있어요.

함께 읽기 — 이 글이 쓰는 기초 수학

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기