본문 바로가기

프로그래밍/Unreal

[UE4] 아웃라인 : 스텐실

기본적인 내용은 동일하나 스텐실 값을 비교한다는 점에서 차이가 있다.

static mesh 의 Rendering 설정에서

Render CustomDepth Pass 를 활성화 하고

CustomDepth Stencil Vlaue 에 원하는 값을 지정하면 된다.





1. 두께 설정 : 텍셀의 크기에 따라 라인의 두께를 설정한다.


ScreenTexlSize -> Component Mask(R) * 두께

ScreenTexlSize -> Component Mask(G) * 두께


위 값을 2차원 벡터로 만들고, 역방향 벡터들을 만든다. : AppendVector 


총 방향은 8개.


각 방향별 ScreenPosition UV 값을 더해 실제 UV 좌표를 얻는다.

 



2. ScenTexture : Custom Stensil 

각 UV 의 스텐실 값 얻기

각 방향의 최대 값 얻기 : 최대값이 0 이면 해당 픽셀 주변에는 스텐실 설정이 없음~




8곳 방향을 검사해 스텐실 여부만 확인하므로, 각 값을 보유할 필요는 없다.

이 예제에서는 MAX 값만 얻고 최종적으로Clamp max=1 로 스텐실 여부만 판단.


만약, 스텐실 값 별로 다른 색상 등 처리하려면 별도로 빼서 색상 선택하는 부분 추가 필요하다.



위는 현재 픽셀의 스텐실 값을 가져와 OneMinus 을 사용해 값을 반전시켜

스텐실 값이 있으면 0, 일반 픽셀이면 1을 리턴하게 한다.


스텐실 값이 있는 경우 외곽선이 아니므로 아웃라인을 그리지 않는다.


아래 그룹은 Occulusion 을 체크하고, 알파값 상수를 추가해 준다.

CustomDepth와 SceneDepth 값이 다르면 표시하지 않게 된다.



현재 픽셀은 일반 픽셀값이면 1

주변 픽셀에 스텐실 값 있으면 1

Occulusion 체크하고 원하는 알파값 셋팅


등으로 처리가 완료된다.






'프로그래밍 > Unreal' 카테고리의 다른 글

[UE4] 폰트  (0) 2017.09.26
[UE4] C++ 에셋, 오브젝트 레퍼런싱/객체생성  (1) 2017.09.25
[UE4] CSV 파일  (0) 2017.09.24
[UE4] unreal delegate  (0) 2017.09.24
[UE4] 마우스 입력  (0) 2017.09.17
[UE4] 메쉬 외곽선 효과  (0) 2017.09.15
[UE4] 언리얼 기본 예제 분석  (0) 2017.09.13
[UE4] Line Trace  (0) 2017.09.12
[UE4] 액터  (0) 2017.09.12
[UE4] C++ 기본 사항 노트  (0) 2017.09.06