머티리얼 함수 생성 및 사용

머티리얼 함수 생성 및 활용 방법을 알려주는 가이드입니다.

Choose your operating system:

Windows

macOS

Linux

필요한 사전지식

이 페이지의 콘텐츠를 이해하고 활용하기 위해 다음 주제를 숙지해 주세요.

머티리얼 함수 생성하기

아래 단계에 따라 새 머티리얼 함수를 생성합니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 우클릭합니다. 고급 에셋 생성(Create Advanced Asset) 섹션의 컨텍스트 메뉴에서 머티리얼(Materials) 서브 메뉴를 열고 목록에서 머티리얼 함수(Material Function) 를 선택합니다.

    create-material-function.png

  2. 콘텐츠 브라우저에 나타난 머티리얼 함수의 이름을 변경합니다. 다른 사람이 봤을 때 함수의 역할을 바로 이해할 수 있도록 이름을 최대한 자세하게 작성합니다. 이 예시에서는 Custom_Fresnel 이라는 이름을 사용합니다. 머티리얼 함수의 이름을 변경하려면 콘텐츠 브라우저(Content Browser) 에서 머티리얼 함수를 선택한 다음, 키보드의 F2 키를 누르고 새 이름을 입력합니다.

    custom-fresnel.png

머티리얼 함수 편집하기

새 머티리얼 함수를 만들었다면 머티리얼 에디터에서 함수를 열어야 머티리얼 표현식 네트워크(Material Expression network) 생성을 시작할 수 있습니다. 기존 머티리얼 함수를 열어서 행동을 변경할 수도 있습니다. 머티리얼 함수는 두 가지 방법으로 열어서 편집할 수 있습니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 머티리얼 함수 에셋을 더블 클릭해 별도의 머티리얼 에디터 탭으로 엽니다. 이제 머티리얼 함수 내에서 머티리얼 표현식 네트워크를 편집하여 행동을 수정할 수 있습니다.

    Cheap Contrast 머티리얼 함수 에셋

  2. 기존 머티리얼 내에서 머티리얼 함수 노드를 더블 클릭하면 새로운 머티리얼 에디터 탭에서 머티리얼 함수가 열립니다.

    Cheap contrast Material Function Call 노드

머티리얼 함수를 더블 클릭하면 새로운 머티리얼 에디터 탭이 열리고, 함수에 포함된 머티리얼 표현식 네트워크가 표시됩니다. 이제 원하는 대로 그래프를 편집할 수 있습니다.

Cheap contrast 머티리얼 그래프

머티리얼 함수를 변경하고 저장하면, 해당하는 머티리얼 함수의 모든 인스턴스에 전파됩니다. 예를 들어, 방사상 그레이디언트 머티리얼 함수의 내부 네트워크를 변경했다면 해당 함수의 모든 기존 인스턴스는 물론 이후 만들어지는 모든 새 인스턴스도 변경 내용을 수신하게 됩니다.

따라서 함수의 모든 인스턴스에 반드시 전파해야 하는 변경사항이 아니라면 기존 머티리얼 함수를 수정하는 것보다 콘텐츠 브라우저를 우클릭한 후 컨텍스트 메뉴에서 복제(Duplicate)를 선택하여 기존 함수의 사본을 생성 하는 것이 좋을 수도 있습니다.

함수를 변경한 다음에는 변경사항이 함수 에셋과 해당 함수를 사용하는 모든 머티리얼에 전파될 수 있도록 적용(Apply) 버튼을 클릭해야 합니다. 완료되면 콘텐츠 브라우저에서 에셋을 저장합니다.

변경사항 적용

새 함수 퍼블리싱하기

머티리얼 함수를 사용하려면 머티리얼 에디터 팔레트의 머티리얼 함수 라이브러리(Material Function Library) 에 함수가 나타나야 합니다. 그러려면 라이브러리에 노출(Expose to Library) 프로퍼티를 true로 설정해야 합니다.

  1. 머티리얼 그래프의 배경을 클릭해 함수 내 모든 노드의 선택을 해제합니다. 이렇게 하면 디테일(Details) 패널에 함수의 기본 프로퍼티가 표시됩니다.

    라이브러리에 노출

  2. 설명을 추가합니다. 설명 추가가 중요한 이유는 사용자가 머티리얼 함수 라이브러리나 머티리얼 에디터에서 함수 위에 마우스를 올렸을 때 해당 설명이 툴팁으로 표시되기 때문입니다. 입력 노드와 출력 노드에 설명을 추가하는 것도 매우 좋은 방법이지만, 표현식에서 하나의 영역만 선택해서 코멘트를 추가해야 한다면 이 설명이 가장 중요합니다.

    함수 설명

  3. 라이브러리 카테고리 텍스트(Library Categories Text) 를 사용하면 머티리얼 함수가 표시될 카테고리를 선택할 수 있습니다. 삽입(Insert) 을 클릭하고 새 카테고리 이름을 입력하여 카테고리를 추가할 수 있습니다. 하지만 카테고리는 필요 이상으로 만드는 것보다 가급적 간결하게 유지하는 것이 좋습니다.

    함수 카테고리

머티리얼 함수 사용하기

머티리얼 팔레트에서 사용하기

머티리얼 함수를 생성해 라이브러리에 노출시켰다면 이제 머티리얼 에디터 팔레트에서 직접 머티리얼 함수를 드래그하여 기존 머티리얼에서 사용할 수 있습니다. 팔레트에는 사용자 생성 머티리얼 함수 외에도 엔진에 포함된 모든 디폴트 머티리얼 함수가 들어 있습니다.

머티리얼 함수 라이브러리

디폴트 머티리얼 함수는 다양한 카테고리로 분류됩니다. 사용자 생성 머티리얼 함수는 디폴트로 Misc 카테고리에 배치되는데, 함수의 디테일 패널 프로퍼티에서 카테고리 분류를 바꿀 수도 있습니다. 머티리얼 함수를 머티리얼 그래프로 드래그하면 Material Function Call 노드가 생성됩니다. 이 노드에는 함수 내의 입력과 출력 노드가 정의하는 다양한 입력과 출력이 포함되어 있습니다.

팔레트에서 머티리얼 함수 드래그하기

머티리얼 에디터를 우클릭 한 다음 컨텍스트 메뉴에서 머티리얼 함수를 검색하여 머티리얼에 머티리얼 함수를 추가할 수도 있습니다.

미지정 함수 노드

머티리얼 함수를 사용하는 세 번째 방법은 머티리얼 그래프에 미지정 함수(Unspecified Function) 노드를 배치한 다음 디테일 패널에서 머티리얼 함수를 지정하는 것입니다.

  1. F 를 누른 채로 머티리얼 그래프에서 좌클릭 하면 미지정 함수 노드를 배치할 수 있습니다.

    미지정 함수 노드

  2. 디테일(Details) 패널에서 미지정 함수 노드에 머티리얼 함수를 지정합니다. 디테일 패널의 드롭다운 메뉴에서 머티리얼 함수를 검색해도 되고, 콘텐츠 브라우저(Content Browser) 에서 머티리얼 함수 에셋을 선택한 뒤 콘텐츠 브라우저에서 선택된 에셋 사용(Use Selected Asset from Content Browser) 버튼을 클릭해도 됩니다.

    콘텐츠 브라우저에서 선택된 에셋 사용

  3. 미지정 함수 노드가 선택한 머티리얼 함수(이 예시에서는 ‘Blend Angle Corrected Normals')로 대체됩니다.

    Blend angle corrected normals 노드