스키닝 애니메이션에 대해 다루기 전에 먼저 3D모델의 구조에 대해 알아보자.
3D모델은 보통 메시와 스켈레톤으로 구성이 되어있다.
- 메시 : 모델의 정점, 면, 그리고 이들로 구성된 폴리곤 정보를 포함한 3D 표면이다.
- 스켈레톤 : 모델을 움직이기 위한 뼈대 구조로, 각 본은 계층적(hierarchical)으로 연결되어 있어 모델의 각 부위를 제어할 수 있다.
예전에는 모델에 애니메이션 작업을 수행하기 위해 각 모델의 부위를 따로 분리하여 관리했다.
예) 골반, 허벅지, 종아리, 발...등등
이런식으로 분리된 모델들을 조합해서 하나의 모델로 만든뒤, 각 부위에 transform을 줌으로써 애니메이션을 줄 수 있다.
하지만 이런식으로 하면 부자연스러울뿐만 아니라 애니메이션 꺾는 동작에서 부위 간의 빈 공간이나 틈이 생길 수 있다.
예를 들어 허리를 90도로 접게되면 아래 사진과 같이 빈 공간이 생긴다.
이러한 문제를 없애기 위해 스키닝 애니메이션을 사용한다.
스키닝 애니메이션이란?
스키닝 애니메이션은 모델의 정점들이 하나이상의 본(bone)들과 연결이 되고 연결된 본들에 대한 가중치를 가지는 방식의 애니메이션이다. 본들이 움직이게되면, 정점들도 해당 본들의 가중치에 맞게 이동을 한다.
예를 들어 한 정점이 본 A와 본 B에 연결이 되어있고 각 본의 가중치는 0.7, 0.3이다. 여기서 본 A가 x축으로 90도로 회전하게 되면 이 정점은 90*0.7, 즉 63도만큼만 회전한다. 이해를 돕기 위한 예시이며 실제 스키닝 계산은 이것보다 더 복잡하며, 여러 본들의 변형을 합산해서 최종 위치와 회전을 계산하게 된다.
스키닝 애니메이션을 사용하는 이유는?
- 자연스러운 변형 : 스키닝 애니메이션은 모델을 여러 부분으로 나눌 필요 없이 자연스러운 형태 변형이 가능하다. 모델이 움직일때 정점은 본에 맞춰 부드럽게 변형되기 때문에 틈이나 빈 공간이 발생하지도 않는다.
- 재사용성 : 스켈레톤을 재활용해서 여러 모델에 동일한 애니메이션을 적용 할 수 있다. 예를 들어 하나의 인간형 스켈레톤과 애니메이션으로 여러 인간형 모델에 사용할 수 있다.
- 효율성 : 여러 개의 메시를 관리하지 않아도 되서 애니메이션 작업이 더 효율적이고, 관리하기도 편하다.
'3D Graphics' 카테고리의 다른 글
DirectX11 TEXTURE2D DESC (3) | 2024.09.07 |
---|---|
DirectX11 RTV, SRV등등 View의 역할 (1) | 2024.09.07 |
3D Graphics Blend State에 대해 알아보자 (0) | 2024.08.21 |
3D Graphics RasterizerState에 대해 알아보자 (0) | 2024.08.21 |
3D Graphics Sampler State에 대해 알아보자 (0) | 2024.08.21 |