2019年6月9日 星期日

學渣的奮鬥史-最終回

附上睡過頭沒上到課的我
醒來後
朋友傳給我的第一句話


還好老師有錄影片

從影片中可以知道今天的重點是關於運鏡的使用方法及掌握


第一部分(投影矩陣)


照慣例的要從老師給的網址

[http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/]

下載3個東西

[win32][glut32.dll][data]

在其中打開projection

在轉移矩陣跟備份矩陣後面所寫的函式內容會跟以前有所不同

分別換成了GL_PROJECTION以及GL_MODELVIEW

在下載回來的WINDOWS程式中

打開projection後能發現能發現有幾個數值能夠調整

分別是[fovy][aspect][][]

fovy是調整視野

aspect是調整寬、高比例

在垂直投影法gluPerspective(視野角度,寬跟高的比例,zNear,zFar)


第二部分(用codeblock做出projection的效果)

顯示3D模型的方法

用之前上課的函式將3D模型帶入

程式碼如下

void drawmodel(void)///輸入模型檔案
{
  if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
     }
  glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)顯示出模型檔案
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}

注意!!!模型需打光,沒有打光模型就會變白色

要有打光效果需注意是否有以下兩行程式碼

glEnable(GL_DEPTH_TEST);///讓模型變立體
glEnable(GL_LIGHT0);///打光後讓立體的模型有顏色
GLfloat light_pos[] = { 0.0, 0.0, -1.0, 0.0 };
glEnable(GL_LIGHTING);///打光後讓立體的模型有顏色
glLightfv(GL_LIGHT0, GL_POSITION, light_pos);///打光的位置

第三部分(攝影機運鏡)

利用gluLookAt函式調整參數達到運鏡的效果

利用三角函數調整運行的軌跡

讓鏡頭可以成圓形的運行軌跡


下課

沒上到課好後悔阿QQ



Perspective 素描

沒有留言:

張貼留言