반응형

http://www.gpgstudy.com/forum/viewtopic.php?t=555

[gpg 1권 잘못된 코드 - 4.8 가려진 객체의 제외기법] 




메시지
chanick



가입: 2001년 8월 7일
올린 글: 4
소속: Redduck

올리기 [GPG 1 글 4.8]올려짐: 2002-05-07 16:21
인용과 함께 답변 이 게시물을 del.icio.us에 추가

gpg 545p에 보면 
.............................. 
P0.z = 0.0f; 
P1.x = -BackClip * ( (float)tan( Angle * 0.5f ) / Aspect ); 
P1.y = -BackClip * ( (float)tan( Angle * 0.5f ) ); 
.............................. 
이렇게 되어 있는데 

여기서 '/ Aspect ' 이게 아니구 * Aspect 입니다. 

4개의 절단평면 모두 나누기로 되어있는데 곱하기로 바꾸세염... 

그럼 즐프.
위로
사용자 정보 보기 쪽지 보내기 이메일 보내기 글 올린이의 웹사이트 방문 MSN 메신저
류광



가입: 2001년 7월 25일
올린 글: 3569
소속: GPGstudy


타 사이트 ID(?):
docbook.kr::류광, indidev.net::류광
올리기올려짐: 2002-05-08 16:23
인용과 함께 답변 이 게시물을 del.icio.us에 추가

잘못된 코드로 봐야 할지.... 

잘 모르겠어서 일단 정오표에는 올리지 않도록 하겠습니다. Aspect에 넣을 값을 높이/너비로 하면 원래 코드가 맞거든요. 

그 함수 시작 부분의 주석을 보면 Angle이 수직 시야각이라는 점은 나와 있는데(..위, 아래 사이의 각도 어쩌구..) Aspect가 높이/너비라는 점은 나와 있지 않네요... 어쨌든 그 함수는 Angle이 수직 시야각이고 Aspect가 높이/너비일 때 유효합니다.... 

그나저나 D3D API에서는 시야각과 종횡비를 어떻게 잡는지? OpenGL의 경우 gluPerspective는 시야각은 수직 시야각, 종횡비는 너비/높이인데요... 어쨌든 사용하는 API에 맞게 편한 방식을 택하면 될 것 같습니다.. 




위로
사용자 정보 보기 쪽지 보내기 글 올린이의 웹사이트 방문
chanick



가입: 2001년 8월 7일
올린 글: 4
소속: Redduck

올리기올려짐: 2002-05-09 01:45
인용과 함께 답변 이 게시물을 del.icio.us에 추가

^^ 
DirectX에서는 종횡비를 너비 / 높이로 구하고있습니다. 
님 말씀대로 AspectRatio를 높이 /너비로 했을경우 역시 문제가 생깁니다. 

D3DXMatrixPerspectiveFovLH 이 함수를 호출시 높이/너비 값을 넘겨주면 
화면이 아래위로 일그러지는 현상이 발생합니다. 

즉 어떻게 계산을 하더라도 문제가 생긴다는 예기죠. 
일반적으로 절단평면의 X값이 Y값보다는 크기때문에 aspectratio를 곱해줘야 합니다. 

반대로 y값에다가 aspectratio를 나누어준다고해도 문제는 해결되지않습니다. 

[ 이 게시물 는(은) 수정됨 by : chanick 수정 시간: 2002-05-09 01:50 ]
위로
사용자 정보 보기 쪽지 보내기 이메일 보내기 글 올린이의 웹사이트 방문 MSN 메신저
Gamza



가입: 2001년 10월 11일
올린 글: 610

올리기올려짐: 2002-05-09 09:47
인용과 함께 답변 이 게시물을 del.icio.us에 추가

혹시나 저자가 종횡비를 높이/너비 로 정의한 부분이 있는지 찾아보았는데... 

책/부록CD...어디서도 종횡비가 어떤것인지 알수 있는 방법이 없군요. 

저자는 종횡비를 높이/너비 로 간주했다고 밖에 볼수 없겠네요. 

하지만....소스를 사용하려면 chanick님 말씀대로 수정해서 사용하는것이 

바람직하겠죠. (일반적인 것을 사용하는것이...) 

감자 성수올림...@~ 


[ 이 게시물 는(은) 수정됨 by : Gamza 수정 시간: 2002-05-09 09:49 ]

반응형

+ Recent posts