這篇是首PO

紀錄一下怎麼在opengl上貼上3D物件

首先先在自己的project裡面include這兩個檔案

glm.h  glm.cpp

介紹一下這裡用到的function

glmUnitize(glm_model);

Unitize 就是將模型貼在原點上,並且讓他大小縮在邊長是2的正方體內

glmScale(glm_model, .1);

Scale 就是將模型放大或縮小,後面的參數設定放大倍率,這邊是0.1倍

glmFacetNormals(glm_model);

Normal 就是法向量的意思,這個function會算出每個face的法向量,他會取出每個face的兩個vertex做外積得到法向量

法向量有什麼用呢? 當有光線照到這個物體的時候,法向量就會是光線如何反射的一個參數囉!

glmVertexNormals(glm_model, 90);

這個function要算出每個vertex的法向量,一個點可能會同時在很多face上,法向量的算法就是從這些face的法向量中取平均,最後算出比較平滑不突兀的法向量


所有模型的參數都調整好了以後就要將他畫出來了

glm這邊會先將模型的資料都存到一個list裡面

list_id = glmList(glm_model, GLM_MATERIAL | GLM_SMOOTH);  回傳一個整數ID

裡面其實就是用glBegin(GL_TRIANGLES);的方法講他畫了一出來

但是會夾在這兩行中間,所以並不會先畫出來

glNewList(list, GL_COMPILE);

........

glEndList();

直到

glCallList(list_id);輸入list ID

才會畫在螢幕上

記得要存到list後要把他delete掉,避免用太多記憶體,程式會當掉

glmDelete(glm_model);

最後貼上一隻熊的3D模型讓大家看看

想要3D模型的話可以使用google scetchup 用他的圖庫可以找到很多

只是有些並不是很精緻(精緻的都要錢阿!!!)

記得最後要輸出成obj檔  才可以讀喔

 

文章標籤
全站熱搜
創作者介紹
創作者 Happy Andy 的頭像
Happy Andy

Happy Andy 學習筆記

Happy Andy 發表在 痞客邦 留言(1) 人氣(1,038)