본문 바로가기

Engine Development

헤어 랜더링

728x90
반응형

헤어 랜더링을 하면서 가장 중요한것은 탄젠트값을 구하는것이다..

달의 목소리님 블로그에서 퍼옴

Hair Lighting 모델과 일반 적인 Lighting 모델의 가장 큰 차이 점은 Normal대신에 Tangent를 쓴다는 점입니다.즉, Hair을 Strand ( 머리카락 한 올 )의 집합채로 보고, Vertex 를 그 구성원으로 보았을때, Lighting 계산을 Normal이 아니라머리결을 따라 가는 Tangent를 쓰는 것이죠.

제가 가장 헷갈렸던 부분이 이곳이었습니다. Normal Map을 사용하기 위해서 Tangent Space에 이용할 Tangent값은 Mirror되는 값에 따라 중간 단계가 엄청나게 차이가 납니다. 즉, 여기서 말하는 Hair Tangent라는 것은 Normal map에 사용하는Tangent와는 약간 다른 개념이라는 것이죠.

 즉, 여기서 말하는 Hair Tangent값이란, 머릿결의 방향입니다.
머리카락 한올 한올을 기준으로 본다면, ( Line Strip ) 바로 normalize( Next Position - Position ) 가 Tangent값이라는 겁니다.

이라고 하셔서... 그래 일단 버택스의 탄젠트값을 픽셀로 가지고 와서
계산해보니... 조낸 이상하게 나왔다...

그러다 보니 두번째 글에 있는 것을 보니까..

그나마, Mirror UV등을 감안하더라도 Tangent보다는 Binormal을 사용하는 것이 자연 스럽고 ( 이 역시 완벽한 Hair Tangent가 아닌, 근사 값입니다. ), 여기에 Mirror된 부분은 적절히 디자이너 분이 해결한다면, Tangent Space에서 사용하는 값들로도 충분한 효과를 볼 수가 있습니다.

Binormal를 사용하라고 적혀있었다... 이때부터.. 아하..
binormal = cross(normal,tangent) 니까...
저기 normal에 Normal 텍스쳐를 넣구 탄젠트는 받아서 넣어보았다...
와우!! 대충 맞는건가??? 응? 응?

일단은 이게 정확한지는 모르겠지만 만족한다..

참고 Scheuermann_HairRendering 문서
http://narew.net/xe/1096

728x90
반응형