2023年5月29日 星期一

week10 使用3D模型

 week10

先從jsyeh.org的3dcg10下載老師的範例
老師的網站網址(https://jsyeh.org/3dcg10/)

下載data win32
1.將window解壓縮並將data丟到window裡
2.開啟Transformation.exe
3.下載source.zip
4.把glm.h和glm.c拉到week10_glm(glm.c改名為glm.cpp)
#include <stdio.h>
#include "glm.h"
GLMmodel * pmodel = NULL;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    if(pmodel==NULL){
        pmodel = glmReadOBJ("Al.obj");
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel ,90);
    }
    glmDraw(pmodel , GLM_MATERIAL);
    ///glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week10");

    glutDisplayFunc(display);
    glutMainLoop();
}
最後圖形

鋼彈模型
新開一個GLUT專案,week10_glm_gundam
將glm.h、glm.c(記得檔名改成glm.cpp)放在week10_glm_gundam目錄裡

#include <stdio.h>
#include "glm.h" ///下載 source.zip有glm.h放在week10_glm_gundam目錄裡
///glm.c改檔名成glm.cpp放在week10_glm_gundam目錄裡
///把glm.cpp加到專案裡
///把模型(ex. Al.obj A.mtl)複製到工作目錄
///再把Gundam.obg Gundam.mtl Diffuse.jpg放到工作目錄
GLMmodel * pmodel = NULL;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    if(pmodel==NULL){
        pmodel = glmReadOBJ("Gundam.obj");
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel ,90);
    }
    glmDraw(pmodel , GLM_MATERIAL);
    ///glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week10");

    glutDisplayFunc(display);
    glutMainLoop();
}

沒有留言:

張貼留言