본문 바로가기
Unity/수학

[Unity] 수포자를 위한 게임 수학 : 노멀맵(Normal Map)

by 김기승 2025. 12. 22.
반응형

알쓸유잡 5월 : 📐수포자를 위한 게임수학 3부


노멀맵(Normal Map)디테일한 굴곡을 표현하기 위한 맵을 의미한다.

픽셀 단위로 조명 연산의 디테일을 추가해준다.


노멀 매핑 (Normal Mapping)

노멀맵을 실제 오브젝트에 적용하는 것을 노멀 매핑이라고 한다.

버텍스가 아닌 사이의 표면은 보간 처리하여 노멀을 구한다.


노멀맵이 파랗게 보이는 이유

노멀(X, Y, Z)의 각 축은 -1 ~ 1 사이의 값을 가지나,

컬러(R, G, B)의 범위는 0 ~ 1이므로 범위를 재조정하여 저장한다.

[+] -1 → 0, 0 → 0.5, 1 → 1

이때, X축과 Y축은 -1 ~ 1의 범위를 가지나, Z축은 0 ~ 1 값을 가진다.

[+] 면의 방향을 의미하므로 음수 값(-1)을 가질 수 없다.

따라서, Z축(=B) 값이 항상 상대적으로 크므로 노멀맵은 파랗게 보인다.


탄젠트

노멀의 Z축 방향은 고정(면의 방향이므로)이지만,

X축과 Y축은 경우의 수가 무한하므로 탄젠트를 활용해야한다.

FBX Import 옵션에서 Tangents 옵션을 선택할 수 있다.

노멀맵을 사용하지 않는다면 None으로 설정하는 것이

최적화 측면에서 좋다.

Calculate 시리즈는 유니티 자체에서 계산해준다.


NormalTangent를 외적하여

Binormal(Bitangent)를 도출해주면,

위와 같은 행렬 수식을 완성할 수 있다.

반응형

댓글