2024年5月13日 星期一

SY-BlingBangBang電腦圖學🎬-Week13

  1. 

    step1: 下載 freeglut-MinGW-3.0.0-1.mp.zip 

    step2: 進到資料夾,把檔案 freeglut 拉到桌面

    step3: 點進 freeglut 👉 lib 資料夾

    step4: 複製 libfreeglut.a 並且改名為libglut32.a

    step5: 安裝 OpenCV 要勾 Add PATH (第二個),裝在預設目錄

              👉 Setting-Compiler 裡,要把 OpenCV 的三個設定設好

                  👇 

                  (1) 重開 CodeBlocks

                       👇 原本的檔案在 View 👉 Start Page

                  (2) 在 Search directories 加入2個目錄

                        1-1 Compiler 👉 C:\OpenCV2.1\include

                        1-2 Linker 👉 C:\OpenCV2.1\lib

                  (3) 在 Linker setting 裡,加入 👉 cv210

                                                            👉 cxcore210

                                                            👉 highgui210

    step6: 把上週 week12 的程式碼拿下來

    step7: 複製 week12-4_keyboard_angleID_mouse_motion_angle 到桌面

    step8: 改目錄名 week13-1_keyboard_angleID_mouse_motion_angle

    step9: 把 .cbp,改檔名 week13-1_keyboard_angleID_mouse_motion_angle.cbp

    step10: 再用 CodeBlocks 的 File-Open 開啟剛剛的 .cbp 檔

    step11: 在專案名稱上按右鍵,選最下面的 Properties,進去改檔名

    step12: 存檔 File-Save project

    step13: 增加、修改程式碼 👇

                       int oldX=0, oldY=0;

                void mouse(int button, int state, int x, int y)

                {

                    oldX = x;

                    oldY = y;

                }

                void motion(int x, int y)

                {

                    angle[angleID] += y - oldY; ///angle[angleID] = y;

                    oldX = x;

                    oldY = y;

                    glutPostRedisplay(); ///貼上便利貼,提醒glut要重畫畫面

                }




2.

    step1: 複製 week13-1_keyboard_angleID_mouse_motion_angle 到桌面

    step2: 改目錄名 week13-2_many_angle

    step3: 把 .cbp,改檔名 week13-2_many_angle.cbp

    step4: 再用 CodeBlocks 的 File-Open 開啟剛剛的 .cbp 檔

    step5: 開啟 Maya,把 Gundam 模型,裁切出另一個手臂的 upper2.obj、lower2.obj

              並產生對應的 upper2.mtl、lower2.mtl

    (回家作業)


3.

    step1: 複製 week13-1_keyboard_angleID_mouse_motion_angle 到桌面

    step2: 改目錄名 week13-3_File_fclose_fprintf_fscanf

    step3: 把 .cbp,改檔名 week13-3_File_fclose_fprintf_fscanf.cbp

    step4: 再用 CodeBlocks 的 File-Open 開啟剛剛的 .cbp 檔

    step5: keyboard 前、裡面,增加修改程式碼

              (1)#include <stdio.h>

                   FILE * fout = NULL;

                   FILE * fin = NULL;

              (2)void keyboard(unsigned char key, int x, int y){

                       if(key=='s'){

                            if(fout==NULL) fout = fopen("angle.txt", "w+");

                            for(int i=0; i<20; i++){

                                printf("%.1f ", angle[i]);

                            }

                            printf("\n");

                       }

                       if(key=='0') angleID = 0;

                       if(key=='1') angleID = 1;

                       if(key=='2') angleID = 2;

                       if(key=='3') angleID = 3;

                  }

                  : 按 s 可以顯示位置



    step6: 加上可以存檔的程式碼

              if(key=='s'){

                  if(fout==NULL) fout = fopen("angle.txt", "w+");

                  for(int i=0; i<20; i++){

                      printf("%.1f ", angle[i]);

                      fprintf(fout, "%.1f ", angle[i]);

                  }

                  printf("\n");

                  fprintf(fout, "\n");

              }

              : 按 f 可存到電腦的筆記本


    step7: keyboard 裡,加上 r 的讀檔

              if(key=='r'){

                    if(fin==NULL) fin = fopen("angle.txt", "r");

                    for(int i=0; i<20; i++){

                        fscanf(fin, "%f ", &angle[i]);

                    }

                    glutPostRedisplay();

              }

              註: 接續上一個步驟,存完檔,再重新執行一次程式,按 r 可以讓機器人按照剛剛                      存檔的做動作,每移動一次都要按一次 r


4. 作業

HW3 可以改變關節動作的3D模型, 利用 mouse keyboard 來調角度

1. 先找到1個3D模型, 切割身體的部位, 至少有 10個關節角度 (期末要20關節角度)

2. 要用 drawHead(), drawLeftHand(), drawLeftUpper(), drawRightHand(), drawRightUpper()

drawBody(), drawLeftLeg(), drawRightLeg(), drawLeftFoot(), drawRightFoot() 或是你可以畫比較少的部位, 但是關節要夠多。
3. 模仿 week13-3 的程式, 利用 keyboard + mouse 來改變關節的角度, 可以對不同的轉動軸來轉。
4. 完成動作後, 截圖上傳。需要 2個不同的動作, 上傳2張截圖(背景要有你的程式碼及桌面)。不需要上傳程式檔。














沒有留言:

張貼留言