서론: 노말맵, 게임 그래픽에 빛이자 어둠!?
지브러시(ZBrush)나 블렌더(Blender)로 스컬핑을 갓 배운 3D 입문자들이 가장 많이 하는 실수가 있습니다. 괴물의 피부 모공, 갑옷의 미세한 스크래치, 옷감의 실밥까지 수천만 개의 폴리곤(Polygon)으로 기가 막히게 조각해 놓고는, 그 무거운 ‘하이폴리(High-Poly)’ 데이터를 그대로 언리얼 엔진이나 게임에 넣으려고 하는 것입니다.
( 언리얼 나나이트는 잠깐 빼고 말합시다! )
결과는 어떻게 될까요? 화면은 뚝뚝 끊기고, 컴퓨터 팬은 비명을 지르다 결국 프로그램이 뻗어버립니다. 우리가 즐겨 하는 AAA급 게임(배틀그라운드, 사이버펑크 등)에 등장하는 엄청난 디테일의 캐릭터들은 사실 면의 개수가 몇만 개밖에 되지 않는 아주 가벼운 ‘로우폴리(Low-Poly)’ 모델링입니다.
그렇다면 어떻게 그 가벼운 모델링에서 모공과 흉터, 금속의 파인 자국이 입체적으로 보일까요? 그 엄청난 최적화의 마법을 가능하게 해주는 3D 그래픽 기술의 결정체가 바로 오늘 완벽하게 파헤쳐볼 노말맵(Normal Map)입니다.
1. 노말맵은 왜 항상 ‘파란색’일까요? (RGB와 XYZ의 비밀)

노멀맵 텍스처 이미지를 열어보면 항상 푸르스름하고 보라색, 분홍색 톤을 띠고 있습니다. 왜 그럴까요? 이는 단순히 예뻐 보이려는 색칠 공부가 아닙니다. 컴퓨터 그래픽에서 3차원 공간을 의미하는 X, Y, Z 축의 방향 데이터를 이미지의 R(Red), G(Green), B(Blue) 색상 채널에 수학적으로 대입시킨 결과입니다.
- Red (빨강): 좌우(X축)의 굴곡 방향
- Green (초록): 상하(Y축)의 굴곡 방향
- Blue (파랑): 깊이와 정면(Z축)의 굴곡 방향
💡 여기서 노말맵이 파란색이 되는 결정적인 이유가 나옵니다. 물체의 표면(노멀)은 기본적으로 뚫고 들어가는 것이 아니라 ‘바깥쪽(카메라를 향하는 정면)’을 향하고 있습니다. 즉, 앞을 향하는 Z축(Blue)의 값은 마이너스 영역으로 떨어지지 않고 항상 일정 수준 이상의 양수 값을 유지하게 됩니다. 이 3D 데이터를 0~255의 이미지 색상 값으로 변환하면, 파란색(Blue) 채널은 무조건 절반(128) 이상의 높은 값을 띠게 됩니다. 다른 X, Y 굴곡에 의해 빨강과 초록이 섞여 보라색이나 분홍색이 나타날 순 있어도, 베이스 자체는 무조건 파랗게 보일 수밖에 없는 것이죠!
2. 게임 업계에서 노멀맵 베이킹(Baking)이 ‘절대적’인 이유
빛(조명)이 이 푸르스름한 노멀맵 이미지가 발라진 평평한 면을 때리면, 컴퓨터는 RGB 색상 데이터를 읽고 “아, 여기 초록색 픽셀을 보니까 빛을 위쪽으로 꺾어서 반사해야겠네!” 하고 스스로 계산합니다. 그 결과, 실제로는 완전히 평평한 면인데도 우리 눈에는 홈이 깊게 파인 것처럼 완벽한 입체감을 느끼게 됩니다.
물론 면에서 텍스처 정보를 가지고 반사를 하기때문에 직접적인 면이 늘어나는게 아닙니다. 실루엣은 각질 수 밖에 없죠

하이폴리의 영혼을 로우폴리에 굽는다 (Baking)
실무에서는 디테일이 엄청난 ‘하이폴리’ 모델링과, 뼈대 역할만 하는 가벼운 ‘로우폴리’ 모델링 두 개를 만듭니다. 그리고 서브스턴스 페인터(Substance Painter) 같은 툴을 이용해, 하이폴리가 가진 수천만 개의 굴곡 데이터(빛의 꺾임 정보)를 추출하여 한 장의 2D 이미지(노멀맵)로 찍어냅니다. 이 과정을 ‘베이킹(Baking, 텍스처 굽기)’이라고 부릅니다.
이 기술 덕분에 폴리곤 2,00만 개짜리 조각상을 ‘폴리곤 5,000개 + 노멀맵 1장’으로 대체하면서 컴퓨터의 계산량을 수천 배나 줄일 수 있는 것입니다!
3. [실무 팁] 노말맵 구울 때 맨날 터지는 이유 3가지
이론은 완벽한데, 노말맵은 무언가 잘 안되는게 많습니다. 이게 어둠의 영역입니다.
예를 들어 섭페에 가져가서 베이크(Bake) 버튼을 누르면 노멀맵이 시커멓게 타버리거나 모서리가 찢어지는 현상을 자주 겪으셨을 겁니다. 실무 면접관들이 가장 예민하게 체크하는 베이킹 실패의 3대 원인을 짚어드립니다.
1) 하드 엣지(Hard Edge)와 UV Seam의 불일치
하드 서페이스 모델링에서 가장 많이 하는 실수입니다. 면이 90도로 꺾여 오토 스무스(마크 샤프)로 날카롭게 각을 잡은 곳은 무조건 UV를 가위질(Seam)해서 분리해 두어야 합니다. 붙여둔 채로 구우면 꺾이는 부분의 빛 계산이 꼬이면서 노멀맵 모서리에 시커먼 줄이 생깁니다.
2) 덩어리(실루엣)의 불일치
로우폴리는 하이폴리를 감싸는 아주 얇은 껍질이어야 합니다. 전체적인 크기나 실루엣이 많이 어긋나 있으면, 섭페가 굴곡 데이터를 가져올 때 허공을 짚게 되어 노멀맵이 기괴하게 찍힙니다.
3) 겹쳐진 부품을 한 번에 구울 때 (Explode Baking)

캐릭터의 팔과 몸통, 총기의 부품들이 아주 가깝게 붙어있으면, 베이킹할 때 옆 부품의 데이터가 간섭을 일으켜 검게 번집니다. 부품들의 이름을 _low, _high로 정확히 매칭(Match by Mesh Name)하여 굽거나, 폭발한 것처럼 부품을 멀리 떨어뜨려 놓고 굽는(Explode Baking) 방식을 써야 합니다.
4. 다이렉트X vs 오픈지엘(Open GL) : “튀어나온 곳이 왜 파여 보일까?”
학생들이 마지막 엔진 세팅에서 가장 많이 당황하는 순간입니다. “섭페에서는 예쁘게 튀어나와 보였는데, 블렌더(또는 언리얼)로 가져오니 툭 튀어나와야 할 곳이 푹 파여 보여요!”
이것은 3D 프로그램마다 상하(Y축)를 담당하는 Green(초록색) 채널의 방향을 인식하는 기준이 정반대이기 때문입니다. 여기에는 인간의 아주 재미있는 심리적 착각이 숨어 있습니다.
우리의 뇌는 태양광의 영향으로 ‘빛은 항상 위에서 아래로 떨어진다’는 것에 익숙해져 있습니다. 그래서 하이라이트(빛 맺힘)가 위쪽에 있으면 ‘튀어나왔다’고 느끼고, 하이라이트가 아래쪽에 있으면 ‘파여 있다’고 인지합니다.
- OpenGL 방식 (Y+): 위쪽을 플러스(+)로 인식합니다. (블렌더, 마야, 유니티 엔진 등)
- DirectX 방식 (Y-): 아래쪽을 플러스(+)로 인식합니다. (3ds Max, 언리얼 엔진 등)
작업한 툴과 엔진의 Y축 기준이 다르면 하이라이트가 맺히는 위치가 위아래로 완전히 뒤집히게 됩니다. 그래서 뇌가 착각을 일으켜 튀어나온 모공이 푹 파인 흉터처럼 보이게 되는 것이죠!
💡 해결책: 만약 굴곡이 반대로 뒤집혀 보인다면 당황하지 마세요. 언리얼 엔진의 텍스처 세팅이나 포토샵에서 노멀맵의 Green(초록색) 채널만 반전(Invert / Flip Green)시켜 주면 마법처럼 올바른 입체감으로 돌아옵니다. (포토샵 반전 단축키는 Ctrl+I 죠)
마치며: 노멀맵을 잘 다뤄야 내 모델링을 지킬 수 있습니다.
과거에는 수많은 폴리곤을 버벅거림 없이 다루는 사람을 고수라고 불렀다면, 현대 3D 게임 그래픽에서는 ‘가장 적은 폴리곤으로 노멀맵을 기가 막히게 뽑아내어 무거운 하이폴리처럼 보이게 속이는 사람’이 진짜 초고수 대우를 받습니다.
오늘 배운 노멀맵의 RGB 원리와 그린 채널의 비밀, 그리고 베이킹 최적화 개념은 3D를 업으로 삼는 한 평생 따라다닐 든든한 무기가 될 것입니다. 이제 지브러시에서 컴퓨터가 터질 걱정 없이 마음껏 디테일을 조각하세요. 우리에겐 그 영혼을 로우폴리에 완벽하게 이식해 줄 노멀맵이 있으니까요!
🔗 베이킹을 위한 완벽한 모델링 기초 가이드
노멀맵을 에러 없이 깔끔하게 굽기 위해서는, 그 전 단계인 모델링의 ‘스무스(광원)’ 정리와 ‘UV 언랩’이 완벽해야 합니다. 아래 실무 가이드들을 반드시 정독하여 뼈대를 단단히 다지시기 바랍니다.