서브서피스 스캐터링은 빛이 반투명/준 반투명 표면을 통과할 때 산란하는 현상을 설명하는 데 사용되는 용어입니다.
언리얼 엔진은 피부나 밀랍처럼 이러한 상호작용이 필요한 머티리얼 전용으로 서브서피스라는 특수한 셰이딩 모델을 제공합니다.
이번 튜토리얼에서는 머티리얼에서 서브서피스 스캐터링을 사용하기 위해 알아야 할 모든 것을 안내합니다.
서브서피스 셰이딩 모델 활성화하기
몇 가지 단계를 거쳐 머티리얼이 서브서피스 셰이딩 모델을 사용하도록 활성화할 수 있습니다.
-
먼저, 콘텐츠 브라우저 에서 우클릭 한 다음 기본 에셋 생성(Create Basic Asset) 목록에서 머티리얼을 선택하여 머티리얼을 생성합니다. 머티리얼에 M_Subsurface_Scattering 과 같이 머티리얼을 설명하는 이름을 지정합니다. 완료 시 콘텐츠 브라우저 는 다음과 같은 모습입니다.
- 콘텐츠 브라우저에서 에셋을 더블클릭 하여 머티리얼을 엽니다.
-
머티리얼 에디터의 디테일 패널에서 머티리얼의 셰이딩 모델(Shading Model)을 디폴트 릿(Default Lit) 에서 서브서피스(Subsurface) 로 변경합니다.
- 이제 머티리얼을 서브서피스 머티리얼로 사용할 준비가 되었습니다.
서브서피스 머티리얼 구성하기
서브서피스 스캐터링을 활성화한 위 머티리얼을 계속 사용하여 레벨에서 서브서피스 스캐터링을 실제로 볼 수 있도록 기본 머티리얼을 구성해 보겠습니다.
-
작업할 몇 가지 머티리얼 표현식 노드를 배치해야 합니다. 이 예시에서는 다음 노드를 추가합니다.
- Vector Parameter x 2
- Scalar Parameter x 2
일반 머티리얼 노드 대신 파라미터 머티리얼 노드를 사용하는 이유는 이 머티리얼에서 머티리얼 인스턴스를 만들어 에디터에서 보다 손쉽게 미세조정하기 위해서입니다.
-
노드 연결을 시작하기 전에 먼저 명명하고 디폴트값을 설정해야 합니다. 노드의 이름과 디폴트값은 다음과 같습니다.
프로퍼티 이름 값 Base_Color r:1.0, g:1.0, b:1.0 Roughness 0.35 Opacity 0.5 Subsurface_Color r:1.0, b:0, g:0 -
파라미터 표현식 4개의 이름을 모두 변경하고 디폴트값을 설정한 후, 위에 표시된 대로 메인 머티리얼 노드의 해당 입력에 연결합니다.
-
노드 연결이 완료되면 적용(Apply) 버튼을 눌러 머티리얼을 컴파일하고 머티리얼을 저장(Save) 합니다. 컴파일된 후의 모습은 다음과 같습니다.
-
머티리얼 컴파일이 완료되면 머티리얼 에디터 창을 닫아도 됩니다. 그런 다음 콘텐츠 브라우저 에서 머티리얼을 선택하고 우클릭 한 후 메뉴에서 머티리얼 인스턴스 생성(Create Material Instance) 옵션을 선택합니다.
서브서피스 머티리얼 테스트하기
이제 머티리얼 인스턴스가 생성되었으니 레벨에서 머티리얼을 테스트할 수 있습니다.
-
이렇게 하려면 먼저 메인 메뉴로 이동하고 파일(File) 옵션에서 새 레벨(New Level) 을 선택하여 새 빈 레벨을 생성해야 합니다. 레벨 타입을 선택하라는 메시지가 표시되면 빈 레벨(Empty Level) 을 선택합니다.
-
머티리얼을 테스트하기 위해 시작용 콘텐츠의 스태틱 메시를 사용하며, 포인트 라이트(Point Light) 로 전방 라이트를, 매우 밝은 스포트 라이트(Spot Light) 로 후방 라이트를 적용합니다. 이처럼 강한 후방 라이트는 서브서피스 머티리얼이 빛을 어떻게 투과하고 산란하는지 확인하는 데 도움이 됩니다. 라이팅 환경설정은 아래 이미지와 같습니다.
-
콘텐츠 브라우저에서 StarterContent > Props 에 있는 SM_Statue 에셋을 찾아 레벨에 추가합니다. 예시의 위치 및 회전 세팅은 아래와 같습니다.
프로퍼티 이름 값 위치(Location): X:0, Y: 0, Z:0 회전(Rotation): X:0, Y: 0, Z:-23 -
M_Subsurface_Scatterin_Inst 머티리얼 인스턴스를 콘텐츠 브라우저에서 레벨의 스태틱 메시로 드래그하거나 디테일 패널에 있는 조각상의 두 머티리얼 엘리먼트에 드래그하여 조각상에 적용합니다.
-
액터 배치(Place Actors) 메뉴를 열고 포인트 라이트(Point Light) 및 스포트 라이트(Spot Light) 를 모두 레벨에 추가합니다.
-
포인트 라이트를 선택하고 디테일 패널에서 다음과 같은 세팅으로 환경설정합니다.
프로퍼티 이름 값 위치(Location): X:380, Y: 0, Z:80 강도(Intensity): 8.0 cd -
스포트 라이트를 선택하고 디테일 패널에서 다음과 같은 세팅으로 환경설정합니다.
프로퍼티 이름 값 위치(Location): X:-650, Y: 100, Z:-75 회전(Rotation): X:0, Y:20, Z:0 강도(Intensity): 1500 cd
서브서피스 머티리얼 작업하기
이제 서브서피스 머티리얼이 적용되었으니, 머티리얼 인스턴스의 세팅을 미세조정할 차례입니다.
다음 섹션에서는 원하는 결과를 얻기 위해 서브서피스 머티리얼의 외관을 제어하는 방법과 머티리얼 인스턴스의 다양한 옵션을 미세조정하는 방법을 다룹니다.
오파시티 컨트롤
서브서피스 머티리얼의 현재 구성에서는 오파시티 입력이 오브젝트가 스캐터링할 라이트의 양을 제어합니다.
0으로 설정하면 모든 라이트가 스캐터링되고, 1로 설정하면 라이트가 아예 스캐터링되지 않습니다. 다음 예시는 조각상 메시를 통해 스캐터링되는 라이트를 보여줍니다. 오파시티 값은 왼쪽 이미지부터 차례대로 0, 0.35, 0.65로 설정되어 있으며, 오른쪽 이미지는 1.0입니다. 값이 0에서 1로 갈수록 오브젝트를 통과하는 빛의 양이 점점 줄어드는 것을 볼 수 있습니다.

오파시티를 통해 스캐터링되는 라이트를 대부분 제거할 수 있지만, 서브서피스 스캐터링이 여전히 발생할 수 있습니다. 이펙트를 완전히 제거하려면 서브서피스 컬러 값 도 조정해야 합니다. 아래의 서브서피스 컬러 값 섹션에서 더 자세히 알아보세요.
서브서피스 컬러 값
오파시티 입력을 통해 서브서피스 스캐터링이 발생하는 양을 조정할 수 있는 한편, 색 선택 툴(Color Picker) 의 값 슬라이더로도 조정이 가능합니다.
예를 들어, 오파시티 값을 1.0으로 설정하고 서브서피스 컬러 값을 흰색에서 검은색으로 설정하면 아래 예시와 같이 서브서피스 스캐터링이 사실상 비활성화됩니다.



서브서피스 컬러 값 0, 0.5, 1.0
다음은 값 조정을 실시간으로 보여주는 예시입니다. 컬러 값이 빨간색에서 검은색으로 조정됨에 따라 서브서피스 스캐터링 양이 어떤 영향을 받는지 눈여겨보세요.
텍스처를 서브서피스 인플루언스 마스크로 사용하기
텍스처를 마스크로 사용하면 어떤 영역이 서브서피스 스캐터링을 수신하거나 수신하지 않을지 정밀하게 제어할 수 있습니다. 이렇게 하려면 마스크로 사용하고자 하는 텍스처를 머티리얼의 오파시티(Opacity) 채널에 연결하기만 하면 됩니다. 다음 예시에서는 서브서피스 스캐터링이 발생하는 양을 정밀하게 제어하기 위해 마스크 텍스처뿐만 아니라 스칼라 값도 사용하여 마스크의 강도를 제어합니다.

마스크 텍스처는 검은색에서 흰색으로 가는 값을 기준으로 작동합니다. 검은색에 가까운 값은 서브서피스 이펙트가 들어오도록 하는 반면, 흰색에 가까운 값은 서브서피스 이펙트가 들어오지 않도록 합니다.
위 머티리얼에 마스크 텍스처를 사용하면 레벨에서 다음과 같아 보입니다. 큐브의 검은색 점에 주목하세요. 해당 검은색 점은 마스크 텍스처에서 순수한 흰색 값을 사용한 결과입니다.
