week13
1-1 先安裝git,下載上週Final_project,開啟上週專案,將絕對路徑改成相對路徑,之後不用再裝freeglut
1-2 freeglut移到專案資料夾裡,打開.gitignore註解掉.dll、.a、.lib(加#)
2-1 https://jsyeh.org/3dcg10/ 下載data 在Maya匯入al.obj
2-2 裁切頭、身體、手臂、腳,分開匯出,放進新資料夾model裡
2-3 複製第10週 glm.h、glm.cpp檔至Final_project
#include <stdio.h> ///要檔案的Input/Output
#include <GL/glut.h>
#include "glm.h"///week13_step02-2
GLMmodel * head = NULL;///week13_step02-2
GLMmodel * body = NULL;///week13_step02-2
GLMmodel * uparmR = NULL;
GLMmodel * lowarmR = NULL;
GLMmodel * uparmL = NULL;
GLMmodel * lowarmL = NULL;
GLMmodel * uplegR = NULL;
GLMmodel * lowlegR = NULL;
GLMmodel * uplegL = NULL;
GLMmodel * lowlegL = NULL;
float teapotX = 0, teapotY = 0;
FILE * fout = NULL;
FILE * fin = NULL;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
if(head==NULL){
head = glmReadOBJ("model/head.obj");///week13_step02-2
body = glmReadOBJ("model/body.obj");
uparmR = glmReadOBJ("model/uparmR.obj");
lowarmR = glmReadOBJ("model/lowarmR.obj");
uparmL = glmReadOBJ("model/uparmL.obj");
lowarmL = glmReadOBJ("model/lowarmL.obj");
uplegR = glmReadOBJ("model/uplegR.obj");
lowlegR = glmReadOBJ("model/lowlegR.obj");
uplegL = glmReadOBJ("model/uplegL.obj");
lowlegL = glmReadOBJ("model/lowlegL.obj");
///glmUnitize(head);///week13_step02-2 之後會改
///glmUnitize(body);
}///week13_step02-2
glPushMatrix();
glScalef(0.3,0.3,0.3);///week13_step02-3
glmDraw(head,GLM_MATERIAL);///week13_step02-3
glmDraw(body, GLM_MATERIAL);///week13_step02-2
glmDraw(uparmR,GLM_MATERIAL);///week13_step02-3
glmDraw(lowarmR,GLM_MATERIAL);///week13_step02-3
glmDraw(uparmL,GLM_MATERIAL);
glmDraw(lowarmL,GLM_MATERIAL);
glmDraw(uplegR,GLM_MATERIAL);
glmDraw(lowlegR,GLM_MATERIAL);
glmDraw(uplegL,GLM_MATERIAL);
glmDraw(lowlegL,GLM_MATERIAL);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
teapotX = (x-150)/150.0;
teapotY = (150-y)/150.0;
if(state==GLUT_DOWN){ ///如果mouse按下去
if(fout==NULL) fout = fopen("file4.txt", "w");
fprintf(fout, "%f %f\n", teapotX, teapotY);
}
display();
}
void keyboard(unsigned char key, int x, int y)///step02-2
{
if(fin==NULL){
fclose(fout);///step02-2
fin = fopen("file4.txt", "r");///step02-2
}
fscanf(fin, "%f%f", &teapotX, &teapotY);///step02-2
display();///step02-2
}///step02-2
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard); ///step02-2
glutMouseFunc(mouse); ///step02-1
glutMainLoop();
}












沒有留言:
張貼留言