2022年5月10日 星期二

尖🦉-圖學筆記 Week12

 ◇Transformation.exe範例:

    1. 在下方Command manipulation window視窗右鍵可以swap 移動(translate)跟轉動(rotate)。

    2.自轉:(由下往上讀程式碼)

        glTranslatef時,是模型整個被移動

        glRotatef,會是車子中心軸轉。

        glScalef和glbegin建好一台車子。

    3.公轉:(由下往上讀程式碼)

        glRotatef時,是車子繞中心軸旋轉。

        glTranslatef,是模型整個被移動(想像他被移到大盤子右邊);

        glScalef和glbegin建好一台車子。



◇其他範例(OpenGL T-R-T):

    1. 到120.125.80.50/GL/ 網站看T-R-T對特定軸轉動練習

    2.左邊畫面畫完,右邊myDrawObject會增加 並且 它可以換位置(似圖層意思)

        可以重新整理網頁清除剛剛的操作。

    3.angle點一下再按空白鍵,就能自動改變值。

        將 物件(myDrawObject) 和 移動(Translate) 放在 旋轉glRotate下方就能轉。

      上方程式會影響下方的程式碼,所以才要放在下方。

        ex:像圖片的,myDrawObject(0)就不會跟著轉。

    4.點glTranslatef()變紅色後,再到左邊的視窗就能拖移位置。(可讓中心軸移動)
        glPushMatrix(x,y,z);

            glRotatef(angle,0,0,1); //會使下面整個的東西選轉。       

            glTranslatef(-x,-y,0) //往左下角移動後,會是中心點。(其中一個)

            myDrawObject(1); //物件

        glPopMatrix();

    5.把另外一個glTranslatef()擺到 第4點 glRotatef()上面。

        glPushMatrix();

            glTranslatef(x,y,z);//會讓物體移到這個位置

            glRotatef(angle,0,0,1); //會使下面整個的東西選轉。       

            glTranslatef(x,y,z); //使它成為物體的旋轉中心點!

            myDrawObject(1); //物件

       glPopMatrix();

◇下周考試:

   1.將程式順序寫好(像上面的第5點)

    2.因要中心軸移到(0,0),ex:原本再(0.8,0.9),所以要改成(-0.8,0.9)

    3.旋轉角度更改! 還有物體位置要改!

◇實作:

    1.先開一個GLUT專案

    2.貼完三段程式碼!

    3.新增一個身體跟手茶壺,並修改 手的 旋轉中心點位置。(可一步一步來比較好理解)

    glTranslatef(0.4,0.15,0); /// (3).把它往右放(圖的綠色線條)

      glRotatef(angle,0,0,1); /// (2).旋轉

      glTranslatef(0.2,0,0); /// (1).旋轉中心放到世界中心,希望 手茶壺的中心旋轉軸 在把手位置,因大小是0.2,才往右0.2。(原本在橘色點,要移到粉紅色點)


◇作業:

    1. 需要用3D模型!並且需要有身體部分切割!(身體、上手臂、下手臂),並要將3D模型讀進去。

    2.運用下面程式碼寫出來!(在複製一份 改個位置 就能做出左邊手臂)

沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...