Unity Texture Type 중 하나인 Normal Map(노멀맵)에 대해 알아보자
우선 노멀맵은 실제 지오메트리로 표현되는 것처럼 광원을 받는 범프, 홈 및 스크래치 등의 표면 디테일을 모델에 추가하는 데 사용할 수 있는 특별한 텍스처 종류라 한다.
쉽게 말해 실제로 모델링 된 것이 아닌 작은 디테일을 마치 모델링 된 것처럼 보이도록 할 수 있는 텍스처인 것이다.
왼쪽 사진 속 금속 표면은 폴리곤 수가 적은 평면이지만 노멀맵을 통해 나사, 홈, 스크레치는 광원을 받고 깊이감이 있는 것처럼 보인다.
노멀맵은 노멀 방향 정보. 즉 물체의 표면 방향 정보만을 표현하는 텍스처이기 때문에 물체 표면의 색상 정보와 무관하다.
즉 색상 정보는 일반적인 텍스처를 통해 표현하되 표면의 질감 처리만 따로 담당하는 것이며 기본 텍스처와 노멀맵 텍스처를 함께 사용한다.
유니티 노멀맵 공식 문서에 따르면 Normal Map과 Height Map은 모두 Bump Map 타입이라 한다.
Bump Map은 Normal Map 등장 이전 하나의 채널인 흑백 이미지, 즉 그레이 스케일을 사용해 표면의 높낮이를 표현한다. 물체의 표면이 밝을수록 높고 어두울수록 낮아진다.
Bump Map은 매우 단순한 원리로 렌더링에 영향을 줄 수 있지만 정확한 모양을 만들어 낼 순 없었다. 반면 Normal Map은 RGB 세 가지 채널을 모두 사용하고 각 채널의 값을 x, y, z 축을 가진 법선 벡터 값으로 계산해 수직, 수평, 깊이의 정보를 모두 가질 수 있기 때문에 더욱 정교한 표현이 가능하다.
혼란스러웠던 점은 Bump Map이 그레이 스케일을 이용해 높낮이를 표현하는 것이라 했는데 이 부분은 Height Map의 설명과 동일하다.
Height Map 또한 그레이스케일을 이용하고 이름부터 높낮이를 표현하기 위한 텍스처 타입으로 보여 같은 개념인가 싶지만 일반적으로 Height Map은 앞서 알아본 Bump Map, Normap Map과 같이 지오메트리의 변형을 주지 않으면서 눈속임을 주는 Bump Mapping 방식이 아닌 실제로 지오메트리를 변형시키기 위해 사용하는 Displacement Map의 다른 이름으로 구분하는 것 같다.
그래도 Unity에서는 결국 그레이스케일만을 통해 높이를 표현하는 점은 동일하기 때문에 Height Map 타입을 위해 제작된 텍스처라도 Texture Type을 Normal Map으로 변경 후 Create from Grayscale 옵션을 켜주면 Bump Map과 같이 사용할 수 있다고 한다.
'Unity' 카테고리의 다른 글
[Unity] Behavior Tree (0) | 2023.03.20 |
---|---|
[Unity] FSM - 유한 상태 기계 (2) | 2023.03.13 |
[Unity] 텍스처 타입 (0) | 2023.01.24 |
[Unity] 텍스처 압축 포맷 (0) | 2023.01.16 |
[Unity] 텍스처와 텍스처 압축 (2) | 2023.01.08 |