2017年3月20日 星期一

[電腦圖學]Week04 松賢的上課筆記

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,所以一開始執行,茶壺是在視窗中間一個看不到的點,故我們利用滑鼠在視窗中拖移,咻咻咻,我們得到一個可以變形金剛茶壺了!大家自己玩玩看吧~

3.填寫Zuvio問卷

沒有留言:

張貼留言