
Q.노멀맵이 뭐냐?
A.간단하다. 노멀벡터가 들어있는 맵.
Q.그럼 노멀벡터가 뭐임?
A.노멀벡터=법선
Q.벡터가 무슨뜻?
A.방향임. 그냥 오른쪽, 또는 오른쪽위방향 등등을 수치화 한것 뿐임 좁밥
Q.법선이 뭔데 그래서
A.곡선 C 위의 한 점 P를 지나고 그 점에서 접선 t에 수직인 직선.
이런 좆같은 설명 은 집어치우고. 그냥 여기서는 '평면의수직' 이라고만 생각해도 충분하다.
땅에 깃발 꽃을때 대충 수직으로 꽃지? 그거임. '평면이 바라보고 있는 방향' 이라고 생각하면 되겠다
Q.그게 뭐에 쓰임?
A.사물의 굴곡이 우리눈에 보이는 이유는 빛의 반사임.
A.사물의 굴곡이 우리눈에 보이는 이유는 빛의 반사임.
예를들어 그냥 평평한 김치가슴이라도 빛의반사만 잘 주작할수 있다면 백마부럽지 않다 이기.
즉, 빛의 반사를 계산하는데 쓰여
Q.어떻게?
A.다음 그림을 보자.
빨강이 그냥 '평면'이고
파랑이 빨강평면의 '법선'임
노랑이 빛이야.
매우 간단해. 그냥 파랑법선을 기준으로, 노랑선과 이루는 양쪽 각도들을 똑같이 하면 되잖아 좁밥이지?
즉, 법선만 있으면 빛의반사주작은 간단하다 이기야!.
근데 저걸 어떻게 노멀맵으로 만드느냐?
좁밥임
정사각형의 평면이 있다 치자.
X가(초록) 정사각형의 가로고
Y가(빨강) 정사각형의 세로임.
그리고 Z가(파랑) 위,아래 방향 이다.
보자 그럼 XY평면에서 법선벡터는 수직으로 윗방향(Z방향)이야.
이걸 벡터로 나타내면 (0,0,1)이겟지.
근데 봐. 픽셀의 색상은은 RGB 3가지로 이루어져 있어.
3차원의 벡터도 XYZ 3가지로 이루어져 있고.
그래서 이걸 꼼수로 XYZ의 수치를 RGB에 넣어서 기록해놓는걸 노멀맵이라 한다.
즉, 0,0,1을 RGB수치에 넣는거지
RGB의 각 요소들은 0부터 255까지 쓰이지?( 포샵같은거 쓰는사람들이면 당연하게 여기고 있겠지. 아니라도 좀 상식적인거다)
근데 0,0,1을 어떻게 RGB에 넣냐?
좁밥임
1을 최대로 가정하고 1이 들어가 있다면 255로 바꿔넣는거지 (비율적으로 바꿔넣는다는 얘기야)
즉, 저건
(0,0,255) 라고 표기 할수 있다고 생각하겠지만 아직 더 남았어.
음수 부분의 표기야.
시벌.. 슬슬 이해 안되서 ㅁㅈㅎ를 줄까 생각중인 게이들이 생겼겠지만 상관없다!
근데 이부분도 좁밥임.
벡터의-1을 -> RGB의0으로 두면됨
즉,
공간좌표의 -1= RGB의 0.
그럼 ㄱ공간좌표의 0은 ? -1과 1의 중간이니까,
RGB에서는 0과 255의 중간인 127이겠네.
좁.밥.ㅋ(127.5겠지만 소수점은 버려. 자세한걸 설명하자면 기니까 패스하자)
그래서 벡터(0,0,1)의 표기는
RGB(127,127,255) 이게 답이다.
좌이버에서 색상코드를 검색해봤다. 색상코드에 보면 R이 127, G가 127, B가 255. 맞지?
(혹시 모르는게이들 있을까봐 그러는데 R=Red 빨강, G=Green초록, B=Blue 파랑)
이 색상을 잘 기억해놓고 다음 노멀맵을 보자.
대부분 화면이 푸르딩딩하지?(텍스쳐정보 작성게이도 푸르딩딩하다고 표현했고 말야)
이유는 간단해. 구부러지지않은 평평한 평면쪽은 법선이 바로 위쪽인 벡터(0,0,1)이겠지? RGB로는? RGB(127,127,255) !
색상은? 바로위에서 좌이버에 검색했던 색상이지? 똑같지?
어떤면이 울긋불긋 하다쳐도 대부분의 방향은 윗쪽 방향에 가까워.
그래서 윗쪽방향인 B요소가 크고, 그러다보니 노말맵은 푸르딩딩하다 이기야!
그리고 이렇게 픽셀단위로 노말을 저장할수 있으니 나름 자세한 텍스쳐표현이 가능하겠지? 이게 노말맵의 장점이다!
대충 이까지만 알면되고 더 알고 싶으면 아래도 읽어보라 이기!
OUT은 튀어나온걸 표현하기위한 부분이야. 아마 많은 게이들은 들어가 보일테지만
이는 우리 눈은 물체의 위쪽 음영으로 사물의 음,각등을 자주 판단한다고해.
모바일게이들은 폰을 뒤집이 보면 다시 튀어나오게 보일수도 있고(한번 박힌 고정관념때문에 계속 들어가보일수도 있다)
아니면 아랫부분을 일부러 강하게 인식하면 튀어나오게 보여.
아무튼. OUT의 윗쪽이 조금 불그스름 하지? 3차원 공간에서 보면 바로 위방향이 아닌, 위방향에서 Y축쪽에 많이 근접한 모양새일꺼야.
(간단하게 주사위가 책상에 있을때 옆면이 바라보는 방향은 옆이지? 그래서임)
법선을 대충 Y축방향인 벡터(0,1,0) 으로 두자.
그전에 생각할건 여기에서 Y축은 빨강색이다.
그럼 RGB로 바꾸면? RGB(255,127,127)
왜 Y는 두번째요소인데 RGB에선 첫번째에 들어갔냐?
자기맘인데 보통Y축이 빨강이다. 그래서 위에 3차원그림판짤도 Y축은 빨강으로 그림.
아무튼 빨강색 요소인 R이 훨씬 크니까 대충 불그스름한 색상이 나오겠지?
검새해보니까 맞네. 그래서 OUT에서 윗부분은 불그스름하구나! 하면 됨
그렇다면 벡터(0,1,1)은 어떻게 RGB로 바꿀까?
벡터의 크기를 무조건 1로 맞춰야해.(애초에 방향벡터의 크기는 1이 정상임)
하는방법은 좁밥인데 패스함. 알고싶으면 검색! 좁밥이라 잘나와있음.
(보기 쉽게 두번쨰 소수점부턴 생략하자)
벡터(0.7, 0, 0.7) 이렇게 돼. (XYZ의 Y요소는 R, X요소는 G라는걸 생각하자)
RGB로 바꾸면 -> RGB(178,127,178) 좁ㅋ밥ㅋ
여기까지다.
만약 이 글을 완벽하게 이해했다면 노말맵의 상당부분을 이해한것이다.
이외에도 노말맵의 좌표계를 어찌어찌 변환한다~ 이런건 있는데 이런건 일반인이 알려 하기엔 너무 많이 나가는 부분이다.
이것도 좁밥인 부분인데 여기까지 할께.
게임에서 텍스쳐가 이런식으로 대충 이루어져 있다 라고만 알면 된다!
이해 안가서 중간에 ㅁㅈㅎ 주러 간 게이들도 관심이라도 가져줘서 고맙다.





