스마트 메시 노멀 맵 탄젠트: 문제점 및 모범 사례

이미지를 3D 모델로

수년간 3D 프로덕션을 진행하면서, 잘못된 탄젠트 공간으로 인해 프로젝트가 좌초되는 것을 그 어떤 기술적 문제보다도 많이 보아왔습니다. 탄젠트 공간은 노멀 맵의 조용한 기반이며, 이 부분이 손상되면 솔기, 셰이딩 아티팩트, 그리고 디버깅에 며칠이 걸릴 수 있는 엔진별 문제들이 발생합니다. 이 글은 신뢰할 수 있고 프로덕션에 즉시 사용 가능한 메시를 필요로 하는 아티스트와 테크니컬 디렉터를 위한 것입니다. 이론을 넘어, 탄젠트 공간 문제를 진단하고, 예방하고, 수정하여 베이크 및 실시간 렌더링이 완벽하도록 보장하는 저의 실질적인 워크플로우를 공유하겠습니다.

핵심 요점:

  • 탄젠트 공간은 정점별로 정의되며 UV 레이아웃과 근본적으로 연결되어 있습니다. 미러링된 UV와 솔기는 이를 손상시킬 수 있습니다.
  • 업계 표준인 MikkTSpace 계산은 이전의 레거시 방법과 달리 메시 스무딩 및 삼각 분할에 민감합니다.
  • 깔끔한 결과를 위한 강력한 베이크 전 메시 준비 체크리스트는 필수적입니다.
  • 탄젠트에 대한 엔진 임포트 설정(Unity 대 Unreal)은 종종 셰이더 내 아티팩트의 최종 원인이 됩니다.
  • 사전 메시 분할 및 깔끔한 토폴로지는 이러한 문제를 처음부터 피하는 가장 효과적인 방법입니다.

탄젠트 공간 이해: 왜 그것이 기반인가

탄젠트 공간이 메시에서 실제로 의미하는 것

복잡한 수학은 잊으세요. 실제로 탄젠트 공간은 메시의 각 정점에 저장된 로컬 좌표계입니다. 이는 노멀 맵 벡터의 방향을 정의합니다. 시스템이 일관되면 베이크된 디테일이 기본 메시와 완벽하게 혼합됩니다. 일관성이 없으면(쉽게 발생함) 조명 계산이 무너지는 거친 솔기가 보입니다. 저는 이를 추상적인 개념이 아니라 UV처럼 검증되어야 하는 실제적인 메시 속성으로 취급합니다.

UV, 탄젠트, 노멀 간의 중요한 연결

탄젠트(T) 및 바이탄젠트(B) 벡터는 UV 레이아웃의 방향에서 직접 계산됩니다. 이것이 가장 중요한 지점입니다: UV가 탄젠트를 결정합니다. UV 솔기가 있으면 본질적으로 탄젠트 공간 솔기가 있습니다. 노멀 맵 데이터는 이 TBN 행렬에 상대적으로 저장됩니다. 따라서 미러링된 UV 아일랜드는 동일한 텍스처 픽셀을 사용하지만 로컬 탄젠트 방향을 반전시켜, 베이커가 올바르게 처리하지 않으면 매핑된 디테일이 반전되거나 "솔기"가 있는 것처럼 보이게 합니다.

제가 실제로 보는 흔한 오해

주요 오해는 탄젠트가 메시의 정점 노멀에만 관련되어 있다는 것입니다. 관련이 있지만 별개입니다. UV 문제로 인해 완벽하게 스무딩된 정점 노멀을 가질 수 있지만 탄젠트가 완전히 손상될 수 있습니다. 또 다른 오해는 베이킹 소프트웨어가 잘못된 탄젠트를 "고쳐줄" 것이라고 믿는 것입니다. 그렇지 않습니다. 제공된 정보를 기반으로 베이크합니다. 베이커는 메시의 탄젠트 공간이 정확하다고 가정하고, 하이폴리 디테일을 그 프레임워크에 베이크합니다. 쓰레기를 넣으면 쓰레기가 나옵니다.

주요 문제점 및 진단 방법

미러링된 UV 및 탄젠트 솔기: 조용한 파괴자

이것은 노멀 맵 솔기의 가장 큰 원인입니다. UV를 미러링하면 대칭선상의 3D 정점들이 동일한 UV 공간에 매핑됩니다. 그러나 3D에서의 기하학적 방향은 미러링되어 계산된 탄젠트 방향에 불일치를 만듭니다. 결과는 미러 축을 따라 보이는 솔기입니다. 진단하기 위해 저는 항상 미러링된 아일랜드를 분리하고 3D 앱(보통 색상 와이어프레임 오버레이)에서 탄젠트 방향을 미리 봅니다. 솔기에서 색상이 급격히 반전되면 문제를 찾은 것입니다.

잘못된 스무딩 그룹 및 하드 에지

스무딩 그룹(또는 하드 에지)은 정점 노멀 생성에 직접적인 영향을 미치며, 이는 다시 탄젠트 계산에 영향을 미칩니다. 하드 에지는 정점 노멀에 불연속성을 만듭니다. 이 하드 에지가 해당 UV 솔기를 가지고 있지 않으면 탄젠트 공간 계산이 모호해져 해당 에지를 따라 셰이딩 아티팩트가 발생할 수 있습니다. 저는 메시의 하드 에지가 UV 솔기 또는 최종 모델에서 진정으로 원하는 날카로운 모서리에 의해 정당화되는지 일관되게 확인합니다.

MikkTSpace 대 레거시: 계산 충돌

MikkTSpace 알고리즘은 이제 보편적인 표준(Unity, Unreal, Blender 및 대부분의 베이커에서 사용됨)입니다. 이 알고리즘은 다른 소프트웨어 간에 일관된 탄젠트를 생성하지만 엄격합니다. 메시의 전체 토폴로지와 UV를 고려합니다. 이전의 "레거시" 방법은 삼각형별로 계산할 수 있습니다. 문제는 메시가 한 방법으로 준비 또는 베이크되고 다른 방법을 사용하는 엔진으로 임포트될 때 발생합니다. 임포트 시 탄젠트가 재계산되어 베이크된 맵이 무효화될 수 있습니다. 항상 대상 엔진이 어떤 표준을 사용하는지 알아두세요.

강력한 탄젠트 공간을 위한 저의 검증된 워크플로우

단계별: 저의 베이크 전 메시 준비

저는 이 체크리스트를 거치지 않고는 절대로 베이크하지 않습니다. 이것은 베이크 후 디버깅 시간을 셀 수 없이 절약해 줍니다.

  1. 깔끔한 토폴로지 마무리: 로우 폴리 메시가 깔끔하고 균일하게 분산된 쿼드(가능한 경우)를 가지고 있으며 퇴화된 삼각형이 없는지 확인합니다.
  2. UV 레이아웃 검토: 의도치 않게 미러링된 아일랜드가 없는지 확인합니다. UV 솔기가 필요하고 하드 에지 또는 자연스러운 재질 경계에 해당하는지 확인합니다. 일관된 텍셀 밀도를 유지합니다.
  3. 스무딩 검토: 기하학이 실제로 날카로운 부분에만 하드 에지를 설정합니다. 불필요한 분할을 피합니다.
  4. 탄젠트 공간 계산: 3D 소프트웨어에서 베이크 전에 MikkTSpace 옵션을 사용하여 탄젠트를 명시적으로 계산합니다. 이를 통해 문제를 미리 보고 수정할 수 있습니다.

3D 소프트웨어에서 탄젠트 검증

대부분의 전문 3D 패키지는 탄젠트 및 바이탄젠트 시각화 기능(종종 메시의 RGB 색상 선으로 표시됨)을 가지고 있습니다. 저는 베이크 전에 항상 로우 폴리 메시에서 이 기능을 활성화합니다. 저는 다음을 확인합니다:

  • 부드러운 전환: UV 아일랜드 전반에 걸쳐 색상이 부드럽게 흘러야 합니다.
  • 갑작스러운 반전: 색상 변화의 날카로운 선은 탄젠트 솔기를 나타내며, 이는 UV 또는 스무딩 수준에서 해결되어야 합니다.
  • 일관된 방향: 탄젠트 방향은 일반적으로 UV의 U 방향을 따라야 합니다.

Tripo AI의 스마트 분할을 사용하여 문제를 피하는 방법

깔끔하고 논리적으로 분할된 기본 메시로 시작하는 것이 절반의 성공입니다. 저의 워크플로우에서 기본 메시를 생성하거나 정제할 때 Tripo AI의 분할 기능을 사용하여 논리적인 부분을 미리 분리합니다. 이 지능형 분할은 종종 자연스러운 UV 솔기 경계(예: 캐릭터의 팔을 몸통에서 분리)와 일치합니다. 이러한 세그먼트를 초기에 정의함으로써, 처음부터 별개의 아일랜드로 언랩하여 나중에 탄젠트 오류가 발생하기 쉬운 지저분하고 임의적인 UV 절단을 피할 수 있습니다. 이는 UV 및 탄젠트 워크플로우를 위한 구조적으로 견고한 기반을 제공합니다.

베이킹 및 엔진별 모범 사례

깔끔한 맵을 위해 제가 절대 건너뛰지 않는 베이킹 설정

저의 베이킹 소프트웨어 설정은 고정되어 있습니다. 탄젠트 공간 노멀 맵의 경우:

  • 탄젠트 공간 일치: 베이커를 "MikkTSpace" 또는 "로우 폴리 메시 탄젠트 사용"으로 설정합니다. 실시간 에셋에는 절대로 "오브젝트 공간" 또는 "월드 공간"을 사용하지 마십시오.
  • 안티앨리어싱: 활성화합니다. 이는 UV 솔기를 따라 발생하는 아티팩트를 부드럽게 하는 데 도움이 됩니다.
  • 레이 거리: 모든 하이 폴리 디테일을 포착하고 의도치 않은 뒷면을 잡지 않도록 조심스럽게 설정합니다.
  • 출력 형식: 압축 아티팩트를 피하기 위해 베이킹에는 32비트 부동 소수점 형식(.EXR 등)을 사용하고, 엔진 사용을 위해 8비트(PNG/TGA)로 변환합니다.

Unity 대 Unreal Engine: 임포트 및 셰이더 팁

베이크 후에도 작업이 끝나지 않습니다. 엔진 임포트는 매우 중요합니다.

  • Unity: 모델 임포트 설정의 노멀 및 탄젠트 섹션에서 "노멀"을 *계산(Calculate)*으로, "탄젠트"를 *MikkTSpace 계산(Calculate MikkTSpace)*으로 설정합니다. 이는 Unity가 내부 MikkTSpace 표준과 일치하도록 탄젠트를 재계산하도록 보장하며, 이는 베이커와 일치해야 합니다. 탄젠트에 "임포트(Import)"를 사용하는 것은 위험합니다.
  • Unreal Engine: 기본적으로 Unreal도 MikkTSpace를 사용합니다. 임포트 시 FBX 임포트 옵션에서 "노멀 계산(Compute Normals)" 및 "탄젠트 계산(Compute Tangents)"이 모두 활성화되어 있는지 확인합니다. 머티리얼에서는 "Tangent" 노드 입력을 올바르게 사용합니다. 대부분의 경우 기본 머티리얼 설정이 이를 처리합니다.

베이크 후 아티팩트 수정: 저의 주요 방법

여전히 솔기나 아티팩트가 보인다면:

  1. 원인 분리: 엔진에서 모델에 중립적인 회색, 높은 값의 재질을 적용합니다. 탄젠트 솔기는 종종 평평하고 밝은 조명 아래에서 가장 잘 보입니다.
  2. 텍스처 수정: 미미한 솔기의 경우, 포토샵에서 노멀 맵의 녹색(Y) 채널의 솔기 부분을 조심스럽게 값을 블렌딩하여 칠할 수 있습니다. 이것은 임시방편일 뿐, 근본적인 해결책은 아닙니다.
  3. 메시/UV 수정: 올바른 해결책은 거의 항상 3D 패키지에 있습니다. 영향을 받는 영역 주변의 UV 솔기 배치 또는 스무딩 그룹을 다시 확인합니다. 종종 하드 에지에 약간의 베벨을 추가하거나 UV 쉘 레이아웃을 조정하면 해결됩니다.
  4. 재베이크: 원본 메시 데이터를 수정한 후 노멀 맵을 다시 베이크합니다. 손상된 베이크를 수동으로 고치려고 시도하는 것보다 빠릅니다.

Advancing 3D generation to new heights

moving at the speed of creativity, achieving the depths of imagination.

무엇이든 3D로 생성
텍스트·이미지를 3D 모델로 변환텍스트·이미지를 3D 모델로 변환
매월 무료 크레딧 제공매월 무료 크레딧 제공
압도적인 디테일 복원력압도적인 디테일 복원력