3D 컴퓨터그래픽스 #8 - 씬 그래프

Words
231
Reading
2 min
Listen
Play
8y

공이나 큐브, 원뿔 같은 단순한 오브젝트가 아닌 대부분의 3D 오브젝트는 복잡한 구조를 지녔습니다. 특별히, 자동차나 기계장치 같은 복잡한 오브젝트는 여러개의 컴퍼넌트로 구성이 되지요. 이렇게 여러가지 구성요소를 가진 오브젝트를 3D 공간에서 움직일 때는, 일종의 계층 구조(hierarchical system)가 사용되는데요. 3D 공간 상에서 이런 계층 구조를 보통 씬 그래프(scene graph)라고 부릅니다.


http://ryansgameenginesblog.blogspot.com/2013/12/scene-graphs.html

위의 그림은 Star가 하나가 있고, 그 Star 주위를 회전하는 Planet 1, Planet 2가 있으며, 각각의 Planet 주위를 회전하는 Moon A, B, C, D가 있는 구조를 일종의 씬 그래프로 나타낸 건데요. (실제로는 사각형으로 그려진 노드들만 있고, 동그라미쳐진 Rotation은 이해를 위해 더해진 것 같습니다.) 이런 식의 계층 구조가 있을 때에 Star라는 부모(parent) 오브젝트를 3D 공간 상에서 움직이면 그 자식(children)인 Planet 1, Planet2도 따라서 움직이고, 그들의 자식인 Moon A, B, C, D도 따라서 움직여야 되겠지요? 바로 "3D 컴퓨터그래픽스 #5 - 매트릭스"편에서 말씀 드린 변환행렬의 곱셈을 통해서 구현됩니다. 부모의 변환행렬을 자식에게 곱해주면 자식이 부모를 따라 움직이게 되는 거죠.

articulated-upper.jpg
http://ryansgameenginesblog.blogspot.com/2013/12/scene-graphs.html

이런 씬 그래프와 계층 구조에 따른 움직임이 왜 중요하냐면 바로 캐릭터 애니메이션의 기본이 되기 때문입니다. 캐릭터는 위의 그림과 같이 몸이 움직이면 머리, 팔, 다리가 같이 움직여야 하거든요 ㅎㅎ 팔 윗부분을 움직이면 팔 아래부분과 손도 따라와야 하구요.

다음 글에서는 이 캐릭터 애니메이션의 원리에 대해 좀더 알아보겠습니다.

©2018 gyedo@gyedo