Skip to content

서브서피스 스캐터링(SSS)에 의한 스킨 셰이더(5)~서브서피스 스캐터링(SSS)과 스킨 셰이더(3)

[칼럼 핵심 요약]
결국, 셰이딩(Shading)를 실시하는 것은 얼굴 모델의 표면의 폴리곤 상의 픽셀 뿐이므로, 거기서, 어느 점에 입사한 빛이, 그 주변에 대해 어떠한 확산광이 되어 돌아오는지를 조사해 본다.

🌐 원문 링크: 表面下散乱によるスキンシェーダ(5)~表面下散乱とスキンシェーダ(3) (Mynavi News)
📅 원문 발행일: 2009-05-01 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)

NOTE

💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)

  • 스크린 공간 SSS (SSSS): Jorge Jimenez 등이 제안한 화면 공간 분리 가능 서브서피스 스캐터링(Separable SSSS) 기법이 정립되면서 피부 렌더링의 성능 효율이 비약적으로 상승했습니다.
  • 다층 표면 모델 (Multi-layer SSS): 표피(Epidermis), 진피(Dermis), 피하지방층으로 세분화된 빛 흡수/산란 계수를 개별 프로파일링하여 영화 CG 수준의 디지털 휴먼 렌더링이 실시간으로 구현됩니다.

📖 본문 해설

[원문 리드문] > 결국, 셰이딩(Shading)를 하는 것은 얼굴 모델의 표면의 폴리곤상의 픽셀 뿐이므로, 거기서, 어느 점에 입사한 빛이, 그 주변에 대해서 어떠한 확산광이 되어 돌아오는지를 조사해 본다.

결국, 셰이딩(Shading)를 실시하는 것은 얼굴 모델의 표면의 폴리곤 상의 픽셀 뿐이므로, 거기서, 어느 점에 입사한 빛이, 그 주변에 대해 어떠한 확산광이 되어 돌아오는지를 조사해 본다.

이것은 하나의 빛의 빔을 피부에 수직으로 조사했을 때 조사점으로부터 반경 r에서 어떤 색의 빛이 얼마나 밝게 되어 있는지를 구하여 측정한다. 이 결과를 특히 "반사율 확산 프로파일"(RDP : Reflectance Diffusion Profile)이라고합니다.

피부에 조사된 하나의 광선이 피부 아래에서 어떻게 산란되어 나오는지 그 분포를 측정한다.피부에 조사된 하나의 광선이 피부 아래에서 어떻게 산란되어 나오는지 그 분포를 측정한다.

실제 계측의 모습. 모든 방위각에 동일한 결과를 얻을 수 있다고 가정하기 때문에 계측기는 1 차원 (선분) 형 센서입니다. "Analysis of Human Faces using a Measurement-Based Skin Reflectance Model"(Tim Weyrich, SIGGRAPH 2006)실제 계측의 모습. 모든 방위각에 동일한 결과를 얻을 수 있다고 가정하기 때문에 계측기는 1 차원 (선분) 형 센서입니다. "Analysis of Human Faces using a Measurement-Based Skin Reflectance Model"(Tim Weyrich, SIGGRAPH 2006)

아래 그림은 '반사율 확산 프로파일'(RDP:Reflectance Diffusion Profile)을 그래프로 나타낸 것이다. 세로축이 반사율(출사광의 휘도), 가로축이 광을 조사한 위치로부터의 거리를 나타낸다. 즉 멀리 가면 갈수록 빨강이 강하게 남는 것을 의미하고 있다. 여기서는 특히 빛의 적색 R, 청색 B, 녹색 G에서 반경 거리와 반사율의 관계가 완전히 다르다는 점에 주목해 두고 싶다.

반사율 확산 프로파일 (RDP : Reflectance Diffusion Profile)의 그래프반사율 확산 프로파일 (RDP : Reflectance Diffusion Profile)의 그래프

🔍 [인포그래픽 도해 한국어 번역: 반사율 확산 프로파일 (RDP) 파장별 침투 그래프]

  • 세로축 (반사율 / 휘도), 가로축 (빛 조사점으로부터의 거리 r)
  • 적색 파장 (Red): 거리가 멀어져도 가장 완만하게 감쇠하여 피부 내부 깊숙이 투과되어 퍼짐 (붉은빛 산란)
  • 녹색/청색 파장 (Green/Blue): 표피층에서 빠르게 흡수되어 중심부 근처에만 머무름

RDP를 2차원 평면에 시각화한 것RDP를 2차원 평면에 시각화한 것

필터 직경이 다른 여러 번의 가우스 블러의 결과로 다중 층에 의한 광산란을 근사 구현

모든 표피상의 픽셀이 이 RDP에 따라 피하 산란하여 돌아온다고 가정하면 복잡한 피하 산란을 이것으로 간이 구현할 수 있는 것은 아닐까.

그러나 이 이굴이 잘 가는 것은 그 표피면 픽셀에 수직으로 빛을 조사했을 때뿐이다. 그러나이 조건을 사용할 수 있다면 피하 산란은 모든 표피 픽셀에 대해이 RDP에 따라 보카를 수행해야합니다.

표피면에 대하여 수직으로 들어가는 빛은 엄밀히 요구되지 않지만, 그래도 대부분은 지질층을 빠져 온 확산광이라고 할 수 있다. 이것은, 확산 반사의 셰이딩(Shading)를 행하여 보통으로 화상 텍스처 맵핑을 한 결과라고 가정할 수 있다.

그리고 RDP에 따른 보카는 각 안면상의 픽셀에 대해 균등하게 실시할 필요가 있다. 이 보카를 실행하기 위해서는, 조금 이상한 프로세스를 취한다.

픽셀 셰이딩(Shading)(실제 렌더링)의 계산은 제대로 된 3D 실공간에서 실시하지만, 그 출력(그리기)은, 그 3D 모델의 가죽을 열어 2D의 종이에 붙인 것 같은 좌표계에 대해서 실시하는 것이다. 입체를 종이에 전사하는 것 같은… … 이미지적으로는 생선, 혹은 지구의 지도와 같은 느낌이다.

확산 반사 계산과 이미지 텍스처링은 3D 공간에서 수행되지만 렌더링 결과는 3D 모델을 잘라낸 것처럼 2D 공간에서 수행됩니다.확산 반사 계산과 이미지 텍스처링은 3D 공간에서 수행되지만 렌더링 결과는 3D 모델을 잘라낸 것처럼 2D 공간에서 수행됩니다.

이것을, 이번은 2D 좌표계(텍스처 좌표계)로, 전출의 RDP에 따르는 형태로 보카 해 주는 것이다. 이것으로 아직 미세한 문제는 남아 있지만 표피는 피하 산란한 음영 결과에 접근한다.

텍스처 좌표계에서 평면으로서 RDP에 따라 보카 해 준다텍스처 좌표계에서 평면으로서 RDP에 따라 보카 해 준다

이대로는 단순한 어택 이미지이므로 이번에는 이것을 3D 모델에 제대로 텍스처 매핑 다시 해 준다. 이것으로 피하 산란한 라이팅의 종료한 얼굴 모델의 완성이 된다. 다만, 흐리게 하는 것만은 불충분하고, 그 블러를 시키는 방법에는 궁리가 필요하다.

왜냐하면 전단에서 꺼낸 RDP를 다시 한번 보게 된다고 알지만, 산란 방법이 빛의 RGB의 각 성분에 따라 다르기 때문이다. 그 때문에, 각 보카 반경마다, RGB의 각 성분이 다른 감퇴율로 보카 해, 그것들을 모두 합성해 해야 할 것이다.

NVIDIA의 실장에서는 보카 처리는 가우스 보카(가우스 필터)를 채용해, 가우스 필터의 특성을 활용해 좌우와 상하에 2회로 나누어 실행하는 방법을 채용하고 있다. 게다가 그 블러 때에는 각 RGB마다 가중치를 붙여 덧붙여 블러의 반경을 바꾸어 합계 6회 실시하고 있다. 이것이 전회의 「복수층」의 개념의 재현에 상당하는 것이다.

텍스처 좌표계에서 흐림 개념 그림입니다. 가우스 흐림(가우스 필터)은 좌우와 상하에 2회로 나누어 실장할 수 있는 것이 특징으로, GPU 방향의 처리라고 할 수 있다(여기의 영상의 결과는 어디까지나 개념 설명을 위한 예로, 실제의 블러의 결과와는 다르다)텍스처 좌표계에서 흐림 개념 그림입니다. 가우스 흐림(가우스 필터)은 좌우와 상하에 2회로 나누어 실장할 수 있는 것이 특징으로, GPU 방향의 처리라고 할 수 있다(여기의 영상의 결과는 어디까지나 개념 설명을 위한 예로, 실제의 블러의 결과와는 다르다)

다른 블러 반경마다 다른 RGB마다의 가중치를 붙여 가우블러를 6회 실시하고 있다. 이 표는 이전 RDP를 따르도록 생성된 가우스 필터의 필터 직경당 RGB 가중 계수입니다. 상단이 중심부에 상당하고 하단에 갈수록 외주. 외주만큼 적색 성분이 강하게 남아 있는 전출의 RDP가 이 표로부터도 확인할 수 있다다른 블러 반경마다 다른 RGB마다의 가중치를 붙여 가우블러를 6회 실시하고 있다. 이 표는 이전 RDP를 따르도록 생성된 가우스 필터의 필터 직경당 RGB 가중 계수입니다. 상단이 중심부에 상당하고 하단에 갈수록 외주. 외주만큼 적색 성분이 강하게 남아 있는 전출의 RDP가 이 표로부터도 확인할 수 있다

6회분의 다른 필터 지름으로 보카한 결과. 왼쪽 가장자리가 가장 좁고 오른쪽 가장자리가 가장 넓습니다. 좌단이 앞의 표의 최상단의 가중 계수로 블러한 것, 우단이 표의 최하단의 가중 계수로 블러한 것이 된다6회분의 다른 필터 지름으로 보카한 결과. 왼쪽 가장자리가 가장 좁고 오른쪽 가장자리가 가장 넓습니다. 좌단이 앞의 표의 최상단의 가중 계수로 블러한 것, 우단이 표의 최하단의 가중 계수로 블러한 것이 된다

블러 없는 오리지널과 6장분의 블러 결과를 모두 합성한 것블러 없는 오리지널과 6장분의 블러 결과를 모두 합성한 것

피하 산란 블러에 의해 생성된 복수의 블러 결과는 선형 합성된다. 이 합성 결과가 피하 산란 성분이며, 이것 다시 한번 3D 모델에 대해, 최초로 구한 지질층에서의 반사의 결과(KS BRDF+프레넬 반사)와 함께 텍스처 맵핑을 적용하면 완성이 된다. (계속)

지금까지의 프로세스의 흐름도. 좌하의 스트레치 보정에 대해서는 후술지금까지의 프로세스의 흐름도. 좌하의 스트레치 보정에 대해서는 후술

(트라이Z 니시카와 젠지)


🔗 연관 지식 베이스 (Wiki)

Based on Zenji Nishikawa's 3D Graphics Maniax series. Translated & Knowledge-Based for Korean Game Developers.