๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Theory/3D vision & Graphics

[Graphics] 3D model์˜ material ์†์„ฑ / obj, mtl ํŒŒ์ผ

by Moving J 2022. 4. 4.
๋ฐ˜์‘ํ˜•
PBR Texture

3D ๋ชจ๋ธ๋ง ๋ถ„์•ผ์—์„œ ์žฌ์งˆ ํ‘œ๋ฉด์˜ ์†์„ฑ์— ๋”ฐ๋ผ ๋ฐ˜์‚ฌ, ๊ตด์ ˆ, ํˆฌ๊ณผ ๋“ฑ์˜ ์†์„ฑ์ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ž‘์šฉํ•˜๊ณ  ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ฒ•์„ Physical Base Rendering (PBR) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์žฌ์งˆ ์†์„ฑ์€ Roughness, Metalness ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์กด์žฌํ•˜๊ณ  ์ด๋“ค์„ ๋‹ค์–‘ํ•œ map์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์žฌ์งˆ ํ‘œํ˜„์„ ์œ„ํ•ด texture ํŒŒ์ผ์„ ๋ชจ์•„๋†“์€ ๊ฒƒ์„ PBR texture๋ผ๊ณ  ํ•œ๋‹ค.

 

์ œ์ž‘ํ•œ ๊ณณ์— ๋”ฐ๋ผ ์กฐ๊ธˆ์”ฉ ์ด๋ฆ„์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ข…๋ฅ˜๋“ค์ด ์žˆ๋‹ค.

 

  1. Albedo (๋˜๋Š” Diffuse, Base color)
  2. Normal, Bump, Displacement, Height
  3. Rughness (๋˜๋Š” Glossiness)
  4. Metalness
  5. Specular (Reflection)
  6. Opacity
  7. Ambient Occlusion (AO)
  8. Refraction
  9. Self_Illumination (๋˜๋Š” Emissive)

 

1. Albedo (Diffuse, base color)

๊ฐ์ฒด์˜ ๊ธฐ๋ณธ texture, ์ปฌ๋Ÿฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” map์œผ๋กœ diffuse map๋Š” AO๋‚˜ ์ŠคํŽ™ํ˜๋Ÿฌ์˜ ๊ฐœ๋…์ด ํฌํ•จ๋œ texture ์ด๊ณ  Albedo๋Š” ๊ด‘ํ•™์  ํŠน์„ฑ์„ ์ œ์™ธํ•œ ์™„์ „ํ•œ ํ‘œ๋ฉด์˜ ์ƒ‰๋งŒ ํ‘œํ˜„ํ•˜๋Š” texture

 

2. Normal, Bump, Displacement, Height

์žฌ์งˆ์˜ ๊นŠ์ด๊ฐ, ๋ณผ๋ฅจ๊ฐ์„ ํ‘œํ˜„ํ•˜๋Š” map์˜ ์ข…๋ฅ˜๋กœ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ Normal map์€ ์‹ค์ œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋กœ ํ‘œํ˜„๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ด‘์›์„ ๋ฐ›๋Š” ๋ฒ”ํ”„, ํ™ˆ ๋ฐ ์Šคํฌ๋ž˜์น˜ ๋“ฑ์˜ ํ‘œ๋ฉด ๋””ํ…Œ์ผ์„ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” RGB texture 

 

3. Roughness (Glossiness)

์™ธ๋ถ€์˜ ๋น›์ด ํ‘œ๋ฉด์— ์ž…์‚ฌ ํ›„ ์žฌ์งˆ์— ๋ฐ˜์‚ฌ๋  ๋•Œ, ๋ฐ˜์‚ฌ๋˜๋Š” ๋น›์˜ ์–‘๊ณผ ๋ถ„์‚ฐ๋˜๋Š” ์ •๋„

Gray scale ๋งต์ด๊ณ  white ๋ถ€๋ถ„์ด roughness, black ๋ถ€๋ถ„์ด smooth, glossy๋ฅผ ํ‘œํ˜„

 

4. Metalness

Metal ์žฌ์งˆ ํ‘œํ˜„์— ์‚ฌ์šฉํ•˜๋Š” ๋งต์œผ๋กœ grayscale 

 

5. Specular

๋น›์ด ๋ฌผ์ฒด์— ๋ถ€๋”ชํ˜€ ๋ฐ˜์‚ฌ๋˜๋Š” ์–‘์ด๋‚˜ ๋ฒ”์œ„๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ๋งต. 3D ๊ณต๊ฐ„์—์„œ ์กฐ๋ช…์—์„œ ๋‚˜์˜ค๋Š” ๋น›์ด ๋‹ค์ด๋ ‰ํŠธ๋กœ ์ž…์‚ฌํ•˜๋Š” ๋ถ€๋ถ„์— ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ์ƒ๊ธฐ๋„๋ก ํ•˜๋Š” ์š”์†Œ

 

6. Opacity

ํˆฌ๋ช…ํ•œ ๋ถ€๋ถ„์˜ ํˆฌ๋ช…๋„์™€ ๋ฒ”์œ„๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ๋งต์œผ๋กœ gray scale. White๋Š” ๋ถˆํˆฌ๋ช…, Black์€ ํˆฌ๋ช…์— ๊ฐ€๊นŒ์›€

 

7. Ambient Occlusion(AO)

์ฃผ๋ณ€ ํ™˜๊ฒฝ์— ๋ฐ˜์‚ฌ๋˜๋Š” ๋น›์ด ๋‹ค์‹œ ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋„๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋งต. ์ด ๋งต์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌ์„์ด๋‚˜ ํ‹ˆ, ์ธ๋ฌผ์˜ ํ„ฑ ์•„๋ž˜์ฒ˜๋Ÿผ ์–ด๋‘ก๊ฒŒ ํ‘œํ˜„ํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์€ ๋”์šฑ ์–ด๋‘ก๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๋ช…๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” ํšจ๊ณผ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

 

8. Refraction

๋น›์ด ๊ตด์ ˆ๋˜๋Š” ์ •๋„. ํˆฌ๋ช…ํ•œ ๋ฌผ์ฒด์— ๋น›์ด ํ†ต๊ณผ๋˜๋ฉด์„œ ๋น›์˜ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ๋Š” ์ •๋„๋ฅผ ์กฐ์ ˆ. ๋ฌผ ์†์— ์žˆ๋Š” ๋ฌผ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๊ฑฐ๋‚˜ ํˆฌ๋ช…ํ•œ ์œ ๋ฆฌ ๋’ค์— ๋ณด์ด๋Š” ๋ฌผ์ฒด๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ.

 

9. Self illumination (Emissive)

์Šค์Šค๋กœ ๋น›์„ ๋ฐœ์‚ฐํ•˜๋Š” ๋ฌผ์ฒด๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ.

 

 

OBJ & MTL File

 

- OBJ : 3D ๋ชจ๋ธ์ด ์ €์žฅ๋˜๋Š” ํŒŒ์ผ์˜ ํฌ๋งท ์ค‘ ํ•˜๋‚˜. MTL ์ด๋ผ๋Š” ๋ณ„๋„์˜ material ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3D ๋ชจ๋ธ์˜ ํ˜•์ƒ ์™ธ์— texture, material ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์˜ฎ๊ธธ ๋•Œ๋Š” MTL ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์˜ฎ๊ฒจ์•ผ ํ•จ. Vertex, texture ์ขŒํ‘œ, normal, face ์ •๋ณด(ํ•œ ๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” vertex, texture, normal) ๋“ฑ์ด ๋‹ด๊ฒจ์žˆ์Œ.

 


mtllib ./MTLํŒŒ์ผ๋ช….mtl

v
v

vt
vt

vn
vn

usemtl xx
f v/vt/vn v/vt/vn v/vt/vn
f v/vt/vn v/vt/vn v/vt/vn

- mtllib .MTLํŒŒ์ผ๋ช….mtl : ์‚ฌ์šฉํ•  mtl ํŒŒ์ผ ์ง€์ •

- v : vertex์˜ local ์ขŒํ‘œ

- vt : texture ์ขŒํ‘œ

- vn : normal ๊ฐ’

- usemtl xx : mtl ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์žฌ์งˆ๋ช…

- f : ํ•˜๋‚˜์˜ face๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” vertex ์œ„์น˜, ํ…์Šค์ฒ˜, ๋…ธ๋ง ์ธ๋ฑ์Šค 

 

 

๋ฐ˜์‘ํ˜•

 

 

- MTL : Material Library File ๋กœ obj ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์žฌ์งˆ ์†์„ฑ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ

 

An MTL file contains a sequence of material definitions, each beginning with the keyword newmtl and a name for the material. Statements in a material definition consist of a keyword, followed by keyword-specific options, values, or references to supplementary files for use as texture maps. The material definition ends either at the end of the file or at the next newmtl statement. The statements that define the characteristics of the material can be in any order. An example of a material definition is:

 

newmtl Wood
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ns 96.078431
Ni 1.000000
d 1.000000
illum 0
map_Kd woodtexture.jpg

 

- newtmtl : ์ƒˆ๋กœ์šด ์žฌ์งˆ ์„ ์–ธ

- Ns : ๋ฐ˜์‚ฌ ์ง€์ˆ˜ (0~1000)

- Ni : ํ‘œ๋ฉด ๊ด‘ํ•™ ๋ฐ€๋„. ๊ตด์ ˆ๋ฅ  (0.001~10)

- d : ํˆฌ๋ช…๋„ (1 : ๋ถˆํˆฌ๋ช…, 1๋ฏธ๋งŒ : ํˆฌ๋ช…๋„ ์ ์šฉ)

- Tr : 1-d

- Tf : ๋น›์˜ ํˆฌ๊ณผ ์†์„ฑ (Tf 0 1 0 : G์€ ๋ชจ๋‘ ํ†ต๊ณผ, R, B๋Š” ๋ชจ๋‘ ํ•„ํ„ฐ๋ง)

- illum : ์กฐ๋ช… ๋ชจ๋ธ ์ง€์ • (1,2,...,10)

 

- Kd : ํ™•์‚ฐ ์ƒ‰์ƒ (Diffuse)

- Ka : ์ฃผ๋ณ€ ๋ฐ˜์‚ฌ์œจ (Ambient)

- Ks : ์ •๋ฐ˜์‚ฌ์œจ (Specular)

- Ke : ํ‘œ๋ฉด์—์„œ ๋ฐฉ์ถœ๋˜๋Š” ๋น›์˜ ์ƒ‰์ƒ (Emission)

 

- Ambient reflection : ๊ด‘์›์— ์ง์ ‘ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š” ๋ฉด์— ๋ฐ๊ธฐ๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ๋ณ€๋ฐ˜์‚ฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’. ๋‹ค๋ฅธ ๋ฌผ์ฒด์— ๋ฐ˜์‚ฌ๋œ ๋น›์— ์˜ํ•ด ๋ฐ๊ธฐ๊ฐ€ ์ƒ๊ธฐ๊ณ , ์ด๋Ÿฌํ•œ ์ฃผ๋ณ€๊ด‘์€ ๊ฑฐ์˜ ๋ชจ๋“  ๋ฐฉํ–ฅ์œผ๋กœ ์ž…์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์„œ ์–ผ๋งŒํผ์˜ ์„ธ๊ธฐ๋กœ ๋น›์ด ๋“ค์–ด์˜ค๋Š”์ง€ ๊ณ„์‚ฐํ•˜๊ธฐ ๋ณต์žกํ•˜๋‹ค. ๋•Œ๋ฌธ์— ์ฃผ๋ณ€๊ด‘์€ ์‹œ์ ์˜ ์œ„์น˜์— ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ชจ๋“  ๋ฉด์„ ์ผ์ • ํฌ๊ธฐ๋กœ ๋ฐ๊ธฐ๋ฅผ ์ฆ๊ฐ€(์ƒ์ˆ˜)์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋Œ€์‹ ํ•œ๋‹ค. ์ฆ‰, Ambient reflection ๋งŒ์œผ๋กœ๋Š” ๊ด‘์›์˜ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค.

- Diffuse reflection : ๊ด‘์›์˜ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ช…์•” ์ฐจ์ด๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜์‚ฌ์ด๋ฉฐ, ๋ฌผ์ฒด์— ํ‘œ๋ฉด์— ๋”ฐ๋ผ ํ™•์‚ฐ๋˜๋Š” ์ •๋„๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

- Specular reflection : ๋ฐ˜์ง์ด๋Š” ํ‘œ๋ฉด์—์„œ ๋ฐ˜์‚ฌ๋˜๋Š” ์ผ๋ถ€ ์˜์—ญ์—์„œ ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ˜์‚ฌ. ํ‘œ๋ฉด์— ์ž…์‚ฌํ•œ ์ž…์‚ฌ๊ฐ์— ๋”ฐ๋ผ ๋ฐ˜์‚ฌ๊ฐ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๋น›์ด ๋ฐ˜์‚ฌ๋˜๋Š” reflection.

 

Phong model

 

- map_Kd : Diffuse map

- map_Ks : Specular map

- map_Ka : Ambient map

- map_Ns : Specular Highlight component

- map_bump : Bump map(Normal,...)

- map_d : Alpha texture map

 

* ๋ Œ๋”๋งํ•˜๋Š” ๋™์•ˆ Texture map(map_Kd, map_Ks,...) ๊ฐ’์— material option(Kd, Ks,...)์„ ๊ณฑํ•˜์—ฌ ์‚ฌ์šฉ. Kd ๊ฐ’์€ map_Kd์˜ ๊ฐ€์ค‘์น˜๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ.

 

 

๋ฐ˜์‘ํ˜•