[Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

13
3ds Max 스스 스스스스 스 스스스스스 스 스 GPG 2. Section 1. General Programming 1.21 DevRookie Study, 2011. 9.14 스스스 ( 스스스스 )

Transcript of [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

Page 1: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

3ds Max 스킨 익스포터 및애니메이션 툴 킷

GPG 2. Section 1. General Programming 1.21

DevRookie Study, 2011. 9.14 박민근 ( 알콜코더 )

Page 2: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

목적

• 맥스 플러그인을 이용하여 , 메쉬 데이터 및 애니메이션

데이터의 커스텀 익스포터 / 임포터 제작하기

• 임포트한 데이터를 이용하여 스킨 애니메이션 적용

Page 3: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

활용

• 자체 엔진 개발시에 커스텀 맥스 익스포터

제작

Page 4: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

참고

• 책의 내용은 Max 3.1 기준

• 현재는 변경된 부분이 많을지도 모르지만 ,

기본은 같을 것이라고 예상

• 맥스 익스포터 ( 플러그인 ) 에 대한 자세한

사용법은 스터디의 기존 발표를 참조

Page 5: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

맥스에서 바이패드 , 본 , 피지큳등을 이용하여 스킨 애니메이션 제작

익스포트 플러그인으로 커스텀 형식 파일 (.MRC) 로 익스포트•메시 정보 ( 정점 , 법선 )•골격 구조 ( 본 계층 트리 )•메시의 정점들의 각 본에 대한 가중치 (weight) 값들•본 애니메이션 ( 이동 , 변환 , 시간 )

제작한 DLL 을 이용해서 .MRC 파일을 임포트

렌더러는 키프레임 사이를 보간하며 , 각 본의 변환 행렬을 계산한다 ( 시간 기반 )

각 프레임 – 렌더러는 각 정점과 법선의 위치를 다시 계산한다 (HW T&L)

Page 6: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

커스텀 파일 형식

Page 7: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

노드 다루기

• 맥스안의 모든 객체들은 씬그래프안의

노드들로 저장된다

• 계층 구조의 노드를 탐색하여 , 필요한

노드를 찾아낸다

• 객체 종류 식별하기

Page 8: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

메시 데이터 얻기 #1

• GetObjectTM(TimeValue) : 오브젝트의

월드 변환 행렬을 얻는다 .

• 정점들과 기타 데이터는 정적으로 저장되는

것이 아니라 , 매번 동적으로 계산된다

Page 9: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

메시 데이터 얻기 #2

• 모디파이어 스택 시스템

• EvalWorldState() : 지정된 시간에서의

애니메이션 결과를 얻는다

• ObjectState 포인터에서 실제 데이터들을

얻어낸다 .

Page 10: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

본 데이터

• 뼈대 구조 얻기

• 노드에서 변환 행렬을 구한다

• 뼈대 가중치 (weight) 얻기

• 피지크 모디파이어를 찾는다

• 모디파이어에서 영향을 주는 본을 찾는다

Page 11: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

본 애니메이션 키

• 각 시간 Tick 에 대해서 변환 행렬을 구한다

• 행렬에서 위치 벡터와 회전 쿼터니언을

구한다

Page 12: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

애니메이션 수행 ( 렌더링 루프 )

• 정확한 시간을 얻는다

• 본 애니메이션

• 키프레임의 변환 행렬을 보간 , 현재

시간의 값을 구한다

• 선형 보간 ( 위치 ), 사원수 보간 ( 회전 )

Page 13: [Gpg2권 박민근] 1.21 3ds max 스킨 익스포터 및 애니메이션 툴킷

애니메이션 수행 ( 렌더링 루프 )

• 스킨의 재계산

• 본의 영향을 받는 ( 가중치 ) 각 정점의 좌표를

본의 로컬 좌표로 변환한다

• 현재 본 애니메이션의 변환 행렬을 적용한다

• 가중치를 정점 좌표에 곱하고 , 누적한다

• 메시를 렌더링한다