OpenGL에서 객체를 올바르게 확대하는 방법을 찾기 위해 여러 포럼 (여기 및 다른 곳)에서 검색했습니다. 많은 것을 읽은 후에, 마침내 GluLookAt()를 사용하는 방법을 생각했습니다. 아무런 문제없이 카메라를 움직일 수있게되었습니다. 나는 카메라가 움직이면서 객체가 사라지기 때문에 그것이 작동한다는 것을 안다. 그러나 나는 카메라를 패닝하면서 객체를 확대하고 싶다. 나는 카메라 위치가 그것을 처리 할 것이지만 카메라 위치를 업데이트하는 것이 도움이되지 않는다고 생각했다. 나는 또한 gScalef()를 시도했지만 'w'키를 누를 때 한 번만 호출됩니다.OpenGL에서 제대로 돌리 (객체에서 이동하고 객체에서 이동)하는 방법
void keyboard(unsigned char c, int x,int y)
{
if(c==27)
{exit(0);}
if (c=='w')
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
float forward_x, forward_y,forward_z;
gluLookAt(current[0], current[1], current[2],
current[0]+center_x, current[1]+center_y, current[2]+center_z,
0.0, 1.0, 0.0);
// glScalef(1.2,1.2,1.2);
current[0]= (current[0]- 0.1*center_x);
current[1]= (current[1]-0.1*center_y);
current[2]= (current[2]- 0.1*center_z);
}
}
void Camera_rotation(int x, int y)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
center_x = cos(-0.05*x)*sin(-.05*y);
center_y = cos(-.05*y);
center_z = sin(0.05*x)*sin(.05*y);
eye_x = x; eye_y = 1.0,
float new_x = x;
gluLookAt(current[0], current[1], current[2],
current[0]+center_x,
current[1]+center_y,
current[2]+center_z,
0.0, 1.0, 0.0);
render();
}
'current'및 'center_x [yz]'는 전역 변수입니다. 누군가 도울 수 있습니까?
아래 답변에 대한 의견을 말하면 용어를 삭제해야합니다. 카메라를 움직이게하지 않고도 카메라를 확대/축소하면 FOV가 변경됩니다. 당신이 달성하기를 원하는 것은 * 확대/축소가 아닌 * 돌리 카메라입니다. 돌리와 줌의 조합은 알프레드 히치콕 (Alfred Hitchcock)이 인기를 얻은 현기증 (Vertigo) 효과라고도합니다. – datenwolf
@datenwolf : 제 잘못입니다. 전에 결코 돌리라는 단어를 보지 못했습니다. 고맙습니다. 나는 quesiton 헤더 –