11. 외곽선 연출 - Elysia-ff/UE4-Custom_Stencil_Tutorial GitHub Wiki

외곽선 검출

적캐릭터를 발견하면 시야에서 벗어나더라도 일정시간동안 외곽선을 통해 위치를 확인할 수 있게 할 것이다.
원리는 시야연출과 동일하게 스텐실 버퍼에 캐릭터를 따로 렌더링하고 외곽선을 검출하면 된다.

먼저 BP_Enemy -> Mesh의 스텐실옵션을 Second bit (2), ignore depth, 2로 지정한다.
image

그리고 EnemyMaterialAllow Custom Depth WritesOpacity Mask Clip Value를 다음과 같이 수정한다.
image

이제 외곽선 Post Process를 위한 마테리얼을 구현할 차례다.
아래 조건을 만족하면 외곽선이라고 할 수 있다.

  1. 오브젝트의 외부에 존재한다.
  2. 주변 8개 UV 중 한개 이상이 오브젝트의 내부에 위치해 있다.

image
즉 점 A는 2번 조건을 만족하지 않고 점 B는 1번 조건을 만족하지 않으므로 탈락, 점 C는 외곽선이다.

주변 UV를 샘플링하는 Material Function MF_SampleNeighbourUV를 추가한다.
image
입력으로 UV 와 Offset을 받고 UV 에서 Offset만큼 떨어진 UV 8개를 반환한다.

새 마테리얼을 생성하고 다음 코드를 추가한다.
image
image

Is Masked?노드
image

이제 생성한 마테리얼을 Post Process Volume에 등록한다.
image
(순서에 주의)

실행하면 외곽선과 시야 모두 적용된다.
image