언리얼 엔진의 머티리얼 시스템은 텍스처, 수학 연산, 파라미터 및 표현식을 연결하여 표면의 룩을 생성할 수 있는 노드 기반 머티리얼 에디터를 제공합니다. 머티리얼 시스템은 머티리얼을 실시간으로 최적화 및 렌더링합니다.
Maya 사용자에게 이 워크플로는 하이퍼셰이드(Hypershade)에서 머티리얼을 빌드하는 방식과 가장 유사하지만, 몇 가지 주요 차이점이 있습니다.
언리얼 엔진의 머티리얼은 다음을 사용하여 빌드됩니다.
리얼타임 프리뷰와 워크플로를 위해 간소화된 노드 기반 머티리얼 에디터
베이스 컬러, 메탈릭, 러프니스, 스페큘러, 노멀 맵과 같은 정의된 프로퍼티 입력을 통해 사실감을 강조하는 물리 기반 렌더링(Physically-Based Rendering, PBR)
프리뷰 뷰포트에서 머티리얼을 변경하면 실시간으로 피드백을 제공하는 리얼타임 라이팅 및 리플렉션
머티리얼 인스턴스를 통해 부모 머티리얼을 리컴파일할 필요 없이 오버라이드를 통해 머티리얼을 조정할 수 있는 파라미터 기반 워크플로
머티리얼의 정의 어트리뷰트
머티리얼의 정의 어트리뷰트는 언리얼 엔진에서 머티리얼이 렌더링되고 라이팅과 표면에 반응하는 방식에 관여하며 프로퍼티, 머티리얼 입력 및 머티리얼 그래프 로직에 의해 결정됩니다.
머티리얼 프로퍼티 및 머티리얼 입력
머티리얼 에디터의 디테일(Details) 패널에서는 머티리얼을 정의하는 어트리뷰트를 구성할 수 있습니다. 만들고 있는 머티리얼 타입에 따라 고려해야 할 주요 프로퍼티가 세 가지 있습니다. 이 프로퍼티는 머티리얼 그래프에서 머티리얼 룩을 구성하는 데 사용할 메인 머티리얼 노드 입력을 정의합니다.
머티리얼 도메인(Material Domain)은 프로젝트에서 머티리얼의 용도를 정의합니다. 예를 들어 3D 표면, 유저 인터페이스, 포스트 프로세싱, 라이트 함수 또는 데칼 등이 있습니다.
블렌드 모드(Blend Mode)는 머티리얼이 주변 백그라운드 컬러 픽셀에 블렌딩되는 방식을 정의합니다. 예를 들어 불투명, 반투명, 마스크드 등 다양한 타입의 블렌딩 옵션이 있습니다.
셰이딩 모델(Shading Model)은 머티리얼이 라이트와 인터랙션하는 방식을 정의하여 표면의 시각적 외형과 라이팅 비헤이비어를 결정합니다. 예를 들어 클로스와 헤어 셰이딩 모델은 디폴트 라이팅포함 셰이딩 모델과는 다른 머티리얼 입력을 사용하여 표면의 사실성을 구현합니다. 일부 셰이딩 모델은 머티리얼에 복잡성과 퍼포먼스 비용을 추가하기도 합니다.
이처럼 머티리얼 프로퍼티를 설정하면 머티리얼 그래프의 메인 머티리얼 노드에서 사용 가능한 입력을 사용하여 머티리얼을 빌드할 수 있습니다. 입력 목록은 작업 중인 머티리얼에 설정된 도메인, 블렌드 모드 및 셰이딩 모델과 직접 연관되어 있습니다. 언리얼 엔진에서 생성한 대부분의 머티리얼은 다음을 사용합니다.
아래는 블렌드 모드만 변경하여 다른 출력을 사용할 때 메인 머티리얼 노드의 입력이 달라지는 예시입니다.
머티리얼 도메인: 표면(Surface) 블렌드 모드: 불투명(Opaque) 셰이딩 모델: 디폴트 라이팅포함(Default Lit) | 머티리얼 도메인: 표면(Surface) 블렌드 모드: 반투명(Translucent) 셰이딩 모델: 디폴트 라이팅포함(Default Lit) | 머티리얼 도메인: 표면(Surface) 블렌드 모드: 마스크드(Masked) 셰이딩 모델: 디폴트 라이팅포함(Default Lit) |
다음은 Maya의 하이퍼셰이드 머티리얼에 사용되는 몇 가지 일반적인 입력 이름과 언리얼 엔진에서 상응하는 이름입니다. 여기에는 머티리얼 그래프에서 로직을 정의할 때 언리얼 엔진의 해당 입력에 대한 특징적인 소스 입력 타입도 포함됩니다.
| Maya 하이퍼셰이드 머티리얼 입력 | 언리얼 엔진 머티리얼 입력 | 일반적인 소스 타입 | 머티리얼 입력 설명 |
|---|---|---|---|
컬러(Color) | 베이스 컬러(Base Color) | 텍스처 또는 컬러 | 표면의 메인 디퓨즈 컬러입니다. |
반사(Reflectivity) | 메탈릭(Metallic) | 스칼라 또는 텍스처 | 표면이 금속(1)인지 비금속(0)인지 여부를 정의합니다. |
러프니스(Roughness) | 러프니스(Roughness) | 스칼라 또는 텍스처 | 표면의 매끄러운 정도를 매끄러움(0)에서 거칢(1)까지 제어합니다. |
반사(Reflectivity) | 스페큘러(Specular) | 스칼라 또는 텍스처 | 비금속 표면의 반사 강도를 비반사(0)에서 반사(1)까지 제어합니다. |
범프(Bump)/노멀(Normal) | 노멀(Normal) | 노멀 맵 텍스처 | 텍스처 맵을 사용하여 표면의 디테일을 적용합니다. |
이미션(Emission)/이미션 컬러(Emission Color)/백열(Incandescence) | 이미시브 컬러(Emissive Color) | 컬러 또는 텍스처 | 표면에서 자체 일루미네이션의 강도를 제어합니다. |
투명(Transparency)/반투명(Translucence) | 오파시티(Opacity) | 스칼라 또는 텍스처 | 표면의 반투명도를 완전 투명(0)에서 불투명(1)까지 조절합니다. |
앰비언트 컬러(Ambient Color) | 앰비언트 오클루전(Ambient Occlusion) | 텍스처 | 간접 섀도의 강도를 제어합니다. |
머티리얼에서 위와 같은 머티리얼 프로퍼티와 해당 입력을 사용하는 방법과 예시에 대해서는 다음 주제에서 자세히 확인할 수 있습니다.
머티리얼 그래프
머티리얼 그래프는 텍스처, 표현식, 수학 연산 및 값을 서로 연결하여 표면의 룩을 정의하는 노드 기반 에디터입니다. 머티리얼은 필요에 따라 표면을 정의하므로 단순하거나 복잡해질 수 있습니다.
자주 사용하게 될 노드 타입은 다음과 같습니다.
텍스처 샘플
이 노드는 컬러 맵 및 노멀 맵과 같은 텍스처 에셋을 사용합니다.
상수
스칼라 프로퍼티를 제어하는 데 유용한 단일 값 수치로, 선형 보간 노드의 입력 값이 되거나 메탈릭, 러프니스 또는 오파시티에 대한 메인 머티리얼 노드의 입력에 직접 연결하게 됩니다.
수학 노드
더하기, 곱하기, 빼기, 나누기, 선형보간(Lerp), 거듭제곱 및 범위제한 등의 수학 연산입니다.
유틸리티 노드
그래프에서 다른 노드와 함께 로직을 빌드하는 용도의 노드입니다. 여기에는 프레넬, 카메라 벡터, 월드 포지션, 텍스처 좌표 등에 대한 표현식이 포함됩니다.
머티리얼 그래프에서의 로직 사용 방법 및 일반 기능에 대한 자세한 내용은 다음 주제를 참고하세요.
머티리얼 및 텍스처에 대한 추가 참고 사항
다음은 언리얼 엔진의 머티리얼 개발과 관련된 주제에 대한 대략적인 개요입니다. 이러한 개념과 애플리케이션에 대한 자세한 내용은 링크된 문서 페이지를 참고하세요.
머티리얼 vs 머티리얼 인스턴스
언리얼 엔진의 머티리얼 시스템은 리얼타임 렌더링 및 라이팅의 커스터마이징과 파라미터화를 염두에 두고 빌드되었습니다. 머티리얼 작업을 최적화하는 방법으로는 우선 머티리얼 인스턴싱을 사용하여 파생된 원본 머티리얼에 영향을 미치지 않으면서 파라미터를 커스터마이징하는 것입니다.
따라서 머티리얼이 오브젝트의 표면 룩을 정의하고 라이팅과 인터랙션하는 방식을 정의하는 주요 에셋이라면, 머티리얼 인스턴스는 부모 또는 베이스 머티리얼의 어트리뷰트와 파라미터를 사용하여 이러한 값을 오버라이드하여 베리에이션과 커스터마이징을 생성하는 역할을 합니다. 또한 모든 오브젝트에 각각 머티리얼을 사용하는 것보다 비용 측면에서 효율적일 수 있습니다.
머티리얼 및 머티리얼 인스턴스의 특성은 다음과 같이 분류할 수 있습니다:
| 머티리얼의 특징 | 머티리얼 인스턴스의 특징 |
|---|---|
노드 기반 에디터를 사용하여 생성됩니다. | 베이스 머티리얼을 오버라이드할 수 있도록 노출된 파라미터 기반의 에디터를 사용합니다. |
컬러, 메탈릭, 러프니스, 오파시티 등 머티리얼의 가능한 모든 특성 입력을 포함합니다. | 오버라이드할 수 있는 베이스 머티리얼의 노출된 파라미터에 대해서만 액세스를 제공합니다. |
머티리얼 변경 시 변경사항을 프리뷰하려면 먼저 리컴파일해야 합니다. | 파라미터의 변경사항에 대한 피드백을 실시간으로 제공하므로 머티리얼을 리컴파일하지 않아도 됩니다. |
머티리얼 그래프는 시각적인 요구 사항을 충족하기 위해서라면 얼마든지 복잡해질 수 있습니다. | 노출된 파라미터에만 액세스할 수 있으므로 퍼포먼스와 워크플로 효율성이 향상됩니다. |
머티리얼을 변경하면 이를 사용하는 모든 오브젝트에 영향을 미칩니다. | 머티리얼 인스턴스를 변경하면 이를 사용하는 오브젝트에만 영향을 미치므로, 유사한 특징을 가진 동일한 베이스 부모를 기반으로 유사한 룩의 표면을 여러 개 만들 수 있습니다. |
머티리얼과 머티리얼 인스턴스를 함께 사용할지 고려하기에 가장 좋은 시기는 디테일만 커스터마이징하면서 컬러, 텍스처, 스케일링 등과 같은 파라미터를 조정하기만 하면 되는 때입니다. 머티리얼 그래프에서의 새 로직을 구성해야 하는 새로운 시각적 비헤이비어와 스타일(예: 불투명 대 반투명)을 정의해야 하면 새 베이스 머티리얼을 생성해야 합니다.
일반적인 경우 비슷한 프로퍼티와 어트리뷰트의 머티리얼에 머티리얼 인스턴스를 사용하는 것과 비교하여 머티리얼은 초기 구성 시간이 더 많이 필요하고 퍼포먼스가 떨어지는 편입니다.
프로젝트에서 머티리얼 인스턴스와 머티리얼을 함께 사용하는 방법에 대한 자세한 내용은 다음 주제를 참고하세요.
텍스처
Maya에서와 마찬가지로 텍스처는 베이스 컬러, 노멀, 러프니스와 같은 머티리얼의 입력 어트리뷰트에 적용하여 표면의 디테일을 정의하는 이미지 맵입니다. 언리얼 엔진에서는 머티리얼을 개발할 때 물리 기반 렌더링이라는 개념과 실시간으로 제공되는 피드백이 더욱 중요해졌습니다.
텍스처를 임포트하면 텍스처 에셋 에디터에서 텍스처를 열어 정보를 확인하고, 세팅을 환경설정하고, 조정할 수 있습니다.
언리얼 엔진에서 텍스처를 최적화하고 보다 효율적으로 작업하려면 다음을 참고하세요.
서드 파티 툴을 사용하여 텍스처를 생성하고 조정한 후에 임포트합니다.
러프니스, 메탈릭, 앰비언트 오클루전 등의 머티리얼 입력에 대한 여러 그레이스케일 텍스처를 채널 패킹 기법을 사용하여 단일 RGB 텍스처로 결합합니다. 이렇게 하면 여러 텍스처가 아닌 단일 텍스처를 레퍼런스하므로 퍼포먼스를 최적화할 수 있습니다.
언리얼 엔진에서 텍스처에 자동으로 텍스처 압축을 적용하지만, 그 방법을 이해하면 퀄리티와 퍼포먼스를 향상할 수 있습니다.
텍스처의 크기에 유의합니다. 리얼타임 퍼포먼스를 높이기 위해서는 텍스처 크기를 2의 거듭제곱(128, 512, 1024 등)으로 유지하는 것이 이상적입니다. 2의 거듭제곱이 아닌 텍스처는 언리얼 엔진의 텍스처 스트리밍 시스템을 사용하지 않으므로 멀리 떨어지면 비주얼 아티팩트가 발생할 수 있습니다.
언리얼 엔진에서 텍스처를 사용하는 방법에 대한 자세한 내용은 다음 주제를 참고하세요.
서브스트레이트 머티리얼 프레임워크
언리얼 엔진의 서브스트레이트 머티리얼 프레임워크는 머티리얼 제작과 관련된 접근법으로, 고정된 셰이딩 모델과 블렌드 모드를 보다 표현력이 뛰어난 모듈형 프레임워크로 대체합니다. 머티리얼 제작은 표준 머티리얼 시스템과 동일하지만, 더는 단일 셰이딩 모델과 블렌드 모드를 사용하는 개별 머티리얼에 얽매이지 않습니다. 이 워크플로에서는 원활한 블렌딩을 통해 한층 복잡하고 독특한 머티리얼을 생성할 수 있습니다.
프로젝트에서의 서브스트레이트 사용과 머티리얼 워크플로에 대한 자세한 내용은 서브스트레이트 머티리얼 개요를 참고하세요.
머티리얼을 사용한 물리 기반 렌더링
언리얼 엔진은 표면과 인터랙션하는 라이트의 비헤이비어를 정확하게 시뮬레이션하는 셰이딩 및 렌더링에 물리 기반 렌더링(Physically Based Rendering, PBR)을 사용합니다. 이는 물리적으로 현실감 넘치는 라이트 인터랙션을 제공하며, 더 중요하게는 햇빛과 인테리어 라이팅 또는 사실적인 표면과 손그림부터 셀 셰이딩 룩에 이르는 스타일라이즈드 이펙트 같은 다양한 라이팅 조건에서 사실적이고 예측 가능한 비주얼을 생성할 수 있게 해줍니다.
언리얼 엔진에서 PBR 머티리얼로 작업할 때 고려해야 할 핵심 원칙은 다음과 같습니다.
자연 라이팅(익스테리어) 또는 인공 라이팅(인테리어) 등 다양한 라이팅 구성에 따라 표면이 정확하고 예측 가능하게 반응하는 사실적인 라이팅 인터랙션
서로 다른 씬과 라이팅 시나리오에서도 올바르게 보이도록 유지되는 머티리얼의 일관성
아티스트가 임의의 값이 아닌 물리적인 프로퍼티를 사용하여 머티리얼을 정의하고, 씬에서 즉각적인 피드백을 통해 리얼타임 환경에서 셰이딩 및 라이팅을 조정할 수 있게 함으로써 어림짐작을 통한 작업을 최소화하는 간소화된 워크플로
자세한 내용은 물리 기반 머티리얼을 참고하세요.
다음 페이지
Maya 사용자를 위한 언리얼 엔진의 라이팅 및 렌더링
Maya 사용자를 위해 언리얼 엔진의 라이팅 및 렌더링 기능에 대해 살펴봅니다.