2014-02-24 2 views
0

OpenGL에서 우리는 gluLookAt를 사용하여 카메라를 세계에 상대적으로 배치하고 그릴 이미지를 정의한다는 것을 알고 있습니다.OpenGL gluLookAt 왜 앵글 대신 위쪽 벡터

"눈"은 카메라의 위치를 ​​지정하고 "가운데"는 카메라가 가리키는 점을 지정합니다. 이 두 가지를 알게되면 눈에서 중심으로 직선을 그릴 수 있습니다. 카메라 평면은이 선에 수직 일 것입니다.

우리는이 평면을 알고 있기 때문에 위쪽 벡터는 카메라의 상단을 지정합니다. 기본적으로이 평면에서 어느 방향이 위쪽인지입니다. 따라서 위쪽 벡터는 항상 가운데와 눈을 합친 벡터와 직각을 이룹니다.

제 질문은 "중심"과 "눈"을 연결하는 선의 회전 각도를 알고 싶을 때 전체 벡터가 필요한 이유입니다. 이것에 대한 이유는 내가 모르는 계산상의 이점인가? 그리고 누군가가 잘못된 방향을 지정하면 시야 방향과 직각이되지 않습니다.

+1

을 피할 수있는 더 나은 효율성을 원하는 경우에

나는 당신이이 글을 읽을 제안 http://gamedev.stackexchange.com/questions/65783/what-is-world-space-and-eye-space- 게임 개발/65785 # 65785 – concept3d

+1

각도와 관련하여? 'eye' 벡터가 없다면 실제로'gluLookAt (...)'(Z 축)를 호출 할 때 실제로 3D 벡터 공간의 한 축을 가지게되고, ***이 직접 전달되지는 않습니다. 오히려 원점과 중심 위치에서 계산됩니다. 다시 말해서,이 각도는 정확히 상대적인 것으로 생각됩니까? Z 축에 상대적이라면, 여러분의 각도를 만족시킬 수있는 무한한 수의 가능한'up' 벡터가 있으며 이는 단순히 유용하지 않습니다. –

답변

1

전달하는 위쪽 벡터는 위쪽 방향을 나타 내기 위해 사용되지만 교차 제품에 사용됩니다. gluLookAt의 목적은 사용자가 필요로하는 계산을 단순화하는 것이라고 생각합니다. 예를 들어 원하는 방향을 양의 Y 축 방향으로 나타내려면 (0,1,0)을 전달하면됩니다. 당신은 당신이하는 gluLookAt 완전히

+0

계산을 단순화하는 데 사용되지만 모든 벡터를 필요로하지 않고 단지 1 개의 각도 만 사용할 수 있다는 것에 동의합니다. 이 질문은 상향 벡터와 법선을 교차하는 교차 곱을 보여줍니다 (http://stackoverflow.com/questions/10635947/what-exactly-is-the-up-vector-in-opengls-lookat-function). 정상과 다시 교차합니다. 그건 불필요한 것처럼 보입니다. 왜 그런지 모르겠다 고요? – nutsiepully

+0

원래의 위쪽 벡터는보기 방향과 직각을 이루지 않습니다. 위쪽 방향의 일반적인 방향을 결정합니다 (예 : y 축). 직각 상향 벡터를 뷰 또는 상측 벡터와 뷰를 교차 시키면 동일한 측면 벡터를 갖게됩니다. gluLookAt는 직각 상향 벡터를 기대하지 않으므로 직각 상향 벡터를 얻기 위해 측면 벡터와 뷰를 교차시킵니다. 축을 회전시켜야 할 각도를 사용했다면? 전망 방향? 이렇게하려면보기 방향에 따라 각도를 조정해야합니다. – thisisdog