이미시브 머티리얼 입력 사용

언리얼 엔진 4 의 머티리얼 에디터에서 이미시브 머티리얼 입력을 사용하는 법에 대한 안내입니다.

Windows
MacOS
Linux

프로젝트 개발 도중 Self Illuminated Material (자체 발광 머티리얼) 또는 글로우 머티리얼 필요성이 생기게 마련입니다. 언리얼 엔진 4 (UE4) 안에서 자체 발광 머티리얼은 Emissive Material (이미시브 머티리얼)이라고 알려져 있습니다. 이 글에서는 이미시브 입력을 사용하도록 머티리얼을 구성하는 방법과, 이미시브 입력을 사용하여 제작중인 월드를 실제로 라이팅하는 법에 대해서도 다뤄보겠습니다.

이미시브 라이팅

Emissive Lighting (이미시브 라이팅) 또는 UE4 에서 이미시브 머티리얼이란, 실제 라이팅은 아니지만 빛을 비추는 듯한 효과를 내는 머티리얼을 아티스트가 매우 저렴하고 효율적으로 만들 수 있는 방식입니다. 이미시브 머티리얼에서 구현되는 방식은, 아티스트가 이미시브 입력에 1.0 이상으로 값을 올려주면 머티리얼을 HDR 범위로 밀어올려주어, 매우 밝은 광원을 볼 때와 같은 블룸 이펙트를 낼 수 있습니다.

라이팅포함 & 라이팅제외 이미시브 머티리얼

이미시브 머티리얼은 자체 발광이므로, Lit (라이팅포함) 및 Unlit (라이팅제외) Shading Model (셰이딩 모델) 양쪽에 사용 가능합니다. 하지만 이미시브 머티리얼은 가급적 라이팅제외 셰이딩 모델을 사용해야 하는데, 셰이더 렌더링 비용이 저렴하기 때문입니다. 이미시브 렌더링 방식에 있어 두 셰이딩 모델간의 시각적 차이가 없기 때문이기도 합니다. 그래서 가급적이면, 라이팅제외 셰이딩 모델을 사용하는 쪽이 낫습니다.

EM_Shading_Model.png

  • 라이팅포함 셰이딩 모델 사용 시기: 이미시브 머티리얼을 베이스 컬러나 노멀 맵 입력과 같은 다른 셰이더 입력과 조합해서 사용해야 하는 경우에는 라이팅포함 셰이딩 모델을 사용해야 합니다. 라이트가 달린 총에 대한 머티리얼을 만드는 경우를 예로 들 수 있겠는데, 노멀 맵과 다른 셰이더 입력이 레벨의 라이팅과 정상 작동하도록 하려면 라이팅포함 셰이딩 모델을 사용하는 것이 좋을 것입니다.

  • 라이팅제외 셰이딩 모델 사용 시기: 이미시브 머티리얼을 다른 셰이더 입력과 사용할 필요가 없는 경우에는 라이팅제외 셰이딩 모델을 사용해야 합니다. 이에 대한 예로써, 카드형 라이트나 전구의 표면 영역같은 광원 부분의 엄격한 시뮬레이션을 위해 이미시브 머티리얼을 사용하는 경우를 들 수 있습니다.

이미시브 머티리얼 생성

이미시브 머티리얼을 만드는 것은 UE4 의 다른 머티리얼을 만드는 것과 다를 것이 없습니다. 여기서는 이미시브 입력을 활용하는 머티리얼 구성에 필요한 모든 것을 다루도록 하겠습니다.

여기서 사용되는 모든 콘텐츠는 프로젝트에 시작용 콘텐츠 를 포함시킨 경우 찾을 수 있는 것들입니다. 여기 보이는 기법은 어느 텍스처로 해도 되지만, 그대로 따라해 보시려는 경우 프로젝트에 시작용 콘텐츠 가 포함되어 있는지 확인하시기 바랍니다.

  1. 먼저 콘텐츠 브라우저우클릭 하면 뜨는 메뉴에서 기본 애셋 생성 아래 머티리얼 을 선택합니다. 선택하고 나면 새로운 머티리얼 이 생성되고, 이름을 Emissive_Material 로 짓습니다.

  2. 머티리얼이 생성되고 나면 콘텐츠 브라우저 에서 머티리얼에 마우스 왼쪽 버튼 으로 더블클릭 하여 열어줍니다. 열리고 나면 다음 머티리얼 표현식 노드와 텍스처를 추가해 줍니다.

    • Vector Parameter x 2

    • Scalar Parameter x 2

    • Texture - T_Tech_Panel_M

    • Texture - T_Tech_Panel_N

    EM_Adding_Nodes_&_Textures_To_Material.png

    이 하우투에 사용되는 Tech_Panel 텍스처를 찾을 수 없다면, 프로젝트에 시작용 콘텐츠 가 포함되어 있지 않다는 뜻입니다. 이 콘텐츠를 찾으려면, 시작용 콘텐츠를 포함시켜 프로젝트를 하나 더 만든 다음 이주 툴 을 사용하여 그 프로젝트의 텍스처를 현재 프로젝트로 이주시키면 됩니다.

  3. 머티리얼 표현식 노드가 추가되었으면, 머티리얼 구성을 시작할 차례입니다. 먼저 해 줘야 할 작업은, 머티리얼 표현식 노드에 이름을 짓고 데이터를 채워줘야 합니다. 사용할 값은 다음과 같습니다.

    • Vector Parameter - Base_Color - 1, 1, 1

    • Vector Parameter - Emissive_Color - 1, 0, 0

    • Scalar Parameter - Roughness - 0.5

    • Scalar Parameter - Emissive_Strength - 1.0

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

    EM_Naming_Nodes.png

  4. 머티리얼 표현식 노드 이름을 짓고 데이터를 채웠으니, 이제 모든 것을 연결해 줄 차례입니다. 선이 제대로 연결되었나 확인하는 데 있어 가장 중요한 부분은 이미시브 입력인데, 그 부분이 없으면 이미시브가 작동하지 않기 때문입니다. 완료된 머티리얼 모습은 다음과 같을 것입니다.

    EM_Completed_Material.png

  5. 머티리얼 연결이 완료되었으니, 머티리얼 에디터 상단의 적용 & 저장 버튼을 눌러 머티리얼을 컴파일 하고 저장 하도록 합니다. 이 작업이 완료되면 머티리얼을 닫아도 됩니다.

    EM_Save_&_Compile.png

  6. 머티리얼 컴파일을 완료하고 닫은 후에는, 콘텐츠 브라우저 에서 머티리얼을 찾은 다음 우클릭 하고 메뉴에서 머티리얼 인스턴스 생성 옵션을 선택하여 Emissive_Material 머티리얼에서 머티리얼 인스턴스를 생성합니다.

    EM_Create_New_Material_Instance.png

  7. 머티리얼 인스턴스가 생성되고 나면, 마우스 왼쪽 버튼 으로 더블클릭 하여 열어줍니다. 열리면 Parameter Groups 섹션을 살펴봅니다. 여기서는 Emisive_Color 나 Emissive_Strength 처럼 부모 머티리얼에 노출된 컨트롤을 전부 찾을 수 있습니다.

    EM_Emissive_Material_Instance.png

  8. 파라미터를 변경하려면, 파라미터 옆의 체크표시 박스에 좌클릭 하여 파라미터를 먼저 활성화시켜 줘야 합니다. 클릭한 이후에는 체크 표시가 박스와 이름 양쪽에 추가되어 입력 영역이 더이상 회색으로 탈색되어 보이지 않습니다. 이제 원하는 값을 입력해 주고 머티리얼 인스턴스를 저장하기만 하면 됩니다.

이미시브 입력에 텍스처 또는 스칼라

이미시브 입력에 텍스처, 수치, 또는 그 둘을 조합해서 입력할 수 있습니다. 입력하는 것은 머티리얼의 필요에 따라 달라집니다. 이미시브 머티리얼이 그냥 라이트 시뮬레이션을 위한 것이라면, 그냥 텍스처 대신 수치를 사용해 주면 됩니다. 하지만 오브젝트의 라이트에 대한 시뮬레이션이라면, 텍스처를 이미시브 마스크로 사용해 줘야 마스크 텍스처에 정확한 발광 부분을 정의할 수 있습니다. 위 예제에서는 텍스처를 사용하여 머티리얼의 발광 부분을 정의하기에 이미시브 마스크를 사용했습니다.

맵 생성 테스트

  1. 더 이상 진행하기 전, 이미시브 머티리얼을 실제로 확인할 수 있도록 작은 테스팅 방을 먼저 구성해 줘야 하겠습니다. 그러기 위해 파일 -> 새 레벨 로 뜨는 새 레벨 대화창에서 디폴트 옵션을 선택하여 새 레벨을 만들어 줍니다.

    EM_Create_New_Level.png

    키보드의 CTRL + W 키를 눌러서도 새 레벨을 만들 수 있습니다.

  2. 레벨이 생성되었으면, 기존 바닥 SM_Template_Map_Floor 를 선택한 다음 Ctrl+W 를 네 번 쳐서 복제해 줍니다. 바닥을 복제한 이후에는 한 쪽 면은 없애고 지붕은 약간 간격을 두어 재미난 라이팅 조건이 되도록 방을 만들어 줍니다. 완료되면 다음과 같은 모습일 것입니다. EM_Testing_Level.png

  3. 방이 완료되면, CTRL + S 키를 눌러 작업 내용을 저장합니다.

이미시브 머티리얼 실용

  1. 방이 구성되었으니, 테스팅에 쓸 메시를 조금 추가해 줄 차례입니다. Starter Content 폴더 안에 보면 Shapes 라는 폴더가 있습니다. 그 폴더 안에서 Shape_Cube 라는 이름의 메시를 찾을 수 있습니다. Shape_Cube좌클릭 하여 선택한 다음 콘텐츠 브라우저 에서 레벨에 끌어와서 레벨 뷰포트 위에 메시가 있을 때 마우스 왼쪽 버튼 을 놓습니다. 그러면 메시가 레벨에 배치됩니다.

    EM_Adding_Test_Box.png

  2. 레벨에 메시가 추가되었으니, 이미시브 머티리얼을 적용할 차례입니다. 그러기 위해, 콘텐츠 브라우저 에서 Emissive Material 폴더를 찾습니다. 찾았으면 좌클릭 으로 머티리얼 인스턴스 를 선택한 다음 콘텐츠 브라우저 에서 머티리얼 인스턴스를 끌어 Shape_Cube 메시 위에 놓습니다.

    EM_Applying_Material_Instance.png

  3. 머티리얼 인스턴스를 Shape_Cube 메시에 적용하고 나면, 머티리얼 인스턴스를 더블클릭 하여 엽니다. 그러면 이제 머티리얼 인스턴스의 파라미터를 조정하여 이미시브 모양에 영향을 끼칠 수 있습니다. 예를 들어 Emissive_Strength 를 조절하여 이미시브의 영향력을 조절할 수 있습니다. 왼쪽은 Emissive_Strength 를 0 으로, 가운데는 1 로, 오른쪽은 25 로 설정했을 때의 예제입니다.

    EM_Different_Emissive_Values.png

  4. Emissive_Color 벡터 파라미터를 변경하는 것으로 이미시브의 컬러를 변경할 수도 있습니다. 이미시브의 컬러를 변경하면 어때 보이는지 예제는 다음과 같습니다.

    EM_Different_Emissive_Color.png

이미시브 머티리얼을 사용한 월드 라이팅

이 기능은 언리얼 엔진 4.6 버전 이상에서만 가능합니다.

언리얼 엔진 4 에는 머티리얼에 이미시브 입력을 사용하여 월드 조명을 보조할 수 있습니다. 이 기능을 켜려면, 머티리얼의 이미시브 입력에 무언가 연결시켜준 다음, 월드의 오브젝트에 그 머티리얼을 적용해 주기만 하면 됩니다. 라이트 빌드 이후, 월드의 스태틱 오브젝트가 머티리얼의 이미시브 입력을 통한 조명을 받는 것처럼 보이는 것을 확인할 수 있을 것입니다. 테스팅 레벨의 어두운 부분을 노랑 이미시브 라이트로 비춘 예제입니다. EM_Emissive_Material_Light.png

월드의 이미시브 영향력 조절

이미시브 입력을 사용하여 월드에 라이팅할 때, 효과가 너무 미묘하거나 강력할 수가 있습니다. 이 부분을 고치기 위해서는, 월드에 빛을 비추는 이미시브 라이트의 영향력을 조절할 수 있도록 머티리얼을 제작해야 할 것입니다. 위에서 만든 셰이더에서 이 머티리얼은 Emissive_Strength 라 불립니다. 이 옵션 값을 늘리면 라이트 빌드시 월드에 내리쬐는 빛의 양이 늘어납니다. Emissive_Strength 를 낮추면 월드에 내리쬐는 빛의 양이 줄어듭니다. 아래 그림에서, Emissive_Strength 를 올렸을 때 월드에 미치는 이미시브 효과를 확인할 수 있습니다. 왼쪽의 Emissive_Strength 는 1.0 으로, 가운데는 10.0 으로, 오른쪽인 100.0 으로 설정되어 있습니다.

EM_Emissive_Lighting_World.png

월드의 이미시브 영향력 켜고 끄기

어떤 경우에는 월드에 이미시브 머티리얼이 빛을 비추는 것을 켜거나 끄고 싶은 경우가 있습니다. 이 기능을 켜고 끄는 방법은 다음과 같습니다.

  1. 먼저 이미시브에서 월드에 빛을 비추지 않고자 하는 메시를 선택합니다.

  2. 그런 다음 디테일 패널에서 Lighting 섹션 아래, Use Emissive for Static Lighting (스태틱 라이팅에 이미시브 사용) 박스를 좌클릭 하여 체크합니다.

    EM_Turn_Off_Use_As_SL.png

    기본적으로 월드에 배치하는 모든 메시에는 Use Emissive for Static Lighting 옵션이 꺼져 있습니다. 사용하려면 항상 켜 줘야 합니다.

  3. 왼편에는 Use Emissive for Static Lighting 옵션을 끈 메시, 오른편에는 켠 메시 결과물입니다. EM_SL_Off_On.png

이미시브가 월드에 갖는 영향력을 확인하기 위해서는, 레벨 라이팅을 빌드해 줘야 합니다. 그러지 않으면 변경내용을 확인할 수 없습니다. 즉 이미시브 머티리얼에 변화를 가할 때마다, 라이팅을 다시 빌드해 줘야 변경내용을 확인할 수 있다는 뜻입니다.

이미시브 영향력 & 블룸

머티리얼 인스턴스 내의 이미시브 입력의 세기를 올리면, 머티리얼의 이미시브 섹션에서 생성되는 블룸도 더욱 밝아지는 것을 보셨을 것입니다. 머티리얼 인스턴스 안에서 값을 낮추지 않고도 블룸 이펙트를 낮추는 방법 한 가지는, Post Process VolumeBloom 세팅을 조절하는 것입니다.

EM_Bloom_On_PP.png

이 값을 조절하면 이미시브 값을 매우 높게 밀어올려 이미시브 머티리얼에서 월드에 뿌려지는 스태틱 라이트의 양을 증가시킨 것을 보정하는 데 도움이 됩니다. 아래 그림에서 왼쪽은 이미시브 값을 100 정도로 매우 높게 설정하고 블룸을 조정하지 않았을 경우입니다. 오른쪽의 그림에서는 블룸 세팅을 1 에서 0.1 로 낮춘 것입니다. 이를 통해 이미시브가 월드에 많은 양의 스태틱 라이트를 비추면서도 블룸이 과하지 않도록 만들 수 있습니다.

EM_Tweak_PP.png

간접광 다중 반사

Emissive for Static Lighting (스태틱 라이팅에 이미시브) 옵션이 켜진 메시로부터의 간접광 다중 반사가 지원되는데, 월드 세팅 > Lightmass (라이트매스) 아래 Num Sky Lighting Bounces (스카이 라이팅 반사 횟수) 옵션을 조정하면 됩니다.

LightmassSettings.png

EmissiveMultiBounce.png

이미시브 스태틱 라이팅으로 간접광 다중 반사 효과를 내고 있는 예제 씬입니다.

결론

머티리얼에 이미시브 라이팅을 추가하면 라이트를 추가하지 않고도 매우 저렴하고 효율적인 방식으로 광원에 대한 시뮬레이션이 가능합니다. 하지만 이미시브 라이팅 사용시 라이트와 마찬가지로 캐릭터와 같은 다이내믹 오브젝트에는 라이팅이 되지 않는다는 점 유념해 주시기 바랍니다. 또 한 가지, 빛이 너무 강렬한 경우 Post Process Volume 의 Bloom 세팅을 조절하면 된다는 점 기억해 주시기 바랍니다.

태그
Select Skin
Light
Dark

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

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

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

네이버 카페
공식 포럼