1.本週主題: 旋轉、移動、縮放、Push Matrix、Pop Matrix
2.旋轉、移動、縮放的實作
Step1: 進入小葉老師網站(jsyeh.org/3dcg10)下載3個檔案(windows, data, glut32.dll),全部解壓縮至桌面後,將解壓縮後的data以及glut32.dll放到windows資料夾下,如圖所示:
Step2: 執行windows資料夾下的Transformation程式,可以得到下圖執行結果。
Step3: 接著用CodeBlocks新增GLUT project(步驟都跟前機週講的一樣,在此不做說明),並初始化程式
比較重要的是下面這幾行程式碼,其中glTranslate可改變茶壺位移方向:
glPushMatrix();
glTranslatef(0.5,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
Step4: 我們要來改寫程式,用滑鼠移動的位置(x,y軸),來改變茶壺的方向。
依據上圖打好的程式碼(大家可以依註解的號碼順序作為coding的參考),主要複雜及麻煩的地方在於motion函式內還要額外調整位移方向,這裡我們參考小葉老師上課畫的座標軸
要在兩個座標進行轉換,不然茶壺移動的方向會與滑鼠移動的方向不一樣哦~~
Step4: 然後呢,我們要來實作下一個功能......glScalef(),我們把原本的glTranslatef()改成glScalef(),裡面的三個參數都不要變,執行結果如下:
程式碼如下:
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glScalef(mouseX,mouseY,0);///1.這行改成glScalef(),使用縮放的功能
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
疑? 怎麼沒有畫面?
阿~原來是我們國防布初始化的預設mouseX及mouseY都是0,所以一開始執行,茶壺是在視窗中間一個看不到的點,故我們利用滑鼠在視窗中拖移,咻咻咻,我們得到一個可以變形金剛茶壺了!大家自己玩玩看吧~







沒有留言:
張貼留言