SDF Face Shadow
간단 요약: SDF Face Shader 자료 링크: https://blog.csdn.net/qjh5606/article/details/119958786 태그: Cartoon, Hair, NPR, SDF, Shader, Shadow, Unity
번역 본문
·
27
·
109·
저작권 CC 4.0 BY-SA
저작권 표시: 이 글은 블로거의 원본 글이며 [CC 4.0 BY-SA] (http://creativecommons.org/licenses/by-sa/4.0/) 저작권 계약을 따릅니다. 재인쇄 시 원본 소스 링크와 본 내용을 첨부해 주세요.
기사 태그: #자동운전
이 문서에서는 툰 렌더링에서 섀도우 맵을 생성하기 위해 SDF(Directed Distance Fields)를 사용하는 방법을 자세히 설명합니다. SDF를 통해 객체 경계를 쉽게 계산하여 그림자 효과의 원활한 전환을 달성할 수 있습니다. 이 기사에서는 SDF의 기본 개념, 생성 알고리즘 및 보간을 위해 여러 중간 프로세스 맵을 결합하여 최종 섀도우 맵을 생성하는 방법을 다룹니다. 또한 실제 코드 구현 및 효과 표시도 공유하여 그래픽 렌더링, 앤티앨리어싱 및 글꼴 렌더링 분야에서 SDF 적용을 강조했습니다.
그래픽 기본 | SDF를 기반으로 한 만화 그림자 지도
기사 디렉토리
1. 서문
이전에 진행했던 카툰 렌더링을 되돌아보면 캐릭터 얼굴의 그림자는 섀도우맵을 이용하여 구현한 것이었습니다.
캐릭터 얼굴의 그림자를 보다 잘 제어하기 위해 얼굴 방향과 빛의 방향 사이의 각도를 계산하고 단색 FaceMap을 통해 판단합니다.
FaceMap의 각 픽셀은 다음을 나타냅니다. 픽셀이 그림자로 판단될 때 도달해야 하는 각도.
예를 들면:
- 방향광이 캐릭터를 향할 때 끼인각은 0°이고 해당 값은 0입니다. 이때 전체 FaceMap 면의 값은 0보다 큽니다. 그림자 조건이 충족되지 않습니다. 그러므로 모두 밝은 부분으로 판단된다.
- 방향광이 캐릭터의 얼굴 오른쪽을 향해 계속 회전하여 36°(표준화 값은 0.2, 36°를 180°로 나눈 값)에 도달하면 그림에서 0.2에 해당하는 선의 왼쪽 픽셀 값은 모두 0.2 미만이며 그림자 영역으로 판단됩니다. 오른쪽이 밝은 부분입니다.

이 지도를 생성하는 방법은 다음과 같습니다.
- 아티스트가 완전한 그림을 수동으로 그립니다.
- 아티스트는 여러 개의 중간 공정 그림을 그리고 SDF를 통해 최종 결과물을 생성합니다.
일반적으로 완전한 질감을 그리는 것은 시간과 노력이 많이 들고, 효과를 수정하는 것도 불편합니다.
따라서 프로그래밍 방식으로 생성하려면 방법 2를 사용하는 것이 당연히 더 좋습니다.
이 문서에서는 방향성 거리 필드(SDF, Signed Distance Field)를 기반으로 그림자 맵 생성을 소개합니다.
그 중 혼합 카툰 라이트맵을 빠르게 생성하는 방법에서는 실행 가능한 EXE와 효과를 제공합니다.


저자의 구현은 Zhihu 전문가의 많은 기사와 코드를 참조합니다. 다음은 저자의 메모 중 일부입니다.
2. SDF(부호 거리 필드)
Signed Distance Field(SDF, Signed Distance Field)는 2D와 3D로 나눌 수 있습니다.
이 기사에서는 2D SDF가 사용되며 정의는 다음과 같습니다.
각 픽셀(복셀)은 자신과 가장 가까운 개체 사이의 거리를 기록합니다. **
- 물체 내에 있을 경우 거리는 음수이며, 거리가 멀수록 값은 작아집니다.
- 정확히 객체 경계에 있는 경우 값은 0입니다.
- 물체 외부에 있는 경우 거리는 양의 값을 가지며, 거리가 멀수록 값이 커집니다.
아래 그림은 예시입니다.
- 흰색 픽셀은 객체를 나타내고 검은색 픽셀은 비어 있습니다.

그러면 해당 SDF 다이어그램은 다음과 같습니다.
- 사진 표시의 경우 방향 거리 값은 [0-1] 범위에 매핑됩니다, 0.5는 물체 내부와 외부 사이의 구분선을 나타냅니다.
- 원의 중심점은 물체의 가장 안쪽 부분이므로 가장 어둡고, 이미지의 네 모퉁이는 원에서 가장 멀리 있기 때문에 가장 흰색임을 확실히 알 수 있습니다.

방향성 거리 필드에는 다음과 같은 다양한 응용 시나리오가 있습니다.
- 경계 융합;
- 앤티앨리어싱;
- 글꼴 렌더링;
- 그래픽 그리기; *…
국경 융합
아래 그림에서 A는 왼쪽에서 1/3이 검은색이라는 뜻이고, B는 왼쪽에서 2/3이 검은색이라는 뜻입니다. A와 B를 한 번 혼합하면 결과는 1/3 검정색(왼쪽), 1/3 회색(가운데), 1/3 흰색(오른쪽)입니다.
A에서 별도의 SDF를 수행하면 A의 모든 점에 대한 거리 함수 SDF(A)를 얻을 수 있습니다.
- A의 흑백 구분선은 0입니다. 점이 흑백 구분선에 가까울수록 거리 함수의 값은 작아지고 0에 가까워집니다. 오른쪽(흰색)이 양수, 왼쪽(검은색)이 음수입니다.
같은 방법으로 B에 대해서도 별도의 SDF를 수행하여 SDF(B)를 얻습니다.
SDF(A)와 SDF(B)를 한 번 혼합하여 혼합(SDF(A), SDF(B))을 얻습니다.
그런 다음 블렌딩된 이미지의 중앙은 0이고 오른쪽(흰색)으로 갈수록 양수, 왼쪽(검은색)으로 갈수록 음수입니다.
이 블렌드(SDF(A), SDF(B))를 SDF를 통해 원래의 형태로 복원함으로써 0이 아닌 곳은 경계이고, 0이 아닌 곳은 그렇지 않다는 것을 알 수 있습니다. 즉, 두 개의 해당 SDF를 혼합하는 것은 실제로 경계를 혼합하는 것입니다.

앤티앨리어싱 또는 SDF 기반 글꼴 렌더링
기존 렌더링 방법과 비교하여 SDF를 기반으로 렌더링된 텍스트는 무한히 확대되고 명확하게 유지되며 획, 글로우, 앤티앨리어싱 등의 효과를 거의 오버헤드 없이 얻을 수 있습니다.
각 픽셀의 저장된 색상 값을 텍스트 윤곽선에서 가장 짧은 거리로 바꿉니다.
- 픽셀이 텍스트 내부에 있으면 양수 거리가 사용되고, 텍스트 외부에 있으면 음수 거리가 사용되며 텍스트 윤곽선 거리는 0입니다.
따라서 픽셀이 판단되는 한 양수이면 색상이 출력되고 그렇지 않으면 색상이 폐기됩니다.
크기 18 글꼴:

크기 18 글꼴의 비트맵은 15배 확대됩니다.

SDF 기반 글꼴 렌더링은 15배 확대됩니다.

그래픽 드로잉
유명한 ShaderToy 웹사이트에는 Raymarching과 결합된 SDF를 통해 달성된 드로잉 그래픽의 다양한 예가 있습니다.
iq大神블로그에서는 다양한 마법 연산을 보여줍니다.
그중 셀카소녀는 셀카를 찍는 소녀를 순전히 수학적 방법으로 그렸습니다.

3. 그림자 이미지 생성
작가가 그린 중간과정의 여러 그림은 다음과 같다.

정말로 이 기회를 포기하시겠습니까?
복지 카운트다운
: :
즉시 할인 ¥
일반 VIP 연간카드 이용 가능


27좋아요
좋아요
[시뮬레이션 후 "SDF 반표준 연재장"에 있는 SDF 파일의 출처] (https://blog.csdn.net/qq_16423857/article/details/139705322)
06-15
3159
PBR 렌더링, 아쿠아의 컴퓨터 그래픽 실습(단계적 요약)
Kaliaailia 블로그05-01
600
4.12 시작부터 5월 1일 말까지 검토 차원의 단계별 요약을 진행하고 앞을 내다보고 뒤돌아보는데 약 3주 정도 소요될 예정입니다. (물론 일시적으로 기억나는 것만)
댓글 4개 로그인되지 않았습니다. 댓글을 게시하거나 보기 전에 먼저 로그인하세요.
2-15
SDF_(투영점)_cgal sdf 기준으로 추출된 뼈대의 산점
2-5
SDF(Signed-distance-field: direct distance field)(11): Shadow(WebGL 구현)
10-08
1548
[Unity Skybox]만화 렌더링에서 구름의 분산 효과를 얻는 방법
12-30
4406
스카이박스에서 구름의 소산 효과를 얻으려고 노력하는 참고 및 학습 과정을 기록합니다.
...SDF 간단한 그림 모양" 구현 [GLSL]_GLSL을 사용하여 sdf 붙여넣기 _그림_을 생성하는 방법...
2-12
Glyphy: OpenGL ES2 최신 릴리스 기반의 고품질 SDF 텍스트 렌더러
12-31
813
Glyphy는 OpenGL ES2 셰이딩 언어를 기반으로 하는 부호 있는 거리 필드(SDF) 텍스트 렌더러입니다. 대부분의 다른 SDF 기반 OpenGL 렌더러와 달리 Glyphy는 _SDF_를 텍스처로 샘플링하지 않고 대신 _SDF_의 벡터 표현을 직접 사용하여 GPU에 제출합니다. 이 방법은 텍스처 샘플링으로 인한 윤곽 왜곡과 품질 저하 문제를 방지하여 매우 높은 품질의 텍스트 렌더링 효과를 얻습니다. ## 프로젝트 기술 분석 G[Unity Cloud Dissipation] 이론 기본: _SDF_의 8SSEDT 알고리즘 구현
01-06
6194
07-26
6971
실제 디지털 회로 설계에서는 SDF 파일의 생성 및 내용 의미, SDF 백마킹 방법 및 원리를 숙지하여 설계 품질 및 타이밍 정확성을 보장하는 것이 매우 중요합니다.
[SDF(부호 거리 함수)를 사용한 그림자 계산의 수학적 원리에 대해 이야기합니다.] (https://blog.csdn.net/qq_33060405/article/details/145345960)
01-24
707
05-24
2743
[3-렌더-2 셰이더를 작성할 때 많은 초보자들이 원하는 얼굴 _그림자_를 정확하게 계산하지 못하는 경우가 많습니다. 이 튜토리얼에서는 캐릭터의 얼굴_그림자_를 정확하게 계산할 수 있는 셰이더를 작성하는 방법을 알려드립니다.] (https://blog.csdn.net/m0_49904624/article/details/139162756)
WebGL과 HTML5 기반의 인터랙티브 3차원 분자 구조 시각화 브라우저 구축
10-29
30,000+
sdf _atlas:SDF 글꼴 image 세트 생성 도구
11-05
1390
03-02
1026
[최근 작업에는 얼굴 SDF _Shadow_가 포함됩니다. 인터넷의 일반적인 관행은 보간을 수행하지 않고 직접 단계적으로 하드 크롭을 수행하는 것입니다. Interpolation을 왜 안쓰는지 잘 모르겠어서 SmoothStep으로 간단하게 수정해서 효과를 봤습니다] (https://blog.csdn.net/grayrail/article/details/136414460)
[GAMES-202 실시간 렌더링] 2. Soft Shadow 02 (VSM, Moment Shadow Mapping, SDF Distance Field Soft Shadow)
05-06
3055
05-24
437
03-09
905
12-08
555
SDF_ 경로 추적 실시간 그래픽 시스템 Snelly는 WebGL의 물리적 렌더링 기반
- 회사소개
- 모집
- 사업협력
- 취재를 구합니다
400-660-0108
[email protected]
온라인 고객센터- 근무시간 8:30~22:00*
공인보안등록번호 11010502030143 - 京ICP备19004658号
- 京网文〔2020》호. 1039-165
- 상업사이트 등록안내
- 베이징 인터넷 불법 및 불량정보 신고센터
- 부모님 모니터링
- 네트워크 110 알람 서비스
- 중국인터넷신고센터
- 크롬 스토어 다운로드
- 계정관리 사양
- 저작권 및 면책조항
- 저작권 침해 신고
- 출판 라이센스
- 사업자등록증
- ©1999-2026 베이징 혁신 러즈 네트워크 기술 유한 회사
블로그 수준
코딩 경력 9년
원본 294개좋아요 658개 컬렉션 2268개 팬 601명
Jiepei PCB 무료 교정! 1-6 레이어는 크기/프로세스에 제한이 없으며 빠른 교정, 일괄 저장, 품질 보장, 지금 쿠폰을 받으세요! 광고

수집 메모
- 이미지 다운로드 한도(24) 도달
최소. 0.47위안/일에 기사 잠금 해제 
상라이 93
4
공유](javascript:;)
신고
