현실의 모든 사물에는 어느 정도의 광택이 있습니다. 거울, 크롬 또는 유리와 같이 이러한 광택(또는 반사도)이 뚜렷한 경우가 있고, 페인트를 칠한 나무나 매끄럽지만 윤기 없는 돌/콘크리트처럼 은은한 광택이 도는 경우도 있습니다.
언리얼 엔진에서는 메탈릭(Metallic), 스페큘러(Specular), 러프니스(Roughness) 머티리얼 입력을 사용하여 오브젝트의 광택을 시뮬레이션할 수 있습니다. 이 튜토리얼에서는 머티리얼에 광택을 넣는 몇 가지 일반적인 방법을 보여줍니다.
광택
현실에서 표면에 부딪힌 빛의 일부는 흡수되고, 일부는 산란되며, 일부는 바로 반사됩니다. 산란된 빛은 디퓨즈 리플렉션 이라고 합니다. 현실에서 나무 몸통과 같이 잘 반사되지 않는 사물을 볼 때는 대부분 산란되거나 확산된 빛을 보게 됩니다. 바로 반사되는 빛은 스페큘러 리플렉션 이라고 합니다. 크롬 수도꼭지나 물웅덩이에 반사된 자신의 모습이 바로 스페큘러 리플렉션입니다.
언리얼 엔진에서 광택은 기술적 용어가 아닌 미학적 용어입니다. 이 튜토리얼에서 '광택'은 일관되게 거울과 같은 리플렉션을 구현하는 표면의 기능을 가리키며, 이러한 리플렉션의 정확한 프로퍼티가 메탈릭, 스페큘러, 러프니스 입력으로 정의됩니다.
러프니스 및 광택
러프니스 는 머티리얼의 광택을 결정하는 데 있어 중요한 역할을 합니다. 러프니스 입력은 0~1 사이의 값을 받습니다.

- 러프니스 값이 낮을수록 머티리얼이 더 거울 같아 보입니다. 러프니스가 0 일 때 머티리얼은 완벽한 거울처럼 작동합니다.
- 러프니스 값이 높을수록 표면의 광택이 덜해 보입니다. 러프니스가 1 일 때 머티리얼은 완전한 디퓨즈 상태로 보입니다.
아래 이미지는 러프니스가 머티리얼의 광택에 어떤 영향을 미치는지 보여줍니다. 이 경우, 스피어가 빈 환경에 있으므로 모델 위에 보이는 하이라이트는 광원이 직접 반사된 것입니다.

맨 왼쪽의 스피어는 러프니스 값이 0 이며, 광원이 선명하고 정밀한 하이라이트로 반사되었습니다. 러프니스 값이 0 에서 1 로 증가하면서 하이라이트가 흐릿해지고 스피어의 광택이 덜해 보입니다.
메탈릭 및 광택
메탈릭 오브젝트의 뚜렷한 광택 역시 러프니스 값으로 결정됩니다. 러프니스 값이 낮으면 반짝이는 메탈릭 머티리얼이 만들어지며, 러프니스 값이 높으면 광택이 덜한 머티리얼이 만들어집니다. 금속과 비금속 머티리얼 간의 주요 차이점은 스페큘러 리플렉션의 컬러가 계산되는 방식에 있습니다.
- 메탈릭 값이 0 일 때 스페큘러 하이라이트는 환경 및 광원의 컬러를 반사합니다.
- 메탈릭 값이 1 일 때 스페큘러 하이라이트에는 머티리얼의 베이스 컬러가 적용됩니다.


메탈릭 값이 0에서 1로 바뀔 때 리플렉션의 컬러가 베이스 컬러에 어떤 영향을 받는지 눈여겨보세요.
아래의 예시는 러프니스 값이 메탈릭 머티리얼에 어떤 영향을 미치는지 보여줍니다. 이 머티리얼의 메탈릭 값은 1 로, 모든 이미지에서 일관된 값을 유지했습니다. 또한 베이스 컬러가 메탈릭 머티리얼의 리플렉션 컬러에 어떻게 영향을 미치는지 보여주기 위해 베이스 컬러(Base Color) 입력에 파란색 단색을 전달했습니다.

러프니스 값을 0에서 1까지 조정한 메탈릭 머티리얼
맨 왼쪽의 스피어는 러프니스 값이 0 으로, 완벽한 거울처럼 보입니다. 러프니스 값이 0에서 1 로 증가하면서 스피어의 광택이 덜해 보입니다. 머티리얼의 베이스 컬러가 리플렉션의 컬러에 어떤 영향을 미치는지 눈여겨보세요.
스페큘러 및 광택
99%의 사례에서 스페큘러 입력을 조정할 필요가 없습니다. 디폴트값인 0.5 가 대다수 머티리얼에 적절하고 정확한 값이기 때문입니다.
스페큘러 입력도 머티리얼의 광택에 영향을 줄 수 있습니다. 스페큘러 값을 1에 가깝게 높이면 머티리얼의 리플렉션 또는 스페큘러 하이라이트가 더 밝고 강해집니다. 스페큘러 값을 0에 가깝게 낮추면 거의 보이지 않을 정도로 스페큘러 리플렉션이 약해집니다.
아래 이미지는 스페큘러 값이 0에서 1로 바뀌면서 리플렉션 및 스페큘러 하이라이트의 강도에 미치는 영향을 보여주는 예시입니다.

러프니스는 스페큘러 값과 관계없이 머티리얼의 광택에 영향을 줍니다. 스페큘러 값을 1로 설정했더라도 러프니스 값이 1이라면 스페큘러 하이라이트는 여전히 흐릿하여 보이지 않을 것입니다. 메탈릭이 활성화되어 있는 경우 스페큘러 값을 조정해도 머티리얼에 아무런 영향을 주지 못합니다.
디폴트 스페큘러 값인 0.5는 대다수의 실제 사물에서 측정한 반사성을 정확하게 재현합니다. 따라서 제작하는 대부분의 머티리얼에 대한 스페큘러 값을 수정할 필요가 없습니다. 물론 아티스트의 선택에 따라 스페큘러 값을 늘리거나 줄일 수는 있지만, 0.5에서 너무 벗어난 값으로 설정하면 머티리얼의 물리적 타당성이 떨어질 수도 있습니다.
머티리얼에 광택 사용하기
다음 단계를 따라 광택 머티리얼을 생성합니다.
이 튜토리얼에서는 언리얼 엔진 시작용 콘텐츠 에 포함된 텍스처를 사용합니다. 프로젝트에 시작용 콘텐츠가 포함되어 있지 않은 경우 콘텐츠 이주하기 페이지에서 프로젝트 간에 콘텐츠를 이동하는 방법을 확인해 보세요. 이 방법으로 현재 프로젝트에 시작용 콘텐츠를 추가할 수 있습니다.
-
콘텐츠 브라우저에서 우클릭 하고 컨텍스트 메뉴의 기본 에셋 생성(Create Basic Asset) 섹션에서 머티리얼(Material) 을 선택합니다.
-
머티리얼을 ShinyMaterial 로 명명한 다음 섬네일을 더블클릭 하여 머티리얼 에디터에서 엽니다.
-
머티리얼이 열리면 머티리얼 그래프에 다음 텍스처 및 머티리얼 표현식 노드를 추가합니다. 텍스처는 콘텐츠 브라우저의 StarterContent > Textures 폴더에서 찾을 수 있습니다.
- Texture Sample: T_Metal_Gold_D x 1
- Texture Sample: T_Metal_Gold_N x 1
- 스칼라 파라미터 x 3
- Multiply x 1
-
각 스칼라 파라미터에는 고유한 이름과 디폴트값이 필요합니다. 각 스칼라 파라미터를 선택한 다음 디테일 패널에서 아래와 같이 이름을 변경하고 디폴트값(Default Value) 을 설정합니다.
- Metallic: 디폴트값 0
- Specular: 디폴트값 0.5
- Roughness: 디폴트값 0.5
-
모든 머티리얼 표현식 노드를 메인 머티리얼 노드의 해당 입력에 연결합니다. 완료 시 머티리얼 그래프는 다음과 같은 모습입니다.
-
툴바에서 적용(Apply) 및 저장(Save) 버튼을 클릭하여 머티리얼을 컴파일한 다음 머티리얼 에디터를 닫습니다.
-
콘텐츠 브라우저에서 ShinyMaterial 에셋을 찾아 우클릭 하고 컨텍스트 메뉴에서 머티리얼 인스턴스 생성(Create Material Instance) 옵션을 선택합니다.
-
콘텐츠 브라우저에서 머티리얼 인스턴스를 더블클릭 하여 머티리얼 인스턴스 에디터에서 엽니다. 인스턴스 에디터에서 각 파라미터 이름 옆의 박스에 체크하여 글로벌 스칼라 파라미터 값(Global Scalar Parameter Values) 3개를 모두 활성화합니다.
스칼라 파라미터 값 이 활성화되면, 값을 변경하여 그에 따른 변화를 프리뷰 뷰포트에서 바로 확인할 수 있습니다. 예를 들어 메탈릭을 1 로 설정한 다음 러프니스를 0.2 로 설정하면 금처럼 매우 반짝이는 금속을 표현할 수 있습니다. 표면에 있는 약간의 흠집은 노멀 맵을 통해 구현한 것입니다.

러프니스 값을 0.7 로 올리면 리플렉션이 흐려지고 표면의 광택이 다소 떨어져 보이지만, 리플렉션이 완전히 사라지지는 않습니다.

마지막으로 메탈릭을 0 으로, 러프니스를 0.15 로 설정하면 표면이 더 이상 금속처럼 보이지 않고 흠집이 난 플라스틱이나 페인트처럼 보입니다.

결론
머티리얼의 러프니스 값을 환경설정할 때는 대다수의 사물에 어느 정도의 광택이 있다는 것을 기억해야 합니다. 일반적으로 반사성을 띤다고 생각되지 않는 표면일지라도 충분히 강한 광원에 부딪히면 일종의 스페큘러 하이라이트가 나타나는 경향이 있습니다.
대부분의 경우 러프니스 값을 0이나 1로 설정하는 것은 피해야 하며, 대신 두 극단 값 사이에 오는 값을 사용해야 합니다. 러프니스 값에 베리에이션과 노이즈를 더하기 위해 텍스처 마스크를 사용하기도 합니다. 이를 통해 균일하게 광택이 나는 것도, 무광인 것도 아닌 둘이 흥미롭게 조합된 표면이 만들어집니다. 여기에서 텍스처 마스킹에 대해 알아보세요.
늘 반사 머티리얼의 퍼포먼스 비용을 고려해야 하며, 가까이에서 메탈릭 표면을 많이 사용하는 경우 특히 유의해야 합니다. 메탈릭 오브젝트끼리 서로 반사하거나, 메탈릭 오브젝트의 리플렉션끼리 서로 반사하는 경우 머티리얼의 퍼포먼스 비용이 많이 들 수 있습니다.