2022年3月29日 星期二

尖🦉-圖學筆記 Week06

◇老師的程式範例:Light Material.exe

    1.左上Screen-space view 視窗,按右鍵可變換Model模型。(圓圈、海豚、玫瑰...等)
    2.左下World-space view 視窗,按右鍵可以變換Material材質。(銅質、銀質、紅寶石...等)
    3.右邊Command manipulation window 視窗可以改想弄的程式。(材質、燈光、聚光..等)


    4.Glfloat light_pos[]={ x , y , z , 1}; 是調整光的照射位置

    5.glLightfv(GL_LIGHT0, GL_POSITION ,light_pos) ; 前面的fv是指 float vector 

       GL_LIGHT0 為第幾個燈、GL_POSITION為設定它的位置。

    6.剩下的ka kd ks都是調光的性質。

中心照射過去
從物品底下照光
☆圖片是調整Glfloat light_pos[] 的y位置!☆

☆Amblet 無所不在的光、 Diffuse 角度光、 Specular特別的點光、vector陣列☆


◇建立Glut專案!

1.複製下面這兩段程式:

2.建立好程式:

記得第二段程式碼必須放在glutCreateWindow和glutMainLoop之間程式才會執行!

          glEnable(GL_LIGHT0);  為打開/建立燈光 、

        glEnable(GL_DEPTH_TEST);為開啟深度功能。

3.將上周的滑鼠(mouse)放大縮小加入(滑鼠左右就能放大縮小圖形)

4. 改成可用滑鼠轉動(rotate):

                先設定一個angle數為0,把glRotatef(angle,0,1,0); 放進矩陣

              glRotatef(angle,0,1,0); 指對y軸旋轉。

              最後在motion設定好用滑鼠控制角度  angle += (mouseX-oldX);

 


        5. 利用keybroad 改變移動、轉動、縮放用法:
            (1)先設一個now (1.移動 2.轉動 3.縮放),
            (2)在keybroad 寫好按下哪個鍵會是哪種方法:
                if( key=='1'||key=='w'||key=='W') now=1;
                if( key=='2'||key=='e'||key=='E') now=2;
                if( key=='3'||key=='r'||key=='R') now=3;
            (3)再去motion將now對應的方法寫入 :
                if(now==1){///移動
                    x+=(mouseX-oldX);
                    y+=(mouseY-oldY);
                }
               else if(now==2){///轉動
                    angle += (mouseX-oldX);
                }
                else if(now==3){///縮放
                    if(mouseX-oldX>0) scale*=1.01;///當滑鼠往右,則放大
                    if(mouseX-oldX<0) scale*=0.99;///當滑鼠往左,則縮小
                }

沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

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