2024年6月6日 星期四

week16 電腦圖學

 week16-0_sample

1.安裝 freeglut ,把資料夾拉到桌面,複製 lib\libfreeglut.a 改成 libglut32.a
2.安裝OpenCV  記得 Add Path
3.設定 CodeBlocks Setting 三個設定
   => include 目錄  C:\OpenCV2.1\include
   => lib 目錄 C:\OpenCV2.1\lib
   => link 的 3 個設定 cv210  cxcore210  highgui210
4. File-New-Project, GLUT專案 week16-0_sample
5.下載課本範例  https://jsyeh.org/3dcg10/
   =>下載 window.zip =>解壓縮
   =>下載 data.zip =>解壓縮
   =>把 data 放進 window 裡面
   =>開啟 Projection.exe
   =>調整 gluLookAt() 可轉換鏡頭
   =>調整 gluLookAt() 的 up會斜斜的




 week16-1_sample_gluLookAt

1. File-New-Project, GLUT專案 week16-1_sample_gluLookAt
2.要改 resize() 函式, 在裡面, 加上gluLookAt() 函式, 就可以看著左上角 

3.做另一個修改, 想要在按按鍵時, 看不同地方
   =>先把剛剛加的第39行註解掉, 再到 void key() 裡改程式
   => if(key=='1') 看左上方
   => if(key=='2') 看上方
   => if(key=='3') 看右上方



week16-2_glutReshapeFunc_gluPerspective_gluLookAt

1.先看課本 Projection.exe 的範例 
   => gluPerspective 透視投影
   => glOrtho 垂直投影
   => glFrustum 比較奇怪, 我們通常不會用它的投影法
   =>左、右、下、上、近、遠 共六組參數
   
   => gluPerspective( 視角、長寬比、z近、z遠 )
   =>fovy field of view in y視角
   =>aspect ratio 長寬比
2.寫程式, 11行+8行, 做出透視投影
   => File-New-Project, GLUT專案 week16-2_glutReshapeFunc_gluPerspective_gluLookAt
   =>貼上11行程式碼
   =>在 int main() 裡, 加入 glutReshapeFunc(reshape);
   =>寫上 void reshape(int w, int h){...}

3.在main() 裡加入改視窗大小的程式碼
glutInitWindowSize(300, 600);



week16-3_myTexture_id1_id2_glBindTexture

想要有 "兩張貼圖" (一張背景、一張給模型)
1. File-New-Project, GLUT專案 week16-3_Texture_id1_id2_glBindTexture
2.偷用 GitHub  week05_rotate_earth/main.cpp 裡的程式碼
3.執行會出錯: OpenCV Error: Null pointer (NULL array pointer is passd)=>沒有圖檔
4.把地球圖片放到C:

5.修改  加入背景舞台







沒有留言:

張貼留言