2023年5月11日 星期四

Week13 zhouu

 Week13



利用git clone將自己2023graphicsb的倉庫複製下來
接著利用codeblocks開啟上次的專案黨finalprojects
接著照著下面的圖片步驟做





改成相對路徑
讓原本的絕對路徑簡短
這樣在哪裡都能開啟這個專案







接著將freeglut從老師給我們的資料夾
拉進去我們的專案檔
並且一樣複製一個libglut32



接著開啟git bash 把剛剛的檔案上傳
這樣freeglut就能順利上傳到github



接著開啟之前的week08檔案
將glb.cpp glb.cpp glb.h丟進去final project資料夾李
接著用codeblock開啟Final_Project.cbp
接著add file將glb.cpp



接著利用MAYA開啟模型
接著將頭 手 腳 身體分成幾個部位裁切




將程式碼修改下列程式碼


#include "glm.h"
GLMmodel * head = NULL;
GLMmodel * body = NULL;
GLMmodel * lefthand = NULL;
GLMmodel * righthand = NULL;


 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    if(head==NULL){
       head=glmReadOBJ("model/head.obj");
       body=glmReadOBJ("model/body.obj");
       lefthand=glmReadOBJ("model/lefthand.obj");
       righthand=glmReadOBJ("model/righthand.obj");
    }
    glPushMatrix();
        glScalef(0.3,0.3,0.3);
        glmDraw(head, GLM_MATERIAL);
        glmDraw(body, GLM_MATERIAL);
        glmDraw(lefthand, GLM_MATERIAL);
        glmDraw(righthand, GLM_MATERIAL);
    glPopMatrix();
    glutSwapBuffers();





加入這串
void keyboard(unsigned char key, int x, int y){
    if(key=='0') show[0]= ! show [0];
    if(key=='1') show[1]= ! show [1];
    if(key=='2') show[2]= ! show [2];
    if(key=='3') show[3]= ! show [3];
    glutPostRedisplay();
}
下面改這樣
 if (show[0]) glmDraw(head, GLM_MATERIAL);
 if (show[1])glmDraw(body, GLM_MATERIAL);
 if (show[2])glmDraw(lefthand, GLM_MATERIAL);
 if (show[3])glmDraw(righthand, GLM_MATERIAL);



利用數字鍵的1 2 3 各自顯示不同部位







增加滑鼠移動功能
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
if (show[0]) glmDraw(head, GLM_MATERIAL);
glPopMatrix();
另外加
int oldX=0, oldY=0;
void mouse(int button, int state, int x, int y){
if(state==GLUT_DOWN){
oldX = x;
oldY = y;
}
}
void motion(int x, int y){
teapotX += (x - oldX)/150.0;
teapotY -= (y - oldY)/150.0;
oldX=x;
oldY=y;
glutPostRedisplay();
}
最後面加int main
glutMotionFunc(motion);
執行結果如下













沒有留言:

張貼留言