下載[data][win32],這次開啟 Projection.exe。這是鏡頭的顯示方式,分成3種
I . eye 以被拍攝者為中心,拿著鏡頭的人進行移動不旋轉
II . center 以拍攝者為中心,拿著鏡頭的人不移動只旋轉
III . up 拍攝者與被拍攝者均不移動,由鏡頭自己轉動
最後就是鏡頭的基礎數值設定
fovy 鏡頭廣角的度數
aspect 鏡頭的長寬比
zNear 鏡頭最近顯示的位置
zFar 鏡頭最遠顯示的位置
Week15-1
glOrtho(-ar*3, ar*3, -1*3, 1*3, -100, +100);
Week15-2
利用課堂前所學來調整攝影機
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
float ar = w / (float) h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60, ar, 0.01, 1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 1, 0, 0, 0, 0, 1, 0);
glutPostRedisplay();
}
float eyeX = 0, eyeY = 0;
void motion(int x, int y)
{
eyeX = (x-150.0)/150.0;
eyeY = (150.0-y)/150.0;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(eyeX, eyeY, 1, 0,0,0, 0,1,0);
glutPostRedisplay();
}
Final-Project
個別轉動關節
float angle[20] = {};
void display()
{
glPushMatrix();
glTranslatef(1.339999, 0.373333, 0);
glRotatef(angle[2], 0, 0, 1);
glTranslatef(-1.339999, -0.373333, 0);
///glTranslatef(teapotX,teapotY,0);
if(ID==2)glColor3f(1,0,0);
else glColor3f(1,1,1);
if(show[2]) glmDraw(uparmL, GLM_MATERIAL);
glPushMatrix();
glTranslatef(1.879999, 0.080000, 0);
glRotatef(angle[3], 0, 0, 1);
glTranslatef(-1.879999, -0.080000, 0);
///glTranslatef(teapotX,teapotY,0);
if(ID==3)glColor3f(1,0,0);
else glColor3f(1,1,1);
if(show[3]) glmDraw(lowarmL, GLM_MATERIAL);
glPopMatrix();
glPopMatrix();
}
void motion(int x,int y)
{
teapotX += (x - oldX)/150.0;
teapotY -= (y - oldX)/150.0;
angle[ID] += (x - oldX);
oldX = x;
oldY = y;
///angle = x;
printf("glTranslatef(%f, %f, 0);\n", teapotX, teapotY);
glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN){
oldX = x;
oldY = y;
///angle = x;
}
display();
}
紀錄旋轉的位置
void keyboard(unsigned char key, int x, int y)
{
{
if(fout==NULL)fout = fopen("motion.txt","w");
for(int i=0;i<20;i++)
{
fprintf(fout,"%.2f ",angle[i]);
}
fprintf(fout,"\n");
}
else if(key=='r')
{
if(fin==NULL) fin = fopen("motion.txt","r");
for(int i=0;i<20;i++)
{
fscanf(fin,"%f",&angle[i]);
}
glutPostRedisplay();
}
glutPostRedisplay();
}
S存旋轉位置,R讀旋轉位置
沒有留言:
張貼留言