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張截圖(背景要有你的程式碼及桌面)。不需要上傳程式檔。
沒有留言:
張貼留言