구글링해본 결과
아웃라인그리는 방법은 네가지정도 찾았다.
1. 같은메쉬를 한번더 그려서 노말 뒤집은후 조금 부풀린다음 겹치기 (보편적)
제일 쉽고 자료가 많지만 메쉬를 한번 더 그리는것과 같은 연산이 들어감.
근데 내가 사용하는방법은 포스트 프로세싱을 사용한 씬 전체에 입히는 후처리방식이고.
이걸쓰면 아웃라인 그릴캐릭터의 매트리얼 인스턴스를 일일이 또 설정해주는 노가다를 해야되서 탈락.
(유니티처럼 매트리얼마다 쉐이더코드 공유하는방법 없나요 ㅠㅠ)
2.월드노말맵을 가져와서 좌표값 1씩 오프셋 준다음 외곽선그리기 (Vroid)
월드노말맵을 사용한다는말은 캐릭터가 움직일때 노말맵을 계속해서 재연산해줘야해서
이것도 나름대로 무거워보임.
3. 씬뎁스로 외곽선 그리기. (언리얼피셜)
구현방식은 2번과 비슷하지만 월드노말맵보다 카메라와 오브젝트간의 거리를 사용하는
흑백으로 출력되는 순수 뎁스값만 사용방법도 괜찮은 방법이지만.
씬뎁스인만큼 카메라에서 거리가 멀어지면 외곽선이 지워지는 문제가 있어서 고민해봅시다.
4.윤곽선을 검출하는 sobel알고리즘 사용하기. (지금은 다 까먹은 학식때 배운 영상처리 알고리즘)
이게 제일 윤곽선이 깔끔하게 나오지만 제일 무거워보임.
특수한 상황 연출할때빼곤 픽셀연산에 for문을 사용하는건
다른 방식중에 그나마 가벼울때쓰는 매우 특수한경우인데.
뇌피셜로 머리굴려봤을때 이건 추가로 stencil 뎁스값도 써야해서 탈락.
5.하프램버트 * 그림자색깔.
길티기어에서 쓴 방법인데 이것도 간단해서 좋아보입니다.
언리얼 포스트프로세스에서 월드전체에 적용하는거랑 방식이 좀 달라서 어떻게 해야할지 고민중..
참고자료.
유니티 Vroid 툰쉐이딩 코드(코드저작권때문에 미첨부)
이전 포스트 유튜브
https://replay.unrealsummit.co.kr/data/usmp2016/pre002.pdf
https://www.parallelcube.com/2017/12/02/hlsl-introduction/
https://blog.felixkate.net/2017/01/19/toon-shading/
마둠파님의 블로그!
저도 붕괴처럼 해보고싶은데.. 맵 여러개 그려서 표현할만한 내공은 못됩니다 ㅠ
다 만들어보고 프로파일러 돌려보는게 제일 정석이겠지만 시간이 부족하니 뇌피셜 판단으로 끝.
언제 한번 그득하게 언리얼엔진이 어떻게 렌더링하는지 코드분석해보고 싶다.
그전에 다렉을 먼저 봐야한다는 벽부터 부숴야하는데
다른것도 하고싶은게 많고 시간이라는게 너무 유한해서 스텟찍기가 너무 힘들다.
'언리얼엔진 > R&D(미소녀 프로젝트)' 카테고리의 다른 글
vroid를 마네킹 애니메이션에 리타게팅하기#9 (0) | 2019.04.25 |
---|---|
vroid 조명색깔을 받게하기.#8 (0) | 2019.04.24 |
vroid 눈썹보이게하기 #7 (0) | 2019.04.24 |
vroid를 좀더 이쁘게 해보자.#6 (0) | 2019.04.19 |
셀셰이딩(툰쉐이딩)하기 #5 (1) | 2019.04.18 |