[개념] OBJ 파일

Date:     Updated:

카테고리:

태그:

OBJ란

3D 그래픽에서 Mesh를 저장하는 여러가지 File Format는 여러가지가 있다.
그 중에 많이 사용하는 OBJ 형식에 대해 알아보려고 한다.

OBJ는 폴리곤(Polygon)뿐만 아니라 물체의 재질(Material)이나 질감(Texture)을 표현할 수 있는 정보를 가지고 있다.
그렇기 때문에 기하학적인 형태만을 표현하는 다른 포맷들보다 좀 더 자세하게 물체를 표현할 수 있다.

OBJ 파일 구성

OBJ는 보통 3개의 파일로 구성이 된다.

  1. .obj(.mod)
  2. .mtl
  3. bmp, jpg, png …

.obj(.mod)

  • .obj의 경우 ASCII로 저장하고 .mod는 Binary로 저장을 한다.

  • [v] ,[vt] ,[vn] ,[f]를 통해 Polygon 정보를 얻는다.

    • v (x / y / z) : Vertex의 좌표

    • vt : 텍스쳐 좌표 (vertex texture)

    • vn : 노말 인덱스 (vertex normal)

    • f (v / vt / vn): 한 면을 구성하는 Vertex(v) / 텍스쳐(vt) / 노말 인덱스(vn)

  • [mtllib]를 통해 mtl파일의 정보를 얻는다.
    • mtllib : 재질, 질감을 정의해 놓은 mtl 파일 정보

  • [usemtl]를 통해 사용할 재질의 정보를 얻는다.
    • usemtl : mtl 파일에 정의된 재질 정보 중에서 사용할 재질 정보

.mtl

  • newmtl : 여러 종류의 재질들을 분리하기 위한 키워드
    • newmtl이 여러개 있다면 여러개의 재질을 사용했다는 것

  • Ns : specular의 초점(exponent) (0 ~ 1000)

  • [Ka], [Kd], [Ks]를 통해 재질의 정보를 얻는다.

    • Ka (r / g / b) : 주변 반사율 (Ambient)

    • Kd (r / g / b) : 기본 재질 색상 (Diffuse color)

    • Ks (r / g / b) : 정반사율 지정 (Specular color)

    • Ke (r / g / b) : 표면에서 방출되는 빛의 색상 (Emission color)

  • Ni : 광학적 밀도(optical_density), 굴절률(refraction) (0.001 ~ 10)

  • d : 재질의 투명성
    • 1 : 불투명
    • 1 미만 : 투명도 적용

  • illum : material에 적용될 조명 모델 (0 ~ 10)

  • [map_Kd]를 통해 질감의 정보를 얻는다.
    • map_kd(-options args filename) : color texture file 이나 color procedural texture file
    • 렌더링 될 때 kd 값을 곱해서 사용한다.

  • mad_d(-options args filename) : scalar texture file, scalar procedural texture file
    • 렌더링 될 때 d 값을 곱해서 사용한다.

  • Tr : 투명도(Transparency)


.obj 예시

실제 HW로 진행한 공을 들고 있는 남자 obj 파일의 경우 총 80841줄로 구성되어있다. 간단히 그 내용을 살펴보면

mtllib basketball_player_fr0001.mtl
v 1635 3564 1320
v 1626 3563 1327
v 1627 3568 1321
.
.
vt 2570 2811
vt 1429 2219
vt 1423 2228
.
.
usemtl material0000
f 1/1 2/2 3/3
f 4/4 1/1 3/3
.
.

다음과 같이 구성되어있다.

f 1/1 2/2 3/3이 의미하는 것은
한 face를 구성하는 세 Vertex가 각각 v의 1, 2, 3번째 줄이라는 것이다.

image

이런 식으로 face가 어떻게 구성되어있는지 확인할 수 있다.

맨 위로 이동하기

IAC 카테고리 내 다른 글 보러가기

댓글남기기