2024年4月11日 星期四

電腦圖學 Week08 🥴

觀察課本範例

1. 下載課本的範例 https://jsyeh.org/3dcg10  win32、data、source

2. windows.zip 先解壓縮, data.zip 直接點開拉到windows資料夾

3. 分析data.zip裡的檔案

- Al.mtl:Ka Kd代表打光

- Al.obj:#代表註解、v代表頂點 (後面接著座標xyz)、f代表面 (後面接著頂點編號)、g代表group

範例檔:week08-0_sample

1. moodle下載 freeglut 拖到桌面

2. 把桌面\freglut\lib\libfreeglut.a 複製成 libglut32.a

3. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week08-0_sample

4. GLUT要選桌面的 freeglut

鋼彈模型:week08-1_glm_gundam

1. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week08-1_glm_gundam

2. GLUT要選桌面的 freeglut

3. 從課本範例 source.zip 中找到 glm.c / glm.h 兩個檔案並拉出來

4. 把 glm.c / glm.h 拉到 Desktop\week06-3_glm_obj_model 目錄裡, glm.c改名為glm.cpp

5. 在專案裡按右鍵新增 glm.cpp檔案

6. 把main.cpp改成11行GLUT程式
#include <GL/glut.h>
///這裡要插入三段程式碼
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week08 gundam");
    glutDisplayFunc(display);
    glutMainLoop();
}

7. 在專案資料夾新增一個data資料夾, 把老師傳的兩個鋼彈模型檔案拖進來

8. 清除歷史餘毒, 要把工作執行目錄改成小數點(.)


9. 把 桌面\freeglut\bin\freeglut.dll 複製道專案目錄裡

10.貼上上週的三段glm程式碼, 把Al.obj改成Gundam.obj
#include "glm.h" ///加的程式,使用glm的程式碼
GLMmodel * pmodel = NULL; ///加的程式,有顆指標,指到模型檔
drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/Gundam.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}

11. 把display裡的茶壺換成drawmodel();, 就會顯示鋼彈模型

鋼彈貼圖:week08-2_glm_gundam_opencv_texture

1. 安裝 OpenCV 2.1

- 安裝第三步驟, Add OpenCV to system PATH(勾第2或3個, 不要勾第1個)

- 目錄不要改,要用預設的

2. 把上一個檔案目錄裡的 glm.cpp/glm.h/freeglut.dll/data複製貼上到這一個專案目錄裡

3. 專案裡按右鍵新增 glm.cpp檔案

4. 清除歷史餘毒, 要把工作執行目錄改成小數點(.)

5. CodeBlocks 的 settings>compiler 加入 opencv 的3個設定

- Search directories > Compiler 要加上 C:\OpenCV2.1\include

- Search directories > Linker 要加上 C:\OpenCV2.1\lib

- Linker settings 要加上 cv210 / cxcore210 / highgui210

6. 貼上上一個專案的程式碼, 並在前面加上老師放在moodle的18行貼圖程式

7. 在 glutMainLoop(); 前貼上 myTexture("data/Diffuse.jpg");

8. 修改這行glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL | GLM_TEXTURE);

9. 最後會出現有顏色的鋼彈

鋼彈打光:week08-3_glm_gundam_opencv_texture_lighting

1. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week08-1_glm_gundam

2. 把上一個檔案目錄裡的 glm.cpp/glm.h/freeglut.dll/data複製貼上到這一個專案目錄裡

3. 專案裡按右鍵新增 glm.cpp檔案

4. 清除歷史餘毒, 要把工作執行目錄改成小數點(.)

5. 貼上上一個專案的程式碼, 並加上week08-0的打光程式碼 8 行陣列 + 12+2行函示呼叫



沒有留言:

張貼留言