week16
##week16-0_sample
***設定環境***
0. 桌面安裝 freeglut , 把 lib 的 libfreeglut.a 複製成 libglut32.a
1. 安裝 OpenCV --> 桌面\葉正聖老師上課用軟體\OpenCV-2.1.0-win32-vs2008
2. 小心1: Add OpenCV to ... PATH , 要安裝在預設的 C:\OpenCV2.1 目錄裡
3. 安裝完後,重開 CodeBlocks
4. 設定 Setting-Compiler 要加入3個設定
- search 目錄 Compiler 的 include 目錄加 C:\OpenCV2.1\include
- search 目錄 Linker 的 lib 目錄加 C:\OpenCV2.1\lib
- 加入 Linker 設定的3個檔名 cv210 cxcore210 highgui210
5. File-New-Project , GLUT 專案 week16-0_sample
#看課本範例
1. 請到 https://jsyeh.org/3dcg10 下載課本範例 source data win32
2. windows.zip 解壓縮 => data.zip點開 => 將data資料夾複製到windows裡
3. 點開Projection.exe
##week16-1_sample_gluLookAt
1. File-New-Project , GLUT 專案 week16-1_sample_gluLookAt
2. 要改 resize( ) 函式,在裡面加上gluLookAt( ) 函式,就可以看著左上角的那個圓球!
3. 把第39行gluLookAt( 0, 0, 0, -2.4, 1.2, -6, 0, 1, 0); ---->要註解掉
4. 在void key( ) 增加下列程式碼,使按鍵123按下之後改變看著的位置
```cpp
if(key=='1'){ ///看左上方
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt( 0, 0, 0, -2.4, 1.2, -6, 0, 1, 0);
}else if(key=='2'){ ///看上方
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt( 0, 0, 0, 0, 1.2, -6, 0, 1, 0);
}else if(key=='3'){ ///看右上方
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt( 0, 0, 0, 2.4, 1.2, -6, 0, 1, 0);
}
```
如下圖
按1
按2
按3
##week16-2_glutReshapeFunc_gluPerspective_gluLookAt
***先看課本 Projection.exe 的範例***
- gluPerspective 透視投影
- glOrtho 垂直投影
- glFrustum 比較奇怪 , 通常不會用他的投影法,左、右、下、上、近、遠,共6組參數
- gluPerspective (視角 , 長寬比, z近, z遠)
- fovy --> field of view in y 視角
- aspect ratio 長寬比
***要寫11+8行,做出透視投影***
1. File-New-Project , GLUT 專案 week16-2_glutReshapeFunc_gluPerspective_gluLookAt
2. 貼上11行 GLUT 簡單程式碼
3. 在int main( ) 裡,加入 glutReshapeFunc(reshape);
4. 寫自己的 void reshape(int w, int h){...}
拉視窗茶壺不會變形
5. glutInitWindowSize(300,600); ///加這行可改視窗長寬
##week16-3_myTexture_id1_id2_glBindTexture
若想要有「兩張貼圖」(一張背景 一張模型)
1. File-New-Project , GLUT 專案 week16-3_myTexture_id1_id2_glBindTexture
2. 偷用week05_rotating_earth /main.cpp 裡的程式碼
3. 但執行會出錯OpenCV Error: Null pointer (NULL array pointer is passed) in unknown function, file ..\..\..\..\oc
沒有留言:
張貼留言