2023年4月19日 星期三

旻_Week10

 電腦圖學 2023-04-19 Week10

1. 期中考-OpenGL必背10函式
2. 主題: 3D模型
3. 主題: OBJ檔
4. 主題: glm.h glm.cpp
5. 實作: Gundam 剛彈模型


第一節課老師先透過之前的範例檔幫大家複習今天考試的幾項函式





範例

先從jsyeh.org的3dcg10下載老師範例跑Transformation.exe會把data目錄中的3D模型畫出來3D模型對應的OBJ檔,會再引用.mtl檔對應material材質。OBJ檔裡的v對應vertex頂點,vt對應vertex texture打光要用的法向量。f是點線面的面,會需要3個頂點or4個以上的頂點。




///下載source.zip > glm.h > 複製 > 放到week10glm目錄裡

///glm.c改檔名glm.cpp放在week10glm目錄裡

///把glm.cpp加到專案裡

///把模型檔 data裡的模型 > 複製 > 放到freeglut > bin

///Build log最後一行會說它在哪裡(in C:\User\...\freeglut\bin)


#include <GL/glut.h>

#include "glm.h"

GLMmodel * pmodel=NULL;///有一個模型的指標,先是空的

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    if(pmodel==NULL){   ///複製source > transformation.c > 159行至167行

        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("week10glm");


    glutDisplayFunc(display);

    glutMainLoop();

}

為了製作貼圖,最好讀圖方式OpenCV用舊版OpenCV2.1
桌面 > 葉正聖老師上課軟體 > 安裝OpenCV-2.1.0-win32-vs2008.exe > Add PATH重設 > 使用原先OpenCV2.1目錄 > CodeBlock重開

設定(參考week07)

Setting-Compiler
Search directory搜尋的目錄
1.Compiler: C:\OpenCV-2.1\include
2.Linker: C:\OpenCV-2.1\lib

Linker setting cv210 cxcore210 highgui210

week10_glmgundam

///copy from week10glm

#include <GL/glut.h>

#include "glm.h"

GLMmodel * pmodel=NULL;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    if(pmodel==NULL){   ///下載source > transformation.c > 複製159行至167行

        pmodel=glmReadOBJ("Gundam.obj");///step03

glmUnitize(pmodel);

        glmFacetNormals(pmodel);

        glmVertexNormals(pmodel, 90);

    }


    glmDraw(pmodel,GLM_MATERIAL | GLM_TEXTURE);

   // glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week10");


    myTexture("Diffuse.jpg");

    glutDisplayFunc(display);

    glutMainLoop();

}


安裝Git GitBash

-cd desktop
-git clone https://github.com/Owoyayou/2023graphicsa
-cd 2023graphicsa
-start .
  (打開2023graphicsa資料夾,把今日程式碼檔案放進來)
-git add .
-git status
(開啟檔案總管)
-git config --global user.email ______________
-git config --global user.name Owoyayou
-git commit -m "week10"
-git push

沒有留言:

張貼留言