http://isg.cs.tcd.ie/kavanl/papers/sdq-tog08.pdf
초록
변형 가능한 모델들의 스켈레톤의 스키닝은 케릭터, 크리쳐와 같은 오브젝트들의 실시간 애니메이션에 사용된다. 기본적인 솔루션은 선형 블렌드 스키닝이다. 이 방식에는 아티스트의 일이 많아지는 심각한 문제점이 있다 최근에는 많은 대안들이 나왔다. 대안들은 성공적으로 결점을 보완했으나 선형 블렌드 스키닝보다 간단하거나 효율적이지 못했다. 결과적으로 선형 블렌드 스키닝은 여전히 개발자들 사이에서 인기가 있다. 이 페이퍼에서는 노벨 스키닝 알고리즘에 기반을둔 듀얼 쿼터니언의 선형 조합을 제안 한다. 비록 우리가 제안하는 방식은 근사치 방식일지라도 어떠한 결점도 보여 지지않을 뿐더러 GPU에의해 효율적으로 구현 할수 있다. 현재 애니메이션 시스템을 선형 듀얼 쿼터니언 스키닝으로 매우 쉽고 저 비용으로 업그래이드 할수 있을 것이다.
1. 소개
스키닝과 뼈대 애니메이션은 많은 응용 프로그램에서 사용하는 케릭터 애니메이션 기술이다. 어떤 경우 물리적으로 정확한 스킨 변형이 필요 할 때가 있다. 그럴듯한 물리적인 효과를 지원해야 한다. 비디오 게임이나 군중 시뮬레이션에서는 다중 모델들이 상호 작용할수 있을 정도로의 빠른 알고리즘이 필요하다.
일반적인 알고리즘은 선형 블렌드 스키닝(버텍스 블렌딩) 으로 알려진 방식으로 적은 비용으로 스키닝을 할 수 있다. 이 알고리즘은 스킨을 변형 할때 뿐만 아니라 다른 변형 요소를 애니메이션하는데 사용된다. 예를 들어 천과 같은것은 물리적인 천 시뮬레이션을 사용하는것보다 더 빠르게 애니메이션을 시킬수 있다. 기본 원리는 스키닝 변환은 메트릭스로 표현 할 수 있고 그 메트릭스를 선형 블렌딩을 하면 된다. 메트릭스의 선형 조합은 블렌딩 변환의 고질적인 문제가 있는 방법으로 매우 잘 알려져 있다. 이 방식은 변형된 피부에 결점을 생기게 할 뿐만아니라 스키닝 변환을 강체로 제약을 걸기도 한다. 그럼에도 불구 하고 선형 블렌딩을 대체할만한 간단한 알고리즘이 나오지 않아 여전히 가장 많이 쓰이는 방법이다.
최근 연구에서 강체 변형 메트릭스를 (quaternion,translation)로 대신 할수 있는 방법을 발표 했다. 이 방법은 비용이 발생한다. Hejl's 알고리즘은 모델에 제약이 있어야한다. (구체적으로 버텍스는 이웃 본에의해서만 영향을 받을수있다.) 이 것은 편리 하지만 선형 블렌딩은 그런 제약을 가지지 않는다.
Kava, Zara's 방법은 이런 제약이 없지만, 값비싼 Singular Value Decomposition
scheme을 사용한다. 결론적으로 선형 블렌드 스키닝이 가장 심플한 방법이었다.
강체 변형을 나타내는 메트릭스나 (quaternion,translation)의 쌍은 단지 2개의 SE(3)의 한도가 있다. 블렌딩은 우리를 막을수 없다. 예를 들어 3튜플(axis,angle,translation) 또는 쌍((axis,translation · sin(angle)). 만약 우리가 블렌딩을 선형 조합으로 제약을 건다면 우리는 무한히 많은 블렌딩 방법을 찾을 수 있다 (단지 강체 변형에 다른 파라메터를 넣으므로써)
이론적으로 최상의 강체 변형 블렌딩 방법은 [Govindu 2004]이 이전에 제안했었다. 이 알고리즘은 모든 요구된느 수학적인 파라메터를 지니고, 올바른 스키닝을 보장했지만 불행히도 대부분의 리얼타임 응용 프로그램에서 엄청나게 느렸다. 그래서 우리는 그 대안으로 듀얼 쿼터니언을 사용한 근접한 결과를 낼 수 방법을 제안한다.
이 개념은 2D 유클리드 공간에서 고안되었다. 우리는 3개의 포인트 p1, p2, p3를 Figure 2 처럼 구면 위의 점이라고 가정하자. 그리고 p1,p2,p3의 평균을 Pavg(왼쪽)라고 할 때 Pavg는 더이상 호위에 있지 않는다. 이런 이유로 선형 블렌드 스키닝은 결점이 생긴다. 2D 유클리드 공간에서 이것은 p1,p2,p3의 평균 각을 적용함으로써 쉽게 고칠수 있다(Figure 2 오른쪽).
우리의 접근의 개념은 노말 블렌딩(Figure3)과 같은 방법을 사용한다. 가중치 0.3과 0.7의 n1과 n2의 노말을 블렌딩할때 처음에는 선형 블렌딩을 사용해서 nb를 구하고 그값을 노말라이즈를 해서 Nfinal을 구한다. 비록 이것은 이론적으로 완벽한 블렌딩이 아니고 종종 에러(일반적으로 n1,n2가 근접했을때)를 발생시키는 근사치이지만 알고리즘은 매우 빠르다. 듀얼 쿼터니언은 우리가 SE(3)과 같은 트릭을 가능하게 한다. 게다가 듀얼 쿼터니언의 수학적인 프로퍼티는 이전 기술의 스킨의 붕괴 효과(섹션 2.2)과 나타나지 않는다. 듀얼 쿼터니언 블렌딩은 버텍스 셰이더에서 계산 할수 있다. 듀얼 쿼터니언은 8 개의 float 이 필요 하므로 12개를 쓰는 메트릭스 보다 좀더 메모리를 효율적으로 쓸 수 있게 한다. 현존 하는 어플리케이션에서 선형 블렌드 스키닝 구현을 듀얼 쿼터니언으로 대체하는 것은 매우 쉽다.
메트릭스의 듀얼 쿼터니언으로 변형은 버텍스 셰이더를 통과하기 전에 약간은 변형이 필요하다. 모델 파일 뿐만아니라 내부 데이터 구조를 수정하지 않고, 단지 블렌딩 변환을 다르게 하면된다.
이 페이퍼는 [Kavan et al. 2007]에서 확장되었다. 우리는 좀더 완벽한 듀얼 쿼터니언 튜토리얼(Appendix A)을 추가 했다. 우리는 운동학 공간의 중요한 연결 부위를 강조해서 보여준다. 현실적인 이슈는 좀더 효율적인 버텍스 셰이더를 제안하는 것이다(섹션4). 쿼터니언의 antipodality 이슈와 scale/shear /transformation을 하는 방법에대해 알아본다.(섹션 4.2)
규약.
우리는 스칼라를 소문자로 나타낸다. 벡터, 복소수, 쿼터니언, 메트릭스는 굵은 글씨로 나타낸다. 듀얼 쿼터니언은 ^에 의해서 듀얼 쿼터니언이 아닌 쿼터니언과 구분된다. 예를 들어 a^은 듀얼 쿼터니언을 나타낸다.
2. 관련된 연구
듀얼 쿼터니언은 [Clifford 1882]에 의해서 처음 고안되었다.
'IT 이모저모' 카테고리의 다른 글
DirectX Tools (0) | 2018.03.05 |
---|---|
DX 11 - Direct3D 초기화 (0) | 2018.03.05 |
Tiled Forward Shading - GPU Pro 4.1 (0) | 2018.03.05 |
갤럭시 S9 자급제폰이란? (0) | 2018.03.03 |
LG G7 실물 유출 (0) | 2018.03.02 |