|
[ASE 파일분석 일지] - ASE 포맷을 분석해 볼려고 합니다.
----------------------------------------------------------------------------
안녕하세요. ^^. 요즘 너무 바빠서 카페도 신경 못쓰며 살고 있습니다. ㅠㅠ. 제송합니다.
3D 공부를 하는중 입니다. 음... ASE로 저장된 3D 오브젝트를 화면에 띄우는 것을 공부하는 중 입니다. 그런데, 어렵네요. ㅠㅠ.
관련 자료를 찾아가 보며, 막 해메는 중 입니다. 그런데, 자료 구하기가 쉽지 않네요.
그런 와중 문 듯... 지금 내가 알고 있는 것이라도 올려야 겠다는 생각이 들었습니다. ^^. 그래서 ASE 를 공부하는 내내 이 강좌를 열어볼까 합니다.
그럼, 본론으로 들어가 보겠습니다. 일단.. 첫번째 목표는, 바로 요것 입니다.
그렇다면, 상자 하나를 화면에 띄우기 위해서 필요한 최소 정보는 무엇 일까요? 위 예제 에서는 버텍스정보, 인덱스정보, 버텍스 노말벡터, 그리고 매터리얼 정보를 추출하였습니다. ASE 파일에는 이런 정보들이 어떻게 들어가 있을까요?
<box2.ASE> ==========================================================================
*MATERIAL_LIST // 재질정보가 들어가 있습니다.
*GEOMOBJECT // 오브젝트(덩어리) 정보
└─ *MESH
├─ *MESH_NUMVERTEX // 메쉬의 버텍스 갯수
├─ *MESH_NUMFACES // 메쉬의 페이스(삼각형) 갯수
├─ *MESH_VERTEX_LIST // 버텍스 정보
├─ *MESH_FACE_LIST // 페이스(인덱스) 정보
└─ *MESH_NORMALS // 노말벡터 정보
==========================================================================
첫번째 목표를 달성하기 위해서는 딱!! 저것만 필요 합니다. 나머지는 전~~ 부 쓰레기 입니다. (현재까지는 말이죠. ^^)
그럼 정말 중요한 작업은 여기서 부터 입니다. 딱 필요한 정보만 골라서 꺼내와야 하는 작업 입니다.
fgets() 함수와 fscanf() 함수, 아니면.. fscanf() 함수를 잘 사용해서 만들수 있습니다. 생각난 김에 간단히 테스트 코드를 작성해 보았습니다.
==========================================================================
void main() char buffer[80]; // 문자열을 저장할 변수
// 파일 오픈, ASE 파일은 텍스트 기반 입니다. ^^.
// 무한 루프를 돌면서 파일 끝까지 읽어들인다. // 한 단어!! 단위로 문자열을 읽어온다. (띄어쓰기, 탭키, 엔터키로 구분!!) while(1)
fclose(fp); return;
==========================================================================
이런식으로 하면 "한 단어" 씩 파일에서 읽어와 화면에 출력 합니다. 여기에.. " (큰따옴표) 처리만 별도로 추가하면 될것 같습니다.
제송하지만... 지금 쓰고있는 코드는 제게 라이센스가 없어서... ㅠㅠ. 코드를 작성하신 분에게 허락을 받아야지 올릴수 있습니다. 뭐.. 아니면 제가 위에 방식대로 한번 만들어 봐서 올리겠습니다.
다음에는 예제코드를 만들어서 올리겠습니다. 오늘은.. 문득... 강좌를 써야겠다는 충동의식 때문에.. 아무런 준비도 못했습니다. ㅠㅠ.
그럼... 예제코드가 완성되는 그날에 뵙겠습니다. ^^.
|
첫댓글 수고하시네요. 시험기간이라 못하고 있네요.. 저도 ASE 공부하려고 하는데^^