Upload
mingeun-park
View
1.013
Download
1
Embed Size (px)
Citation preview
3ds Max 스킨 익스포터 및애니메이션 툴 킷
GPG 2. Section 1. General Programming 1.21
DevRookie Study, 2011. 9.14 박민근 ( 알콜코더 )
목적
• 맥스 플러그인을 이용하여 , 메쉬 데이터 및 애니메이션
데이터의 커스텀 익스포터 / 임포터 제작하기
• 임포트한 데이터를 이용하여 스킨 애니메이션 적용
활용
• 자체 엔진 개발시에 커스텀 맥스 익스포터
제작
참고
• 책의 내용은 Max 3.1 기준
• 현재는 변경된 부분이 많을지도 모르지만 ,
기본은 같을 것이라고 예상
• 맥스 익스포터 ( 플러그인 ) 에 대한 자세한
사용법은 스터디의 기존 발표를 참조
맥스에서 바이패드 , 본 , 피지큳등을 이용하여 스킨 애니메이션 제작
익스포트 플러그인으로 커스텀 형식 파일 (.MRC) 로 익스포트•메시 정보 ( 정점 , 법선 )•골격 구조 ( 본 계층 트리 )•메시의 정점들의 각 본에 대한 가중치 (weight) 값들•본 애니메이션 ( 이동 , 변환 , 시간 )
제작한 DLL 을 이용해서 .MRC 파일을 임포트
렌더러는 키프레임 사이를 보간하며 , 각 본의 변환 행렬을 계산한다 ( 시간 기반 )
각 프레임 – 렌더러는 각 정점과 법선의 위치를 다시 계산한다 (HW T&L)
커스텀 파일 형식
노드 다루기
• 맥스안의 모든 객체들은 씬그래프안의
노드들로 저장된다
• 계층 구조의 노드를 탐색하여 , 필요한
노드를 찾아낸다
• 객체 종류 식별하기
메시 데이터 얻기 #1
• GetObjectTM(TimeValue) : 오브젝트의
월드 변환 행렬을 얻는다 .
• 정점들과 기타 데이터는 정적으로 저장되는
것이 아니라 , 매번 동적으로 계산된다
메시 데이터 얻기 #2
• 모디파이어 스택 시스템
• EvalWorldState() : 지정된 시간에서의
애니메이션 결과를 얻는다
• ObjectState 포인터에서 실제 데이터들을
얻어낸다 .
본 데이터
• 뼈대 구조 얻기
• 노드에서 변환 행렬을 구한다
• 뼈대 가중치 (weight) 얻기
• 피지크 모디파이어를 찾는다
• 모디파이어에서 영향을 주는 본을 찾는다
본 애니메이션 키
• 각 시간 Tick 에 대해서 변환 행렬을 구한다
• 행렬에서 위치 벡터와 회전 쿼터니언을
구한다
애니메이션 수행 ( 렌더링 루프 )
• 정확한 시간을 얻는다
• 본 애니메이션
• 키프레임의 변환 행렬을 보간 , 현재
시간의 값을 구한다
• 선형 보간 ( 위치 ), 사원수 보간 ( 회전 )
애니메이션 수행 ( 렌더링 루프 )
• 스킨의 재계산
• 본의 영향을 받는 ( 가중치 ) 각 정점의 좌표를
본의 로컬 좌표로 변환한다
• 현재 본 애니메이션의 변환 행렬을 적용한다
• 가중치를 정점 좌표에 곱하고 , 누적한다
• 메시를 렌더링한다