머티리얼에서 서브서피스 스캐터링 사용법

머티리얼의 서브서피스 스캐터링 모델 사용법입니다.

Windows
MacOS
Linux

서브서피스 스캐터링은 빛이 반투명 표면을 통과할 때 벌어지는 현상을 나타내는 용어입니다. 언리얼 엔진 4 (UE4) 는 피부나 왁스처럼 이러한 반응이 필요한 머티리얼에 전용으로 사용되는 Subsurface (서브서피스)라는 셰이딩 모델 이 제공됩니다. 이 하우투 안내에서는 머티리얼에서 서브서피스 스캐터링을 사용하는 법에 대해 알아야 할 모든 것을 안내해 드리겠습니다.

서브서피스 셰이딩 모델 켜기

머티리얼에 서브서피스 셰이딩 모델을 사용할 수 있도록 하는 방법은 다음과 같습니다.

  1. 먼저 콘텐츠 브라우저 에서 우클릭 한 다음 기본 애셋 생성 목록에서 머티리얼을 선택하여 머티리얼을 새로 만듭니다. 생성되고 나면 머티리얼 이름을 짓습니다. 이 예제에서는, 머티리얼 이름을 MAT_Subsurface_00 로 합니다. 완료되면 콘텐츠 브라우저 는 다음과 같은 모습입니다.

    SSM_Create_New_Material.png

  2. 다음, 머티리얼을 더블클릭 합니다.

    SSM_Open_New_Material.png

  3. 머티리얼이 열렸으면, 머티리얼의 Shading Model (셰이딩 모델)을 Default Lit 에서 Subsurface 로 변경합니다.

  4. 이제 머티리얼을 서브서피스 머티리얼로 사용할 준비가 되었습니다.

서브서피스 머티리얼 구성하기

위의 서브서피스 스캐터링이 가능한 머티리얼을 가지고 계속해서, 레벨에서 실제 서브서피스 스캐터링을 볼 수 있도록 기본 머티리얼을 구성해 봅시다.

  1. 무언가 작업할 것이 있어야 하니 머티리얼 표현식 노드를 조금 놔 줘야 하겠습니다. 이 예제에서 추가할 노드는 다음과 같습니다.

    • Vector Parameter x 2

    • Scalar Parameter x 2

    SSM_Adding_Nodes.png

    일반 머티리얼 노드가 아닌 파라미터 머티리얼 노드를 사용하는 이유는, 이 머티리얼에서 머티리얼 인스턴스를 만들어 에디터 안에서의 트윅 작업을 쉽게 할 수 있도록 하기 위해서입니다.

  2. 노드 연결을 시작하기 전, 먼저 이름과 기본값 설정을 해 줘야 합니다. 노드의 이름과 기본값은 다음과 같습니다.

    SSM_Named_Nodes.png

    프로퍼티 이름

    Base_Color

    r:1.0, g:1.0, b:1.0

    Roughness

    0.35

    Subsurface _Amount

    0.5

    Subsurface_Color

    r:1.0, b:0, g:0

  3. 머티리얼 노드 이름과 데이터를 제대로 채우고 난 후에는, 그 노드들을 메인 머티리얼 노드에 연결할 차례입니다. 노드를 메인 머티리얼 노드에 연결하려면, 노드 오른편 에 있는 하양 원좌클릭 합니다. 좌클릭 을 유지한 상태로 마우스를 오른쪽 으로 끌면, 연결선이 나타납니다. 메인 머티리얼 노드에 사용하려는 입력까지 좌클릭 유지 상태로 마우스를 오른쪽으로 끕니다. 사용하려는 입력 위에 커서를 놓고 좌클릭 을 놓으면 연결됩니다.

  4. 모든 노드가 연결되었으니, 적용 버튼을 눌러 머티리얼이 컴파일되도록 합니다. 컴파일이 완료된 모습은 이와 같습니다.

    SSM_Finshed_Material.png

  5. 머티리얼이 컴파일되고 나면, 머티리얼 창을 닫아도 됩니다. 콘텐츠 브라우저 안에서 머티리얼을 선택한 다음 우클릭 하고 메뉴에서 머티리얼 인스턴스 생성 을 선택합니다.

서브서피스 머티리얼 적용하기

  1. 머티리얼 인스턴스가 생성되었으니, 새로 만든 머티리얼을 테스트해 볼 차례입니다. 그러기 위해서는 먼저 메인 메뉴 - 파일 - 새 레벨 을 선택하여 작업할 빈 레벨을 새로 만들어야 합니다. 레벨 유형을 묻는 창에서는, 빈 레벨 을 선택합니다.

  2. 새 레벨이 생성되었으니, 이제 서브서피스 머티리얼이 어떻게 보이는지 테스트할 수 있도록 라이트를 조금 추가해야 합니다. 먼저 추가할 라이트는 포인트 라이트 입니다. 씬에 포인트 라이트를 추가하려면, 먼저 포인트 라이트를 찾아야 하는데, 모드 메뉴에서 라이트 아래에 보면 있습니다. 포인트 라이트를 찾았으면, 좌클릭 하고 유지 상태로 마우스를 씬에 끌어 온 다음 버튼을 놓으면 추가됩니다. 씬에 추가된 이후에는 포인트 라이트에 좌클릭 하면 선택이 가능합니다. 그 후 다음과 같이 값을 입력해 줍니다.

    프로퍼티 이름

    Location:

    X:230, Y: -67, Z:79

    Intensity:

    128

    다음으로 스포트 라이트 를 추가합니다. 스포트 라이트는 모드 패널의 라이트 섹션에 포인트 라이트 바로 아래 있습니다. 포인트 라이트와 마찬가지로 스포트 라이트를 추가해 줍니다. 스포트 라이트가 추가되면, 다음과 같이 값을 입력해 줍니다.

    프로퍼티 이름

    Location:

    X:-320, Y: 100, Z:-270

    Rotation:

    X:0, Y:50, Z:0

    Intensity:

    39764

    완료되면, 다음과 같은 모습입니다.

  3. 라이트를 전부 추가했으니, 이제 테스트할 스태틱 메시를 추가하면 됩니다. 이 예제에서는 다음 메시를 사용하겠습니다.

    StaticMesh'/Game/StarterContent/Props/SM_Chair.SM_Chair'

    SM_Chair 메시를 찾을 수 없는 경우, 프로젝트에 시작용 콘텐츠를 포함시키지 않았기 때문일 것입니다. 시작용 콘텐츠 관련 상세 정보는, 시작용 콘텐츠 문서를 참고하세요.

    메시를 찾았으면, 콘텐츠 브라우저 에서 레벨로 끌어 놓습니다. 레벨에 배치됐으면, 그 위치를 월드의 0,0,0 으로 설정합니다. 완료되면, 레벨 뷰포트가 이런 모습일 것입니다.

    SSM_Adding_Meshes.png

  4. 레벨에 스태틱 메시가 배치되었으니, 이제 거기에 서브서피스 머티리얼을 적용하면 됩니다. 그러기 위해서는 먼저 콘텐츠 브라우저 에서 서브서피스 머티리얼을 찾아야 합니다. 머티리얼을 찾았으면, 콘텐츠 브라우저 에서 메시로 끌어 놓아 적용합니다.

서브서피스 머티리얼 작업하기

서브서피스 머티리얼이 적용되었으니, 머티리얼 인스턴스의 세팅 트윅 작업을 할 차례입니다. 다음 부분에서는 원하는 결과를 얻기 위해 서브서피스 머티리얼의 외양을 제어 및 머티리얼 인스턴스의 다양한 옵션에 대한 트윅 방법을 알아보도록 하겠습니다.

오파시티 컨트롤

현재 서브서피스 머티리얼 구성 상태에서는, 오파시티 입력으로 오브젝트에 흩어지는 빛의 양을 제어합니다. 값이 0 이면 모든 라이트가 흩어지고, 1 이면 흩어지지 않습니다. 다음 예제에서는 의자 등받이 부분에 오파시티 값을 각기 다르게 설정했는데, 왼쪽은 0, 가운데는 0.5, 오른쪽은 1.0 입니다. 수치가 0 에서 1 로 가면서 오브젝트를 통과하는 빛의 양이 점점 줄어드는 것이 보입니다. SSM_Different_Opacity_Settings.png

오파시티로 흩어지는 빛을 제거하는 데 크게 도움이 되기는 하지만, 약간의 서브서피스 스캐터링이 남아있는 것을 볼 수 있습니다. 이러한 이펙트를 완전히 제거하기 위해서는, 서브서피스 컬러 값도 조절해 줘야 합니다 (이에 대해서는 아랫 부분에서 자세히 다루겠습니다).

서브서피스 컬러 값

오파시티 입력을 통해 서브서피스 스캐터링 발생량을 조절할 수는 있지만, 색 선택 툴 슬라이더를 사용하여 서브서피스 컬러 값도 조절할 수 있습니다. 예를 들어 오파시티를 1.0 으로 설정하고 서브서피스 컬러 값을 하양에서 검정으로 설정하면, 아래 예제와 같이 실질적으로 서브서피스 스캐터링이 꺼지는 효과가 납니다. SSM_Color_Value_Example_00.png

그 반대로 하면, 즉 색 선택 툴 슬라이더를 하양이 되도록 조절하면, 아래 예제에서처럼 서브서피스 스캐터링을 다시 켤 수 있습니다. SSM_Color_Value_Example_01.png

실시간으로 값을 조절하는 예제는 이렇습니다. 색을 빨강에서 검정으로 조절하면서, 서브서피스 스캐터링 영향력이 변하는 것이 보입니다.

텍스처를 서브서피스 인플루언스 마스크로 사용하기

텍스처를 마스크로 사용하면 어떤 부분이 서브서피스 스캐터링을 받고 받지 않는지 좀 더 미세한 제어가 가능합니다. 그러기 위해서는, 마스크로 사용하고자 하는 텍스처를 머티리얼의 오파시티 채널에 꽂기만 하면 됩니다. 다음 예제에서는, 마스크 텍스처를 사용할 뿐만 아니라, 스칼라 값을 사용하여 마스크 강도를 조절함으로써 벌어지는 서브서피스 스캐터링 양에 대한 좀 더 미세한 제어가 가능합니다.

SSM_Masked_Texture.png

마스크 텍스처는 검정에서 하양으로 가는 값에 따라 작동합니다. 검정에 가까운 값은 서브서피스 효과가 나도록 하는 반면, 하양에 가까운 값은 서브서피스 효과가 나오지 않도록 합니다.

위 머티리얼에서 마스크 텍스처를 사용하면 레벨에 어때 보이는지는 이와 같습니다. 의자의 검정 부분을 보세요. 그 검정 부분은 마스크 텍스처에서 순백색을 사용한 결과입니다.

SSM_Masked_Texture_Result.png

태그

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼