2. 벡터(Vector)
• 크기와 방향을 가지는 양
http://terms.naver.com/entry.nhn?docId=2073863&cid=47324&categoryId=47324
3. 법선(Normal)
• 평면곡선 위의 1점 P를 지나고, 그 점에서의 접선에
수직인 직선 및 곡면 위의 한 점 P를 지나고 그 점에
서의 접평면에 수직인 직선이다.
http://terms.naver.com/entry.nhn?docId=1100941&cid=40942&categoryId=32223
4. 법선(Normal)
• 평면곡선 위의 1점 P를 지나고, 그 점에서의 접선에
수직인 직선 및 곡면 위의 한 점 P를 지나고 그 점에
서의 접평면에 수직인 직선이다.
???
32. Tangent space?
• 물체의 표면을 기준으로 법선 벡터 방향을 Z축으로
놓는 공간
• T : Tangent vector(접선 벡터)
• B : Binormal vector(종법선 벡터)
• N : normal vector(법선 벡터)
• 이 3개의 벡터를 기준으로 되어있다
34. Tangent space?
• 로컬 공간에서 탄젠트 공간으로 변환이 필요
• X -> U, Y -> V로 변환되어야 한다.
• 변환 행렬 과정(클릭)
35. Tangent space normal map
• 장점
스키닝 되어도 적용 가능
재사용 가능
• 단점
탄젠트 공간으로 변환하는데 비용 소모
Object space normal map보다 퀄리티가 떨어짐
36. 노말 저장
• 텍스처는 R, G, B 공간이 있으므로 각각 X, Y, Z 값을 대입
• 법선 벡터를 정규화하여 단위 벡터(크기가 1인 벡터)로 저장
• 단위 벡터는 (0,0,1)이 될 수도 있지만 (0,0,-1)이 될 수도 있음
• 즉, 정규화된 법선 벡터의 X, Y, Z는 -1~1이다
• 그런데 텍스처에 저장되는 값의 범위는 0~1
• 변환이 필요하다
48. 노말 맵핑의 단점
• 실제로는 평면이기 때문에 굴곡의 높이를 고려할 수 없다
• B가 보여야 하는데 A가 보임
• 거리가 가까울수록 or 사각으로 갈수록 부자연스럽게 보인다
49. Parallax mapping
• 시차 맵핑이라 불림
• 높이 맵을 이용하여 대략적으로 시선과 요철(볼록,오목)이 교차하는 지점을 구한다
• 오차가 있다
50. Parallax mapping
• 여기를 시선과 요철의 교차점으
로 보고, 이 위치의 법선맵을 참
조한다.
• 원래는 여기 위치의 법선 벡터를
참조해야 하지만 오차는 있다.
• H x E.xy
• 높이맵의 높이정보 h를 읽어
서 대략적으로 시선 E와 요철이
교차하는 지점을 구한다.
55. Displacement mapping
• 변위 맵핑이라 불림
• 노말 맵핑과 시차 맵핑은 아무리 북치고 장구쳐도 실제로는 평면
이기에 굴곡이 없는 것이 드러난다
• 높이 맵에 따라서 3D 모델을 변위(displace) 시키는 기술
• 정점 셰이더에서 텍스처를 읽어내 정점을 변위시키는 작업을 수행
66. Tangent space?
삼각형의 각 버텍스를 P0 , P1 , P2로 생각하자.
그리고 각각 버텍스의 UV좌표를( u0 , v0 ) , ( u1 , v1 ) , ( u2 , v2 )로 생각하자.
이 삼각형 안의 한 점을 Q로 보고 UV좌표를( u , v )로 생각하자.
탄젠트 공간으로 변환해주는 행렬은 다음과 같다.
이 행렬을 구해보자.
69. Tangent space?
정점들의 T , B 벡터들의 평균을 이용해서 계산하면 직교하지 않을 수 있다.
안전하게 그램 – 슈미트 방법으로 직교하는 기저를 만들어 준다.
D3DXComputeTangent() 사용
T′ = T − (N · T)N
B′ = B − (N · B)N − (T′ · B)T′/T′2