๐ PBR(Texture)์ 3D ๋ชจ๋ธ์ Material ์์ฑ
PBR(Physically Based Rendering)์ ๋น์ ๋ฐ์ฌ, ๊ตด์ , ํฌ๊ณผ ๋ฑ์ ๋ฌผ๋ฆฌ์ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก 3D ๋ชจ๋ธ์ ํ๋ฉด์ ์ฌ์ค์ ์ผ๋ก ํํํ๋ ๋ ๋๋ง ๊ธฐ๋ฒ์ด๋ค. ์ด ๋ฐฉ์์ ํ์ค ์ธ๊ณ์ ์ฌ์ง๊ณผ ๋น์ ์ํธ์์ฉ์ ๋ชจ์ฌํ์ฌ ์๊ฐ์ ์ผ๋ก ๋ ์์ฐ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ ๋ค. PBR ํํ์์ ๊ฐ ์ฌ์ง์ ์์ฑ์ ๋ค์ํ ํ ์ค์ฒ ๋งต(Texture Map)์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ด๋ฅผ ํตํ์ด PBR ํ ์ค์ฒ(PBR Texture)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฃผ์ ๋งต๋ค๊ณผ ๊ทธ ์๋ฏธ์ด๋ค.
1. Albedo (Base Color, Diffuse)
- ๊ฐ์ฒด์ ํ๋ฉด ์์์ ๋ํ๋ด๋ ๊ธฐ๋ณธ ์ปฌ๋ฌ ํ ์ค์ฒ์ด๋ค.
- ์กฐ๋ช , ๊ทธ๋ฆผ์, ๋ฐ์ฌ ๋ฑ์ ์ ๋ณด ์์ด ‘์์ํ ์์’๋ง ๋ด๊ณ ์๋ค.
- Diffuse๋ ์ด์ ๋ฐฉ์์ผ๋ก, ๊ด ๋ฐ์ฌ ์ ๋ณด๋ฅผ ์ผ๋ถ ํฌํจํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. PBR์์๋ Albedo๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
2. Normal / Bump / Displacement / Height Map
- ํ๋ฉด์ ๋ํ ์ผ(ํ, ๋์ถ, ์ง๊ฐ)์ ์ค์ ์ง์ค๋ฉํธ๋ฆฌ ์์ด ์๋ฎฌ๋ ์ด์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- Normal Map: RGB ์ฑ๋์ ํตํด ๊ฐ ํฝ์ ์ ๋ฒ์ ๋ฒกํฐ๋ฅผ ๋ฐ๊พธ์ด ๋น ๋ฐ์ฌ๋ฅผ ์กฐ์ํจ.
- Bump Map: ๋ฐ๊ธฐ ๊ฐ(Grayscale)์ผ๋ก ๋๋ฎ์ด๋ฅผ ํํ. ์๊ฐ์ ๋ณํ๋ง ์๊ณ ์ค์ ์ง์ค๋ฉํธ๋ฆฌ ๋ณํ๋ ์์.
- Height / Displacement Map: ์ค์ ํ๋ฉด์ ๋ณํ์์ผ ๋ฉ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ๊ฟ ์ ์์. ์ฃผ๋ก ๊ณ ๊ธ ๋ ๋๋ง์์ ์ฌ์ฉ๋จ.
3. Roughness (๋๋ Glossiness)
- ํ๋ฉด์ ๊ฑฐ์น ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๊ทธ๋ ์ด์ค์ผ์ผ ๋งต์ด๋ค.
- ๋ฐ์์๋ก ๊ฑฐ์น ๊ณ (diffuse), ์ด๋์ธ์๋ก ๋งค๋๋ฝ๊ณ (glossy) ๋ฐ์ฌ๋๊ฐ ๋๋ค.
- ์ผ๋ถ ์์ง์ Glossiness(=1 - Roughness)๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํํ ๋ฐฉ์์ ์ฃผ์ํด์ผ ํ๋ค.
4. Metalness
- ํด๋น ํฝ์ ์ด ๊ธ์์ธ์ง ์๋์ง๋ฅผ ๋ํ๋ธ๋ค.
- ๊ธ์์ ๋ณดํต ํฐ์(1), ๋น๊ธ์์ ๊ฒ์ (0)์ผ๋ก ํ์๋๋ค.
- ๊ธ์์ ๋ฐ์ฌ์ ๋น์ ํก์๊ฐ ๊ฐํ๊ณ , ๋น๊ธ์์ ์ฃผ๋ก ํ์ฐ ๋ฐ์ฌ๋ฅผ ์ผ์ผํจ๋ค.
5. Specular (Reflection)
- ๊ด์์ ๋ฐ์ฌ๊ฐ ๊ฐํ๊ฒ ์ผ์ด๋๋ ๋ถ๋ถ์ ์ ์ดํ๋ค.
- ๊ธ์์ด ์๋ ์ฌ์ง์์ ๋ฐ์ฌ์ ๊ฐ๋๋ ์์ ๋ณ๋๋ก ์กฐ์ ํ ๋ ์ฌ์ฉ๋๋ค.
- ์ผ๋ถ ์ํฌํ๋ก์ฐ์์๋ Metal-Roughness ๋ชจ๋ธ ๋์ Specular-Glossiness ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
6. Opacity (Alpha Map)
- ํ๋ฉด์ ํฌ๋ช ๋๋ฅผ ์ ์ดํ๋ ๋งต์ด๋ค.
- ํฐ์(1)์ ์์ ๋ถํฌ๋ช , ๊ฒ์ (0)์ ์์ ํฌ๋ช ์ด๋ค.
- ์๋ฌผ ์, ์ ๋ฆฌ, ์์ ์ฒ ๋ฑ์ ์ฌ์ง ํํ์ ์ฌ์ฉ๋๋ค.
7. Ambient Occlusion (AO)
- ๊ตฌ์์ด๋ ํ์ฒ๋ผ ๋น์ด ๋ฟ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ ์ด๋ก๊ฒ ํํํ๋ ๋งต์ด๋ค.
- ์ฃผ๋ณ ๊ด์ด ์ฐจ๋จ๋๋ ์์ญ์ ๊ฐ์กฐํ์ฌ ๊น์ด๊ฐ๊ณผ ์ ์ฒด๊ฐ์ ํฅ์์ํจ๋ค.
8. Refraction
- ํฌ๋ช ํ ์ฌ์ง(์: ์ ๋ฆฌ, ๋ฌผ)์ ํต๊ณผํ ๋น์ ๊ตด์ ์ ์ ์ดํ๋ค.
- ์ฃผ๋ก ๊ตด์ ๋ฅ (Index of Refraction, IOR)์ ์ด์ฉํด ๊ณ์ฐ๋๋ฉฐ, ๋ณ๋์ ๋งต์ผ๋ก ์ ์๋๊ธฐ๋ ํ๋ค.
9. Emissive (Self-Illumination)
- ์์ฒด์ ์ผ๋ก ๋น์ ๋ด๋ ์ฌ์ง(์: LED, ๋ถ๊ฝ)์ ํํํ ๋ ์ฌ์ฉ๋๋ค.
- ๋น์ ๋ฐ์ฌํ๋ ๊ฒ์ด ์๋, ์ค์ค๋ก ๊ด์์ ๊ฐ์ง๋ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
๐ OBJ & MTL ํ์ผ ๊ตฌ์กฐ
OBJ ํ์ผ
- 3D ๋ชจ๋ธ์ ํ์(geometry), ์ ์ (vertex), ํ ์ค์ฒ ์ขํ, ๋ ธ๋ฉ ๋ฒกํฐ, ๋ฉด(Face) ์ ๋ณด๋ฅผ ๋ด๋ ํ ์คํธ ํฌ๋งท.
- .mtl ํ์ผ๊ณผ ํจ๊ป ์ฌ์ฉ๋์ด ์ฌ์ง๊ณผ ํ ์ค์ฒ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ๋ค.
mtllib material.mtl # ์ฌ์ฉ๋ MTL ํ์ผ ์ง์
v 0.0 1.0 2.0 # Vertex
vt 0.5 0.5 # Texture Coordinate
vn 0.0 0.0 1.0 # Normal Vector
usemtl material1 # ์ฌ์ฉํ ์ฌ์ง ์ง์
f 1/1/1 2/2/2 3/3/3 # Face ์ ๋ณด (v/vt/vn)
- mtllib: ์ฌ์ฉ๋ .mtl (Material Library) ํ์ผ์ ์ง์ ํ๋ค. .obj ํ์ผ์์ ์ฐธ์กฐํ ์ฌ์ง ์ ๋ณด๋ฅผ ํฌํจํ ํ์ผ์ด๋ค.
์: mtllib material.mtl - usemtl: ํ์ฌ๋ถํฐ ๋ฑ์ฅํ๋ ๋ฉด(face)์ ์ ์ฉํ ์ฌ์ง ์ด๋ฆ์ ์ง์ ํ๋ค. .mtl ํ์ผ ๋ด์ newmtl๊ณผ ๋์๋๋ค.
์: usemtl Wood - v: 3D ๊ณต๊ฐ ์์ ์ ์ (vertex)์ ์์น๋ฅผ ์ ์ํ๋ค. ๊ฐ ์ค์ x, y, z ์ขํ๋ฅผ ์ค์๋ก ์ ๋๋ค.
์: v 1.0 0.0 2.5 - vt: ํ
์ค์ฒ ์ขํ(2D)๋ฅผ ์ ์ํ๋ค. ๊ฐ ์ ์ u, v ์ขํ๋ก ํ
์ค์ฒ ์ด๋ฏธ์ง๋ฅผ ๋งคํํ ๋ ์ฌ์ฉ๋๋ค.
์: vt 0.3 0.7 - vn: ๋ฒ์ ๋ฒกํฐ(normal vector)๋ฅผ ์ ์ํ๋ค. ํ๋ฉด์ ๋ฐฉํฅ์ ๋ํ๋ด๋ฉฐ, ์กฐ๋ช
ํจ๊ณผ ๊ณ์ฐ ์ ์ฌ์ฉ๋๋ค.
์: vn 0.0 1.0 0.0 - f: ๋ฉด(face)์ ์ ์ํ๋ค. ์ฌ๋ฌ ๊ฐ์ ์ ์ ์ ์ฐ๊ฒฐํด ํด๋ฆฌ๊ณค(๋ณดํต ์ผ๊ฐํ ๋๋ ์ฌ๊ฐํ)์ ์์ฑํ๋ค.
๊ฐ ์ ์ ์ v/vt/vn ํ์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฐธ์กฐํ๋ค.
์: f 1/1/1 2/2/1 3/3/1 - g: ์ง์ค๋ฉํธ๋ฆฌ ๊ทธ๋ฃน(group)์ ์ ์ํ๋ค. ๋ชจ๋ธ์ ์๋ฏธ ์๋ ํํธ๋ณ๋ก ๋๋์ด ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ค.
์: g LeftWing - o: ํ๋์ ๋
๋ฆฝ์ ์ธ ์ค๋ธ์ ํธ(object)๋ฅผ ์ ์ํ๋ค. ์ฌ๋ฌ ์ค๋ธ์ ํธ๋ฅผ ํฌํจํ .obj ํ์ผ์์ ๊ฐ ํํธ๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค.
์: o CarBody - s: ์ค๋ฌด๋ฉ ๊ทธ๋ฃน(smoothing group)์ ์ง์ ํ๋ค. ๋ถ๋๋ฌ์ด ํ๋ฉด ๋ ๋๋ง์ ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
์: s 1 (์ค๋ฌด๋ฉ ์ ์ฉ), s off (์ค๋ฌด๋ฉ ๋ฏธ์ ์ฉ)
MTL ํ์ผ
- ์ฌ์ง ์์ฑ ์ ๋ณด๋ฅผ ์ ์ํ๋ ํ์ผ์ด๋ฉฐ, ๊ฐ ํ ์ค์ฒ ๋งต์ ์ฐธ์กฐํ๋ค.
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
- newmtl: ์๋ก์ด ์ฌ์ง ์ ์ธ
- Ka, Kd, Ks: Ambient / Diffuse / Specular ์์
- Ns: ๋ฐ์ฌ ์ง์ (๊ดํ์ ๊ฐ๋)
- d: ํฌ๋ช ๋ (1์ ๋ถํฌ๋ช , 0์ ์์ ํฌ๋ช )
- Ni: ๊ตด์ ๋ฅ (Index of Refraction)
- Ke: Emissive ์์
- illum: ์กฐ๋ช ๋ชจ๋ธ (์: 0 = ambient only, 2 = diffuse & specular ์ฌ์ฉ)
- map_*: ๊ฐ ํ ์ค์ฒ ๋งต์ ์ฐธ์กฐ (map_Kd = Diffuse, map_bump = Normal ๋ฑ)
๐ ๊ด์๊ณผ ํ๋ฉด์ ์ํธ์์ฉ: ๋ฐ์ฌ ์ข ๋ฅ
Ambient Reflection (์ฃผ๋ณ ๋ฐ์ฌ)
- ๊ด์์ด ์ง์ ๋ฟ์ง ์๋ ์์ญ์ ๊ธฐ๋ณธ์ ์ธ ๋ฐ๊ธฐ๋ฅผ ๋ถ์ฌํ๋ ๊ฐ์ ์กฐ๋ช ํจ๊ณผ์ด๋ค.
- ํ์ค ์ธ๊ณ์์๋ ๋ค๋ฅธ ๋ฌผ์ฒด๋ ๋ฒฝ์ ๋ฐ์ฌ๋ ๋น์ด ๋ค์ ๋ฌผ์ฒด์ ๋ฟ์ ์ด๋์ด ๋ถ๋ถ์ ๋ถ๋๋ฝ๊ฒ ๋ฐํ๋๋ฐ, ์ด ๊ณผ์ ์ ๊ณ์ฐํ๊ธฐ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ฐฉํฅ์์ ์ผ์ ํ๊ฒ ๋ค์ด์ค๋ ๋น์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋จ์ํ์ํจ๋ค.
- ์ฃผ๋ก ์ผ์ ํ ์์ ๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ, ์์ ์ด๋ ๊ด์์ ์์น์ ๊ด๊ณ์์ด ์ ์ฒด์ ์ผ๋ก ๊ท ์ผํ ๋ฐ๊ธฐ๋ฅผ ๋ํด์ค๋ค.
- ๋ฐ๋ผ์ Ambient Reflection๋ง์ผ๋ก๋ ๊ทธ๋ฆผ์๋ ์ ์ฒด๊ฐ ํํ์ด ์ด๋ ต๊ณ , ๊ด์์ ์์น๋ฅผ ์ ์ ์๋ค.
Diffuse Reflection (ํ์ฐ ๋ฐ์ฌ)
- ๊ด์์ด ๋ฌผ์ฒด ํ๋ฉด์ ๋ฟ์ ๋, ํ๋ฉด์ ๊ฑฐ์น ๊ธฐ๋ก ์ธํด ๋น์ด ์ฌ๋ฌ ๋ฐฉํฅ์ผ๋ก ๊ณ ๋ฅด๊ฒ ํผ์ง๋ ๋ฐ์ฌ ํ์์ด๋ค.
- ๋ฌผ์ฒด๊ฐ ๋ณด๋ ๋ฐฉํฅ๊ณผ ์๊ด์์ด ๋น์ ์ธ๊ธฐ์ ํ๋ฉด์ ๋ฒ์ ๋ฒกํฐ(normal vector) ์ฌ์ด์ ๊ฐ๋์ ๋ฐ๋ผ ๋ฐ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
- ๋ํ์ ์ผ๋ก ๋งคํธํ(๊ดํ ์๋) ํ๋ฉด์์ ๋ฐ์ํ๋ฉฐ, ๋ฌผ์ฒด์ ์ ์ฒด๊ฐ๊ณผ ๋ช ์ ํํ์ ์ค์ํ ์ญํ ์ ํ๋ค.
- Lambert ๋ฒ์น์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋๋ค.
Specular Reflection (์ ๋ฐ์ฌ ๋๋ ๊ฑฐ์ธ ๋ฐ์ฌ)
- ํ๋ฉด์ด ๋งค๋๋ฌ์ธ์๋ก ๋ฐ์ํ๋ฉฐ, ๋น์ด ์ ์ฌ๊ฐ = ๋ฐ์ฌ๊ฐ์ ๋ฒ์น์ ๋ฐ๋ผ ํน์ ๋ฐฉํฅ์ผ๋ก ์ง์ค๋์ด ๋ฐ์ฌ๋๋ค.
- ์ด ๋ฐ์ฌ๋ก ์ธํด ํ๋ฉด์ ๋ฐ์ง์ด๋ ํ์ด๋ผ์ดํธ(๊ด์ , highlight)๊ฐ ์๊ธด๋ค.
- ๊ด์ฐฐ์์ ์์ ์ ๋ฐ๋ผ ๋ฐ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ฏ๋ก, ์์ ์์กด์ ์ธ ๋ฐ์ฌ์ด๋ค.
- ๊ธ์, ์ ๋ฆฌ, ๋ฌผ๊ณผ ๊ฐ์ ํ๋ฉด์์ ๊ฐํ๊ฒ ๋ํ๋๋ฉฐ, ํ๋ฉด์ ๊ดํ๊ณผ ๋น์ ์ง์ค๋๋ฅผ ํํํ๋ ๋ฐ ํ์์ ์ด๋ค.
- Phong ๋ชจ๋ธ, Blinn-Phong ๋ชจ๋ธ ๋ฑ์์ ์ํ์ ์ผ๋ก ๋ชจ๋ธ๋ง๋๋ค.