(1)到上面網址下載:data 、win32 、glut.32dll 、source
重複之前的步驟:解壓縮windows.zip->拉data進windows ->複製glut32.dll ->貼上
(2)開啟source壓縮檔 將glm.c 、glm.h 、lightmaterial.c三個拉出
(3)重複以前的步驟:搜尋freeglut->下載->解壓縮拖移到桌面->複製、改檔名(libglut32.a)->
開啟codeblock新建一個新的GLUT project
(4)將上週的茶壺打光程式碼複製貼上
(5)用NotePad++開啟lightmaterial.c
(6)ctrl+f可以搜尋關鍵字
搜尋glm複製搜尋到的前三筆程式碼:
(7)複製到codeblock上
(8)將glm.c 、glm.h拖移到剛剛codeblock新建的glut procject資料夾裡
(9)將glm.c的檔名改成glm.cpp
.
(10)右鍵新增files
(11)加入glm.cpp進去
(12)將下載的data放到ferrglut >bin裡面
(13)執行
出現有光照的圖
#include <GL/glut.h>
#include "glm.h" ///我們要讀入3D模型 第一步,使用GLM,glm.h要放在同一目錄裡
GLMmodel* pmodel = NULL; ///我們要讀入3D模型 第二步, GLMmode1 變數,等一下要讀入的3D模型
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
float angle=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清畫面
if (!pmodel) { ///我們要讀入的3D模型 第三步,讀入3D模型
pmodel = glmReadOBJ("data/AL.obj"); ///我們要讀入的3D模型 第三步,讀入3D模型
if (!pmodel) exit(0); ///我們要讀入的3D模型 第三步,讀入3D模型
glmUnitize(pmodel); ///我們要讀入的3D模型 第三步,讀入3D模型
glmFacetNormals(pmodel); ///我們要讀入的3D模型 第三步,讀入3D模型
glmVertexNormals(pmodel, 90.0); ///我們要讀入的3D模型 第三步,讀入3D模型
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); ///我們要讀入的3D模型 第三步,讀入3D模型
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("06160052"); ///顯示一個視窗
glutDisplayFunc(display);
glutIdleFunc(display);
glClearColor(1,0,0,1);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
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);
glutMainLoop();
}
作業:(將maya的模型匯入codeblock)
(1)匯出obj檔:File->Export Selection
(2)選擇OBJ export
(3)將匯出的檔案拉近freeglut>bin裡面
(4)將圈起來的地方改成自己剛剛儲存的檔名
沒有留言:
張貼留言