3DS Max와 같은 3D 모델링 도구로 만든 이미지를 OpenGL에서 읽기 위해 자료를 좀 찾아보았습니다. 주로 obj 파일과 mtl 파일로 저장하여 C++에서 읽어들이는 것 같은데, 제가 원하는 것은 3D 모델을 읽어 OpenGL로 지정된 색과 텍스쳐를 입혀 화면에 표시할 수 있는 정도의 로더(loader)였습니다.
그래서 구글로 열심히 검색을 하다가 아주 간단한 파일 하나 짜리 obj 파일 로더를 찾게 되었습니다. http://junpp.egloos.com/2410743 블로그에서 ObjLoader.h 파일을 다운받아 OpenGL로 디스플레이 하는 부분을 붙여너어 컴파일, 실행해 보았더니 화면에 원하는 결과가 나오지 않았습니다. 디버깅을 좀 하다보니 obj 파일을 읽는 부분에서 문제가 있어 이를 수정하고 코드도 나름 좀 이쁘게 수정했습니다.
그리고 인터넷에서 obj, mtl 파일 예제를 몇 개 더 다운받아서 실행해 보았습니다. 실행결과 제가 처음에 원하는 정도의 결과는 얻은 상태였습니다. 그리고 조금 더 욕심이 생겨 인터넷으로 obj, mtl 파일의 포멧을 검색해 보았더니 이게 풀스펙으로 구현하기가 쉽지가 않겠더라구요. 그래서 더이상 진행을 하지 않고 코드 수정을 중단하였습니다.
다음은 VC++ 2008로 구현한 전체 코드입니다.
예제 코드의 실행 화면입니다. 초기에 객체가 너무커서 부분적으로만 보이다 보니 아무것도 없는 것처럼 보일 수도 있으니 마우스 휠을 굴려서 객체의 크기를 줄여주세요. ^^
Obj, mtl 파일의 풀스펙으로 구현한 로더도 있으니 다음 웹 페이지를 참조해 보시기 바랍니다.
http://www.kixor.net/dev/objloader/
상기 페이지에에는 obj, mtl 파일 예제와 파일 형식에 대해서도 링크가 있으니 관심이 있으시다면 참고하시기 바랍니다.예제 파일은 http://thequietvoid.com/client/objloader/#examples 의 Download 리스트에서 받았습니다.
* 2012년 5월 25일
- Texture 표시 관련 버그를 수정하였습니다.
* 2012년 12월 7일
- Texture 표시 관련 버그를 수정하였습니다.