게임 속 돌벽의 틈과 굴곡이 뚜렷한데, 옆에서 보면 표면은 평평할 수 있다. 실제 돌을 모두 튀어나오게 만든 것이 아니라 ‘노멀맵’으로 빛이 닿는 방향을 달리 계산했기 때문이다. 원본 그림이 푸르스름한 보라색인 것도 돌에 그 색을 칠하려는 뜻이 아니다.
색칠할 정보와 빛을 계산할 정보는 다르다
Unity의 공식 설명에서 일반 색상 텍스처는 표면의 색을 맡는다. 노멀맵은 각 지점의 표면이 어느 방향을 향하는 것처럼 계산할지 기록한다. RGB의 빨강·초록·파랑 성분을 방향의 세 성분으로 읽어, 같은 평면에서도 어떤 부분은 빛을 받고 다른 부분은 어둡게 보이도록 만드는 방식이다.
따라서 노멀맵 파일을 그대로 열었을 때 보이는 보라색과 청록색을 완성 화면의 물감으로 해석하면 엉뚱한 답이 된다. Unity 문서의 평평한 부분 예시인 #8080FF는 표면 방향을 바꾸지 않는 값에 해당한다. 다른 색은 그 지점의 조명 계산에 쓸 방향이 다르다는 정보다.
빛을 받는 모양은 달라져도 윤곽까지 생기지는 않는다
이 방식만으로 기본 모델의 다각형이 실제로 솟거나 패이지는 않는다. 정면에서는 양각 문자나 울퉁불퉁한 돌처럼 보이다가 비스듬한 각도에서는 평평한 표면이 드러날 수 있다. ‘디테일이 보인다’와 ‘그 모양의 입체 구조가 있다’는 서로 다른 말이다. 큰 산의 외곽선까지 노멀맵 하나가 새로 만드는 기법이라는 뜻은 아니다.
높이맵과도 저장하는 정보가 다르다. Unity가 비교한 높이맵은 밝기로 높낮이를 표현하지만, 노멀맵은 방향 정보를 담는다. 3D 에셋에서 보라색 그림을 발견했다면 색이 깨졌다고 판단하기 전에, 표면 색용 그림인지 노멀맵용 그림인지부터 구분하면 된다.