언리얼 모델링 깨짐, 확인해야 할 3가지 개념 (노멀맵, 탄젠트, 나나이트 그림자)

섭페에선 멀쩡했는데 언리얼 모델링 깨짐 왜이럴까

서브스턴스 페인터(Substance 3D Painter)에서 디테일을 깎고, 두근거리는 마음으로 언리얼 엔진 5(UE5)에 가져왔습니다. 그런데 셰이더를 연결하는 순간…

  • “표면이 안으로 파인 것처럼 이상하게 뒤집혔어요.”
  • “모델링 이음새(UV Seam)에 각진 줄이 생겨요.”
  • “그림자가 거뭇거뭇 자글자글 깨져요!”

분명 모델링엔 문제가 없는데 도대체 왜 이럴까요? 엔진 버그일까요? 아닙니다. 99%는 ‘설정(Settings)’과 ‘데이터 처리 방식’의 차이 때문입니다.

오늘은 모델링이 깨져 보일 때 반드시 체크해야 할 3대장(노멀맵, 탄젠트, 나나이트)의 원인과 해결책을 초보자의 눈높이에서 설명해봅니다


1. 노멀 맵 Y축 반전 (DirectX vs OpenGL)

가장 흔한 문제입니다. 빛이 와야 할 곳에 그림자가 지고, 그림자가 져야 할 곳이 밝다면 100% 노멀 맵이 뒤집힌 것입니다.

원인: “우리는 서로 다른 길을 간다” 3D 프로그램마다 노멀 맵의 초록색 채널(Y축)을 해석하는 방향이 정반대입니다.
노말맵도 좌에서 우, 위에서 아래 등 보는 방향에 따른 빛의 방향 정보를 R (레드 채널), G (그린 채널), B (블루 채널)에 따로 넣습니다. 노말맵이 푸래보이는 이유도 블루값이 높아서이죠 (XYZ = RGB)

  • DirectX 방식 (-Y, 위가 파임): 3ds Max, Unreal Engine
  • OpenGL 방식 (+Y, 위가 튀어나옴): Blender, Maya, Unity

즉, 블렌더 유저가 섭페에서 OpenGL 기준으로 뽑은 텍스처를 언리얼(DirectX)에 가져오면? 당연히 표면이 뒤집혀서 깨져 보이는 것입니다.

👉Y축이 뒤집히면(왼쪽) 빛과 그림자가 반대로 먹어서 표면이 파인 것처럼 보입니다. (XYZ = RGB)

[해결법] 섭페에서 미리 세팅하기 (강력 추천)

섭페 프로젝트에서 부터 언리얼에 맞추는 습관을 들이세요.

  1. 섭페 메뉴의 Edit > Project Configuration을 엽니다.
  2. Normal Map Format을 [DirectX]로 설정합니다.
  3. 이제부터 내보내는 모든 노멀 맵은 언리얼에서 정상적으로 보입니다.

2. 이음새가 각져 보여요! (Tangent Space)

“Y축은 맞췄는데… UV 경계선에 미세하게 각진 줄이 가 있어요.”

이건 ‘탄젠트 공간(Tangent Space)’ 계산 방식이 달라서 생기는 고급 문제입니다. 쉽게 말해 섭페와 언리얼이 노멀의 각도를 계산하는 ‘공식’이 미세하게 달라서 오차가 생기는 것입니다.

[해결법] 섭페 Export 설정 (필수 ⭐)

이 문제는 텍스처를 내보낼(Export) 때 옵션 하나만 켜면 해결됩니다.

  1. File > Export Textures 창을 엽니다.
  2. Global Settings 탭을 클릭합니다.
  3. Compute tangent space per fragment 옵션을 반드시 체크(✅)합니다.

이 옵션은 “언리얼 엔진이 쓰는 계산식(MikkTSpace)이랑 똑같이 맞춰서 내보내줘!” 라는 뜻입니다. 이걸 켜면 하드 서페이스의 엣지 부분이 아주 깔끔하게 떨어집니다.

이 체크박스 하나가 모델링의 ‘각’을 살려줍니다. 꼭 확인하세요!

3. 나나이트 & 그림자 깨짐 (VSM, Ray Tracing)

마지막으로 언리얼 모델링 깨짐이 아니라 그림자가 깨지는 경우도 있습니다
언리얼 5로 넘어오면서 레이 트레이싱을 켰을 때 생긴 문제입니다. 모델링 자체는 멀쩡한데 그림자가 자글자글하게 깨지거나(Shadow Acne), 표면에 지렁이 같은 노이즈가 생길 때가 있습니다.

원인: “눈에 보이는 거랑 그림자 만드는 애가 달라요” UE5의 핵심 기술인 나나이트(Nanite)는 성능을 위해 멀리 있는 물체를 단순한 형태(Fallback Mesh)로 바꿔서 보여줍니다.

문제는 “눈에 보이는 건 고해상도 나나이트 메쉬인데, 그림자는 저해상도 폴백 메쉬 기준으로 계산할 때” 발생합니다. 서로 모양이 안 맞으니 그 틈새로 그림자 오류가 생기는 거죠. (특히 하드웨어 레이 트레이싱을 켤 때 심합니다.)

[심화 해결법] 콘솔 명령어 활용 (Feat. 레이 트레이싱 유저)

프로젝트에서 하드웨어 레이 트레이싱(Hardware Ray Tracing)을 쓰고 계신다면, 이 방법이 직빵입니다.

키보드 ~ 키를 눌러 콘솔 창을 열고 아래 명령어를 입력해 보세요.

  1. r.RayTracing.Nanite.Mode 1
    • 효과: 그림자 계산 방식을 변경하여 즉시 노이즈를 완화합니다. (가장 깔끔한 해결책)
  2. r.Nanite.ViewMeshLODBias.Offset -2
    • 효과: 카메라가 멀리 있어도 강제로 더 높은 디테일(LOD)의 메쉬를 그리게 합니다. (성능은 조금 먹지만, 퀄리티는 확실합니다!)
명령어를 적용하기 전(왼쪽)과 후(오른쪽)의 그림자 디테일 차이.

마치며: 기본기가 곧 퀄리티입니다

화려한 이펙트나 라이팅 기술을 배우기 전에, 언리얼 모델링 깨짐을 해결하기 위한 3가지 기초부터 확실하게 잡아야 합니다.

  1. DirectX vs OpenGL의 차이를 이해하고 Y축 맞추기.
  2. 섭페에서 Compute Tangent Space 꼭 켜기.
  3. 나나이트 그림자가 깨지면 콘솔 명령어로 오차 잡아주기.

이것만 알아도 섭페에서 언리얼로 모델링을 가져온 후 생기는 문제들이 왜 생기는 문제인지 생각해 볼수 있을겁니다.

혹시 모델링 문제가 아니라 “섭페랑 언리얼 색감(컬러) 자체가 달라요!” 하시는 분들은 아래 글을 참고해 주세요. sRGB와 감마 설정의 비밀을 알려드립니다.

👉 [관련 글] 언리얼 5 색감이 섭페랑 다를 때 해결하는 3가지 방법 (Gamma, sRGB) (보러 가기)

위로 스크롤