電腦圖學 2023-05-17 Week14
1. 主題: 切換關節2. 主題: 切換移動、旋轉
4. 主題: 計時器、內插動作
I. timer-茶壺逆時針旋轉
void timer(int t)
{
glutTimerFunc(500, timer, t+1); //設定下一個
angle += 90; //增加90度
glutPostRedisplay(); //重畫畫面
}
II. timer play-按下鍵盤才開始轉動
void keyboard(unsigned char key, int x, int y)
{
glutTimerFunc(0, timer, 0);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard); //用keyboard啟動
glutMainLoop();
}
{
glutTimerFunc(0, timer, 0);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard); //用keyboard啟動
glutMainLoop();
}
III. timer play interpolation-加滑鼠控制, 即時更新角度
IV. 切換不同關節的顏色
int show[4] = {1, 1, 1, 1};/// 用 show[i] 來決定要不要顯示
int ID=0; ///0:頭, 1:身體, 2:上手臂, 3:下手臂
void keyboard(unsigned char key, int x, int y) {
if (key=='0') ID = 0;
if (key=='1') ID = 1;
if (key=='2') ID = 2;
if (key=='3') ID = 3;
glutPostRedisplay();
}
FILE * fout = NULL;
FILE * fin = NULL;
float teapotX=0, teapotY=0; ///看移動值
float angle=0, angle2=0, angle3=0;///擺動作
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glScalef(0.2, 0.2, 0.2);
if(body==NULL){
head = glmReadOBJ("model/head.obj");
body = glmReadOBJ("model/body.obj");
uparmR = glmReadOBJ("model/uparmR.obj");
lowarmR = glmReadOBJ("model/lowarmR.obj");
///glmUnitize(body);之後會改
}
if (ID==0) glColor3f(1,0,0); //選定的, 設紅色
else glColor3f(1, 1, 1); //沒選定, 設白色
if(show[0]) glmDraw(head, GLM_MATERIAL);
if (ID==1) glColor3f(1,0,0); //選定的, 設紅色
else glColor3f(1, 1, 1); //沒選定, 設白色
if(show[1]) glmDraw(body, GLM_MATERIAL);///這行之後會改
glPushMatrix();
glTranslatef(teapotX, teapotY, 0);
if (ID==2) glColor3f(1, 0, 0);
else glColor3f(1, 1, 1); //沒選定, 設白色
if (show[2]) glmDraw(uparmR, GLM_MATERIAL);
glPopMatrix();
if (ID==3) glColor3f(1,0,0); //選定的, 設紅色
else glColor3f(1, 1, 1); //沒選定, 設白色
if (show[3]) glmDraw(lowarmR, GLM_MATERIAL);
glPopMatrix();
glutSwapBuffers();
}
VI. 移動手臂
沒有留言:
張貼留言