17
4. 13 보보보 보보보 3D 보보보보 보보보보보 4.14 보보보 보보보 보보보 보보 4.15 보 보보보 – 보보보보 보보보보 보보보 보보 보보보보보 [DevRookie] 보보보보

[Gpg1권]skinning

Embed Size (px)

Citation preview

Page 1: [Gpg1권]skinning

4. 13 보간을 이용한 3D 키프레임 애니메이션4.14 빠르고 간단한 스키닝 기법4.15 틈 메우기 – 스티칭과 스키닝을 이용한 고급 애니메이션

[DevRookie] 꽝매니아

Page 2: [Gpg1권]skinning

개요 (4.13 보간을 이용한 3D 키프레임 애니메이션 )

선형보간 정점들과 법선들의 보간 Hermit 스플라인 보간 정점들의 스플라인 보간 Hermit 스플라인의 장점

Page 3: [Gpg1권]skinning

개요 (4.14 빠르고 간단한 스키닝 기법 )

다각형 개수가 적은 모델을 사용하는 이유 기법 요약

Page 4: [Gpg1권]skinning

개요 (4.15 틈 메우기 – 스티칭과 스키닝을 이용한 고급 애니메이션 )

스티칭 스키닝

Page 5: [Gpg1권]skinning

선형 보간 (Linear Interpola-tion) 보간 - 경제적으로 키 프레임 사이의

애니메이션을 만들기 위함 . 혼합 (Blending), 모핑 (Morphing), 트위닝

(Tweening) 두개의 인접한 키 프레임 사이에서 해당 선위에

위치 p(t) 를 구하는 과정

Page 6: [Gpg1권]skinning

정점들과 법선들의 보간 보간 기법에 의해 키 프레임들로 부터 새로운 프레임의

정점들을 계산 법선을 보간하려 할 때에 차이가 그리 크지 않다면 정규화

시키지 않는다 각 키 프레임에 정점 법선 목록과 면 법선 목록을 개별

저장할 때 좀더 향상된다고 함 . ( 왜 ? 면 법선은 후면 컬링을 위해서 항상 보간해줘야

좋지만 정점 법선은 필요에 따라 ( 광원 등 ) 사용자가 눈치 채기 어려우므로 보간을 안하게 할 수도 있다 .)

요즘같이 프레임 잘 나오는 컴퓨터에서 정점 법선을 보간하지 않으면 순간적이지 않으면 어색할 수 있을 것 같다 .

Page 7: [Gpg1권]skinning

Hermit 스플라인 보간 Spline Interpolation 은 원하는 위치에 두 키

프레임의 양쪽에 키프레임 하나를 더 고려해서 계산 .

Linear Interpolation 에 비해 복잡하지만 부드러운 보간이 가능 .

Page 8: [Gpg1권]skinning

Hermit 스플라인 보간 Hermit 는 이러한 Spline 보간 을 위한 방법 중

하나 3 차원 곡선으로 보간할 수 있다 . Alpha 값을 이용해서 곡선의 경향을 제어할 수

있는 장점

Page 9: [Gpg1권]skinning

빠르고 간단한 스키닝 기법 적은 다각형을 가진 모델을 조작하기 위한 스키닝

기법 스킨 정점 안에 본 정점들을 관리하고 이것으로

스키닝 면을 재조작 객체의 정점 목록을 수정 , 정렬하고 그에 맞는 면

(face) 목록을 다시 매핑 왜 다각형 적은 모델을 사용해야 할까 ? 스키닝

굴곡의 매끄러움이 부족

Page 10: [Gpg1권]skinning

빠르고 간단한 스키닝 기법 뼈대 정점 개수를 줄이는 어떻게 할 것인가 ? 책 내용처럼 자동화 할 경우 최소 거리 설정에 유념

( 책에는 1e6!) 본을 만들때 스킨을 비율 축소하고 조각을 나눠

본을 만드는 경우를 사용하고 있지만 아티스트가 편한 쪽으로 해주는게 좋을듯 하다 .

책에서는 정점당 하나의 뼈대만 있다는 가정하에 제작 .

Page 11: [Gpg1권]skinning

틈 메우기 – 스티칭과 스키닝을 이용한 고급 애니메이션

좀더 현실적인 유기체 애니메이션 제작을 위한 생각

뼈대의 움직임에 따라 표현되는 강체 (Rigid body) 의 어색함

부드러운 옷감 , 피부의 케릭터 면을 표현하는 수단을 강구

스티칭 (Stitching) 과 스키닝 (Skinning) 연속적인 메쉬의 연결에서 뼈대 구조의 움직임에

따른 관절부의 틈을 막는 방법

Page 12: [Gpg1권]skinning

스티칭 (Stitching)

두개의 뼈대의 움직임을 통해 생기는 메쉬의 틈을 덮는 방식

객체의 각 정점마다 영향이 가는 Bone 의 정보를 가지고 있는다 .

뼈대와 스킨 정점들 간의 공간적 관계를 설정 . 뼈대의 선회점이 해당 스킨 정점들의 국소

좌표계로 변환해서 계산한다 .

Page 13: [Gpg1권]skinning

스티칭 (Stitching)

뼈대 정보 구조체에서 애니메이션 행렬 , 역행렬 , 최종 스티칭 행렬을 계산해서 가지고 있으면 해당 뼈대에 대한 스킨 정점들을 계산할 때 수행속도가 개선 될 수 있다 .

( 왜 ? 스킨 정점들이 해당 뼈대의 국소 좌표계로 변환된 행렬의 역행렬로 변환 행렬이 되기 때문이다 .)

스킨 정점들이 각 뼈대 별 국소 좌표 정보로 구조체에 가지고 있으면 역행렬 변환 계산이 줄어든다 .

Page 14: [Gpg1권]skinning

스키닝 (Skinning)

관절을 많이 구부리면 ? 하나의 정점에 하나의 뼈대에 영향을 받게 하면서

발생 . 스킨의 정점이 자신에게 영향을 주는 뼈들의

목록을 갖고 , 해당 뼈대가 정점에 미치는 가중치 값을 갖는다 .

여러 개의 뼈에 대해서 계산되는 가중치의 합을 1.0 으로 계산하였다 .

Page 15: [Gpg1권]skinning

스키닝 (Skinning)

현재 챕터에서는 각 행렬에 가중치를 곱한 값을 사용한다 .

행렬들의 선형 보간에 의해 스키닝 한 상태이므로 보간 방법을 바꿔서 좀더 개선할 여지가 있다 .

행렬 대신 사원수를 써준다 . (GPG 5-12 참고 ) SLERP ( 구면 선형 보간 ) 을 적용해 준다 .

Page 16: [Gpg1권]skinning

결론 유기체 애니메이션 을 위한 기하학 Interpolation Stitching Skinning 3DSMAX 에서 Biped Animation 을 해보면

이해하기 쉽다 . 뼈대와 스킨 간 가중치 연결 : 자동 vs 수동 쉐이더를 통한 빠른 계산 (GPG 4 권 참고 )

Page 17: [Gpg1권]skinning

이 페이지 까지 왔다면… 설명은 거의 다 한거 같은데… 소스를 잠깐 볼까요 ? 아니면 GPG 4 권의 ‘ 5-12’ 내용을 맛보기로

잠깐… 관절의 스키닝 과정 중에 물리적으로 비틀어 지는

경향 발생 ( 사탕껍질 변형 ) SLERP ( 구형 선형 보간 (Sphere Linear In-

terpolation)) SLERP(p, q, t) := p pow( inv(p) q, t )