피부는 왜 피부처럼 보이는가? 4
반응형
links
- 피부는 왜 피부처럼 보이는가? 1 : http://mgun.tistory.com/1545
- 피부는 왜 피부처럼 보이는가? 2 : http://mgun.tistory.com/1557
적당히 쓸만 한 것 같다.
구현에 대한 세부적인 내용은 링크를 참조하길 바란다.
이렇게 블러한 텍스처를 매핑해 주면 대략적인 피하산란 라이팅은 완성이 된다.
다만 블러에 좀 더 고민 해 볼 필요가 있는데 RDP를 보면 산란하는 방식이 빛의
RGB에 따라 다르기 때문이다.
위 nvidia의 방식을 보면 가로, 세로 이렇게 두번 블러를 해 주는데,
블러시에는 RGB마다 가중치를 붙여 블러의 반경을 바꾸어 사용한다.
하지만 이렇게 이차원에서 텍스처를 일률적으로 블러 할 경우 왜곡 문제가 발생한다.
- 텍스처 공간에서 획일화된 블러 피하기.
3d 공간 상에서 내부쪽은 넓고 강하게 블러되어 버린다.
즉, 귀와같이 안쪽에 있는 것을 코와같이 앞쪽에 있는 것과 같은 지름으로 블러를 하면
지나치게 강하게 블러가 발생해서 지나친 피하산란이 일어난다.
- 텍스처 공간에서의 한 픽셀이 실제월드에서의 거리상수값이 아니다.
즉, uv좌표계와 실제 3D월드공간과의 어긋남이 왜곡을 만든다.
이를 보정해 주기 위해서는 어긋난 정도를 사전에 계산해서 텍스처 데이터(보정맵)으로
가지고 있다가 블러시에 이를(블러 반경 스케일값) 기준으로 해서 블러하면 된다.
관련공식등은 아래 참조링크에서 GDC 문서를 참조하면 된다.
- 텍스처 좌표계에서 가우스 블러를 하면 생겨나는 왜곡중 하나가 Seam(연결선)이다.
이는 텍스처의 경계부분에 텍스처 메모리상의 초기화색(검은색)이 스며들어 텍스처의 경계선이
연결선으로 보이는 문제이다.
위와같이 연결선이 생겨버린다.
이 부분의 해결을 위해서 여러가지 방법이 있지만 가장 저렴한 방법은 텍스처의 기본색을
알맞게 초기화 시켜주는 것이다.
위 텍스처의 경우에는 검은색이 아닌 황색으로 하면 충분히 효과적이다.
- 텍스처 좌표계에서 블러를 하면 나타나는 왜곡현상중 마지막은
바로 디테일이 없어진다는 것이다.
범프매핑을 적용하고 텍스처 평면에 렌더링 해서 이를 블러처리하면 범프매핑의
음용이 약해져 버리게 된다.
그래서 반대로 범프매핑을 뒤로 넣어주면 주름이 너무 강하게 남아 라이팅과의
매칭이 잘 맞지 않아 부자연 스러워 보인다.
이에 대한 중간적인 방법으로 피하산란 블러의 전후에 감쇠텍스처를 사용하는
방법이 있다.
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.
틀린 부분이 있거나 이상한 부분이 있다면 언제든지 문의나 덧글 부탁 드립니다.
- 피부는 왜 피부처럼 보이는가? 1 : http://mgun.tistory.com/1545
- 피부는 왜 피부처럼 보이는가? 2 : http://mgun.tistory.com/1557
- 피부는 왜 피부처럼 보이는가? 3 : http://mgun.tistory.com/1558
이전 글에서 RDP에 따른 블러를 실시해야 한다고 말했었다.
이 블러는 어떻게 해야 하는가?
- 3d 표면을 펼친 텍스처 좌표 사용
- 블러를 수행하기 위해 이 형태를 사용
- 텍스처 매핑을 한 이후에 다시 사상
- 이를 텍스처 공간 확산이라고 부른다.
GPU gems 1.
Chapter 16. Real-Time Approximations to Subsurface Scattering
link : http://http.developer.nvidia.com/GPUGems/gpugems_ch16.html
이를 실제로 구현해서 테스트 해 본 결과는 아래에 있다.
link : http://mgun.tistory.com/1600
흡사하지만 RDP에 따라 블러 해 주는 게 아니라 일정 오프셋값(대략적인 값)으로
블러를 해 준 결과는 아래와 같다.
적당히 쓸만 한 것 같다.
구현에 대한 세부적인 내용은 링크를 참조하길 바란다.
이렇게 블러한 텍스처를 매핑해 주면 대략적인 피하산란 라이팅은 완성이 된다.
다만 블러에 좀 더 고민 해 볼 필요가 있는데 RDP를 보면 산란하는 방식이 빛의
RGB에 따라 다르기 때문이다.
위 nvidia의 방식을 보면 가로, 세로 이렇게 두번 블러를 해 주는데,
블러시에는 RGB마다 가중치를 붙여 블러의 반경을 바꾸어 사용한다.
하지만 이렇게 이차원에서 텍스처를 일률적으로 블러 할 경우 왜곡 문제가 발생한다.
- 텍스처 공간에서 획일화된 블러 피하기.
3d 공간 상에서 내부쪽은 넓고 강하게 블러되어 버린다.
즉, 귀와같이 안쪽에 있는 것을 코와같이 앞쪽에 있는 것과 같은 지름으로 블러를 하면
지나치게 강하게 블러가 발생해서 지나친 피하산란이 일어난다.
- 텍스처 공간에서의 한 픽셀이 실제월드에서의 거리상수값이 아니다.
즉, uv좌표계와 실제 3D월드공간과의 어긋남이 왜곡을 만든다.
이를 보정해 주기 위해서는 어긋난 정도를 사전에 계산해서 텍스처 데이터(보정맵)으로
가지고 있다가 블러시에 이를(블러 반경 스케일값) 기준으로 해서 블러하면 된다.
관련공식등은 아래 참조링크에서 GDC 문서를 참조하면 된다.
- 텍스처 좌표계에서 가우스 블러를 하면 생겨나는 왜곡중 하나가 Seam(연결선)이다.
이는 텍스처의 경계부분에 텍스처 메모리상의 초기화색(검은색)이 스며들어 텍스처의 경계선이
연결선으로 보이는 문제이다.
위와같이 연결선이 생겨버린다.
이 부분의 해결을 위해서 여러가지 방법이 있지만 가장 저렴한 방법은 텍스처의 기본색을
알맞게 초기화 시켜주는 것이다.
위 텍스처의 경우에는 검은색이 아닌 황색으로 하면 충분히 효과적이다.
- 텍스처 좌표계에서 블러를 하면 나타나는 왜곡현상중 마지막은
바로 디테일이 없어진다는 것이다.
범프매핑을 적용하고 텍스처 평면에 렌더링 해서 이를 블러처리하면 범프매핑의
음용이 약해져 버리게 된다.
그래서 반대로 범프매핑을 뒤로 넣어주면 주름이 너무 강하게 남아 라이팅과의
매칭이 잘 맞지 않아 부자연 스러워 보인다.
이에 대한 중간적인 방법으로 피하산란 블러의 전후에 감쇠텍스처를 사용하는
방법이 있다.
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.
틀린 부분이 있거나 이상한 부분이 있다면 언제든지 문의나 덧글 부탁 드립니다.
'Study > M's Lecture' 카테고리의 다른 글
엔진프로그래머? 그냥 일기 1. (0) | 2024.05.19 |
---|---|
PBS, PBR이란 무었인가? (0) | 2017.10.19 |
피부는 왜 피부처럼 보이는가? 3 (0) | 2013.12.18 |
피부는 왜 피부처럼 보이는가? 2 (0) | 2013.12.13 |
피부는 왜 피부처럼 보이는가? 1 (0) | 2013.12.02 |
TAGS.