Hello creators ๐
7. ๋จธํฐ๋ฆฌ์ผ ์ฐ์ฐ ์ค๊ธ : Quixel ๋จธํฐ๋ฆฌ์ผ ์ปค์คํฐ๋ง์ด์ง(2) (feat. ๋จธํฐ๋ฆฌ์ผ ํจ์, ํธ๋ผ์ดํ๋ผ๋ ํจ์) ๋ณธ๋ฌธ
7. ๋จธํฐ๋ฆฌ์ผ ์ฐ์ฐ ์ค๊ธ : Quixel ๋จธํฐ๋ฆฌ์ผ ์ปค์คํฐ๋ง์ด์ง(2) (feat. ๋จธํฐ๋ฆฌ์ผ ํจ์, ํธ๋ผ์ดํ๋ผ๋ ํจ์)
๋ถ์๋งค๋_HA 2021. 12. 12. 17:19
ํธ๋ผ์ดํ๋ผ๋ ํจ์ ํ์ฉ
ํธ๋ผ์ดํ๋ผ๋ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
๋จธํฐ๋ฆฌ์ผ ํจ์ ๋ง๋ค๊ณ > MF_Triplanar ๋ก ์ด๋ฆ์ง๊ธฐ
ํธ๋ผ์ดํ๋ผ๋ ํ์ผ ๋ค์ด > ๋ณต์ฌ - ๋ถ์ฌ๋ฃ๊ธฐ!
Cf. ์ฐธ๊ณ ๋ก, '๋ ธ๋๋ฅผ ๋ณต์ฌ' > ๋ฉ๋ชจ์ฅ์ผ๋ก ๋ถ์ฌ๋ฃ๊ธฐ ๋ ๊ฐ๋ฅ
ํธ๋ผ์ดํ๋ผ๋ ํจ์ ํ์ฉํ๊ธฐ
๊ธฐ์กด์ ์๋ output result ์ง์์ฃผ๊ณ > output result ๋ ธ๋์ ์ฐ๊ฒฐ
๋ง์คํฐ ๋จธํฐ๋ฆฌ์ผ์ > '๋ณต์ฌ' ํด๋ณด๊ธฐ > 'M_Triplanar' ๋ก ์ด๋ฆ ๋ณ๊ฒฝ
surface @ ๋ฉ๊ฐ์ค์บ ํ ์ค์ฒ ์ค > albedo, normal ๋ฑ ๋๋๊ทธ ํด์ ๊ฐ์ ธ์ค๊ธฐ
โญโญโญ 'surface @ ๋ฉ๊ฐ์ค์บ ํ ์ค์ฒ' ๋ฅผ ์จ์ผํ๋ ์ด์ โญโญโญ
'surface @ ๋ฉ๊ฐ์ค์บ ํ ์ค์ฒ' > ์ ํํ๊ฒ ํ๊ฒํ ๋ ๋ชจ๋ธ๋ง์ด ์์ด ๋ฐ๋ณตํด์ ์ฌ์ฉ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ,
'์ ํํ ๋ชจ๋ธ๋ง์ด ์๋ ๊ฒฝ์ฐ - ํด๋น ๋ชจ๋ธ๋ง์ ํด๋นํ๋ albedo, normal ๋ง ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ'
'M_Triplanar' ์ ' 'MF_Triplanar' ๋๋๊ทธํด์ ๊ฐ์ ธ์ค๊ธฐ โญโญโญ
[Output] Resulut ๋ ๊ฐ ๋ ธ๋์ uv ์ ์ฐ๊ฒฐ
[Input] s ๋๋ฅด๊ณ > ์ค์นผ๋ผ ๋ ธ๋ ๋ง๋ค๊ณ > tiling ๋ ธ๋ ์์ฑ > ๊ธฐ๋ณธ๊ฐ์ 1 ๋ก ์ค์
'M_Triplanar' ์ฐํด๋ฆญ > ๋จธํฐ๋ฆฌ์ผ ์ธ์คํด์ค ํ์ฑ ๋ฐ ํ๋ผ๋ฏธํฐ ํ์ธ
'M_Triplanar_Inst' ๋ฅผ ์ ํธ๋ฑ ์คํํฑ ๋ฉ์์ ๋ฃ์ด์ฃผ๊ณ > ํ์ผ๋ง ์กฐ์
Triplanar์ ์๋ฆฌ
1. Texturecoordinate ๋ ธ๋์ ๊ฒฝ์ฐ > UV ์ ๊ฐ๋๋ฅผ ๊ธฐ์ค์ผ๋ก - ๋งตํ
์ฆ, Barrier ์ ๋ง๊ฒ - UV ์ ๊ฐ๋๊ฐ ์๊ณ - ๊ทธ๊ฒ์ ๋ง๊ฒ ํ ์ค์ฒ๋ฅผ ์์ฐ๊ณ - ๊ทธ์ ๋ง๊ฒ ํ์ผ๋ง์ ํ๊ฒ ๋จ.
2. Triplanar ์ ๊ฒฝ์ฐ > UV ์ ๊ฐ๋์ ๋ฌด๊ด!
์ฆ, Triplanar ๋ 'WORLD' ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋งตํํจ > ์ค๋ธ์ ํธ๊ฐ ์์ง์ด๋ฉด - ๊ฐ์์ ํ ์ค์ฒ๊ฐ ์ ํ์ง๋ ๋๋์ด ๋จ.
so, '์ค๋ธ์ ํธ์ ์์น๊ฐ' ๋ง๋ค - ๋ค๋ฅธ ํ ์ค์ฒ๊ฐ ์ ํ์ง
Triplanar์ ํ์ฉ
1. UV ์ ๊ฐ๊ฐ ์ด๋ ต๊ฑฐ๋, ๊ท์ฐฎ์ผ๋ฉด > ๋น์ทํ ํ ์ค์ฒ๋ฅผ ๋ถ๋ฌ์์ > ์๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋งตํ ๊ฐ๋ฅ
2. Origlal normal ํ ์ค์ฒ + Triplanar ํ ์ค์ฒ > ๋ํ ์ผ ์์น ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ํ์ฉ ๊ฐ๋ฅ โญโญโญโญโญ
๊ธฐ์กด UV ๋งต๊ณผ ์ฐ๊ฒฐํ ํ ์ค์ฒ๋งต ๋ค์ด@ํต์ ๋ธ๋ฆฟ์ง
M_Triplanar @๋ง์คํฐ ๋จธํฐ๋ฆฌ์ผ์์ - ํ ์ค์ฒ ๋ ธ๋๋ฅผ > ํ๋ผ๋ฏธํฐ๋ก ๋ณํํด์ฃผ๊ธฐ > BaseColor, Normal๋ก ์ด๋ฆ ๋ณํ
์ ์ ๋ฐฐ์น
1. 'ํต์ ๋ธ๋ฆฟ์ง์์ ๋ค์ด ๋ฐ์ ํด๋' ์ - 'M_Triplanar_Inst' ๋ฅผ ๋ณต์ฌ&๋ถ์ฌ๋ฃ๊ธฐ ํด์ ๋ฃ๊ธฐ
2. ๋ณต์ฌํ 'M_Triplanar_Inst' ์ - ํต์ ์์ ๋ค์ด ๋ฐ์ ํ ์ค์ฒ๋งต ๋๋๊ทธ ๋ฃ๊ธฐ
๋จธํฐ๋ฆฌ์ผ์ ๋ฃ์ด์ฃผ๋ฉด > ๋ฐ๋
์ฌ๊ธฐ์ ์๋ณธ ๋ ธ๋ง๋งต ๋ฃ์ด์ฃผ๊ธฐ
๋จธํฐ๋ฆฌ์ผ ์ธ์คํด์ค ์์ > ๊ณ์ธต ๊ตฌ์กฐ - M_Triplanar ๋ค์ด๊ฐ
1) ๋ ธ๋ง๋งต ๋ณต๋ถํด์ > Original normal ๋งต ๋ ธ๋๋ฅผ ์์ฑ
2) texture coordinate ๋ ธ๋ ์์ฑ ํ ์ฐ๊ฒฐ
3) ์๋ณธ cliff ์ ์ ์์์ ๋ ธ๋ง๋งต์ ๋ฃ์ด์ฃผ๊ธฐ
[๋ ๊ฐ์ง ๋ ธ๋ง๋งต ํผํฉํด์ฃผ๊ธฐ (๋ณ๋์ ํจ์๋ฅผ ํ์ฉํด์ผํจ! โญโญโญโญโญ)]
BlendAngleCorrectedNormals ๋ ธ๋ ๋ง๋ค๊ธฐ
๋ ธ๋ ์ฐ๊ฒฐ
์๋ณธ ๋ ธ๋ง + ํธ๋ผ์ดํ๋ผ๋ ๋ ธ๋ง ๊ฒฐ๊ณผ๋ฌผ
๋ฐ๋ฅ ๋จธํฐ๋ฆฌ์ผ์ 'ํธ๋ผ์ดํ๋ผ๋' ์ถ๊ฐํด๋ณด๊ธฐ
๋ฐ๋ฅ ๋จธํฐ๋ฆฌ์ผ์ ๋ง์คํฐ ๋จธํฐ๋ฆฌ์ผ๋ก ์ด๋
๋ ธ๋ง๋งต ์ฐพ์์ > BlendAngleCorrectedNormals ๋ก ํธ๋ผ์ดํ๋ผ๋ ๋ ธ๋ง๋งต ํผํฉํด์ฃผ๊ธฐ
ํ์ฌ ์ํฉ
์์คํํธ์ - puddle layer ์ ์ํด ์ ๋ฉ์ด๊ฐ ๋ค์ด๊ฐ ์์ผ๋ฉด > ๋ ธ๋ง์ด ๋น ์ ธ์์.
1. GetMaterialAttributes ์์ฑ
2. +๋ฒํผ ํด๋ฆญ > base color ๋ฅผ 'normal' ๋ก ๋ฐ๊ฟ
Cf. ๋จธํฐ๋ฆฌ์ผ ์ดํธ๋ฆฌ๋ทฐํธ๋ '์ ์ฒด ๋จธํฐ๋ฆฌ์ผ์ ํ๋๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ ์ ์๋ ์์คํ ' โโโ
๊ทธ ์ค normal ์ ๋นผ์์ > ์ด๋ ๊ฒ ์์ ํ๋ ๊ฒ ์.
โญโญโญโญโญ @ํธ๋ผ์ด ํ๋ผ๋ '๋ง์คํฐ ๋จธํฐ๋ฆฌ์ผ' ์์ ํด๋น ๋ ธ๋ ๋ณต์ฌ - ๋ถ์ฌ๋ฃ๊ธฐโญโญโญโญโญ
ํธ๋ผ์ด ํ๋ผ๋ ๋ ธ๋ง์ - AdditionalNormal
์๋ณธ ๋ ธ๋ง์ - BaseNormal ์ ์ฐ๊ฒฐ โญโญโญโญโญโญโญ
SetMaterialAttributes ์์ฑ > GetMaterialAttributes ์ ์ฐ๊ฒฐ
1. setmaterialattributes ๋ ธ๋ ์์ฑ
2. + ๋ฒํผ ํด๋ฆญ > base color ๋ฅผ normal ๋ก ๋ณ๊ฒฝ
3. ๋ ธ๋ ๊ฐ ์ฐ๊ฒฐ
puddle layer ์ ma ๋ก ์ฐ๊ฒฐ
๊ทธ ๊ฒฐ๊ณผ
๋ฐ๋ฅ ๋จธ๋ฆฌํฐ์ผ ์๋ํฐ๋ก ๊ฐ์ > global scalar parameter values ๋ฅผ UP ํ๋ฉด > ๊ธฐ์กด UV ๋งตํ์ ์ ์ง๋์ฑ, ํธ๋ผ์ดํ๋ผ๋ ๋ ธ๋ง๋งต์ด ์ํฌํธ ๋๊ณ ์์.
์ ๊ณผ์ ์ ์์ฝํ๋ฉด
์๋ณธ ๋จธํฐ๋ฆฌ์ผ์์ - ํ์ํ ๋ถ๋ถ๋ง ์ ๋นผ์ - ์ปค์คํฐ๋ง์ด์ง! ํ ๊ฒ ์!
SO, UV ๋งตํ ๊ด๋ จ์์ด - ๊ต์ฅํ ๋ํ ์ผํ ๋ ธ๋ฉ๋งต ํ ์ค์ฒ ํํ์ ํ ์ ์๋ค๋ ๊ฒ!