본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

높이맵을 노멀맵으로 바꾸기: 강도와 초록 채널 방향

vfx 잡학지식 읽는 시간 약 7분 조회 2

노멀맵 만들기는 높이맵의 흰색을 RGB에 그대로 복사하는 작업이 아닙니다. 흑백 높이맵만 있다면 어디를 얼마나 높게 보고, 강도와 OpenGL·DirectX 방향은 어떻게 정해야 할까요?

먼저 높이맵을 노멀맵으로 바꾼 뒤, 입체감은 강도로 조절하세요. 요철이 반대로 보이면 높이값 해석을 먼저 확인하고, OpenGL·DirectX 규약이 다를 때는 초록 채널 방향을 맞추세요. 아래 변환기는 선택한 이미지와 계산 결과를 브라우저 안에서 처리합니다. 이미지 파일을 사이트로 전송하지 않습니다.

1. 높이맵을 불러와 노멀맵을 만드세요

높이맵은 픽셀의 밝기를 표면 높이로 읽는 흑백 이미지입니다. 이 도구는 밝은 곳을 높은 곳, 어두운 곳을 낮은 곳으로 해석합니다. 반대로 그린 파일이라면 먼저 높이 해석을 뒤집어 저장하세요.

높이맵 → 노멀맵 변환기

흑백 높이맵을 선택하면 이웃 픽셀의 기울기로 탄젠트 공간 노멀맵을 만듭니다.

기울기 배율입니다. 낮은 값부터 미리보세요.

전환하면 G 채널만 뒤집습니다.

입력 높이맵

이미지를 선택하세요. 최대 16,777,216픽셀.

출력 노멀맵

평탄한 면의 기준 RGB는 128, 128, 255입니다.

높이맵을 선택하면 결과가 표시됩니다.

선택한 파일은 이 브라우저의 Canvas에서만 읽고 변환합니다. 파일 내용은 서버로 보내지 않습니다.

파일을 선택하면 변환 결과가 두 창에 나란히 나옵니다. 노멀맵의 파랑 채널은 표면이 바깥을 향하는 기준 방향을 담고, 빨강과 초록은 좌우·상하 기울기를 담습니다.

2. 강도는 이웃 픽셀의 기울기를 키우는 값입니다

각 픽셀의 높이 자체만으로는 표면이 어느 쪽으로 기울었는지 알 수 없습니다. 왼쪽과 오른쪽, 위와 아래의 높이를 비교해야 합니다. 밝기가 주변과 비슷하면 기울기가 작고, 차이가 크면 기울기가 큽니다.

계산은 좌우 기울기와 상하 기울기를 구해 법선 벡터의 X·Y 성분으로 바꾸는 방식입니다. 이 도구는 중심 픽셀 양옆과 위아래 이웃을 중심 차분으로 비교합니다. 이미지 가장자리에서는 안쪽 이웃 하나만 써서 방향을 근사합니다.

항목계산 또는 출력뜻
좌우 기울기(H오른쪽 − H왼쪽) ÷ 픽셀 간격오른쪽으로 갈 때 높이가 얼마나 변하는지
상하 기울기(H아래 − H위) ÷ 픽셀 간격이미지 행이 아래로 증가하는 방향의 변화
법선normalize(−강도×좌우, 강도×상하, 1)기울기 방향을 길이 1인 벡터로 정규화
RGB 저장(법선 성분 + 1) × 127.5−1~1 방향값을 0~255 이미지 값으로 인코딩

높이가 모든 픽셀에서 같으면 기울기가 0입니다. 법선은 (0, 0, 1)이 되고 RGB 값은 약 (128, 128, 255)가 됩니다. 이 도구의 강도를 0으로 둬도 같은 평탄한 결과가 나옵니다.

강도 슬라이더는 기울기에 곱하는 배율입니다. 값을 올리면 빨강·초록 채널이 기준값 128에서 멀어져 입체감이 강해집니다. 기본 5는 시작점일 뿐 정답이 아닙니다. 높이맵의 대비와 픽셀 간격, 실제 작업의 높이 스케일이 다르면 같은 숫자라도 느낌이 달라집니다.

값을 높이기만 하면 얕은 요철도 날카로운 홈처럼 보일 수 있습니다. 먼저 낮은 값에서 시작해 조금씩 올리고, 실제 재질을 입힌 표면에서 조명을 움직여 확인하세요. 이 슬라이더의 숫자는 이 변환기의 계산 배율이며 Blender 노드의 Strength 값과 직접 대응하지 않습니다.

3. 요철이 뒤집혀 보이면 초록 채널 방향을 바꾸세요

노멀맵은 표면 방향 벡터를 RGB에 담습니다. OpenGL과 DirectX 방식은 탄젠트 공간의 Y 방향을 다르게 해석하므로, 서로 다른 규약의 파일을 그대로 연결하면 홈이 솟은 것처럼 보일 수 있습니다.

프로그램공식 문서의 안내확인할 점
Blender 5.2OpenGL convention 기본, 녹색 채널 Y-upImage Texture는 Non-Color로 읽으세요.
Unreal EngineSubstance Painter 문서는 DirectX를 일반 앱 권장값으로 안내텍스처의 Flip Green Channel은 G를 반전합니다.
UnitySubstance Painter 문서는 OpenGL을 일반 앱 권장값으로 안내기대 규약과 다를 때 Flip Green Channel을 쓸 수 있습니다.
MayaSubstance Painter 문서는 OpenGL을 일반 앱 권장값으로 안내프로젝트·익스포트 설정을 함께 확인하세요.
3ds MaxSubstance Painter 문서는 DirectX를 일반 앱 권장값으로 안내프로젝트·익스포트 설정을 함께 확인하세요.

여기서 앱별 표는 모든 버전과 프로젝트의 기본값을 뜻하지 않습니다. Adobe 문서가 안내하는 일반 앱의 권장값입니다. Blender 매뉴얼은 OpenGL을 기본으로 설명하면서 DirectX 규약도 선택할 수 있다고 밝힙니다. 프로젝트 설정이나 내보내기 프리셋이 다르면 실제 출력 파일의 방향이 표와 다를 수 있습니다.

그러므로 먼저 대상 프로그램과 익스포트 설정을 확인하고 도구에서 같은 방향을 고르세요. 이미 만든 맵의 요철이 뒤집혀 보인다면 OpenGL과 DirectX를 바꿔 미리보면 됩니다. 이 변환은 초록 G 채널만 뒤집으며, 빨강·파랑 값은 그대로 둡니다.

노멀맵은 색이 아니라 방향 데이터입니다. Blender에서는 Image Texture를 Non-Color로 두고, Unreal Engine의 텍스처 설정에서도 sRGB를 끄세요. 노멀맵을 sRGB로 읽을 때 생기는 문제는 Normal Map 색공간을 맞추는 방법에서 더 자세히 다룹니다.

높이맵에서 방향을 만든 뒤 실제 표면에서 확인하세요

여기까지 정리하면 높이맵의 명암은 표면 높이로, 이웃 픽셀의 차이는 기울기로 읽습니다. 강도는 그 기울기를 키우는 배율이고, OpenGL·DirectX 선택은 녹색 채널의 방향을 정합니다.

강도는 작은 값부터 맞추고, 요철이 반대면 초록 채널만 바꾸세요.

변환된 노멀맵은 표면이 빛을 받는 방향을 바꾸지만, 메시의 점을 이동시키지는 않습니다. 큰 골이나 외곽선까지 바꾸려면 디스플레이스먼트 또는 모델링이 필요합니다. 이 경계는 노멀맵과 디스플레이스먼트의 차이에서 이어서 확인하세요.

한 줄로 기억하면 됩니다. 높이맵은 밝기가 아니라 이웃 픽셀의 기울기로 노멀맵이 됩니다.

참고 자료

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.