쉐이더: 노멀 매핑 — 디테일을 속이는 기술
종이 한 장으로 벽돌 벽을 만든다고?
게임 속 벽돌 벽을 자세히 본 적 있나요?
울퉁불퉁하고, 홈이 파여 있고, 빛도 진짜처럼 비칩니다.
그런데 놀라운 비밀이 하나 있어요.
그 벽, 사실은 매끈한 판자입니다. 종이처럼 평평해요.
울퉁불퉁해 보이게 속이는 마법이 걸려 있을 뿐이죠.
이 마법의 이름이 바로 노멀 매핑(Normal Mapping)입니다.
오늘은 이 속임수가 어떻게 작동하는지, 기초부터 차근차근 알아볼게요.
먼저, 3D 모델은 왜 무거워질까?
3D 모델은 작은 삼각형 조각들을 이어 붙여 만듭니다.
이 조각을 폴리곤이라고 불러요.
매끈한 공 하나를 만들려면 폴리곤이 조금만 있어도 됩니다.
그런데 벽돌 하나하나, 돌의 작은 흠집 하나하나를 진짜로 만들려면 어떨까요?
폴리곤이 수백만 개 필요해집니다.
레고로 비유해 볼게요. 큰 성 모양만 만들면 블록 100개면 되지만, 벽돌 사이 틈까지 전부 블록으로 표현하려면 블록 100만 개가 필요한 것과 같아요.
폴리곤이 많아지면 컴퓨터가 힘들어합니다. 게임이 뚝뚝 끊기게 되죠.
그래서 옛날 그래픽 개발자들이 고민했습니다.
"폴리곤은 조금만 쓰면서, 디테일은 많아 보이게 할 수 없을까?"
빛의 비밀: 우리는 '그림자'로 울퉁불퉁함을 느낀다
여기서 중요한 사실 하나.
우리 눈은 사실 울퉁불퉁함 자체를 보는 게 아닙니다.
빛과 그림자를 보고 울퉁불퉁하다고 판단해요.
귤을 떠올려 보세요.
귤 껍질이 오돌토돌해 보이는 건, 볼록한 부분은 밝고 오목한 부분은 어둡기 때문입니다.
만약 매끈한 공에 귤처럼 밝고 어두운 무늬를 그려 넣으면?
멀리서 보면 귤이라고 착각하게 됩니다.
노멀 매핑은 바로 이 착각을 아주 정교하게 일으키는 기술이에요.
'노멀'이 뭐야? — 표면의 방향 화살표

노멀 매핑의 '노멀(normal)'은 우리말로 법선이라고 합니다.
어렵게 들리지만, 뜻은 간단해요.
표면이 어느 방향을 바라보고 있는지 알려주는 화살표입니다.
책상 위에 연필을 똑바로 세워 보세요. 그 연필이 책상의 법선이에요.
바닥은 하늘을 바라보고, 벽은 옆을 바라보죠.
컴퓨터는 이 화살표를 보고 계산합니다.
"화살표가 빛 쪽을 향하면 → 밝게 칠하자."
"화살표가 빛을 등지면 → 어둡게 칠하자."
즉, 화살표의 방향이 밝기를 결정합니다.
여기서 천재적인 아이디어가 나옵니다.
"표면은 그대로 두고, 화살표만 거짓말을 시키면 어떨까?"
노멀 맵: 거짓말 화살표를 담은 지도
노멀 맵은 특별한 그림 파일입니다.
보통 보라색과 하늘색이 섞인 이상한 그림처럼 보여요.
이 그림의 점 하나하나에는 색 대신 가짜 화살표 방향이 저장되어 있습니다.
색의 빨강(R), 초록(G), 파랑(B) 값이 각각 화살표의 좌우, 위아래, 앞뒤 방향을 뜻해요.
이 지도를 매끈한 판자에 붙이면 이런 일이 일어납니다.
판자는 분명 평평한데, 컴퓨터는 지도에 적힌 화살표를 읽고 계산해요.
"어? 이 점의 화살표는 왼쪽으로 기울어져 있네. 그럼 여기는 어둡게."
"이 점은 빛 쪽을 향하네. 그럼 밝게."
그 결과, 평평한 판자 위에 울퉁불퉁한 벽돌의 빛과 그림자가 그대로 나타납니다.
실제 모양은 하나도 안 바뀌었는데 말이죠.
노멀 맵은 어떻게 만들까?
가장 많이 쓰는 방법은 이렇습니다.
- 먼저 폴리곤을 아낌없이 써서 아주 정교한 모델을 만듭니다. 주름, 흠집까지 전부요.
- 그다음 폴리곤이 적은 가벼운 모델을 만듭니다.
- 컴퓨터가 정교한 모델의 표면 화살표를 몽땅 읽어서, 그림 파일 하나(노멀 맵)에 구워 담습니다. 이 과정을 '베이킹(굽기)'이라고 해요.
- 그 그림을 가벼운 모델에 붙입니다.
정교한 모델은 요리 레시피를 뽑아낸 뒤 버리고, 게임에는 가벼운 모델과 지도만 들어가는 거예요.
높낮이를 흑백으로 그린 그림(하이트 맵)에서 노멀 맵을 자동으로 만들어내는 방법도 있습니다.
범프 매핑과는 뭐가 달라?
노멀 매핑에는 형이 하나 있습니다. 범프 매핑이에요.
범프 매핑은 흑백 그림 한 장으로 "여기는 높고, 여기는 낮아"라고만 알려줍니다.
정보가 한 방향(높낮이)뿐이라 표현이 단순해요.
노멀 매핑은 화살표의 방향을 세 방향(좌우·위아래·앞뒤) 모두 저장합니다.
그래서 훨씬 정확하고 풍부한 입체감을 만들 수 있어요.
노멀 매핑을 'Dot3 범프 매핑'이라고도 부르는 이유는, 범프 매핑이라는 아이디어를 더 발전시킨 방식이기 때문입니다.
직접 써 보면: 좋은 점과 힘든 점
쓸 때 좋은 점
- 모델이 확 가벼워집니다. 폴리곤 수백만 개짜리 조각상이 수천 개짜리로 줄어도, 화면에서는 거의 티가 안 나요. 프레임이 뚝뚝 끊기던 장면이 부드러워지는 걸 눈으로 확인하면 이 기술을 놓을 수가 없습니다.
- 디테일을 그림 수정하듯 고칠 수 있습니다. 흠집 하나 더 내고 싶을 때 모델을 다시 조각할 필요 없이, 노멀 맵만 살짝 손보면 끝이에요.
쓸 때 힘든 점
- 베이킹이 한 번에 잘 되는 일이 드뭅니다. 정교한 모델과 가벼운 모델이 살짝만 어긋나 있어도 노멀 맵에 이상한 줄무늬나 얼룩이 생겨서, 설정을 바꿔 가며 몇 번씩 다시 굽게 돼요.
- 어디까지나 빛으로 속이는 기술이라, 옆에서 비스듬히 보면 들통납니다. 실루엣(윤곽선)은 여전히 매끈해서, "벽돌이 튀어나와 보였는데 옆에서 보니 평평하네?" 하는 순간이 옵니다. 크게 튀어나와야 하는 부분은 결국 진짜 폴리곤으로 만들어야 해요.
정리: 노멀 매핑은 '빛의 마술사'
오늘 배운 내용을 정리해 볼게요.
- 우리 눈은 빛과 그림자를 보고 울퉁불퉁함을 느낍니다.
- 노멀(법선)은 표면이 바라보는 방향 화살표이고, 이 화살표가 밝기를 정합니다.
- 노멀 맵은 가짜 화살표를 잔뜩 담은 지도예요. 평평한 표면에 붙이면 울퉁불퉁한 빛이 나타납니다.
- 정교한 모델에서 화살표 정보를 구워내(베이킹) 가벼운 모델에 입히는 게 기본 흐름입니다.
다음에 게임을 하다가 벽돌 벽이나 갑옷의 흠집을 보면 떠올려 보세요.
"저거, 사실 평평할지도 몰라."
그렇게 보이기 시작하면, 여러분은 이미 그래픽 개발자의 눈을 갖게 된 겁니다.
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기