hwi's laboratory  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
tangent space normal map

사용자 삽입 이미지


둠3의 mancubus를 import해서 (http://gpgstudy.cafe24.com/cafe24board/view.php3?code=t00323401&idx=181&mode=view&page=1) 자체 포맷으로 export 한 다음 노말맵을 적용한 화면이다.

export할 때 tangent space를 위한 tangent 값을 계산한다.
tangent space를 계산하는 방법은 http://www.terathon.com/code/tangent.html <- 이곳에 잘 나와있다.

normal, tangent, binormal 전부를 저장하지 않고 normal, tangent만 넣어주기 위해서 handedness 값으로 binormal의 방향을 결정해준다. (mirroring 된 normal map의 경우 손잡이 값이 음수가 된다.)


실제 쉐이더 코드를 사용할 때

float3 n = vi.normal;
float3 t = vi.tangent.xyz;
float3 b = cross(n, t) * vi.tangent.w;

이렇게 binormal 에 부호값을 곱해주고 있다.



참고로 'DirectX 9 셰이더 프로그래밍(타카시 이마가레)' 책에 나온 노말맵을 설명하는 부분을 보면 '행렬식값이 정규화할 때 사라져버리므로 신경 쓰지 않아도 괜찮습니다.' 이렇게 나와있는데, 신경 안쓰면 안된다.
왜냐하면 그 행렬식 값으로 부호가 바뀔 수 있기 때문이다.

행렬식값을 곱해주지 않고 바로 정규화 해버리면 부호가 정확히 나오지 않을 수 있다.






BLOG main image
 Notice
 Category
분류 전체보기 (27)
life (0)
project (0)
works (24)
misc (0)
study (1)
scrap (1)
review (0)
... (0)
study_cg (0)
 TAGS
CEDEC
 Calendar
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
바보가 아닌 Mr
V i n t e r s o r g
 Visitor Statistics
Total :
Today :
Yesterday :
rss