TECH.ART.FLOW.IO

[공유] 3D Toon Rendering in 'Hi-Fi RUSH'

jplee 2024. 4. 14. 15:23
 

3D Toon Rendering in 'Hi-Fi RUSH'

'Hi-Fi RUSH' is a 60fps rhythm action game rendered in a stylish 3D toon art style using a customized Unreal Engine 4. In 'Hi-Fi RUSH', the developers at Tango Gameworks used toon shading for the entire world, both character and environment, while...

gdcvault.com


토픽 다이제스트 일부

HI-FI Rush Character Self Shadow

목표로 하고 있는 것은 셀 세이딩 모드에서 쉐입의 그림자 영역이 언제나 깔끔한 것.

얼굴을 제외한 곳의 툰 쉐도잉은 일반적인 NdotL 을 사용 했음.

버택스 노말을 사용할 때의 얼굴에서 스무스 커브를 생성하기에는 어려움이 있었음.

아무튼... 첫 번째 문제는 물론 두 번째 문제가 있음. 캐릭터 얼굴이 디포밍 될 때 버택스 노말을 사용 해서 쉐도잉 처리 하는 점은 문제점이 가장 큼. 알겠지만 얼굴의 본을 사용해서 페이셜 모션을 실행 하면 버택스 오리엔트도 계속 바뀜. 당연히 이 장면은 테스트이며 매우 과장되게 디포밍 한 것임.

그래서 우리는 하이트맵 기반으로 스레스홀드맵을 사용하기로 함.

스레스홀드 값은 앵글임. lightAngleHorizontal 값을 구하고 PI 로 나누며 레인지 0 부터 1 을 노말라이즈 함. 그 다음 결정 하죠 어디가 그림자고 어디가 그림자가 아닌지 말이죠...

 

이 기법은 오직 수평에만 대응하도록 고려되었음. 즉 이 그림자 기법은 좌우방향에만 반응함. 어쨌거나 이것은 하이파이 러시에 충분했음.

이 방법은 유니티 서울 2018 에서 미호요가 발표한 방식을 리프러덕션 한 것임.

스레스홀드맵을 어떻게 제작했는지 말 해 보자.

우리는 일단 DCC 툴을 사용해서 버택스 노말을 사용한 계산 방법으로 180도 대응 되는 텍스처를 만들었어. 위에 보는것 처럼... 우리는 조명을 매5도 마다 회전 시키고 총 36장의 텍스처를 추출 했다. 여기서 핵심은... 

그 다음 아티스트는 수동으로 만족할 만한 결과에 도달하기 위해 리처팅을 수행 했어.

이렇게 만들어진 텍스처는 내부에서 제작한 툴을 사용해서 병합 되었다. 디스턴스 필드와 같은 인터폴레이션을 사용함.

이렇게 해서 완성 했어. 첫 번째 문제 였던 스무스 커브를 만들기 어렵다는 것은 이렇게 해결 되었다. 하지만...  아티스트 역량으로 이것을 게런티 해야 함. 몇 번의 테스트와 리터칭으로 가능하다.

두 번째 문제였던 디포밍 되었을 때의 문제점도 어느정도 해결 됨.

솔루션 적용 전과 후의 비교. 해결 된 것 같죠?

버택스 노말을 사용할 때 노말을 수정해서 1번과 2번 문제를 수정하는 것에 문제가 있었지만 스레스홀드 맵을 아티스트가 리더칭 해서 이렇게 문제를 해결 함.

게시자 주:
이 내용 외에도 전반적으로 디퍼드 렌더링 각 버퍼와 볼륨을 어떻게 사용했는지 유익한 내용이 꽤 많아요.