역자의 글.
최근 가상아바타 렌더링 처리에 관련 된 외주를 받게 되었는데요... 사실 SDF 를 이용한 얼굴 그림자 처리를 꼭 해야 하나? 라는 생각이 들면서도 서브컬처 진영에서는 꽤 트렌디 한 기법중의 하나이다 보니... 이렇게 또 멋진 nagakagachi 군의 좋은 토픽을 접하게 되었습니다. 유니티에서 구현 된 내용들을 많이 들 보셨겠는데요.... 겸사 해서 언리얼 엔진에서 어떻게 구현 하는지도 한번 같이 보시죠!
원문
https://nagakagachi.hatenablog.com/entry/2024/03/02/140704
셀루룩 캐릭터의 얼굴 음영 제어에 사용되는 Shadow Threshold Map을 생성하는 메커니즘에 대해 알아봅시다.
시퀀설 한 이미지에서 Map을 합성하는 주요 부분을 설명합니다.
SDFによる補間で Shadow Threshold Map を連番画像から自動生成するツール
— なが (@nagakagachi) December 5, 2023
をGitHubのSDFツールの中にUPしました.
EUW_GenerateShadowThresholdMap がツール自体.
現状は全画像が等間隔な閾値になります.
合成方法の説明などドキュメントは後で(∩´∀`)∩https://t.co/6GdbEja9o3#UE5 pic.twitter.com/52QUQek23i
개요
UE5의 툴은 아래 SDF 관련 툴에 포함되어 있습니다.
블랙박스 없이 BP와 머티리얼로 구현되어 있으니 자세한 내용은 여기를 참고하세요.
https://github.com/nagakagachi/NagaSdfTextureToolForUE
알고리즘
여기서는 가장 단순하다고 생각되는 C0 연속 합성을 생각해 보겠습니다.
연속된 각 이미지 사이의 전환 속도를 더 부드럽게 하고 싶다면 C1 연속으로 합성하는 것이 좋을 수도 있습니다.
연속된 2장씩 처리해 나갑니다.
처리 대상의 연속적인 쌍
SDF 생성
이차원 이미지의 SDF를 계산합니다.
내부측 거리도 필요하므로 Signed Distance Field여야 한다.
SDF를 기준으로 전이율 계산
SDF는 경계로부터의 거리를 나타내기 때문에 SDF_1st / (SDF_1st + SDF_2nd) 를 계산하여 전이 원에서 전이 대상 경계에서 0-1이 되는 그래디언트를 얻을 수 있다.
한 쌍의 전이 영역만 마스크 처리
이 방법은 2장을 한 쌍으로 처리하기 때문에 최종 그라데이션의 변화 속도가 불연속적(C0연속)입니다.
장수를 많이 준비하여 세세한 구간으로 나누었다면 상관없겠지만, 장수가 적은 경우에는
적은 개수의 경우에는 음영 영역의 이동 속도가 구간 경계에서 흔들려 보일 수 있습니다.
이를 해결하기 위해서는 두 장의 쌍이 아닌 그 옆의 이미지까지 포함하여 속도가 연속적이 되도록 전이율을 계산해야 할 것 같습니다.
(본 글에서는 미지원입니다.)
관련 정보
실제 활 등에 대해서는 CEDEC의 Hi-Fi RUSH 강연이나, alwei님의 글을 참고하시면 도움이 될 것 같습니다.
https://unrealengine.hatenablog.com/entry/2024/02/28/222220
명칭으로
Shadow Threshold Map
Face Threshold Map
Face Shadow Map
등차가 있는 것이 힘든 부분...
'TECH.ART.FLOW.IO' 카테고리의 다른 글
[소식]유니티 차이나 차세대 유니티 커스텀 엔진 출시. (0) | 2024.03.05 |
---|---|
[번역] UE5로 만드는 셀 셰이딩 6회: 엔진 수정 입문 (3) 셀 톤 라이팅 구현하기. (3) | 2024.03.05 |
[요약번역]GDC 2023 - Real-time Sparse Distance Fields for Games 파트-2 알고리즘 (2) | 2024.02.24 |
[번역]Unity-URP 자체 톤매핑(UE4 포팅) 및 기타 포스트 프로세싱 함수 수정하기 (0) | 2024.02.15 |
[번역]GPU Run-time Procedural Placement on Terrain (1) | 2024.02.05 |