2019年4月11日 星期四

week06

網址:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
(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)將圈起來的地方改成自己剛剛儲存的檔名



沒有留言:

張貼留言