이 과제의 주요 내용인 계층적 모델링과 변환 행렬 스택에 대해 알아보자
계층적 모델링은 복잡한 모델의 움직임을 부모-자식 관계로 나누어 관리하는 방식이다. 부모의 움직임이 자식 객체들에게 전달되어, 각각의 객체가 논리적 관계를 유지하면서 자신만의 움직임을 가질 수 있도록 하는 구조이다. 이 구조를 사용하면, 여러 부위가 서로 상호작용하며 자연스러운 애니메이션을 구현할 수 있다.
과제에서 요구한 대로 예시를 들면, 다음과 같이 사람의 신체 구조를 계층적으로 나눌 수 있다.
이 계층 구조에서 몸통이 움직이면, 그 아래에 있는 머리, 팔, 다리와 같은 자식들도 몸통의 움직임에 따라 함께 움직인다. 그러나 팔 하부가 회전할 때는 팔 하부만 독립적으로 회전하게 된다. 부모의 변환이 자식에게 전달되지만, 각 자식은 자신의 변환을 추가로 가지는 구조이다.
예를 들어:
이처럼 부모의 움직임이 자식에게 계층적으로 영향을 미치는 구조가 계층적 모델링의 핵심이다.
변환 행렬 스택은 계층적 모델링에서 애니메이션을 구현할 때 유용하게 사용할 수 있는 도구이다. 부모의 변환을 스택에 저장하고, 그 위에 자식의 변환을 쌓아가며 적용하는 방식이다.
변환 행렬 스택에 대해 알아보면서 왜 굳이 스택을 써서 구현을 하는지가 궁금했는데 다음 예시를 통해 그 궁금증이 사라졌다.
계층적 모델에서 부모가 자식을 여러 개 가지고 있을 때, 각 자식의 변환이 끝난 후 다른 자식에게 영향을 주지 않도록 부모의 상태를 복원해야 한다. 스택을 사용하면, 부모의 상태를 저장해두고 각 자식의 변환을 처리한 후 복원할 수 있기 때문에 스택을 쓰는 것이 좋다.
예시: 부모와 두 자식의 렌더링
이처럼 여러 자식 객체가 있을 때, 스택을 사용하여 부모의 변환을 복원하고, 다른 자식의 변환이 서로 간섭하지 않도록 할 수 있다. Pop을 통해 부모의 상태로 돌아가기 때문에 자식1의 변환이 자식2에 영향을 미치지 않도록 방지할 수 있다.
계층적 모델링과 변환 행렬 스택을 결합하면, 복잡한 애니메이션을 효율적으로 구현할 수 있다. 부모-자식 관계를 기반으로 변환이 계층적으로 전달되며, 각 객체가 자신만의 독립적인 변환을 가지면서도 전체 구조는 일관되게 유지된다.
이 방식은 특히 로봇 모델이나 캐릭터 애니메이션처럼 여러 부분이 상호작용하는 모델을 만들 때 매우 유용하다. 몸통, 팔, 다리와 같은 부위를 계층적으로 연결해 애니메이션을 구현하는 데 사용되며, 변환 행렬 스택을 통해 부모-자식 간의 관계를 효율적으로 관리할 수 있다.
결국, 계층적 모델링과 변환 행렬 스택을 통해 복잡한 구조를 가진 객체의 애니메이션을 자연스럽게 구현할 수 있다.
과제에 필요한 기본 개념 공부는 끝났으니 다음엔 사람 모델을 디자인해 볼 예정이다.
HumanGL: Human Model에 애니메이션을 적용하기 위한 준비 - (6) (2) | 2024.10.19 |
---|---|
HumanGL: 카메라 제어 - (5) (3) | 2024.10.14 |
HumanGL: 계층적 모델링과 변환 행렬 스택 구현 - (4) (0) | 2024.10.14 |
HumanGL: 프로젝트 진행 계획 - (2) (1) | 2024.10.09 |
HumanGL: 계층적 모델링과 애니메이션 - (1) (2) | 2024.10.09 |