이번 비디오 튜토리얼에서는 Adobe Stock에서 다운로드한 3D 모델을 Unity에 가져와서, built-in Shader와 Universal Render Pipeline 양쪽에 대해 PBR Textures를 설정하는 방법을 알아보겠습니다.
영상 자막 텍스트
안녕하세요! 이번 비디오 튜토리얼에서는 Adobe Stock에서 다운로드한 3D 모델을 Unity에 가져와서, built-in Shader와 Universal Render Pipeline 양쪽에 대해 PBR Textures를 설정하는 방법을 알아보겠습니다. 이 두 렌더링 엔진 사이에는 약간의 차이가 있으며, 본 튜토리얼에서 자세히 설명드릴 예정이니 끝까지 시청하시는 것을 권장드립니다. High Definition Rendering Pipeline에 대해서는 Universal Render Pipeline과 크게 다르지 않기 때문에 따로 다루지 않겠습니다.
실제 예제로는 Business Jet이라는 3D 모델을 사용하겠습니다.
모델의 Textures는 PNG 형식이며, PBR Metallic Workflow에 맞춰 채널이 분리되어 있습니다. 따라서 Base Color, Normal, Metallic, Roughness, Glow, Opacity 채널용 Textures가 각각 제공됩니다.
하지만 Unity의 기본 material은 Smoothness 정보를 Metallic Texture에 통합하는 방식으로 요구합니다. 그리고 Smoothness는 Adobe 패키지에서 제공되는 Roughness와는 반대 개념입니다.
외부 소프트웨어를 사용해서 Metallic 정보를 변환하고 패키징하는 것도 가능하지만, Unity에서는 Metallic Workflow의 각 Texture를 개별 이미지로 지정할 수 있는 방법이 있으며, 곧 그 방법을 살펴보겠습니다.
이제 Unity에서 이러한 3D 모델을 가져오고 설정하는 방법을 살펴보겠습니다. 우선 built-in shader가 사용된 프로젝트에서 시작하겠습니다.
먼저 Adobe에서 다운로드한 패키지에서 OBJ 파일과 MTL 파일을 Project 탭으로 드래그합니다. MTL 파일은 어떤 material을 생성할지와 이를 3D 모델에 어떻게 매핑할지를 지정하는 데 필요합니다.

실시간으로 변경 사항을 보기 위해 Project에서 3D 모델을 Scene으로 드래그한 다음, F 키를 눌러 화면에 맞게 모델을 프레이밍합니다.

Unity는 가져온 3D 모델 내부에서 material과 texture를 찾으려고 시도하지만, 이 경우 texture는 통합되어 있지 않습니다.
따라서 Project에서 3D 모델을 선택한 다음, Inspector 창에서 Materials 탭을 엽니다.

Location 메뉴에서 Legacy 옵션을 선택한 다음, Apply를 클릭합니다.

Unity는 Project 창에 Materials라는 새 폴더를 생성합니다. 이 폴더 안에는 이미 3D 모델에 연결된 두 개의 material이 생성되지만, Texture는 포함되어 있지 않습니다.

이제 Adobe 패키지에서 필요한 Texture들을 이 폴더로 드래그합니다. 이 오브젝트에는 빛을 발하는 material이 포함되지 않기 때문에 Glow Texture는 가져오지 않겠습니다.

이제 완전히 불투명한 material부터 선택해 보겠습니다.
Inspector 창에서 Shader 메뉴를 클릭한 다음 Autodesk Interactive 옵션을 선택합니다.

보시다시피 Rendering Mode에 대한 몇 가지 옵션이 있으며, 이 경우 Opaque로 그대로 두겠습니다. 그리고 가장 중요한 것은, PBR Metallic Workflow의 개별 Texture를 직접 지정할 수 있다는 점입니다!

따라서 Adobe 패키지에서 가져온 Texture들을 Shader의 해당 채널에 연결해 줍니다.
특히 Normal Map의 경우, 가져오자마자 나타나는 Fix Now 버튼을 클릭해 설정을 완료해 줍니다.

또한 Base Color와, 여기에서는 Albedo로 표시된 항목, 그리고 Roughness의 외형과 관련하여 몇 가지 주의할 점이 있습니다.
Base Color는 사실 Texture와 그 옆에 있는 색상이 혼합된 결과입니다. 따라서 해당 색상을 클릭하고 순수한 흰색으로 변경해 주면, Texture의 색상만 화면에 표시됩니다.

다양한 색상을 사용해 Texture와 혼합하면 어떤 효과가 나타나는지도 실험해 볼 수 있습니다.

Roughness Texture의 최종 결과가 원하는 느낌과 다르다면, Project에서 해당 Texture를 선택한 후 Inspector 창에서 sRGB Color Texture 옵션을 해제하고 Apply를 클릭하여 결과를 확인해 보세요.

이러한 작업은 Glass material에도 반복해야 하지만, 이번에는 Autodesk Interactive를 선택하고 Rendering Mode를 Transparent로 설정해야 한다는 차이점이 있습니다.

이 모드에서는 Base Color Texture의 Alpha 채널을 사용하여 투명도를 설정할 수 있지만, 이 Texture를 가져오지 않고 Albedo 옆의 색상 슬롯에서 Alpha 값을 0으로 수동 설정하는 것도 가능합니다.

이제 다른 Texture들도 적용해야 합니다. 특히 Roughness와 Normal Map Texture의 경우에는 앞서 언급한 대로 sRGB 박스를 해제하고 Fix Now 버튼을 클릭하는 것을 잊지 마세요.

이제 Universal Rendering Pipeline으로 처음부터 생성된 프로젝트에 모델과 Texture를 가져오는 방법을 살펴보겠습니다.
3D 모델의 가져오기 및 material 생성 과정은 built-in shader의 경우와 동일하게 진행됩니다. 따라서 OBJ 파일과 MTL 파일을 모두 Project 창으로 가져옵니다.

그런 다음, 3D 모델의 Inspector 창에 있는 Materials 탭에서 Legacy 옵션을 선택하고 Apply를 클릭하면, Unity가 모델에 지정할 수 있는 material들이 포함된 Materials 폴더를 생성합니다.

이제 Materials 폴더에 기존 material들과 연결할 Texture 이미지들을 가져옵니다.

그러나 이 시점에서는 각 material의 Shader를 Autodesk Interactive로 직접 변경할 수 없습니다. 이 옵션은 built-in shader에서만 사용할 수 있기 때문입니다.

걱정하지 마세요! Autodesk Interactive는 Shader 메뉴의 Universal Render Pipeline 옵션 중에도 포함되어 있습니다.

또한 base, Masked, Transparent의 세 가지 서로 다른 모드가 제공되는 것을 확인할 수 있습니다.
비행기의 불투명한 material에는 base 모드를 사용할 것이며, 창에는 Transparent material을 사용할 것입니다.

이제 Universal Render Pipeline의 Autodesk Interactive material에서 Texture들을 해당 채널에 연결해 보겠습니다.
Shader는 Texture들을 자동으로 적용하지 않기 때문에, 각 Texture에 대해 Use Map 체크박스를 직접 선택해 주어야 합니다.

Normal Map의 경우에는 Unity에서 Fix Now 버튼을 클릭하여 Texture를 바로 수정할 수 있는 옵션을 제공할 것입니다.

만약 이 버튼이 나타나지 않는다면, Project에서 해당 Texture를 선택하고 Inspector 창의 Texture Type 메뉴에서 Normal Map으로 올바르게 설정하여 수동으로 수정할 수 있습니다.

Roughness Texture에 대해서는 built-in shader의 경우와 동일한 주의사항이 적용됩니다. 따라서 Inspector 창에서 sRGB 옵션을 해제하고 변경 사항을 적용해야 할 수도 있습니다.

Glasses material의 경우에도 유사한 작업을 수행해야 하지만 몇 가지 차이점이 있습니다. 우선 Shader는 Autodesk Interactive Transparent 유형으로 설정되어야 합니다.

Base Color, Normal Map, Metallic, Roughness Texture는 앞에서 설명한 것처럼 설정하면 되지만, 투명도 Texture인 Opacity에 대해서는 중요한 차이점이 있습니다.
Autodesk Interactive Transparent의 경우, Use Opacity Map 체크박스를 선택하면 Base Color Texture에 포함된 투명도 채널을 사용할 수 있습니다.
하지만 우리는 Opacity 채널을 위한 별도의 Texture를 가지고 있습니다. 이럴 땐 어떻게 해야 할까요? material이 완전히 투명한지 여부에 따라 두 가지 방법이 있습니다.
material이 완전히 투명한 경우, 지금처럼, Texture를 사용하지 않고 Opacity 필드에서 투명도 값을 직접 지정할 수 있습니다. 예를 들어 Opacity 값을 0으로 설정합니다.

material이 일부 영역만 투명한 경우에는 Autodesk Interactive Masked shader를 사용하는 것이 좋습니다. 이 모드에서는 Opacity Texture를 사용할 수 있습니다.


이러한 경우에도 built-in shader에서와 마찬가지로 Adobe 패키지에 포함된 Glow map을 Emissive 채널에 사용할 수 있습니다. 이번 프로젝트에서는 필요하지 않아 사용하지 않았지만, 이 옵션이 있다는 것을 알아두면 좋습니다.

이 튜토리얼이 도움이 되었기를 바랍니다! 곧 다시 만나요!