##WEEK16
##week16-0_sample
準備上課的環境
0.freeglut
1.openCV
2.設定CodeBlocks
3.File-New-ProjectGLUT專案 week16-0_sample
接下來,看一下課本的程式
jsyeh.org/3dcg10下載data.zip windows.zip
windows.zip => 下載\windows\Projection.exe
data.zip=>下載\windows\data\一堆檔案
打開Projection.exe調整參數
##week16-1_sample_glutLookAt
1.File-New-ProjectGLUT專案 week16-1_sample_glutLookAt
2.要改resize()函式 在裡面,加上glutLookAt()函式
就可以看著左上角的那個圓球!!!
現在要做另一個修改, 想要在按按鍵時,看不同地方先把剛加的看第39行註解掉
再到static void key 那一段裡加上下面的程式碼
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垂直投影
glFrudtum比較奇怪,我們通常不用它的投影法
左 右 下 上 近 遠 共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){...}
程式碼:
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) (原來是沒有圖檔)
4.老師傳給你earth.jpg 放在C:\earth.jpg
沒有留言:
張貼留言