這篇是首PO
紀錄一下怎麼在opengl上貼上3D物件
首先先在自己的project裡面include這兩個檔案
介紹一下這裡用到的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檔 才可以讀喔
文章標籤
全站熱搜

寫得很棒呢>< 希望你繼續分享