# 期中考模擬練習
#下載課本範例
1. 到 https://jsyeh.org/3dcg10/ 下載 source、data --> 解壓縮
2. 分析 data 檔案裡面的 AL.mtl 看到裡面 Ka、Kd 對應打光的material
AL.obj 裡面的內容 --> #代表註解
--> 可以再引用另一個 mtl 檔
--> v 代表頂點,後面有座標 x y z
--> f 代表面 face 或 facet 後面有頂點的編號
--> g 代表 group
#week08-0_sample
1. 先把 freeglut 下載複製至桌面 => freeglut => lib => libfreeglut.a 複製並改名成 libglut32.a
#week08-1_glm_gundam
1. File - New - Project , GLUT專案 week08-1_glm_gundam
2. 要把 source.zip 裡面的 glm.h、glm.c 都 copy道專案資料夾裡 --> 把 glm.c 檔名改成 glm.cpp
3. 在專案裡按右鍵 Add Files 把 glm.cpp 加入專案
4. 在 main.cpp 裡,加入11行程式碼


5. 在week08-1_glm_gundam資料夾李新增一個data資料夾 --> 把 Gundam 模型 (Gundam.mtl、Gundam.obj)加進 data 資料夾裡,
還要把 桌面\freeglut\bin\freeglut.dll複製到專 案目錄裡
6. 要把專案的工作執行目錄換成小數點
7. 加入讀模型的程式碼(week06有寫過) 就會出現鋼彈
#include "glm.h"
GLMmodel * pmodel = NULL;
void drawmodel(void)
{
if (!pmodel) {
pmodel = glmReadOBJ("data/porsche.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
#week08-2_glm_gundam_opencv_texture
1. 安裝 OpenCV --> 加改成 Add Path,不要改目錄
2. 關掉重開 CodeBlock (才會把Path設定好,記得存檔)
3. 開新專案和建一個data資料夾,把剛剛在week08-1的 glm.cpp、glm.h、freeglut.dll 複製貼上
4. 在專案裡按右鍵 Add Files 把 glm.cpp 加入專案,一樣把專案的工作執行目錄換成小數點
5. 把剛剛 week08-1的程式碼拿來用 再加上新的程式碼
#include <opencv/highgui.h> ///使用 OpenCV 2.1 比較簡單, 只要用 High GUI 即可
#include <opencv/cv.h>
#include <GL/glut.h>
int myTexture(char * filename)
{
IplImage * img = cvLoadImage(filename); ///OpenCV讀圖
cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
glGenTextures(1, &id); /// 產生Generate 貼圖ID
glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /// 貼圖參數, 放大時的內插, 用最近點
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); /// 貼圖參數, 縮小時的內插, 用最近點
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
return id;
}
*加上紅框程式碼剛但會變暗灰色*
6. Setting --> Compiler 要加入 OpenCV 相關的三個設定
--> compiler 的 include 要加入 C:\OpenCV2.1\include
--> Linker 的 lib 要加入 C:\OpenCV2.1\lib
--> Linker 設定,要加入 cv210、cxcore210、highgui210
改 glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL | GLM_TEXTURE);


#week08-3_glm_gundam_opencv_texture_lighting
1. 新增新專案 --> 在專案裡加入 data 目錄,裡面有 Gundam.mtl、Gundam.obj、Diffuse.jpg 三個檔案
2. 開新專案和建一個data資料夾,把剛剛在week08-2的 glm.cpp、glm.h、freeglut.dll 複製貼上
3. 在專案裡按右鍵 Add Files 把 glm.cpp 加入專案,一樣把專案的工作執行目錄換成小數點
4. 貼上程式碼,包含打光跟轉動
沒有留言:
張貼留言