2017年4月18日 星期二

Week09 閻覃的上課筆記

Week09 閻覃的上課筆記.md

Week09 閻覃的上課筆記

模型檔案

Obj檔案存儲了一個模型的頂點、法向量等等信息。

開頭英文名稱中文名稱
vvertex頂點
vnvertex normal法向量
vtvertex texure coordnate貼圖坐標
fface

例如:

g null_
usemtl darksilver
f 2//1 3//2 4//3 1//4
f 5//5 6//6 4//7 3//8
v -110.110603 193.228180 -5.218150
v -111.472328 194.029236 -2.386700
vn 0.290246 0.955310 -0.056030
vn 0.290246 0.955310 -0.056030

Mtl檔案存儲了材質信息

Maya匯出OBJ檔案

Google:obj glm youtube

可以找到小葉老師的教學影片

使用OpenGL展示模型

可以使用老師的樣例,稍作改動即可。

主要程式碼

 
17
1
void display() {
2
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
3
    glPushMatrix();
4
    angle++;
5
    glRotatef(angle, 0, 1, 0);//自動旋轉
6
    if (!pmodel) {
7
        pmodel = glmReadOBJ("IronMan/IronMan.obj");
8
        if (!pmodel) exit(0);
9
        glmUnitize(pmodel);
10
        glmFacetNormals(pmodel);
11
        glmVertexNormals(pmodel, 90.0);
12
    }
13
14
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
15
    glPopMatrix();
16
    glutSwapBuffers();
17
}

glmReadOBJ

使用GLM,讀入OBJ檔案,再判斷是否讀取成功,若不成功則為NULL,退出程式。

glmUnitize

單位化OBJ模型,使其適合我們的大小(最大為1)

glmFacetNormals

生成面的法向量

glmVertexNormals

生成點的法向量

glmDraw

畫出模型

成果展示

246A2236-DA2F-442D-A90D-6284B71B9722

素材的地址:

https://free3d.com/

沒有留言:

張貼留言