티스토리 뷰

스킨정보, 본 메시를 이용하여 스킨을 만드는것

계층구조 + 뼈대 애니메이션을 적용할때

관절부를 끊어먹지 않기위한 방법이다.

 

주로 가중치기법이 많이 사용됨

 메시를 구성하는 각각의 정점이 뼈대로부터 얼마만큼의 힘을 받는가를 계산하여 적용해주는것

 

 

뼈대의 가중치

본의 중량

(weight)

 

본 계층 구조에서 메시를 구성하는 정점은 하나 또는 그 이상의 본과 링크된다.

정점의 렌더링 좌표는

해당 정점에 링크된 각각의 본이 그 정점에 어느 정도 영향을 미치는가를 나타내는것이 가중치(중량, weight) 개념

한 정점에 링크된 모든 본들의 중량의 합은 1.0이다.

정점의 위치를 결정짓는 최종변환 행렬은

그 정점과 링크된 모든 본들의 중량, 변환 행렬을 곱한것들의 합

 

애니메이션 되는 객체의 스킨을 구성하는 정점의 위치가 매 프레임마다 변하으로, 매 프레임마다 렌더하기 전에 스키닝을 통해 정점의 위치들을 새로 계산해 주어야 한다.

 

Vworld = Vlocal * M0 * W0 + Vlocal * M1 * W1 + .... Vlocal * Mn * Wn

스킨의 월드매트릭스는

 정점의 지역좌표에 정점에 영향을 미치는 각각의 뼈대의 애니메이션행렬(월드상에서 뼈가 움직인 만큼의)과 각각의 가중치들을 곱한것을 모두 더한것

 

 

소프트웨어 스키닝, 하드웨어 스키닝 두 가지 방법이 있다.

소프트웨어스키닝

 : 각 정점의 위치를 CPU를 사용하여 계산( 상단공식 ) 결과를 임시메시에 저장, 렌더

간단하고 직관적, 하드웨어 스키닝에 비해 속도 느리다.

그러나 렌더링할 객체가 메시의 형태로 메모리에 저장되므로 그림자캐스팅, 피킹 등의 추가 작업을 하기에 쉽고, 정점에 영향을 미치는 본의 수에 제한이 없다.

 

하드웨어스키닝

: 정점의 위치계산을 GPU에게 맡긴다. 그림자캐스팅, 피킹 등의 작업이 가능하나, 소프트웨어 스키닝보다 많은 노력 필ㄹ요, 정점에 영향미치는 본의수, 1메시에 있는 캐릭터가 (물론 메시를 여러개로 쪼갠다면 많아질 수 있겠지만 ) 가질 수 있는 본의 수에 제한이 있다. 속도는 훨씬 빠르다는 장점

 

애니메이션 기법에 관한 다른글도 많이 적으심

http://wonjayk.tistory.com/212

http://wonjayk.tistory.com/186

필요한 내용을 시원하게 적어주심 거의 모든 내용을 여기에서 발췌하였다.

코드도 상세히 적어주셨다.

http://m.blog.naver.com/codeknight2/110138412715

 

 

http://gshan85.tistory.com/9

http://blog.naver.com/PostView.nhn?blogId=dmstnqo&logNo=90034851130&parentCategoryNo=14&viewDate=&currentPage=1&listtype=0

http://skmagic.tistory.com/entry/Skeletal-Animation

http://m.blog.naver.com/joiehoie/39432761

http://www.gpgstudy.com/forum/viewtopic.php?p=63171

http://skmagic.tistory.com/entry/%EC%8A%A4%ED%82%A4%EB%8B%9Dskinning

 

 

 

댓글