앞으로 사용하게 될 맥스 데이터 추출기와 XML 파서에 대해 간략하게 살펴보자



스크립트
3D MAX에서 데이터를 추출하는데에는 스크립트 방식을 사용하는게 편리하다.

전체적으로 ZUtility라는 클래스와 ZExport라는 2개의 클래스로 만들어져 있다. ZUtility는 이름처럼 ZExport 클래스에서 사용할 유용한 함수들로 구성되어있다. 




XML 데이터 파서
XML을 사용하면 기본적인 파싱 작업을 파서가 대신 해주기 때문에 우리가 만들려는 데이터 파서같은 경우 비교적 쉽게 개발할 수 있다.


XML데이터 파서 클래스
ZXML : XML 파일을 열고 값(element, attribute)을 읽어온다
ZCParser : XML 파일을 파싱한다(ZCParsedData 객체에 값을 채워 넣는다)
ZCParsedData : XML 파일을 파싱한 데이터를 보관한다(ZCMesh 값을 보관한다)
ZCMesh : 오브젝트 하나하나의 값을 보관한다

XML데이터 파서의 가장 중요한 역할은 맥스에서 스크립트를 통해 추출한 데이터를 메모리에 읽어서 실제로 사용가능하기 직전의 상태로 보관하고 있는 것이다. 직접 데이터를 출력에 사용할 수도 있지만, 중간적인 형태로 가지고 있으면 변형하기 편리하기 때문에 사용면에서 여러가지로 유리하다.

파서를 작동시키는건 아주 간단하다

ZCParser* pParser = new ZCParser();
ZCParsedData* pData = new ZCParsedData();
pParser->Parse(pData, "oh.xml");

요렇게 하면 pData에 필요한 값들이 들어가 있으므로, pData의 값을 가공해서 사용하면 된다. 
쓰고나면 메모리에서 삭제를 해야한다

delete pParser;
delete pData;


실제 데이터 추출과정
맥스를 이용해 모형을 만들고, 그 모형을 스크립트 형태로 저장한다
MAX2XML.scr 스크립트를 실행시켜보자

MAX to XML 메뉴로 xml형태로 만든다
파일명을 지정하면 파일명.xml의 형태로 파일이 생성된다.

이렇게 생성된 파일을 파서로 읽어서 사용하면 그만


주의사항
MS의 MSXML을 사용할 경우, MSXML SDK를 설치해야 한다.
그런데 닷넷에 알아서 깔린다고하니까 따로 깔지 않아도 될 것 같다. (확인 안됨)
상당히 많은 부분에서 STL(Standard Template Library)을 사용하고 있으므로 STL을 알아야 소스에 대한 이해가 가능하다.


'Graphics > DirectX' 카테고리의 다른 글

Direct X - 계층구조 2  (0) 2014.09.30
Direct X - 계층구조  (0) 2014.09.16
Direct X - 애니메이션 기법  (0) 2014.09.03
Direct X - 균열 방지  (0) 2014.08.27
Direct X - LOD (Level Of Detail)  (2) 2014.08.21
Posted by 긍정왕오킹