2022/4/12 第八周 (第七周放假)
主題 : 3D模型
1. (1) https://jsyeh.org/3dcg10/ ,下載win32、data、source 並且解壓縮
(2) 執行Light Material.exe : 左上角按右鍵可以換模型 / 按左鍵可以旋轉模型、左下按右鍵換材質 (Material)
(3) GLfloat light_ka : 可以調打光的範圍 a=AMBIENT
(4) GLfloat light_kd : 可以調光的顏色 d=DIFFUSE
(5) GLfloat light_ks : 影響亮光的地方 s=SPECULAR
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
3. 複製第6周的light程式碼(打光的茶壺)
4. 複製source/lightmaterial的程式
4-1. 加上include "glm.h"程式碼
#include "glm.h" /// 雙引號,引用同目錄裡的檔案
4-2. GLMmodel* pmodel = NULL; ///指到GLMmodel模型的指標,NULL(空指標)代表還沒好,*代表指標
4-3.
void
drawmodel(void)///用來畫3D模型的程式碼
{
if (!pmodel) {
pmodel = glmReadOBJ("data/soccerball.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH);
}
5. 畫我們的模型
1. 將剛剛下載的data資料夾,整個放在工作目錄裡(freeglut/bin)
2. 將下載並解壓縮的source資料夾的 glm.c 跟 glm.h複製,放在工作目錄裡(week08_model)
,再將glm.c的檔名改成.cpp
3. 在display()裡 加上 drawmodel(); ///畫模型
註解 glutSolidTeapot(0.3); ///這樣就會跑出上面第8行的soccerball.obj()
///在display()取代glutSolidTeapot() ///足球模型
4. 在codeblock的左邊week08_model按右鍵add files.../點week08_model/glm.cpp 加入
5. 在Bulid and Run就可以看到足球模型了
6. v : vertex頂點
vn : 法向量
f : face面

沒有留言:
張貼留言