- (1) Sub Surface Scatter - 


Maya3D에서, SSS 쉐이더로 불리는 Sub Surface Scattering 쉐이더는 '피부'를 표현할 때 사용하는 쉐이더다. 사람의 피부는 빛을 100% 반사하지도 않고, 100% 흡수하지도 않는다. 토마토와 같은 과일을 생각해보자. 물렁물렁한 과일표면에 강력한 조명을 설정하면, 빛이 투과되면서 그림자 색상이 붉게 변한다. 


SSS쉐이더는 빛이 투과되는 현상을 표현할 수 있다. 아래사진을 보면, 피부의 겉면에 투과된 빛이 붉은 색(혈액)이다. 


피부에 빛이 투과되는 현상이 없으면 마치 인형처럼 보인다. SSS쉐이더는 캐릭터 실사감을 살리는 중요한 역할을 한다. 빛이 20~30% 투과되고 난반사가 발생하는 상황을 그대로 표현할 수 있는 쉐이더가 SSS 쉐이더라고 알아두자.


과거 멘탈레이(마야 랜더러)에서는 'Mia Material SSS 쉐이더'로 피부 난반사를 표현했다. 최근에는 혼합할 수 있는 쉐이더가 나왔고, 여러가지 텍스처를 섞는 방식을 많이 사용한다. 


그리고 Arnold에서는 SSS 표현이 훨씬 간단해졌다. Maya에서 Arnold al Standard Surface 쉐이더를 이용하여 SSS를 만들어보자. 


1:: 『ai standard surface 쉐이더 선택』

arnold 2.0 초기까지 ai standard 쉐이더와 ai skin 쉐이더가 있었다. 최신 arnold를 다운받으면, ai standard와 ai skin 쉐이더는 보이지 않고, ai standard surface 쉐이더가 나타난다. 최대한 쉽고 빠르게 만들기 위해서인지, ai standard surface 쉐이더로 웬만한 재질은 표현하는 방향으로 arnold가 나아가고 있다. 


https://support.solidangle.com/display/A5AFMUG/Subsurface


위의 링크는 arnold를 만든 sollidAngle사의 홈페이지이며, ai standard surface 쉐이더와 관련된 투과 및 난반사를 잘 설명하고 있다. 아래 사진은, sub surface scattering을 가장 잘 표현한 사진이라 생각한다.

  

[SSS적용 전]

                               

 

[SSS적용]


빛이 투과하여 난반사가 발생하면, 위의 사진처럼 특정 오브젝트의 그림자 색이 주변으로 번진다. 강한 햇빛 아래에서 빨간 물풍선 그림자가 붉게 나타나는 현상을 생각해보면, Sub Surface Scattering을 쉽게 이해할 수 있다.


지금부터 ai standard surface를 직접 캐릭터에 적용해보자.

[기본 쉐이더를 적용한 모습]


디퓨즈 값이 하얀색인 ai standard surface 쉐이더의 기본 랜더링은 '코딩한 마네킹'처럼 나온다. 먼저 specular 탭의 roughness( 반사광의 거친정도)를 높여서 코팅재질부터 피부처럼 바꿔보자.


Roughness값을 올려주면 표면 감도가 거칠어지면서 반사광이 사라진다. 즉, 뻔질거리는 코팅느낌을 제거할 수 있다.


2:: 『sub surface 설정

sub surface 탭으로 가서, 붉은색과 노란색 사이에 있는 색을 일단 넣고, 랜더링을 걸어본다. 만일 sursurface의 weight값을 1로 높이면, base의 색상을 무시해버린다. (subsurface의 칼라 텍스처나 색의 값으로 계산)

 

weight값을 최고치로 올렸을 때, 마치 단백질 휴머노이드 인형처럼 표현된다. 참고사항으로 유투브에서 인기있는 춤추는 CG캐릭터의 경우 이 상태에서 애니메이팅만 걸어서 랜더링했을 가능성이 높다. 만일 radius 값을 높이면, 투과가 줄어들기 때문에 좀더 단단한 재질에 가까워지겠지만, 우선 텍스처를 넣어보자. 


3:: 『텍스처 삽입 

surface의 기타 속성값을 default에 둔 상태에서 피부 칼라 텍스처를 삽입한다. 실제 사람 피부를 텍스처로 만들었기 때문에 텍스처를 입힌 것만으로도 상당히 실사감이 높아진다. 파라마운트 라이팅을 걸었더니 밀레 그림에 등장하는 농부와 같은 구수한 느낌이 든다. 


버터플라이 라이팅(파라마운트)을 사용했지만 코 밑의 그림자가 상당히 희미하다. radius 값이 1이상 되면, 그림자도 희미해지기 때문이다. 그림자의 선을 강조하려면 radius수치를 1이하로 떨어뜨려준다. 


radius값이 높다는 의미는, 쉐이더를 구성하는 입자값이 크다는 뜻이며 동시에 그림자까지 모두 투과된다. 따라서 마치 소프트 라이팅을 연출한 것처럼 그림자가 부드러워진다. 플라스틱은 그림자가 강하게 생성되지만, 젤리는 그림자의 테두리선이 희미하게 형성되는 것과 같은 원리다.

4:: 『radius 값 조절  

현재 '1'로 잡혀 있는 radius값을 0.3으로 낮춰보자. 쉐이더의 밀도가 높아지면서, 즉시 hard하게 그림자가 나타날 것이다. 

[코 아래의 그림자 윤곽선이 드러남]

                           

                        Radius 1                               Radius 0.3 위의 2개 사진 속 '빨간 상자'를 비교해보자. radius값이 '1'인 랜더링 이미지에서는 코 밑의 그림자가 희미하다. 반면, radius 값이 '0.3'인 이미지에서는 그림자 윤곽이 보인다.

radius값을 0으로 한다면, sub surface를 사실상 사용할 필요가 없다. 텍스처 사진을 그대로 덮어씌우기만 할 뿐이니깐.


``피부의 투과율을 표현하기 위한 radius의 적당값은 어느 정도일까?``

 

solidAngle사의 설명을 살펴보면, 인체에 해당하는 radius값은 0.5 ~ 1 사이가 적당하지 않을까한다.

      


좌측부터 radius값은, 0.25  -> 0.5  -> 1 이다. radius값이 커질수록 빛은 더 깊이 투과한다. 캐릭터의 radius값을 너무 크게 한다면, 푸딩 외계인처럼 보일 수 있으니 적정값을 0.5 ~ 1사이에서 찾자.

5:: 『Scale 값 조절

scale값은 투과된 빛의 색을 나타낸다.

피부같은 경우에는 혈관색이 붉게 나타난다. 따라서 scale 색을 짙은 '붉은색'으로 놓고 scale값을 조절해준다. scale값을 0.1로 할 때와 1로 줬을 때의 차이는 '붉은 기운'이 피부겉면에 나타나는 것으로 알 수 있다. 아래 사진을 살펴보자. 

미세하지만 붉은 박스를 비교해서 살펴보자. 좌측사진(scale:0.1)콧등에 있는 검은색 그림자의 '검은색'이 빠지면서, '붉은 색'이 나타난 것을 알 수 있다. 지금까지 설정한 내용은, 기존의 멘탈레이 mia material sss 쉐이더에 비해 간단하다.

마지막으로 type: diffusion or randomwalk 에 대해서 알아보자.


6:: 『diffusion & randomwalk

solidAngle 홈페이지에서는 diffusion = default로 설명하고 있다. randomwalk는 말 그대로 빛이 투과되는 상황에 따라서 radius나 scale 값이 변동된다는 말인데, 크기가 작은 오브젝트일수록 영향을 많이 받게 되고, 또한 랜더링 시간이 느려져서 크게 권장하지 않는 방식으로 말한다.


실험할 목적이 아니라면 diffusion에 놓고 사용하길 권장하고 있지만, 한번 실험해보자.

randomwalk 수치를 +로 높일수록 붉은색으로 설정한 scale 색이 전면으로 드러난다. 만일 '술 주정뱅이'처럼 늘 붉은 기운이 얼굴에 감도는 캐릭터를 만든다면, randomwalk 값이 꽤 유용할 것으로 생각된다.

광원이 많이 투과되는 부위(코)가 심하게 붉게 변했다. Radius칼라가 빨간색이므로 붉게 올라온 것이다. 만일 술을 마시고 있는 장면을 표현해야 한다면, set 키설정으로 randomwalk값 조절만으로도 훌륭한 인물묘사가 가능할 것으로 예상한다.


지금까지 실험한 arnold sub surface 방식은, 멘탈레이 sss에 비해 간단하면서도 퍼포먼스는 높은 느낌이다. 마야2016부터 적용된 mix 쉐이더와 비교해 봤을 때도 가성비가 뛰어나다. (랜더링 속도)


다만 에러 발생율이 멘탈레이에 비해 높은 게 흠이다.이 부분은, 항상 저장을 하면서 '실시간 랜더링'에 너무 기대지 않는 습관으로 극복할 수 있다. 패스랜더링과 occlusion, 그림자 맵, Nuke합성까지 연계를 조금 더 알아봐야 하겠지만,


Sub Surface만 본다면, 작업시간을 환상적으로 단축시켜 줄 것으로 예상한다.