2024年5月9日 星期四

電腦圖學 Week12 🥴

 week12-1_glm_gundam_handA_handB

1. moodle下載 freeglut 拖到桌面

2. 把桌面\freglut\lib\libfreeglut.a 複製成 libglut32.a

3. 安裝 OpenCV 2.1

- 安裝第三步驟, Add OpenCV to system PATH(勾第2或3個, 不要勾第1個)

- 目錄不要改,要用預設的

- 要重開CodeBlocks

4. CodeBlocks 的 settings>compiler 加入 opencv 的3個設定

- Search directories > Compiler 要加上 C:\OpenCV2.1\include

- Search directories > Linker 要加上 C:\OpenCV2.1\lib

- Linker settings 要加上 cv210 / cxcore210 / highgui210

5. 安裝git, 把github上之前寫過的程式複製到桌面

- cd desktop

- git clone https://github.com/xiyu-emma/2024graphicsa

6. 把week11-2 複製成week12-1_glm_gundam_handA_handB, cbp檔用Notepad++把11-2都改成12-1

7. 開啟week12-1.cbp

8. 註解掉myBody()和旋轉, 加上一個圓球當成旋轉軸
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glDisable(GL_TEXTURE_2D);
    ///myBody();
    glutSolidSphere(0.1, 30, 30);
    glEnable(GL_TEXTURE_2D);
    glColor3f(1,1,1);
    glPushMatrix(); ///加這行, 讓它轉動
        glTranslatef(0, -0.3, 0);
        ///glRotatef(angle++, 0, 1, 0); ///加這行, 讓它轉動
        drawHandA(); //drawmodel(); //glutSolidTeapot( 0.3 );
    glPopMatrix(); ///加這行, 讓它轉動
    glutSwapBuffers();
}

9. 加上一行程式讓手沿Z軸旋轉
glRotatef(angle++, 0, 0, 1);

10. 加上一行程式把手放到正確的位置
glTranslatef(0.3, 0.3, 0);

11. 再複製一隻手變成左手, 角度加負號, 移動位置x軸加負號

week12-2_glm_gundam_upper_lower

1. 用 Maya 切割 handA.obj 切割出 upperA.obj 和 lowerA.obj, 放到week12的data目錄

2. 把week12-1 複製成week12-2_glm_gundam_upper_lower, cbp檔用Notepad++把12-1都改成12-2

3. 開啟week12-2.cbp

4. 加上GLMmodel * upperA = NULL;  GLMmodel * lowerA = NULL;

5. 把 HandA() 改成 UpperA() 和 LowerA()

6. display()把HandA和HandB刪掉, 改成畫UpperA和LowerA, 並把LowerA接到UpperA上

7. 修改程式碼讓手臂不會轉過頭
float angle = 0, da=1;
angle+=da;
if(angle>90) da = -1;
if(angle<0) da = +1;
glRotatef(angle, 1, 0, 0);

利用mouse motion改變angle:week12-3_
glm_gundam_keyboard_angleID_mouse_motion_angle

1. 把week12-2 複製成week12-3_glm_gundam_keyboard_angleID_mouse_motion_angle, cbp檔用Notepad++把12-2都改成12-3

2. 開啟week12-3.cbp

3. 加上mation函式
void motion(int x, int y){
    angle=y;
}

4. main函式加上一行
glutMotionFunc(motion);

5. 註解掉angle+=da; / if(angle>90) da = -1; / if(angle<0) da = +1;

6. 這樣就可以讓滑鼠控制手臂旋轉

沒有留言:

張貼留言