2022年6月7日 星期二

電腦圖學筆記week16

Step01-1
  • alpha內插公式 : alpha: `0.0~1.0`
    angle = alpha*新 + (1-alpha)*舊
    ex: alpha=0 -> 舊,alpha=1 -> 新,alpha=0.5 -> 半新半舊
  • 使用Excel或Google Spreadsheet練習內插
    


Step01-2
  • 建立一個新GLUT專案 week16_interpolation(內插) ,貼上week15_angles_TRT的程式碼
  • 記錄四個動作存檔(s)並執行(r),會感覺不連續
 
  • 修改程式碼
  • 在按'p'時,t=alpha值,當t<30(可以自己設定大小,讓內插角度變更細更多)時執行myInterpolate,讓角度從舊的慢慢變成新的,t>=30時執行myread函式,讓新角度帶進舊角度裡面,並輸出新角度。

Step02-1
    利用計時器將動作印出來
  • 讓程式可以自動播放
  • 利用glutTimerFunc的函數跟timer函式   
    glutTimerFunc( 等多久(毫秒)  ,  timer  ,  t參數  );


Step02-2
    攝影機


    gluLookAt(    (x,y,z),                (x,y,z),                (x,y,z));
                       攝影機位置        攝影機看哪


Step03-1
  • 建立新GLUT專案 week16_camera_projection_glitLookAt
  • 備份專案內本來的轉圈圈的程式碼到記事本
  • aspect ratio 長寬比 ex. 1920x1080, 1280x720, 640x480, 16:9, 4:3
  • 程式碼:
void reshape(int w,int h){
    float ar = (float) w / (float) h;
    glViewport(0,0,w,h);
    glMatrixMode(GL_PROJECTION);///3D->2D
    glLoadIdentity();
    gluPerspective(60,ar,0.1,100);

    glMatrixMode(GL_MODELVIEW);///3D Model+View
    glLoadIdentity();
    gluLookAt(0,0,3,  ///eye
              0,0,0, ///看哪裡
              0,1,0);///up向量
}
  • 這樣視窗也能等比例拉大拉小

沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

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