2020年5月6日 星期三

手機壞了啦

課程開始就先複習之前的東西



接著選擇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();
}
--------------------------------------------------------------------------------------------------------------------------

因為做完了很無聊 老師要我們加個打光

看到了模型的屁屁



要轉成正面 只需要加幾行程式並改變順序

沒有留言:

張貼留言