CAFE

☆ 3D 프로그래밍

[ASE강좌]1. ASE를 이용한 애니메이션의 시작

작성자(HH)|작성시간08.05.01|조회수2,054 목록 댓글 3

1. 목표 : ASE 포맷을 이용하여 캐릭터 애니메이션을 할 수 있도록 한다.

 

2. 진행방식

- 저 역시 ASE 공부를 오늘 부터 시작합니다.^^ 저처럼 애니메이션을 할려고 하지만 어떻게 시작해야 할지도

모르겠고 막막하신 분들은 같이 공부하신다는 생각으로 봐주시면 되겠습니다. 

- 강좌는 캐릭터 애니메이션이 가능할때까지 하게 되겠습니다.

- 여타 책이나 블로그 같은곳에 좋은 문서들이 있기는 하지만 시행착오를 겪는 과정까지는 설명해줄 수가 없기

때문에 제가 시행착오?-_-;; 를 하는 것을 보시면서 같이 따라해 나가시면 도움이 되실지도 모르겠네요^^

- 단순 정확한 자료 나열식이 아닌 처음 제가 공부해 나가는 순서대로 진행하도록 하겠습니다.

- 강좌는 공부량이 많든 적든 하루에 한번씩 업데이트 하도록 하겠습니다.

- 아래 자료들을 참고하고 실제 적용 시켜보면서 느낀 점들이나 참고사항들 위주로 설명을 하게되겠습니다.

- 시행착오를 겪으면서 진행해나가는 방식이기 때문에 잘못된 점들이 많을 수 있습니다. 수정가능하도록

많은 질책 부탁드리겠습니다.

 

3. 참고 자료

 - DirectX 9.x 3D 게임 프로그래밍 ( 24장 ~ 27장 정도..)

 - http://blog.naver.com/4000blue?Redirect=Log&logNo=140012712414

 ( 이 블로그에 있는 내용은 이 책에 있는 내용과 거의 동일합니다.)

 

4. 참고 사항

- 공부하시면서 의문점이나 잘못된 점들은 댓글로 달아주시면 되겠습니다.

 

5. 대상

- Direct3D SDK의 Tutorial 정도의 기본 내용들은 해보신 분들을 위주가 될 것 같습니다..

=====================================================================================================

< 캐릭터 애니메이션이 되기 까지 필요한 과정 >

 1. 3DS MAX로 하나 또는 여러개로 이루어진 메시를 모델링을 한다.

 2. 만들어진 메시를 ASE 포맷으로 Export 한다.

 3. Export 된 ASE 파일을 분석해서 필요한 모델 정보만을 읽어 출력에 사용하도록 파싱(Parsing) 한다.

 4. 파싱된 메시의 정보 및 Animation 정보들을 이용하여 메시 출력 및 애니메이션을 한다.

 

- 대충 전체적인 큰 틀은 이렇습니다. 제가 Bone Animation을 하기 위해서 어떤것들을 이용해야 하는지 많이

막막했었는데.. 여러가지 방법들이 있었습니다.

 X파일로 익스포트해서 사용할 수 도 있고 해골책에 있는 것처럼 max2xml 등을 이용하여 데이터 정보를 뽑아내서

이용하는 방법도 있지만.. 여러 사람들의 조언끝에 ASE를 사용해서 애니메이션을 하는 것이 가장 낫겠다라는 결정

을 하고 이것으로 진행하려고 합니다.

 

< ASE 파일이란 >

- 3DS MAX의 export 항목에 있는 (ASCII SCENE EXPORT)라는 파일 포맷 형식으로서 메쉬 및 애니메이션 정보의 대부분을

 저장해 주기 때문에 분석하기 쉽게 텍스트 포맷으로 출력해주기 때문에 초보자들 및 기초를 튼튼히 하는데 큰 도움이 된다고

합니다.

 

 < ASE 파일의 구조 >

- 먼저 max 에서 박스 하나를 만든 후 ase 파일로 export 한 후 다이렉트창으로 띄워 보는 것을 목표로 해보겠습니다.

이미지를 클릭하면 원본을 보실 수 있습니다.

 

- 3DS MAX 7 에서 현재와 같은 세팅으로 ASE파일로 export 한 것을 예를 들어서 진행하겠습니다.(추후에 MAX 버전은 바껴서 작업이 될 수 있으나.. 일단 7.0 버전에서 테스트를 해보겠습니다.)

 

*3DSMAX_ASCIIEXPORT 200     // 익스포터의 버전
*COMMENT "AsciiExport Version  2.00 - Fri May 02 15:25:54 2003"
*SCENE {     // 모델 전체에 대한 정보
 *SCENE_FILENAME "box.max"   //max 파일 이름
 *SCENE_FIRSTFRAME 0
 *SCENE_LASTFRAME 100
 *SCENE_FRAMESPEED 30
 *SCENE_TICKSPERFRAME 160
 *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000
 *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000
}
*MATERIAL_LIST {     // 재질(Material)에 관련된 정보
 *MATERIAL_COUNT 0     // 이 모델에 사용되는 Material의 갯수

}
*GEOMOBJECT {     // 메시에 관련된 정보들
 *NODE_NAME "Box01"     // 메시의 이름,각 메시의 구별을 위해서 필요,계층구조를 만들때 유용
 *NODE_TM {
  *NODE_NAME "Box01"     // 메시의 Transform Matrix에 관련된 정보
  *INHERIT_POS 0 0 0
  *INHERIT_ROT 0 0 0
  *INHERIT_SCL 0 0 0
  *TM_ROW0 1.0000 0.0000 0.0000     // 메시의 위치를 결정하는 TM을 읽어들인다. 4x4 행렬로 변환하여 읽어들임
  *TM_ROW1 0.0000 -0.0000 1.0000
  *TM_ROW2 0.0000 -1.0000 -0.0000
  *TM_ROW3 -0.7663 11.3885 0.0133
  *TM_POS -0.7663 11.3885 0.0133     // 메시의 이동값
  *TM_ROTAXIS -1.0000 0.0000 0.0000     // 메시의 회전축과 회전값
  *TM_ROTANGLE 1.5708
  *TM_SCALE 1.0000 1.0000 1.0000     // 메시의 확대/축소값
  *TM_SCALEAXIS 0.0000 0.0000 0.0000
  *TM_SCALEAXISANG 0.0000
 }
 *MESH {      // 실제 메시를 구성하는 점정과 Face에 관련된 정보들
  *TIMEVAL‎UE 0
  *MESH_NUMVERTEX 8     // 구성된 정점의 개수
  *MESH_NUMFACES 12     // 구성된 Face의 개수
  *MESH_VERTEX_LIST {     // 각 정점에 대해서 x,y,z의 순서로 저장
   *MESH_VERTEX    0 -11.1111 11.3885 -11.4810
   *MESH_VERTEX    1 9.5785 11.3885 -11.4810
   *MESH_VERTEX    2 -11.1111 11.3885 11.5075
   *MESH_VERTEX    3 9.5785 11.3885 11.5075
   *MESH_VERTEX    4 -11.1111 -14.6651 -11.4810
   *MESH_VERTEX    5 9.5785 -14.6651 -11.4810
   *MESH_VERTEX    6 -11.1111 -14.6651 11.5075
   *MESH_VERTEX    7 9.5785 -14.6651 11.5075
  }
  *MESH_FACE_LIST {     // Face의 정보 순서대로 읽어들임,세정점의 index값, 마지막 값은 해당 Face가

                               // 어떤 서브 Material을 사용하는가를 저장. 서브 Material이 없으면 0
   *MESH_FACE    0:    A:    0 B:    2 C:    3 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 1
   *MESH_FACE    1:    A:    3 B:    1 C:    0 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 1
   *MESH_FACE    2:    A:    4 B:    5 C:    7 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 3  *MESH_MTLID 0
   *MESH_FACE    3:    A:    7 B:    6 C:    4 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 3  *MESH_MTLID 0
   *MESH_FACE    4:    A:    0 B:    1 C:    5 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 4  *MESH_MTLID 4
   *MESH_FACE    5:    A:    5 B:    4 C:    0 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 4  *MESH_MTLID 4
   *MESH_FACE    6:    A:    1 B:    3 C:    7 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 5  *MESH_MTLID 3
   *MESH_FACE    7:    A:    7 B:    5 C:    1 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 5  *MESH_MTLID 3
   *MESH_FACE    8:    A:    3 B:    2 C:    6 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 6  *MESH_MTLID 5
   *MESH_FACE    9:    A:    6 B:    7 C:    3 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 6  *MESH_MTLID 5
   *MESH_FACE   10:    A:    2 B:    0 C:    4 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 7  *MESH_MTLID 2
   *MESH_FACE   11:    A:    4 B:    6 C:    2 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 7  *MESH_MTLID 2
  }

// Face에 관련된 추가 정보들이 나열됨
  *MESH_NUMTVERTEX 12     // 텍스쳐가 있는 경우 이 정보가 추가
  *MESH_TVERTLIST {    
   *MESH_TVERT 0 0.0000 0.0000 0.0000
   *MESH_TVERT 1 1.0000 0.0000 0.0000
   ...

  }
  *MESH_NUMTVFACES 12
  *MESH_TFACELIST {
   *MESH_TFACE 0 9 11 10
   *MESH_TFACE 1 10 8 9
   ...
  }
  *MESH_NORMALS {     // Face와 정점의 Normal 값. 각 Face에 속한 정점의 Normal값
   *MESH_FACENORMAL 0 0.0000 0.0000 -1.0000
    *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000
    *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000
    *MESH_VERTEXNORMAL 3 0.0000 0.0000 -1.0000
    ...
  }
 }
 *PROP_MOTI[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxONBLUR‎ 0
 *PROP_CASTSHADOW 1
 *PROP_RECVSHADOW 1
 *WIREFRAME_COLOR 0.1098 0.1098 0.6941

 

- MAX 에서 간단한 박스 하나의 ASE 파일 형식에 대한 정보들입니다. 전체적인 구조는 생각보다 직관적으로 구성되어 있음을

알 수 있으며 크게 모델의 전체정보인 SCENE 정보와 메시의 정보(Material정보,Vertex 정보,Index 정보,TM 정보 )등으로 구성되어 있음을 알 수 있습니다. 이 정보들을 읽어들여 다음번에는 박스를 출력해 보도록 하겠습니다.

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자(HH) 작성자 본인 여부 작성자 | 작성시간 08.05.02 원래 1일차,2일차 이런식으로 글을 올릴려고 했으나 개인 시간 사정으로 하루에 하나의 주제를 완료할 수가 없어 매일 update는 하되 주제별로 문서를 올리도록 하겠습니다.
  • 작성자만진씨. | 작성시간 08.05.05 정말 유용한 강좌 올려 주셔서 고맙습니다. ^^. 부디, 이 강좌로.. 우리 카페을 살려주세요. ㅠㅠ.
  • 작성자소금맛 | 작성시간 08.05.07 필요한건데 딱좋네~ 계속 게시해주삼
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼