user-img
NORMAL 5
thumbnail
์–ธ๋ฆฌ์–ผ ์—”์ง„ ๋…ธ๋ฉ€๋งต B ์ฑ„๋„ ๋ณต๊ตฌ
์–ธ๋ฆฌ์–ผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” R์ฑ„๋„๊ณผ G์ฑ„๋„์„ ์‚ฌ์šฉํ•˜์—ฌ B์ฑ„๋„์„ ๋ณต๊ตฌํ•˜๋Š” ์ฝ”๋“œ. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด DXT5๋‚˜ BC7์—์„œ ๋…ธ๋ฉ€๋งต ๋‘์žฅ์„ ํ•˜๋‚˜์˜ ํ…์Šค์ฒ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.float4 UnpackNormalMap( float4 TextureSample ){ float2 NormalXY = TextureSample.rg; NormalXY = NormalXY * float2(2.0f,2.0f) - float2(1.0f,1.0f); float NormalZ = sqrt( saturate( 1.0f - dot( NormalXY, NormalXY ) ) ); return float4( NormalXY.xy, NormalZ, 1.0f );} ์œ„ ์ฝ”๋“œ์™€ ๋™์ผํ•˜๊ฒŒ ๋…ธ๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์•˜๋‹ค.
2024.11.01
CG ์ด์•ผ๊ธฐ/์–ธ๋ฆฌ์–ผ์—”์ง„
thumbnail
Normal Map์„ Roughness Map์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
์ตœ๊ทผ ์–ธ๋ฆฌ์–ผ ์—”์ง„ ๋””์ง€ํ„ธ ํœด๋จผ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ๋…ธ๋ง๋งต์œผ๋กœ๋„ ๋Ÿฌํ”„๋‹ˆ์Šค๋งต์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์–ผ๊ตด์˜ ํ‘œ์ • ๋ณ€ํ™”๋ฅผ ๋…ธ๋ง๋งต์œผ๋กœ ์ปจํŠธ๋กคํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋Ÿฌํ”„๋‹ˆ์Šค๋„ ๊ฐ™์ด ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์…œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ๋…ธ๋ง๋งต์„ ์ •ํ™•ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด ์ œ๋Œ€๋กœ ๋ณ€ํ™˜๋œ ๋Ÿฌํ”„๋‹ˆ์Šค๋งต์„ ์–ป์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์–ด๋–ค ํ˜•ํƒœ์˜ ๋…ธ๋ง๋งต์„ ๋งŒ๋“ค์–ด์•ผ ๋Ÿฌํ”„๋‹ˆ์Šค๊ฐ€ ์ œ๋Œ€๋กœ ๋‚˜์˜ค๋Š”์ง€๋„ ์•„์ง ํŒŒ์•…์„ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ , ๋ธ”๋ž™ ํ…์Šค์ฒ˜๋ฅผ ํ•œ ์žฅ ์ œ์ž‘ํ•˜๊ณ  ์—”์ง„์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ…์Šค์ฒ˜๋ฅผ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ Compositing ํŒจ๋„์˜ Compositing Texture ํ•ญ๋ชฉ์— ๋…ธ๋ง๋งต์„ ๋„ฃ๊ณ  Composite Te..
2021.01.27
CG ์ด์•ผ๊ธฐ/์–ธ๋ฆฌ์–ผ์—”์ง„
thumbnail
mikktspace normal ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ
30
(์ด ํฌ์ŠคํŒ…์€ 2023.11.08์— ๋ฆฌ๋‰ด์–ผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.) โ–Ž์ด๋ก ํŽธ  ์šฐ๋ฆฌ๊ฐ€ ๋…ธ๋ฉ€๋งต์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„ tangent space ๋˜๋Š” mikktspace๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๊ณ ์š”? 100% ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ์œ ๋‹ˆํ‹ฐ๋Š” tangent space๋ฅผ, ์–ธ๋ฆฌ์–ผ์€ mikktspace๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ํ™•๋ฅ ์ด ํฝ๋‹ˆ๋‹ค. 1. mikktspace normal ์•Œ์•„๋ณด๊ธฐ  ๋ฏธ์ผˆ์Šจ ํƒ„์  ํŠธ ์ŠคํŽ˜์ด์Šค ๋…ธ๋ฉ€(Mikkelsen tangent space normal)์€ ์ œ์ž‘์ž์ธ Morten Mikkelsen ์ด๋ฆ„์„ ๋”ฐ์„œ ๋งŒ๋“ ๊ฒƒ์œผ๋กœ ๊ธฐ์กด tangent space์˜ ๋ฌธ์ œ์ ๋“ค์„ ๋ณด์™„ํ•œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ฒƒ์€ ์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.2. ์™œ mikktspace๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ..
2021.01.20
CG ์ด์•ผ๊ธฐ/3D๊ธฐ์ดˆ
thumbnail
Normal map to Height map ๋ณ€ํ™˜ ํ”„๋กœ๊ทธ๋žจ ๋ฆฌ๋ทฐ
์ตœ๊ทผ Friendly Shade๋ผ๋Š” ํšŒ์‚ฌ์—์„œ ๋…ธ๋ง์„ ํ•˜์ดํŠธ๋งต์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ํ•˜์ดํŠธ๋งต์—์„œ ๋…ธ๋ง๋งต์œผ๋กœ ๋ณ€ํ™˜์€ ์‰ฌ์› ์–ด๋„, ํ•˜์ดํŠธ๋งต์—์„œ ๋…ธ๋ง๋งต์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ๋Š” ์ •๋ง ์–ด๋ ค์šด ์ˆ™์ œ์˜€๋Š”๋ฐ์š”. ์•Œ๋ ˆ๊ณ ๋ฆฌ๋“œ๋ฏน ์กฐ์ฐจ๋„ ์—ฐ๊ตฌ์˜ ํ”์ ์ด ๋ณด์ด๊ธด ํ–ˆ์ง€๋งŒ ์•„์ง ์„œ๋ธŒ์Šคํ„ด์Šค ๋””์ž์ด๋„ˆ์— ๊ฐœ์„ ๋œ ๋…ธ๋“œ๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋ง๋งต์„ ํ•˜์ดํŠธ๋งต์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” Normalizer๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ํ˜„์žฌ ๋ฒ ํƒ€ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ด๋ฉฐ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ํšŒ์›๊ฐ€์ž…์„ ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ๋ฐ”๋กœ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ €๋„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ๋…ธ๋ง๋งต ํ•˜๋‚˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋ณ€ํ™˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ดค๋Š”๋ฐ์š”. ์ •๋ง ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋ณ€ํ™˜์ด ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ๋œ ๊ฒƒ์„ ๋ณด๊ณ  ๊นœ์ง ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋ณ€ํ™˜์ž‘์—…์„ ๊ทธ๋ž˜ํ”„๋กœ ์ •๋ฆฌํ•ด๋ดค๋Š”๋ฐ์š”. ๊ฑฐ์˜ ์›๋ณธ๊ณผ ํก์‚ฌํ•˜๊ฒŒ ๋ณ€ํ™˜ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ..
2020.11.29
๊ธฐํƒ€ ์ด์•ผ๊ธฐ
thumbnail
๋ธ”๋ Œ๋” ๋…ธ๋ง ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ
์ž‘์—…์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋…ธ๋ง์ด ๊ผฌ์—ฌ์„œ ์‰์ด๋”ฉ์ด ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜ค๊ฑฐ๋‚˜ ๋” ์ด์ƒ ์˜คํ† ์Šค๋ฌด์Šค๊ฐ€ ์ž‘๋™๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ์š”. ๊ฐ€์žฅ ์ž์ฃผ ์“ฐ๋Š” ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ๋‚˜์—ดํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. 1. Recalculate Normals(๋…ธ๋ง ์žฌ๊ณ„์‚ฐ) ์ด ๊ธฐ๋Šฅ์€ ๋ชจ๋ธ์— ๋’ค์ง‘ํžŒ ๋ฉด์ด ์„ž์—ฌ ์žˆ์„ ๋•Œ ๋‹ซํžŒ ๋„ํ˜•์„ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋ง ๋ฐฉํ–ฅ์„ ์ •์ƒ์ ์œผ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ€๋” ๋ฒ„ํ…์Šค๊ฐ€ ๋ถ™์ง€(Merge) ์•Š๊ฑฐ๋‚˜ ์‰์ด๋”ฉ์ด ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜ฌ ๋•Œ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Shift-N์„ ๋ˆŒ๋Ÿฌ์„œ ์ž‘๋™์‹œํ‚ต๋‹ˆ๋‹ค. 2. Reset Vectors (๋…ธ๋ง ๋ฆฌ์…‹) ์ปค์Šคํ…€ ๋…ธ๋ง ์ž‘์—…์„ ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€์—์„œ ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜ค๊ธฐ(Import)๋ฅผ ํ–ˆ์„ ๋•Œ ๋…ธ๋ง์ด ๊ผฌ์—ฌ๋ฒ„๋ฆฐ ๊ฒฝ์šฐ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋ง ๋ฐฉํ–ฅ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์—๋””ํŠธ ๋ชจ๋“œ์—์„œ ๋ฉ”๋‰ด Mesh-..
2020.11.25
CG ์ด์•ผ๊ธฐ/๋ธ”๋ Œ๋”