課程開始就先複習之前的東西
接著選擇data
將裡面的.obj檔案 以notepad++ 開啟
其中v就代表頂點(vertex) 與之前期中考背的東西一樣
vn其中的 n 代表法向量(normal)
f代表著面(facet)
三個頂點代表三角形 四個頂點代表四邊形
其中動畫會有四邊形為了講求自然
而遊戲通常都用三角形 為了快速順暢
接著開啟OpenGLUT
把下載的source裡的程式碼transformation.c開起來並複製到CodeBlocks結果找不到檔案 因為我們的專案裡面沒有 glm.h 及 glm.cpp
所以開啟source資料夾 找到 glm.h 及 glm.c
很重要 要把glm.c的副檔名改成.cpp
很重要 要把glm.c的副檔名改成.cpp
很重要 要把glm.c的副檔名改成.cpp
因為這是以前的檔案
很順利地移過來
下一步要把剛剛的檔案加入
選擇glm.cpp
按下OK
執行前 要把3D Model 的 data 目錄放到 freeglut/bin
成功執行了別人的程式 好棒喔!!
再來要移植別人的程式
首先把原本的程式碼清空 再開始做--------------------------------------------------------------------------------------------------------------------------
程式碼:
#include <GL/glut.h>
#include "glm.h"///使用外掛
GLMmodel * model = NULL;///指標 指到GLM的資料結構
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(model==NULL) model = glmReadOBJ("data/AL.obj");///讀入模型
glmUnitize(model);///怕模型太大太小 改成Unit單位大小-1..+1
glmFacetNormals(model);///計算 facet 的法向量 s
glmVertexNormals(model, 90);///計算 vertex 的法向量 s
glmDraw(model, GLM_SMOOTH | GLM_MATERIAL);///畫
glutSwapBuffers();
}
int main(int argc, char**argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week11親手打造的");
glutDisplayFunc(display);
glutMainLoop();
}
--------------------------------------------------------------------------------------------------------------------------
沒有留言:
張貼留言