Week07:模型
範例 http://jsyeh.org/3dcg10
1. 下載網頁中的data, win32, source
2. 將windows解壓縮, data.zip/data丟進解壓縮後的windows資料夾
3.開啟Light Material.exe
#期中考複習
```glPushMatrix();//備份矩陣 glTranslatef(x, y, z);//移動
glRotatef(angle, x, y, z);//旋轉
glScalef(x, y, z);//縮放
glPopMatrix();//還原矩陣```打光的程式碼: (1) 打光的陣列, (2) 打光的函式
TODO: 寫 Blog (ing)
## step01-4 從 GitHub 拿出上週的程式!!! week06_light
git 下載你上週的程式
git clone 下來 或在你的專案資料夾裡 git pull
把 week06_light\main.cpp 用 Notepad++ 開起來, copy
paste 到 week08_model 的 main.cpp
執行,會看到打光的黃色茶壼
## step02-1 把 source.zip 看裡面的3個程式 glm.h glm.c lightmaterial.cpp, 拿裡面的程式來用,便能讀入3D模型
step02-1_把 source.zip 看裡面的3個程式 glm.h glm.c 研究 lightmaterial.cpp, 拿裡面的程式來用,便能讀入3D模型, 要include 雙引號的 glm.h 要把 glm.c改檔名成glm.cpp 並加入專案, 再用 Notepad++研究學習lightmaterial.c的程式內容 .zip
1. glm.h 我們要 include 它
2. glm.c 改檔名 glm.cpp 要加入專案
3. lightmaterial.cpp 用 Notepad++ 研究"學習"
TODO: Blog (ing)
```C++
#include <GL/glut.h> //角括號,是系統的include裡 的檔案
#include "glm.h" //雙引號,同目錄裡 的檔案
```
```C++
GLMmodel* pmodel = NULL; //指到GLMmodel模型的指標,NULL代表還沒好
```
```C++
void
drawmodel(void)
{
if (!pmodel) {
pmodel = glmReadOBJ("data/soccerball.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH);
}///用來畫3D模型的程式碼, "學習它"
```
## step02-2 畫 3D 模型檔
step02-2_畫 3D 模型檔,要把 glutSolidTeapot()改成畫 drawmodel(), 要在下方Build Log 找你的 working dir 工作目錄 好像是 Desktop的freeglut的bin目錄, 在裡面放 data資料夾, 以便讀取 data的 soccerball.obj 模型, 再把glm.cpp 及 glm.h 放在 week08_model 目錄中, 再 Add files 把 glm.cpp 加到專案中.zip
1. (用哪一行程式?) drawmodel() TODO: 在 display()取代 glutSolidTeapot()
2. (檔案在哪裡?) 要在放 working dir 工作目錄裡!!!!
3. (在 CodeBlocks下方 藍色 Build Log 說我們的工作目錄在...)
4. (in C:\Users\...\Desktop\freeglut\bin\ )
5. TODO: 剛剛下載的 下載\data.zip 裡面的 data資料夾,整包放在 "工作目錄"
6. TODO: 把 glm.h 還有 glm.c (檔名改成 glm.cpp) 放到 week08_model 目錄
7. 注意: 副檔名要看到才行!!!!
8. TODO: 在 week08_model 的專案中, Add 同目錄裡面的 glm.cpp
## step02-3 複習問問題
打光的程式碼: (1) 打光的陣列, (2) 打光的函式
TODO: 寫 Blog (ing)
## step01-4 從 GitHub 拿出上週的程式!!! week06_light
git 下載你上週的程式
git clone 下來 或在你的專案資料夾裡 git pull
把 week06_light\main.cpp 用 Notepad++ 開起來, copy
paste 到 week08_model 的 main.cpp
執行,會看到打光的黃色茶壼
## step02-1 把 source.zip 看裡面的3個程式 glm.h glm.c lightmaterial.cpp, 拿裡面的程式來用,便能讀入3D模型
step02-1_把 source.zip 看裡面的3個程式 glm.h glm.c 研究 lightmaterial.cpp, 拿裡面的程式來用,便能讀入3D模型, 要include 雙引號的 glm.h 要把 glm.c改檔名成glm.cpp 並加入專案, 再用 Notepad++研究學習lightmaterial.c的程式內容 .zip
1. glm.h 我們要 include 它
2. glm.c 改檔名 glm.cpp 要加入專案
3. lightmaterial.cpp 用 Notepad++ 研究"學習"
TODO: Blog (ing)
```C++
#include <GL/glut.h> //角括號,是系統的include裡 的檔案
#include "glm.h" //雙引號,同目錄裡 的檔案
```
```C++
GLMmodel* pmodel = NULL; //指到GLMmodel模型的指標,NULL代表還沒好
```
```C++
void
drawmodel(void)
{
if (!pmodel) {
pmodel = glmReadOBJ("data/soccerball.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH);
}///用來畫3D模型的程式碼, "學習它"
```
## step02-2 畫 3D 模型檔
step02-2_畫 3D 模型檔,要把 glutSolidTeapot()改成畫 drawmodel(), 要在下方Build Log 找你的 working dir 工作目錄 好像是 Desktop的freeglut的bin目錄, 在裡面放 data資料夾, 以便讀取 data的 soccerball.obj 模型, 再把glm.cpp 及 glm.h 放在 week08_model 目錄中, 再 Add files 把 glm.cpp 加到專案中.zip
1. (用哪一行程式?) drawmodel() TODO: 在 display()取代 glutSolidTeapot()
2. (檔案在哪裡?) 要在放 working dir 工作目錄裡!!!!
3. (在 CodeBlocks下方 藍色 Build Log 說我們的工作目錄在...)
4. (in C:\Users\...\Desktop\freeglut\bin\ )
5. TODO: 剛剛下載的 下載\data.zip 裡面的 data資料夾,整包放在 "工作目錄"
6. TODO: 把 glm.h 還有 glm.c (檔名改成 glm.cpp) 放到 week08_model 目錄
7. 注意: 副檔名要看到才行!!!!
8. TODO: 在 week08_model 的專案中, Add 同目錄裡面的 glm.cpp
## step02-3 複習問問題
沒有留言:
張貼留言