2018年4月10日 星期二

Week07 葉子的筆記

2018-04-09  Week07

電腦圖學


(1) 主題: 3D模型/3D Explorer
(2) 轉檔, OBJ模式(v,vt,vnf.)
(3) 期中考考題(10行 OpenGL Code)
(4) 小考:T-R-T
(5) 回家作業

Topic 1 -  用3D Explorer開3D模型

到moodle下載3D Explorer 下載下來後並安裝(詳見圖一)
(圖一)出處:老師用圖

接著到jsyeh.org/3dcg10j網站下載 Source / data / glut32.dll / window三個資料夾  (詳見圖二)
(圖二)出處:老師用圖

接著把data資料夾解壓縮放到桌面開啟3D Explorer 查看data裡的3D模型



Topic 2 -  讀入自己想要的3D模型

TODO: source.zip 有三個程式碼檔案 glm.h 、glm.cpp、transformation.c解壓縮到桌面
(詳見圖三)
(圖三)出處:老師用圖

解壓縮在source裡的三個檔案 分別是glm.h, glm.c  transformation.c並開啟codeblocks glut 專案(project) P.s 請記得到moodle載freeglut檔案並完成相關手續(詳見圖四)

(圖四)出處:老師用圖



接著分別把三個檔案改檔名(glm.h, glm.c --> glm.cpp, transformation -> tran.cpp) (詳見圖五)
(圖五)出處:老師用圖


transformation.c改成 transformation.cpp  (詳見圖六)

(圖六)出處:老師用圖


接著在codeblocks中加入剛剛改好的三個檔案  (詳見圖七)
(圖七)出處:老師用圖

匯入glm.h, glm.cpp, transformation.cpp 3個檔案  (詳見圖八)

(圖八)出處:老師用圖

記得要到codeblocks的 Setting中的 Compiler中取消第一項的勾勾  (詳見圖九)

(圖九)出處:老師用圖

請記得要Rebuild (詳見圖十)

(圖十)出處:老師用圖

然後把data資料夾複製  (詳見圖十一)
(圖十一)出處:老師用圖

把data資料夾複製好後放進freeglut中的bin資料夾中  (詳見圖十二)
(圖十二)出處:老師用圖


因為在transformation.cpp中已經有main函式了請把 main.cpp裡的程式清空  (詳見圖十三)
(圖十三)出處:老師用圖


接著開啟程式~~~完成 (詳見圖十四)
(圖十四)出處:老師用圖

----------------------------------------------------------分隔線-------------------------------------------------------

程式碼

#include "glm.h"
GLMmodel * pmodel=NULL;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    if(!pmodel){
        pmodel = glmReadOBJ("data/porsche.obj");
        if(!pmodel) exit(0);
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel,90.0);
    }
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
    glutSwapBuffers();
}
int main(int argc,char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week07 It's my 3D code");

    glutDisplayFunc(display);
    glutMainLoop();
}


---------------------------------------------------------分隔線--------------------------------------------------------

詳細解說



程式碼  (請見圖十五)
(圖十五)出處:老師用圖


自己用obj檔加入程式中  (詳見圖十六)
(圖十六)出處:老師用圖

Q: 為什麼 #include "glm.h" 是用雙引號呢?

ANS: 因為在函式庫中並沒有glm.h這個東西 這是外掛所以使用雙引號 (詳見圖十七)

(圖十七)出處:老師用圖




沒有留言:

張貼留言