디테일 텍스처 추가

머티리얼에 디테일 텍스처 추가 방법 안내입니다.

Windows
MacOS
Linux

머티리얼을 매우 가까이서 볼 때, 머티리얼에 사용되는 텍스처가 깨지면서 큰 픽셀로 보이게 되어, 그리 안좋게 보인 적이 있을 것입니다. 이러한 문제 해결을 위해, Detail Texture (디테일 텍스처)라 알려진 방법을 사용하면 머티리얼을 매우 가까이서 봤을 때 텍스처가 픽셀로 보이는 것을 숨기는 데 도움이 될 수 있습니다.

디테일 텍스처

Detail Texturing 은 오브젝트의 원래 디퓨즈와 노멀에 고도로 반복된 디퓨즈 & 노멀맵 조합을 레이어로 쌓아올리는 식으로 텍스처에 디테일이 추가된 듯이 보이도록 만들어 줍니다. 일반적으로 가능한 방법보다 가까이서 봤을 때의 디테일이 크게 살아난 듯이 보이도록 만들어 줍니다. Detail Texturing 의 실용 예는 이렇습니다.

DT_With_Without.png

왼쪽의 1 번 표시에서, Detail Texturing 을 활용하는 머티리얼을 확인할 수 있습니다. 오른쪽의 2 번 표시에서, Detail Texturing 을 활용하지 않는 머티리얼을 확인할 수 있습니다. 왼쪽 1 번 이미지가 오른쪽 이미지보다 노멀의 디테일이 더욱 세밀하고 선명한 것을 볼 수 있습니다.

디테일 텍스처 노드 분석

팔레트 에서 Detail Texturing 을 검색해 보면, Detail Texturing 머티리얼 함수를 찾을 수 있습니다. 머티리얼에 디테일 텍스처를 적용하는 방법이 이것밖에 없는 것은 아니지만, 텍스처를 입력하고 세팅 설정만 해 주면 되니 가장 빠른 방법이기는 합니다.

DT_Node_Break_Down.png

프로퍼티

설명

Scale(S)

스케일 - 디테일 텍스처의 스케일을 설정합니다. 수치가 클 수록 타일링이 많아지고, 작을 수록 적어집니다.

Diffuse(V3)

디퓨즈 - 디퓨즈 텍스처용 입력입니다.

DetailDiffuse(T2d)

디테일 디퓨즈 - 디퓨즈 디테일 텍스처용 입력입니다. 텍스처 오브젝트만 받을 수 있습니다.

DiffuseIntensity(S)

디퓨즈 강도 - 디테일 디퓨즈 텍스처의 강도를 조절합니다.

Normal(V3)

노멀 - 노멀 맵 텍스처용 입력입니다.

DetailNormal(T2D)

디테일 노멀 - 노멀 맵 디테일 텍스처용 입력입니다. 이 입력은 텍스처 오브젝트만 받을 수 있습니다.

NormalIntensity(S)

노멀 강도 - 디테일 노멀 맵 텍스처의 강도를 조절합니다.

텍스처 샘플을 텍스처 오브젝트로 변환

Detail Texturing 머티리얼 함수의 정상 작동을 위해서는, 디테일 텍스처로 사용하고자 하는 텍스처를 일반 텍스처에서 텍스처 오브젝트로 변환해 줘야 합니다. 텍스처를 텍스처 오브젝트로 변환하기 위해 해야 하는 작업은 다음과 같습니다.

  1. 먼저 디테일 텍스처로 사용하고자 하는 텍스처를 찾습니다.

    DT_Regular_Texture.png

  2. 텍스처를 찾았으면, 텍스처에 우클릭 합니다. 그러면 메뉴가 나타나는데, Convert To Texture Object (텍스처 오브젝트로 변환) 옵션을 선택합니다.

    DT_Convert_Texture_To_Object.png

  3. 완료되면, Texture Sampler 는 이런 모습일 것입니다.

    DT_Texture_Object_Texture.png

머티리얼에 디테일 텍스처 사용 방법

머티리얼에 Detail Texturing 을 사용하도록 구성하는 방법은 두 가지 있는데, 다음과 같습니다. 어느 방법을 선택할 것인지는, 머티리얼과 프로젝트에서의 요구에 따라 달라집니다. 두 방법 모두 최종적으로 동일한 결과를 내므로 어느 방법이 낫다고는 할 수 없습니다.

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

하지만 시작하기 전 먼저 테스팅에 사용할 수 있는 매우 간단한 머티리얼을 구성해 주도록 합시다. 그러기 위해서 먼저 콘텐츠 브라우저우클릭 한 뒤 팝업 메뉴의 기본 애셋 생성 에서 머티리얼 을 선택합니다. 선택하고 나면 새로운 머티리얼 이 생성됩니다. 머티리얼 이름을 Detail_Material 이라 짓습니다. 완료되면 콘텐츠 브라우저 는 이런 모습일 것입니다.

DT_Creat_New_Material.png

디테일 텍스처링 머티리얼 함수가 있을 때

  1. 우선 콘텐츠 브라우저 안에서 위에서 만든 머티리얼에 마우스 왼쪽 버튼 으로 더블클릭 하여 엽니다.

  2. 머티리얼이 열렸으면, 콘텐츠 브라우저 에서 다음 텍스처를 머티리얼 그래프에 끌어 놓습니다.

    • T_Brick_Clay_Old_D

    • T_Brick_Clay_Old_N

    • T_Ground_Gravel_D

    • T_Ground_Moss_N

    완료된 머티리얼 그래프 모습은 다음과 같을 것입니다.

    DT_Adding_Textures.png

  3. 머티리얼 그래프에 필요한 텍스처를 전부 추가하고 나면, Detail Texturing 머티리얼 함수를 추가할 차례입니다. 그러기 위해서는, 먼저 팔레트 에서 Detail Texturing 을 검색합니다.

    DT_Search_DT_MF.png

  4. Detail Texturing 머티리얼 함수를 찾았으면 마우스 왼쪽 버튼 으로 클릭한 다음 누른 상태로 팔레트 에서 머티리얼 그래프로 끌어옵니다. 머티리얼 그래프에서 마우스 왼쪽 버튼 을 놓으면 Detail Texturing 머티리얼 함수가 머티리얼 그래프에 배치됩니다.

    DT_Adding_DT_MF.png

  5. Detail Texturing 머티리얼 함수가 추가되었으니, 정상 작동을 위해 필요한 입력과 출력을 연결하기 시작할 차례입니다. 이 예제에서는 T_Brick_Clay_Old 텍스처를 기본 텍스처로, T_Ground_Gravel 을 디테일 텍스처로 사용하겠습니다. 즉 T_Brick_Clay_Old 에 대한 디퓨즈와 노멀 맵은 디퓨즈와 노멀 입력에 연결되고, T_Ground_Gravel 디퓨즈와 T_Ground_Moss 노멀 맵은 디테일 디퓨즈와 디테일 노멀 입력에 연결된다는 뜻입니다. 완료되면 머티리얼 그래프의 모습은 다음과 같을 것입니다.

    DT_Hooked_Up_Textures.png

    T_Ground_Gravel 디퓨즈와 T_Ground_Moss 노멀 맵 텍스처 샘플러는 텍스처 오브젝트 로 변환해 주지 않으면 머티리얼이 작동하지 않는다는 점 기억해 주십시오. 그 방법에 대한 상세 정보는 위의 텍스처 샘플을 텍스처 오브젝트로 변환 부분을 참고하세요.

  6. 텍스처가 연결되었으니, 디테일 텍스처의 스케일이나 강도같은 것을 조정할 수 있도록 Constant 머티리얼 표현식을 몇 개 추가해 줄 차례입니다. Constant 머티리얼 표현식을 찾으려면, 머티리얼 팔레트에서 Constant 를 검색한 다음 팔레트 에서 머티리얼 그래프로 Constant 를 끌어놓습니다. Constant 머티리얼 표현식을 하나 추가했으면, 선택한 뒤 CTRL + W 키를 두 번 눌러 복제합니다. 결국 세 개의 Constant 머티리얼 표현식이 생깁니다.

    DT_Adding_Constant_Nodes.png

  7. 적정량의 Constant 머티리얼 표현식 노드를 머티리얼 그래프에 추가했으니, 이제 연결해 주고 데이터를 채워줄 차례입니다. 그러기 위해서는, Constant 머티리얼 표현식 노드의 출력을 Detail Texturing 머티리얼 함수의 입력에 연결해 주기만 하면 됩니다. 그리고 각 Constant 머티리얼 표현식 노드의 입력에 값을 1 로 입력해 줍니다. 완료되면 머티리얼 그래프의 모습은 다음과 같을 것입니다.

    DT_All_Connections_Made.png

  8. Constant 머티리얼 표현식 노드의 값을 조절하는 것으로, 디테일 텍스처의 모양에 영향을 끼칠 수 있습니다. Scale 값을 1 에서 5 를 거쳐 10 으로 설정했을 때의 예제는 다음과 같습니다.

    DT_Different_Scale_Settings.png

디테일 텍스처링 머티리얼 함수가 없을 때

어떤 이유로 Detail Texturing 머티리얼 함수를 사용할 수 없는 경우에도 언제든지 머티리얼 표현식 노드를 아래 방법대로 사용해서 머티리얼 그래프 안에 그 함수성을 만들 수 있습니다.

  1. 우선 콘텐츠 브라우저 안에서 Detail_Material우클릭 한 다음 메뉴에서 복제 를 선택하여 사본을 만듭니다.

    DT_Duplicate_Material.png

  2. 만든 이후에는 머티리얼 이름을 Detail_Material_2 로 변경합니다. 완료되면 콘텐츠 브라우저 모습은 다음과 같을 것입니다.

    DT_Duplicate_Materia_Namedl.png

  3. 새로 만든 머티리얼을 더블클릭 하여 엽니다. 열리면 텍스처를 제외한 모든 것을 지운 다음, Texture Object 를 전부 선택한 뒤 우클릭 하고 메뉴에서 Convert To Texture Sampler (텍스처 샘플러로 변환)을 선택하여 텍스처 오브젝트텍스처 샘플 로 다시 변환합니다. 완료된 머티리얼 그래프는 다음과 같은 모습일 것입니다.

    DT_New_Material_Setup.png

  4. 모든 것의 정리와 변환이 끝났으니, 이제 필수 머티리얼 노드를 놓기 시작하면 됩니다. 여기서 필요한 노드 유형과 양은 다음과 같습니다. 팔레트 에서 각 머티리얼 표현식 노드를 검색하여 찾을 수 있습니다.

    • Texture Coordinate x 1

    • Clamp x 1

    • Constant x 2

    • Add x 2

    • Multiply x 3

    완료된 머티리얼 그래프 모습은 다음과 같을 것입니다.

    DT_RequiredNodes.jpg

  5. 필수 머티리얼 표현식 노드가 전부 추가되었으니, 모든 것을 연결해 줄 차례입니다. 먼저 연결해 줄 부분은 베이스 컬러 부분입니다. 완료된 머티리얼 그래프는 다음과 같은 모습일 것입니다.

    DT_BaseColor_Connections.jpg

  6. 다음 노멀 맵을 베이스 컬러와 같은 방식으로 연결해 줘야 합니다. 완료되면 머티리얼 그래프의 모습은 다음과 같을 것입니다.

    DT_NormalMap_Connections.jpg

  7. 베이스 컬러와 노멀 맵이 전부 연결되었으니, 이제 머티리얼을 컴파일, 저장, 사용할 준비가 되었습니다.

    DT_Complete_Material.jpg

디테일 텍스처링 팁 & 정보

머티리얼에서 Detail Texturing 을 활용할 수 있는 여러가지 방법에 대한 팁과 정보를 몇 가지 살펴보겠습니다.

거리 기반 디테일 텍스처링

터레인과 같은 거대한 표면의 경우, 타일링을 사용하는 텍스처일 지라도 눈에 띄는 반복 부분이 많아서 특히나 원거리에서 봤을 때 좋아보이지 않을 수가 있습니다. 이러한 문제를 고치기 위해서는, 기존에 만든 디테일 머티리얼을 토대로 카메라가 가까이 있을 때와 멀리 있을 때 서로 다른 텍스처를 표시하도록 만들 수 있습니다. 이를 일컬어 Distance Based Texture Blending (거리 기반 텍스처 블렌딩)이라 하며, 아래와 같이 구성할 수 있습니다.

  1. 우선 Detail_Material_2 사본을 만들어 이름을 Distance_Fade 라 합니다. 이름을 짓고 나면 팔레트 에서 다음과 같은 머티리얼 표현식 노드를 검색하여 머티리얼 그래프에 추가합니다.

    • World_Position x 1

    • Camera_Position_WS x 1

    • Distance x 1

    • Divide x 1

    • Power x 1

    • Clamp x 1

    • Constant x 2

  2. 머티리얼 그래프에 필수 머티리얼 표현식 노드를 전부 추가한 후, 모든 것을 연결하기 시작하면 됩니다. 텍스처 변화가 일어나는 거리는 Divide 머티리얼 표현식에 연결된 첫 Constant 로 조절하는데, 예제 이미지에서는 현재 512 로 설정되어 있습니다. 완료되면 다음과 같은 모습일 것입니다.

    DT_Distance_Based_Blending_Nodes.png

  3. 거리 기반 블렌딩이 완료되면, 이제 나머지 머티리얼에 추가시킬 수 있습니다. 그러기 위해서는 먼저 LERP (선형보간) 머티리얼 표현식을 두 개 머티리얼 그래프에 추가해 줘야 합니다. 왜냐면 LERP 머티리얼 표현식의 알파 입력이 텍스처 전환 거리를 제어하기 때문입니다. 그 이후에는 나머지 머티리얼을 연결해 주기만 하면 됩니다. 이 머티리얼과 원래 머티리얼의 유일한 차이점은, 마지막에 텍스처끼리 더하지 않고 선형보간해 줬다는 점입니다. 완료된 머티리얼 그래프는 다음과 같은 모습일 것입니다.

    DT_Distance_Based_Completed_Material.png

  4. 이것을 실제로 확인하려면, 머티리얼 미리보기 창에 마우스 오른쪽 버튼 을 누른 상태로 마우스를 앞뒤로 움직이면 됩니다. 프리뷰 메시에서 충분히 멀어지면, 머티리얼의 텍스처가 전환되는 것이 보일 것입니다. 확인되지 않는다면 Divide 머티리얼 표현식에 연결된 첫 번째 Constant 를, 현재 512 로 설정된 것에서 조금 줄여 보면, 오브젝트와 좀 더 가까운 곳에서 변경될 것입니다.

결론

Detail Texturing 은 3D 프로젝트의 현실감을 높이는 데 정말 큰 도움이 되는 매우 강력한 도구입니다. 하지만 모든 강력한 도구가 그렇듯이, 세심한 주의를 기울여야 그 위력이 발휘될 것입니다. 유념하실 점은, Detail Texturing 은 특정 지점의 픽셀화를 완화시키는 데만 도움이 된다는 점입니다. 플레이어 카메라가 오브젝트에 줌인하도록 한다든가 하는 것은 Detail Texturing 의 장점도 소용이 없게 만들 수 있습니다. 또 한 가지 기억하실 것은, Detail Texturing 은 머티리얼에 텍스처 룩업이 둘 이상 추가되어 약간의 퍼포먼스 / 메모리 문제가 발생할 수 있으니, 모바일 플랫폼에서는 특히나 주의하시기 바랍니다.

태그

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

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

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

네이버 카페
공식 포럼