2024年6月3日 星期一

小白學圖學Week16

 #Week16

1.主題:Camera 攝影機

2.主題:Projection投影機

3.主題:兩張貼圖

4.主題:glmUnitize() vs 自己調大小

5.期末作品


先用上課的課本教材

https://jsyeh.org/3dcg10/

1.data.zip

2.windows.zip =>下載\windows\Projection.exe

了解glutLookAt(eyeX,eyeY.eyeZ,centerX,centerY,centerZ,upX,upY,upZ)


##week16-0_sample

先設好今天的上課環境

0.安裝freeglut

1.安裝OpenCV 2.1

2.重開CodeBlocks,設定opencv的3個設定

3.File-New-Project,GLUT專案Week16-0_sample


#week16-1_sample_glutLookAt

1.把剛剛week16-0整個目錄,複製成week16-1

2.複製後,改目錄名,改cbp專案檔名,用NotePad++改內容


要修改的程式碼,是想要Look At看著某個物體

我們的眼睛:0,0,0

要看的主角 center: -2.4,1.2,-6

我們的Up向量:0,1,0


我們要注入的函式是

```cpp

glutReshapeFunc(resize);


void resize(int width, int height)

{

    gluLookAt(0,0,0, -2.4,1.2,-6, 0,1,0);

}

```


## week16-2_teapot_LookAt_glutReshapeFunc_reshape

1.File-New-Project,GLUT專案

week16-2_teapot_LookAt_glutReshapeFunc_reshape

2.貼上11行的GLUT的程式

3.看課本的教學,了解glutReshapeFunc(reshape);怎麼用


課本教學:

gluOrhto(左,右,上,下,近,遠);

gluPerspective(張角,長寬比,近,遠);

gluFrustum(左,右,下,上,近,遠);


寫程式,在int main()裡

glutReshapeFunc(reshape);

在前面,準備void reshape(int w, int h)

```cpp

void reshape(int w, int h){

    float ar = w / (float) h;

    glViewport(0, 0, w, h);

    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    gluPerspective(60, ar, 0.1, 100);

    

    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();

}

```


##week16-3_myTexture_id1_id2_glBlindTexture

讓程式,可以有兩張貼圖

可以參考Week05-2 和 Week05-3

1.新增專案File-New-Project,GLUT專案

week16-3_myTexture_id1_id2_glBlindTexture

2.貼上11行的GLUT程式,再貼上Week15-2的myTexture 12行程式


沒有留言:

張貼留言