期末前置作業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();
}
|
沒有留言:
張貼留言