2024年6月6日 星期四

Han Week16

 ##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








沒有留言:

張貼留言