了解Projection Matrix
C++
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void resize( int w, int h )
{
glViewport( 0, 0, (GLsizei) w, (GLsizei) h );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 65.0, (GLdouble) w / h,1.0, 100.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt( 0.0, 0.0, 5.0,
0.0, 0.0, 0.0,
0.0, 1.0, 0.0 );
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("camera");
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMainLoop();
}

Camera 運鏡
C++
加上
void motion(int x,int y)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(x/100.0,y/100.0,5.0,
0.0,0.0,0.0,
0.0,1.0,0.0);
glutPostRedisplay();
}

gluLookAt( ) {camera, object , Up)
加上運鏡、
C++
gluLookAt(rot[7]/100.0,rot[8]/100.0,5.0,
0.0,0.0,0.0,
0.0,1.0,0.0);
if(key=='7') rotNow=7;
if(key=='8') rotNow=8;
if(key=='9') rotNow=9;
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("3D Interpolate");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutReshapeFunc(resize);
glutMainLoop();
}

沒有留言:
張貼留言