Image_mapping - miniRT-jiphyeonjeon/MiniRT GitHub Wiki
uv ๊ฐ์ ์ด์ฉํด checkerboard๋ฅผ ์ ํ๋ดค์ผ๋, ์ด์ ๋ texture ์ด๋ฏธ์ง๋ฅผ ํ์ฉํด๋ณด์.
๋ฏธ๋ฆฌ ๊ตฌํด๋์ uv๋ฅผ ์ด์ฉํด์ ์ด๋ฏธ์ง๋ฅผ ์ ํ๋ ๊ฒ์ ์ฝ๋ค. 0๋ถํฐ 1๊น์ง๋ก ํํ๋ uv๋ฅผ 0๋ถํฐ width(height)๋ก ํ์ฅํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ ๊ฒ์ด๋ค!
์ฆ, ๊ตฌํด์ง uv ๊ฐ์ ์ด๋ฏธ์ง์ ๋๋น์ ๋์ด๋ฅผ ๊ฐ๊ฐ ๊ณฑํด์ฃผ๊ณ ์ ์ํํด์ค๋ค. ๊ทธ๋ ๊ฒ ๋์จ ๊ฐ์ด ์ด๋ฏธ์ง์์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ํฝ์ ๊ฐ์ด ๋๋ค.
์ฌ๊ธฐ์ ์กฐ๊ธ ๋ ํ๋ฆฌํฐ ๋์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ฒ(oversampling, undersampling)์ด ์ถ๊ฐ๋ ์๋ ์์ง๋ง miniRT์์ ๋ฐ๋ก ๊ตฌํํ์ง๋ ์์๋ค.
๋ฌผ์ฒด์ texture, ์ง๊ฐ์ ํํํ๊ณ ์ถ์ ๋, ๋จ์ํ ์ด๋ฏธ์ง๋ฅผ ์ ํ์ฃผ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ค.
์๋ฅผ ๋ค์ด ํ๋ฉด์ ๋๋ฐ๋ฅ์ผ๋ก ํํํ๊ณ ์ ํ๋๋ฐ ๋์ ํ์์ด๊ณ ํ์ ๊ฐ์์ผ๋ก ์น ํด๋๊ธฐ๋ง ํ๋ฉด ๊ทธ ์์ฒด๋ฅผ ๋๋ฐ๋ฅ์ผ๋ก ๋ณด๊ธฐ์ ์ด์ํ ์ ๋ฐ์ ์๋ค.
์ด์ํ ์ด์ ๋, ์ค์ ๋๋ฐ๋ฅ์ ๊ฒฝ์ฐ ๋์ด ์ธํ๋ถํ ์ ์ฒด์ ์ผ๋ก ํ์ด๋์์๊ณ , ๊ทธ์ ๋ฐ๋ผ ๋น๊ณผ์ ์ํธ์์ฉ๋ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ด ๋ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ด ๋ฐ๋ก bump mapping์ด๋ค.
bump map์ ๋ง ๊ทธ๋๋ก ๋น๊ณผ์ ์ถฉ๋, ์ํธ์์ฉ๊ณผ ๊ด๋ จ๋ ๋๋ฎ์ด๋ ๋ฐฉํฅ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋งํ๋ค.
์ฌ๊ธฐ์๋ ์ฌ๋ฌ bump map ์ข ๋ฅ ์ค์์ normal vector์ xyz ๊ฐ์ ๋ด๊ณ ์๋ normal map์ ์ด์ฉํ๋ค.

RGB ๊ฐ์ ์ ๊ทํํ๋ฉด [0, 1] ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, vector ๊ฐ์ [-1, 1]์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค.
๋ฐ๋ผ์ color๊ฐ normal vector๋ก ํํ๋๋ ์์์ ์๋์ ๊ฐ๋ค.

์ด๋ฏธ์ง๊ฐ ์ ์ฒด์ ์ผ๋ก ํธ๋ฅธ ๋น์ ๋๋ ์ด์ ๋ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก x๋ ๊ฐ๋ก๋ฐฉํฅ, y๋ ์ธ๋ก๋ฐฉํฅ์ ์๋ฏธํ๋ฉฐ ๋จ์์๋ z๋ ์ค๋ฅธ์ ์ขํ๊ณ์ ๋ฐ๋ผ ๋ชจ๋ํฐ๋ฅผ ๋ซ๊ณ ๋์ค๋ ๋ฐฉํฅ์ ์๋ฏธํ๊ฒ ๋๋๋ฐ,
normal vector ์์ฒด๊ฐ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฉด ๋ฐ๊นฅ์ ํฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ x์ y๊ฐ [-1, 1] ๋ฒ์๋ฅผ ๊ฐ๋ ๋์
z์ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ 0 ์ด์์ ๊ฐ์ ๊ฐ์ง๊ฒ ๋์ด rgb ์ค์์๋ b ๊ฐ์ด ์ฐ์ธํ๊ฒ ๋ณด์ด๋ ๊ฒ์ด๋ค.
normal vector ๊ฐ์ ๊ตฌํ๋ค๋ฉด, ์ด๊ฑธ ๋ฌผ์ฒด์ ์ค์ normal vector๋ก ๋์ฒดํ ์ ์๋๋ก ๋ณํํ๋ ์์ ์ด ํ์ํ๋ค.
์ด ๋ ๊ตฌํด์ค์ผํ๋ ๊ฒ์ด ๋ฐ๋ก tangent space์ด๋ค.

์ ์ ๊ณต๊ฐ์ด๋ผ๊ณ ํ๋ ๋ญ๊ฐ ๊ดํ ๋ณต์กํ ๊ฒ ๊ฐ์๋ณด์ด์ง๋ง, ์ฌ์ค uv map์ ์ํด u, v vector๋ฅผ ๊ตฌํ๋ ๊ฒ๊ณผ ๋๊ฐ๋ค.
์ด๋ฆ๋ง tangent, bitanget๋ฅผ ๋ปํ๋ t, b๋ก ๋ฐ๋ ๊ฒ ์ ๋ถ์ด๋ค.
์ด๋ ๊ฒ ๊ตฌํ ์ขํ๊ณ์ ์์์ ๊ณ์ฐํ normal map์ ์ ๋ณด๋ฅผ ํ๋ ฌ์ฐ์ฐ์ผ๋ก ๊ณ์ฐํด์ฃผ์.

๊ณ์ฐ๋ ๊ฐ์ผ๋ก ๊ธฐ์กด normal vector๋ฅผ ๋์ฒดํด์ฃผ๋ฉด, ์๋์ ์ผ๋ก ์์ฐ์ค๋ฌ์ด ์ง๊ฐ ํํ์ด ๊ฐ๋ฅํด์ง๋ค!
