2020年6月23日 星期二

Week18 期末前置2

期末前置作業Part2
安裝好OpenCV還有freeglut後, 開啟老師修改過的 gundam2.cbp檔案, 便可以看到昨天老師寫的範例  (因模型是老師付費的,我就不上檔案了哈)
可以練習先按英文e做旋轉, 再按方向鍵(上、下)來看到紅色的關節是哪一個,並可用mouse motion來轉動關節


**了解 BPM (Beat per Minute) 與編輯動作的 timer()要等多久的關係。

**我們也讓角度的上下限,可以保護好, 以免頭斷掉、手斷掉
float angleX0[2]={0,-24};
float angleX1[2]={0,+24};
float angleY0[2]={0,-9};
float angleY1[2]={0,18};
void motion(int x, int y)
{
    if(mode==1){///translate
        posX[nowID]+=(x-oldX)/300.0;
        posY[nowID]-=(y-oldY)/300.0;
        printf("glTranslatef(%.2f, %.2f, %.2f);\n", posX[nowID], posY[nowID], 0);
    }else if(mode==2){
        angleX[nowID]+= x-oldX;
        angleY[nowID]+= y-oldY;
///角度大於上限或小於下限,就給他限制。
        if(angleX[nowID]<angleX0[nowID])angleX[nowID]=angleX0[nowID];
        if(angleX[nowID]>angleX1[nowID])angleX[nowID]=angleX1[nowID];
        if(angleY[nowID]<angleY0[nowID])angleY[nowID]=angleY0[nowID];
        if(angleY[nowID]>angleY1[nowID])angleY[nowID]=angleY1[nowID];
        printf("angleX:%.0f, angleY:%.0f\n", angleX[nowID], angleY[nowID]);
    }
    oldX=x; oldY=y;
    glutPostRedisplay();

}


沒有留言:

張貼留言