◆기타/etc

Unity에서의 Normal Map 활용

진2_ 2023. 11. 6. 18:17
728x90
반응형

 

Unity는 게임 및 시뮬레이션 프로젝트에서 3D 모델의 시각적 품질을 향상시키는 다양한 그래픽 기술을 제공합니다.

이 중에서도 "Normal Map"은 모델의 디테일을 높이는 강력한 도구 중 하나로, 텍스처를 사용하여 입체적인 효과를 구현할 수 있습니다. 이 글에서는 Unity에서 Normal Map을 어떻게 활용하는지에 대해 자세히 알아보겠습니다.

 

Normal Map이란 무엇인가?

 

Normal Map은 3D 모델의 표면을 표현하는 데 사용되는 2D 텍스처입니다. 이 텍스처는 모델의 각 픽셀에 대한 표면의 방향 벡터 정보를 저장하며, 이 정보를 사용하여 입체적인 효과를 시각적으로 구현합니다. Normal Map을 통해 표면의 디테일이 부각되어 모델이 더 생생하게 보이게 됩니다.

 

Normal Map의 작동 원리

 

Normal Map은 각 픽셀에 대한 노멀 벡터(Normal Vector) 정보를 담고 있습니다. 이 노멀 벡터는 표면의 방향을 나타내며, RGB 채널을 통해 저장됩니다. 이 노멀 벡터를 모델의 표면에 적용하고 조명과 상호 작용하여 입체적인 효과를 시뮬레이트합니다. 이렇게 Normal Map을 적용하면 모델의 입체적인 특성이 뚜렷하게 드러나게 되어 시각적 품질이 향상됩니다.

돌 벽 텍스처와 해당 노멀 맵 텍스처

 

Normal Map 생성

 

Normal Map을 만들려면 3D 그래픽 소프트웨어(예: Blender, Maya)를 사용하여 모델의 표면을 디테일하게 렌더링하고, 그 결과를 Normal Map으로 변환해야 합니다. 또는 전용 툴(예: CrazyBump, Substance Painter)을 활용하여 Normal Map을 생성할 수도 있습니다. 이렇게 생성된 Normal Map을 텍스처로 저장한 후 Unity 프로젝트에 가져옵니다.

 

 

Unity에서 Normal Map 적용 Unity에서 Normal Map을 모델에 적용하는 과정은 비교적 간단합니다. 모델을 선택하고, 해당 모델의 머터리얼(Material)에 Normal Map 텍스처를 할당하면 됩니다. 또한 Shader를 선택하여 Normal Map을 올바르게 해석하도록 설정해야 합니다. Unity는 이 정보를 활용하여 노멀 벡터를 계산하고 빛과 그림자를 모델에 반영합니다.

 

시각적 향상

 

Normal Map을 적용하면 모델의 디테일이 현저히 향상됩니다. 입체적인 빛과 그림자 효과를 통해 모델이 더 현실적으로 보이게 됩니다. 이로써 모델은 더 생동감 있게 느껴지며, 플레이어에게 더 몰입감을 제공합니다.

 

성능 고려

 

Normal Map은 시각적 품질을 향상시키지만, 성능에 영향을 미칠 수 있습니다. 따라서 모바일 기기와 같은 제한된 성능을 가진 플랫폼에서는 성능을 최적화하는데 주의해야 합니다. Unity에서는 LOD(레벨 오브 디테일) 설정 및 퀄리티 레벨을 조절하여 이를 관리할 수 있습니다.

유의할 점 Normal Map을 제대로 작성하려면 모델의 정점(Vertex)과 텍스처의 UV 맵을 정확하게 일치시켜야 합니다. 이렇게 하지 않으면 모델에 이질감이 생길 수 있으며, 원하는 시각적 효과를 얻기 어려울 수 있습니다.

 

Unity Normal Map 3D 모델의 시각적 품질을 향상시키는 중요한 역할을 합니다. 게임 시뮬레이션 프로젝트에서는 Normal Map 활용하여 모델의 입체적 특성을 부각시키고 시각적 품질을 높일 있습니다. 기술을 숙지하고 활용하면 뛰어난 게임 환경 시뮬레이션 경험을 제공할 있을 것입니다. Unity Normal Map 디테일을 강조하고 모델을 현실적으로 만드는 열쇠 하나입니다.

 

 

관련 참고 문서  : https://docs.unity3d.com/kr/2021.3/Manual/StandardShaderMaterialParameterNormalMap.html

 

노멀 맵(범프 매핑) - Unity 매뉴얼

노멀 맵은 Bump Map 타입이며, 실제 지오메트리로 표현되는 것처럼 광원을 받는 범프, 홈 및 스크래치 등의 표면 디테일을 모델에 추가하는 데 사용할 수 있는 특별한 텍스처 종류입니다.

docs.unity3d.com

 

728x90
반응형