블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (664)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (103)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (217)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total339,492
Today19
Yesterday52
links
- 피부는 왜 피부처럼 보이는가? 1 : http://mgun.tistory.com/1545
- 피부는 왜 피부처럼 보이는가? 2 : 
http://mgun.tistory.com/1557 


복잡해 지는 과정으로 넘어가기 전에 여태까지온 길을 되짚어 보자.

피부를 표현하기 위한 노력. 
1. 단순히 피부색의 텍스처를 붙여 확산반사 라이팅을 한다.
   (값싼 방법이지만 플라스틱처럼 보인다.)


2. Half Lambert Lighting
   (물리적으로는 맞지 않지만 부드러운 음영이 나온다.)

평준화.

pow 연산.
     
3. Half Lambert Lighting + Phong Specular Lighting. 
   (하프라이프2 에피소드1에서 사용. N과 L 이외에 E방향도 고려.
    피부에 한결같이 specular을 적용하면 금속처럼 보이므로 어느 위치에 어느만큼의
    specular을 적용할 지를 정하기 위해 Specular Exponent, Specular Mask 사용)


    4. KS BRDF (지방질층의 반사)
       면의 거친정도, 굴절률등을 고려한 반사공식.

면의 거친정도, 굴절률등을 고려.

5. KS BRDF + 프레넬 + 확산반사 * 화상텍스처. 

약간 건조한 느낌이 난다.
하프라이프2의 스킨셰이더와 거의 흡사하다.


6. 다중 레이어.
피부의 광산란은 단층이 아닌 복수층.
단일 레이어 스킨 모델은 밀랍처럼 보인다.
표피는 좁은 산란, 아래쪽 레이어는 넓은 산란 대부분 붉은 계통.

 
흐음..대략 이러한 수순을 밟는다.

이제 다시 진도를 나가보자.
이 다중 레이어를 만들기 위해서는 어떻게 해야하는가?
- 입사광으로 시작
- 표면의 블러
- 블러 추가
- 선형 조합
 
평평하고 높은 산란 표면의 어느 점에 좁게 집중되어 입사한 빛을 생각 해 보자.

 
음영처리를 하는 것은 해당 폴리곤 상의 픽셀이며, 어느점에 입사 한 빛이,
그 주변에 대해 어떤 확산광이 되어 돌아오는지를 알아야 한다.
아래 그림을 보면 입사광이 내부에서 산란을 거친 후 다시 확산이 일어나는것을 볼 수 있다.
여기에 집중되어 들어오는 빛은 거의 수직으로 들어오는 빛이라고 생각해도 될듯...
일단 여기서는 표면의 미세면 거친정도는 고려하지 않는다.

 

결국 필요한 정보는 광선이 피부를 조사할 때 그 조사점으로부터의 반경 r에서는
산란을 거친 후 어떤 색의 빛이 어느 정도의 밝기가 되는지 이다.

 
우리는 이러한 정보(피부에 비춘 한개의 광선이 피부 밑에서 어떻게 산란해서 나오는지)를
계산할 수 있다.

위 그림은 실제로 계측하는 모습이다.
방향을 고려하지 않고 전방위로 같은 결과를 얻을 수 있다고 가정하기 때문에
계측기는 일차원 모양의 센서로 되어있다.


위 그림은 확산 프로파일(RDP:Reflectance Diffusion Profile)을 그래프화 한 것이다.
세로축이 반사율, 가로축이 빛이 조사한 위치로부터의 거리이다.
즉, 멀리가면 갈수록 빨간색이 강하게 남는것을 알 수 있다.
여기에서는 특히 RGB에서의 반경과 반사율의 관계는 완전히 다르다.

위 이미지는 반사율 확산 프로파일을 이차원 평면상에 가시화 한 것이다.

다시 정리를....



산란에 대한 핵심 아이디어로는
- 모든 표면 점에서 입사광(color 값)을 모으고 확산을 근사화(방향을 무시한 합),
   이웃 표면지점 내에서의 산란.
- 2d 평평한 표면의 각 지점에서
  초기의 라이트를 모아서 이웃 픽셀들 내에서 산란,  
  r로 분리된 것에 의존.

  이는 블러와 같다.


즉, 표피상의 모든 픽셀이 이 ROP에 따라 피하산란을 하고 돌아온다고 가정하면
복잡한 피하산란을 이것으로 간이적으로 구현할 수 있지 않을까?

이 조건으로한다면 피하산란은 모든 표피픽셀에 대해 ROP를 참고해 블러하면된다.

사실 표피면에 수직으로 들어가는 빛이라는 것은 엄밀하게 구할수는 없지만 대부분은
지방질층을 빠져나온 확산광이라고 할 수 있다.

이것은 결국 확산반사의 음영처리를 해서 일반적인 화상텍스처 매핑을 해준 결과라고
가정 할 수 있는 것이다.

이번글은 여기에서 마무리 하고 다음 글에서는 실제로 블러하는 것에 대해 이야기 
하도록 한다.

Reference Links :
allosha님의 표면하 사란에 의한 스킨 셰이더
GPG Gems1. Chapter16. RealTime Approximations to Subsurface Scattering.
GPG Gems3. Chapter14. Advanced Techniques for Realistic Real Time Skin Rendering.
NVIDIA GDC 2007. Demo Teamp Secrets: Advanced Skin Rendering
----------------------------------------------------------------------------------------
ps.

틀린 부분이 있거나 이상한 부분이 있다면 언제든지 문의나 덧글 부탁 드립니다.

Posted by 붕대마음
TAG ,

최근에 달린 댓글

최근에 받은 트랙백

글 보관함