베개발

노말맵이 파란색인 이유 본문

3D/공부 메모

노말맵이 파란색인 이유

rusal0204 2024. 9. 12. 21:55

요약

노말맵에서 노말 방향값 x, y, z를 각각 r,g,b채널로 표현하게 되는데,

'평면'의 경우 b값이 1이기 때문에 전체적으로 푸른 빛을 띄게 된다.


* b값이 1이라는 건 포토샵에서 봤을때 255라는 것과 같은 뜻.

색을 숫자로 표현한다는 개념이 중요하기 때문에, 그것 먼저 익숙해지면 쉽게 이해가 될 것
(도움이 될 만한 글: 색상 표현 기본원리, 색 연산 기초 https://rusalgames.tistory.com/17)

참고로 노말 방향값(=벡터값)은 -1부터 1까지 있을 수 있지만,
이미지의 rgb값에 마이너스를 넣을수는 없으므로 약간의 계산 과정을 거치는데,
2로 나눈 뒤 0.5를 더해주는 것

Ex) (0, -1, 1)
➡️ 2로 나눠서 (0, -0.5, 0.5)
➡️ 0.5를 더해서 (0.5, 0, 1)
➡️ 0부터 255까지 있는 rgb값으로 맞춰서 이미지로 표현

이런 과정을 거쳐서 x,y,z 값이 각각 r,g,b 값으로 이미지에 들어가게 된다. 그게 바로 노말맵!

여기서 벡터값이 완전한 평면을 의미할때의 값은
xyz값 (0,0,1) 인데,
rgb값으로 변환해주면
= rgb (0.5, 0.5, 1) *색을 0~1 값으로 표현했을 때
= rgb (128, 128, 255) *색을 0~255 값으로 표현했을 때 (포토샵에서 볼수있는 바로 그것)

따라서 우리가 흔히 볼 수 있는 '노말맵 파란색'이 나오게 되는 것이다.


찾아본 레딧 링크: https://www.reddit.com/r/Unity3D/comments/b1f87m/why_normal_maps_are_blue/
노말맵 관련 유니티 도큐먼트: https://docs.unity3d.com/kr/2020.3/Manual/StandardShaderMaterialParameterNormalMap.html