티스토리 뷰

3차원 그래픽 이미지가 저장된 파일의 형태 (3 차원 그래픽 파일 포맷) 중 하나이다.

 

참고로

그래픽 파일은 어떠한 방식으로 압축하고 저장하느냐에 따라 이미지 용량을 줄이거나 늘릴 수 있다.

사용되는 애플리케이션에 따라 저장방식이 다 다르다.

보통 3차원 데이터는 벡터형식을 기반으로 아스키(Ascii) 혹은 바이너리(Bin) 형식으로 저장된다.

그래픽 관련 프로그램들이 모든 그래픽 파일 포맷을 지원하지는 않으므로 사용할 때 체크필요하다.

DWG/ DXF/ IGES/ LWO/ OBJ/ RIB/ SDL/ STL/ VRML/ WMF/ 3dMF/ 3DS 등있다.

 

OBJ (Wavefront file format specification)
Wavefront의 Visualizer고유 파일 포맷. DXF나 IGES 처럼 ASCII 형태(확장자 .obj)로 데이터를 저장할 수도 있고 binary 형식(확장자 .mod)으로 저장할 수도 있다. ASCII 형태인 OBJ로 저장을 하더라도 DXF나 IGES 만큼 데이터의 크기가 커지지는 않으며 MTL이라는 별도의 material 파일을 사용하기 때문에 모델 정보 이외에 texture map이나 material에 대한 데이터를 함께 옮길때에는 관련된 MTL 데이터도 찾아서 같이 옮겨야 한다.
확장자 : obj (for ASCII), mod (for binary)

여기 가면 https://www.youtube.com/watch?v=yqnKeGa5o24 영어설명도 들을 수 있다.

이런설명이 적혀있음

OBJ (or .OBJ) is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package. The file format is open and has been adopted by other 3D graphics application vendors. For the most part it is a universally accepted format.
The OBJ file format is a simple data-format that represents 3D geometry alone namely, the position of each vertex, the UV position of each texture coordinate vertex, vertex normals, and the faces that make each polygon defined as a list of vertices, and texture vertices. Vertices are stored in a counter-clockwise order by default, making explicit declaration of face normals unnecessary. OBJ coordinates have no units, but OBJ files can contain scale information in a human readable comment line.


This video is targeted to blind users.

구조는?

폴리곤을 구성하는 정보는 obj 파일에 저장되어있으며 재질과 텍스쳐에 관한 정보는 mtl 파일에 있다. mtl파일에는 사용하는 텍스쳐파일을 명시해 놓았다.

예시하나

파일마다 저장된 순서가 약간 다를 수 있다. 그렇지만 형태는 모두같다. 따라서 오브젝트 로더를 한개 만들어놓으면 계속 사용할 수 있다.

 

.obj

#                                                //생성한 프로그램정보나 생성일자등의 설명
#
mtllib ./재질텍스쳐파일명.mtl            //사용할 material texture 정보가

#                                                 //무언가설명
#
v                                                //버텍스의 로컬좌표 .


#  vertices                                  //점갯수설명

vt                                              //텍스쳐 좌표
vt 
vt 
vt 
#  texture vertices                        //텍스쳐갯수 설명

vn                                                //노말값
vn 
vn 
#  vertex normals                            //노말 점 갯수 설명

g                                                   //그룹명
usemtl                                            //사용하는 재질(재질그룹은 사용하는 텍스쳐파일 명을 포함하고있다)
s
f v/vt/vn v/vt/vn v/vt/vn                      //한 면을 구성하는 위치, 텍스쳐, 노말정점 인덱스 구성
f
s
f
f
#  faces                                        //면갯수 설명

.mtl

#                                                    //무언가설명
#
newmtl                                             //시작태그, 그룹이름 색상재질을명시       
Ka                                                   //ambient                    
Kd                                                  //diffuse
Ks                                                    //specular
d                                                  //알파값 d 혹은 Tr 로도 씀
Ns 
illum                                             //일루미네이션 모델
map_Ka                                         //ambient 텍스쳐맵
map_Kd                                         //diffuse texture map
map_Ks                                         //specular color texturemap
map_bump                                     //some implementations use 'map_bump' instead of 'bump' below

# EOF                                            //파일끝

 

#은 무언가 설명한다.  즉 주석이다.

.obj

mtllib 를 만나면 

.mtl 파일을 열어서 재질그룹들에 대한 정보를 저장하면 된다.

.mtl

참고로 여러재질이 한개의 텍스쳐를 사용할 수 도 있다.

newmtl 을 만나면 해당 이름으로 된 mtl texture 정보가들어있는 데이터 묶음을 만든다.

다시 .obj로 돌아와서

정점(v) 텍스쳐(vt) 노말(vn) 좌표를 저장했다가

g를 만났을 때 저장해놓은 정보들을 가지고 해당그룹의 폴리곤정보를 저장한다.

v/vt/vn 순이다 ( v || v/vt ||  v/vt/vn || v/vn 뭐 이런식)

 

 

 

 

 

//맨위 내용 출처 DWG/ DXF/ IGES/ LWO/ OBJ/ RIB/ SDL/ STL/ VRML/ WMF/ 3dMF/ 3DS 얘네 설명도 볼수 있다.

 http://kbp.kongju.ac.kr/cg_edu/cg2_data/4week_2.htm

//일루미네이션모델옵션등 추가정보도 ㅇ ㅣㅆ음

http://blog.naver.com/PostView.nhn?blogId=leonhong&logNo=20176225259

http://docs.mcneel.com/rhino/5/help/ko-kr/index.htm#fileio/wavefront_obj_import_export.htm

 

 

댓글