툰 렌더링 글을 이어서 쓰고 싶은데…
저번 글에서 말씀드렸다시피 에셋들이 적합한 예제가 아닌 듯 해.. 그냥 언리얼 기본 마네킹을 놓고 하려합니다.
이 친구들론 확실히 잘 보이네요.
배경이 검은색인 이유는.. 원래는 스카이 스피어가 있는데 이게 베이스컬러가 있고 그런 게 아니라 안나오는 것 같습니다.
그나저나 겁나 어두워보이니까 PPV에서 Exposure Compensation 활성화해줍시다
저는 마스킹을 안하고 통으로 블렌더블의 효과를 먹이고 있는데 마스킹을 통해 원하는 것만 렌더하고 나머지는 걸러서 렌더할 수 있습니다.
.
사진 출처 - https://biz.chosun.com/site/data/html_dir/2021/04/14/2021041401987.html
툰 렌더로 출시한 제2의나라 같은 경우에도 캐릭터는 아웃라인이 송출되지만 배경은 없죠.
이러한 선택적 렌더를 할 수 있는 방법을 알아봅시다.
블렌더블 Array 다 0으로 해서 원래 상태로 보이게끔 해놓고
기존에 만들어둔 PPMM_BaseColor을 복제하여 이름을 바꿔줍시다.
머티리얼 창에서 기존에 있던 씬 텍스처 노드를 복사하고 타깃을 CustomDepth로 바꿉니다.
Custom Depth 토글이 켜진 렌더가 있는 오브젝트를 찾을 수 있으며 그 에셋만을 렌더링한다고 합니다.
화면에서 렌더하고 싶은 에셋을 선택하고 디테일 탭에 Render Custom Depth Pass를 검색해서 활성화시켜줍니다.
Subtract노드로 씬 뎁스에서 커스텀 뎁스를 빼줍니다. Clamp와 연결해주고 저장 후
머티리얼을 PPV에 등록하면 결과를 볼 수 있습니다.
잘 빠져있습니다.
하지만 배경이 0(블랙)이어야하므로 반전을 해줘야 합니다.
노드 검색창에 1-라고 치면 OneMinus노드가 생성됩니다.
연결해주면 잘 반전되어 나옵니다.
이렇게 노드 연결을 해주면 마스킹된 영역에 베이스컬러가 렌더되어 나옵니다.
Lerp(선형보간)노드는 linear int...까지 치면 하나 나오는데 그것입니다..
저장하고 화면을 보면
이렇게 지정한 에셋만 베이스컬러가 나오는 것을 볼 수 있습니다.
이 마스크는 모든 포스트 프로세스 머티리얼과 함께 쓸 수 있지만 외곽선에 마스킹하는 것은 조금 더 복잡해집니다.
외곽선도 지정한 에셋만 나오게끔 해봅시다 !!
PPMM_Outline을 복사해 접미사에 CH를 붙여줍니다.
창을 열고 아까 PPMM_BaseColor_CH에서 작성했던 마스킹 노드를 복사해옵니다.
원래 이미시브 컬러와 연결되있던 끄트머리에 추가해주면 됩니다.
씬 텍스처 노드를 하나 더 복붙해서 포스트 프로세스 인풋0 으로 바꾸고 마스크 RGB채널 체크해서 연결해주고 Lerp노드의 A에 연결한 후 저장 해줍시다.
PPV에 제작한 머티리얼을 등록해주시면 이렇게 캐릭터의 아웃라인만 송출됩니다 !
만약 나타나지 않는다면 아웃라인 머티리얼을 베이스컬러보다 위에 위치시켜주세요.
끝난 것 같지만 여기서 끝나지 않습니다..
보시다시피 마스킹 된 영역 바깥으로는 외곽선이 생성되지 않고있기 때문에
이전에 외곽선 만들 때 했던 것처럼 마스킹 영역의 뎁스를 상하좌우 1씩 확장해서 외곽선을 만드는 작업을 해야합니다.
(아 그거 귀찮은데..)
옆으로 가서 기존에 만들어 둔 것 중에 뎁스 크기를 확장시켜주는 역할을 하는 노드들을 복사해서
새로 만든 노드 왼쪽에 위치시켜주세요.
Add노드와 연결을 시켰는데, 동그라미 친 노드들을 복사해서 밑에 세 번 붙여넣은 뒤, 3개의 Add노드들과 각각 연결시켜줍니다.
이런 형태가 됩니다.
이제 이 노드들을 합쳐줍니다. 어떻게 하면 합쳐줄 수 있을까요?
위에서부터 A,B,C,D 라고 했을 때, Add 노드를 이용해 A+B , C+D로 합쳐주고,
또 다시 (A+B) + (C+D) 로 합쳐주면 됩니다.
Add한 결과를 Alpha와 연결해주세요. 그리고 저장합니다.
그럼 이렇게 외곽선이 외부까지 잘 따집니다.
근데 모양새가 좀 이상해진 게 원인을 모르겠네요;;
일단 넘어가고 나중에 어떻게 된 일인지 알아보도록 하겠습니다..빠득
(+++06.23일 문제의 원인 찾았습니다 !
대체 뭐가 문젠지 이것저것 실험하면서 뻘짓했는데 너무나도 간단한 문제더군요..
원인은 아웃라인 머티리얼에 넣었던 Tickness수치가 정수가 아님 이었습니다 !
1.5로 되있던데 1로 바꿔줘야 해괴하게 나오지 않더군요..
1로 바꿔준 모습입니다 !
근데 아직도 잘 보면 굴곡이 심한 곳에서 폴리곤 선이 희미하게 따지는 것을 볼 수 있는데,
이것도 신경 거슬리게 하므로 방법을 찾아보도록 하겠습니다.)
암튼 이렇게 아웃라인까지 마스킹해서 뽑아보았는데요,
전에 만들었던 그래픽 라이트 머티리얼도 마스킹 버전으로 만들어봅시다.
이거는 아웃라인처럼 복잡한 게 아니라 간단하게 설명하겠습니다~!
PPMM_GraphicLights 머티리얼 복제해주시고 이름 바꿔준 뒤 머티리얼 창에 들어옵니다.
알아보기 쉽게 네이밍을 해줬는데 위 영역이 기존의 그래픽라이트 노드구요,
Lerp노드 생성해서 최종출력을 B에 연결해주세요.
씬 텍스처 노드 만들어주시고 컴포넌트 마스크 노드 RGB 체크해준 후 연결해주고
직전 아웃라인 머티리얼에서 마스킹 담당 노드들을 홀랑 복붙해와서 Alpha에 연결해줍니다.
그리고 완성된 Lerp는 이미시브 컬러와 연결해줍니다.
저장하고 확인해봅시다.
그래픽 라이트도 선택된 액터에만 잘 뽑혔습니다 !
이렇게 선택적으로 렌더하는 것은 여태까지 한 방법도 있지만 조금 더 간단히 하는 방법으로는 최종출력물과 포스트 프로세스 인풋0을 베이스컬러 영역을 마스킹해 선형보간하는 방법이 있는데요,
이것은 그래픽 라이트의 머티리얼 창입니다.
위 사진처럼 최종단계 직전에 연결해주시면 됩니다.
(다 끄고 그래픽 라이트 머티리얼만 킨 상태입니다)
그럼 이렇게 Unlit 쉐이더는 걸러져서 렌더됩니다 !
나는 다른 건 상관없고 Unlit 쉐이더만 거르고 싶으면 이렇게 간단한 방법으로 하면 되고
그 전에 한 것 처럼 배경과 캐릭터를 분리해서 렌더하거나 선택적으로 렌더하고 싶은 액터가 있다면 그렇게 하면 될 것 같습니다.
참고로 얘도 다른 머티리얼에 다 쓸 수 있는 방법인데 아웃라인의 경우는 아까처럼 추가적인 작업을 해줘야 할 것 같습니다 !!
일단은 여기까지 진행하고 다음엔 스펙과 림라이트 넣는 것을 해보려고 합니다!!!
긴 글 읽어주셔서 감사합니다
(따라해주시면 더 감사하구요!)
'unreal engine' 카테고리의 다른 글
언리얼 엔진으로 카툰 렌더링 해보자-完-컬러 밴드 (1) | 2021.06.30 |
---|---|
언리얼 엔진으로 카툰 렌더링 해보자-4-Specular 넣기 (0) | 2021.06.24 |
언리얼 엔진으로 카툰 렌더링 해보자-2-라이팅 마스크 (0) | 2021.06.21 |
VRoid 캐릭터를 언리얼 엔진에서 사용하기(feat.MIXAMO) (0) | 2021.06.20 |
언리얼 학습일지-16-컨트롤 릭 (0) | 2021.06.18 |