2023年5月10日 星期三

SangMo 電腦圖學 Week13 綜合練習

 

Step 01-1 Maya裁切模型

File - Import 匯入模型
選取你要裁切的部分,先delete看看有沒有殘留
接著Ctrl+Z復原 File-Export Selection匯出模型


部位命名 ex:左上手臂 uparmL 檔案格式OBJexport

Step 01-2 找到Final_Project

安裝git Bash
依照下方圖片打出指令

就會跳出資料夾

Step01-3 讓freeglut可以在家裡照樣執行

File Open 找到Final project的cpb檔案
然後打開Project Properties
點右下方的Project build options
然後到Search directorise 把名稱改成下方2張圖的樣子

對檔案地址點2下就能修改

備份.lib和.a檔案

打開.gitgnore 分別把.lib和.a 前加#號即可

Step02-1 模型匯入、組合(隨時save everything)

||組合模型||
把第10周的glm.cpp和glm.h檔案複製到final_project
並用Add File加到codeblock

匯入身體
第一部分 GLMmodel * 模組名 == NULL
第二部分 body的地方就是檔名位址 (glmUnitize(body);會改掉)

更新第二部分 因為身體太大
註解掉glmUnitize 
加上glScalef(0.2,0.2,0.2);
接著照下放圖片程式加上頭
執行

Step03-1 鍵盤控制模型

註解掉原本的keyboard程式
在GLMmodel程式下方弄新的keyboard程式
int show[4] = {0,1,0,0};
void keyboard(unsigned char key, int x, int y)
{
    if(key== '0') show[0] = !show[0];///week13 Step03-1
    if(key== '1') show[1] = !show[1];///week13 Step03-1
    if(key== '2') show[2] = !show[2];///week13 Step03-1
    if(key== '3') show[3] = !show[3];///week13 Step03-1
    glutPostRedisplay();
}
在void display裡面放入
if(body == NULL){
        head = glmReadOBJ("model/head.obj");
        body = glmReadOBJ("model/body.obj");///week13 Step02-1
        uparmL = glmReadOBJ("model/uparmL.obj");///week13 Step03-1
        lowarmL = glmReadOBJ("model/lowarmL.obj");///week13 Step03-1
        ///glmUnitize(body);
    }
    if(show[0])glmDraw(head, GLM_MATERIAL);///week13 Step03-1
    if(show[1])glmDraw(body, GLM_MATERIAL);///week13 Step03-1
    if(show[2])glmDraw(uparmL , GLM_MATERIAL);///week13 Step03-1
    if(show[3])glmDraw(lowarmL , GLM_MATERIAL);///week13 Step03-1

Step 03-2 滑鼠控制模型

註解原本的mouse程式 加入新的
void mouse(int button, int state, int x,int y)
{
    if(state==GLUT_DOWN)
    {
        oldX = x;
        oldY = y;
        angle = x;
    }
    display();
}
底下加入glutMotionFunc(motion);
打入motion程式
void motion(int x,int y)
{
    teapotX += (x-oldX)/150.0;
    teapotY -= (y-oldY)/150.0;
    oldX = x;
    oldY = y;
    printf("glTranslatef(%f, %f, 0);\n", teapotX, teapotY);
    glutPostRedisplay();
}
新增glTranslatef(teapotX,teapotY,0); 到void display
加入float angle =0,angle2=0,angle3=0;

Step03-3 保存檔案

打開資料夾的gitignore 
把obj .dll .a .lib 前面都加#
最後上傳github

沒有留言:

張貼留言