이 튜토리얼에서는 절대적인 월드 포지션이 아니라 머티리얼의 로컬 공간 값을 사용하여 슬라이스할 위치를 결정합니다.
슬라이스 이펙트를 생성하려면 먼저 이미시브 노드 그래프를 구성하여 단색 머티리얼을 만든 후 메시 로컬 스페이스와 머티리얼 함수를 사용하여 메시에서 슬라이스를 수행할 위치를 결정합니다.
이미시브 노드 그래프 생성하기
머티리얼 루트 노드를 선택하고 디테일(Details) 패널에서 양면(Two Sided) 옵션에 체크합니다.
블렌드 모드(Blend Mode) 드롭다운 메뉴를 열고 마스크 적용(Masked)을 선택합니다.
노드 그래프에서 우클릭하고 지정된 이름을 검색하여 복사한 머티리얼에 다음 노드를 추가합니다.
Constant 노드(3)
Constant 3Vector Expression 노드(2)
Clamp 노드(2)
Append3Vector 노드
WorldPosition 노드
Subtract 노드
Dot Product 노드
Multiply 노드
Linear Interpolate 노드
TwoSidedSign 노드
첫 번째 Constant3Vector 노드를 더블클릭하고 머티리얼에 외부 컬러를 추가합니다.
첫 번째 Constant3Vector 노드에서 흰색 핀을 드래그하여 머티리얼 루트 노드의 베이스 컬러(Base Color) 입력에 연결합니다.
첫 번째 Constant 노드의 핀에서 드래그하여 머티리얼 루트 노드의 러프니스(Roughness) 입력에 연결하고 값을 0.75로 변경합니다.
이 환경설정은 머티리얼이 할당된 오브젝트의 베이스 컬러와 라이트에 대한 머티리얼의 반응을 생성합니다. 다음 환경설정은 메시의 내부를 입체로 보이게 해 주는 이미시브를 생성합니다.
TwoSidedSign 노드에서 드래그하여 Clamp 노드에 연결하고, Clamp 노드에서 드래그하여 Lerp 노드의 알파(Alpha) 입력에 연결합니다.
두 번째 Constant3vector 노드를 더블클릭하고 메시 내부에 컬러를 추가합니다. 그런 다음 Constant3Vector 노드의 흰색 핀을 드래그하여 Lerp 노드의 A 입력에 연결합니다.
Lerp 노드를 선택하고 B 입력 값을 0.0으로 설정합니다.
Lerp 노드를 드래그하여 Multiply 노드의 A 입력에 연결합니다.
Multiply 노드를 선택하고 B 입력 값을 0.3으로 변경합니다.
Multiply 노드를 드래그하여 머티리얼 루트 노드의 이미시브 컬러(Emissive Color) 입력에 연결합니다.
이미시브 노드 그래프가 완성되었습니다.
위치 그래프
다음으로, 메시 위치를 타기팅하는 위치 그래프를 생성하여 프로젝트에서 메시의 일부를 제거합니다.
이미 이미시브 그래프를 사용하는 노드를 복사하여 필요 없는 그래프 부분을 삭제한 다음, 이펙트를 생성하기 위한 필수 노드 환경설정을 추가할 수 있습니다.
메시 위치 데이터를 타기팅하는 방식으로 머티리얼을 사용하여 메시의 일부를 사라지게 할 수 있습니다. 이 이펙트는 애니메이션 제작에도 사용 가능합니다.
머티리얼 에디터에서 우클릭하고 검색창에 Functions를 입력하여 머티리얼 함수 노드를 생성합니다. MaterialFunctionCall 옵션을 선택합니다. 머티리얼 에디터에 Unspecified Function 노드가 나타납니다.
머티리얼 에디터에서는 특정 머티리얼 함수를 검색할 수 없습니다. 그 대신 지정되지 않은 머티리얼 함수 노드를 생성하고 여기에 함수를 할당해야 합니다.
Unspecified Function 노드를 선택하고 디테일 패널의 머티리얼 함수(Material Function) 드롭다운 메뉴에서 Local Position 머티리얼 함수를 할당합니다. 머티리얼 에디터에 LocalPosition 머티리얼 함수 노드가 자동으로 나타납니다.
두 번째 Unspecified Function 노드를 생성하고 ObjectLocalBounds 함수를 이 노드에 할당합니다.
새 머티리얼 인스턴스를 생성하여 엽니다.
메인 머티리얼 노드를 선택하고 블렌드 모드 세팅을 마스크 적용으로 변경합니다.
머티리얼 에디터에 다음과 같은 노드를 추가합니다.
Divide 노드
Constant3Vector 노드
ComponentMask 노드
Clamp 노드
Constant 노드(2)
Subtract 노드(2)
Constant3Vector 노드를 선택하고 더블클릭하여 컬러를 추가합니다.
Constant3Vector 노드의 흰색 출력 핀에서 드래그하여 메인 머티리얼 노드의 베이스 컬러 입력에 연결합니다.
Constant 노드를 선택하고 값을 .75로 설정합니다.
Constant 노드에서 드래그하여 메인 머티리얼 노드의 러프니스 입력에 연결합니다.
Local Position 노드의 인스턴스 로컬 위치(Instance Local Position) 핀에서 드래그하여 Divide 노드의 A 입력에 연결합니다.
ObjectLocalBounds 노드의 로컬 바운드 크기(Local Bounds Size) 핀에서 드래그하여 Divide 노드의 B 입력에 연결합니다.
Divide 노드에서 드래그하여 첫 번째 Subtract 노드의 B 입력에 연결합니다.
Subtract 노드의 A 입력 값을 1.0으로 변경합니다.
첫 번째 Subtract 노드에서 드래그하여 Mask 노드에 연결합니다.
Mask 노드에서 드래그하여 두 번째 Subtract 노드의 A 입력에 연결합니다.
두 번째 Constant 노드를 선택하고 값을 0.1로 변경합니다.
Constant 노드에서 드래그하여 두 번째 Subtract 노드의 B 입력에 연결합니다.
두 번째 Subtract에서 드래그하여 Clamp 노드의 흰색 입력에 연결합니다.
Clamp 노드의 최대(Max) 값을 1.0으로 변경합니다.
머티리얼 루트 노드를 선택하고 디테일 패널에서 블렌드 모드 값을 마스크 적용으로 변경합니다. 메인 루트 노드에서 오파시티 마스크(Opacity Mask) 옵션을 사용할 수 있게 됩니다.
Clamp 노드에서 드래그하여 머티리얼 루트 노드의 오파시티 마스크에 연결합니다.
노드가 연결되었을 때의 환경설정입니다.
첫 번째 Subtract 노드에서 A 입력 값을 변경하면 메시의 룩이 변경됩니다.
오브젝트의 로컬 위치(오브젝트 중심 왼쪽/아래쪽/뒤쪽은 모두 음수, 오브젝트 중심 오른쪽/위쪽/앞쪽은 모두 양수인 X/Y/Z의 그레이디언트)를 구합니다. 이 값은 오브젝트의 월드 스케일에 의해 결정됩니다.
예를 들어 값을 [0, 1] 범위에 넣는 등 값을 정규화하려면 해당 값을 오브젝트 바운드에 따라 지정된 최대 범위로 나눕니다. 1 - B 입력은 그레이디언트의 방향을 반전시켜 오른쪽/위쪽/앞쪽의 값이 왼쪽/아래쪽/뒤쪽의 값보다 낮아집니다.
ComponentMask 노드는 파란색 채널이 있는 DotProduct 노드의 대안으로, 동일한 결과를 제공합니다. 그런 다음 위와 같이 파라미터로 변환된 상수 중 하나인 클립 값(0, 1 범위에 속하는 값)을 빼고 음수 값은 오파시티 슬롯에 연결하기 전에 범위제한하면 됩니다.