WEEK07:3D模型/3D Explorer、轉檔OBJ
(這周不知為何找不到好像沒存到,家裡又沒辦法好好開起3D Explorer,所以我參考同學的圖)
任務一:3D Explorer
去老師的網站下載需要的東西
將glm.c 改成 glm.cpp
將transformation.c 改成 transformation.cpp
1.開啟3D Explorer
2.打開專案,Addfiles / Setting-Compiler 把勾勾清掉
3.開啟transformation.cpp
#include "glm.h" /// (1)要呼叫glm的外掛
GLMmodel* pmodel = NULL; /// (2)宣告GLM的3D模型的指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///以前教過的清畫面
if (!pmodel) {
pmodel = glmReadOBJ("data/porsche.obj"); ///這段負責畫3D模型
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
glutSwapBuffers();///以前教過的清畫面
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week07 我自己的3D模型讀進來");
glutDisplayFunc(display);
glutMainLoop();
}
2018電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2018年6月4日 星期一
2018年4月10日 星期二
Week07 葉子的筆記
2018-04-09 Week07
電腦圖學
Topic 1 - 用3D Explorer開3D模型
(圖二)出處:老師用圖
(圖三)出處:老師用圖
(圖四)出處:老師用圖
(圖五)出處:老師用圖
(圖六)出處:老師用圖
(圖七)出處:老師用圖
(圖八)出處:老師用圖
(圖九)出處:老師用圖
(圖十)出處:老師用圖
(圖十一)出處:老師用圖
(圖十二)出處:老師用圖
(圖十三)出處:老師用圖
(圖十四)出處:老師用圖
(圖十五)出處:老師用圖
(圖十六)出處:老師用圖
(圖十七)出處:老師用圖
(1) 主題: 3D模型/3D Explorer
(2) 轉檔, OBJ模式(v,vt,vnf.)
(3) 期中考考題(10行 OpenGL Code)
(4) 小考:T-R-T
(5) 回家作業
到moodle下載3D Explorer 下載下來後並安裝(詳見圖一)
(圖一)出處:老師用圖
接著到jsyeh.org/3dcg10j網站下載 Source / data / glut32.dll / window三個資料夾 (詳見圖二)
接著把data資料夾解壓縮放到桌面開啟3D Explorer 查看data裡的3D模型
Topic 2 - 讀入自己想要的3D模型
解壓縮在source裡的三個檔案 分別是glm.h, glm.c transformation.c並開啟codeblocks glut 專案(project) P.s 請記得到moodle載freeglut檔案並完成相關手續(詳見圖四)
接著分別把三個檔案改檔名(glm.h, glm.c --> glm.cpp, transformation -> tran.cpp) (詳見圖五)
transformation.c改成 transformation.cpp (詳見圖六)
接著在codeblocks中加入剛剛改好的三個檔案 (詳見圖七)
匯入glm.h, glm.cpp, transformation.cpp 3個檔案 (詳見圖八)
記得要到codeblocks的 Setting中的 Compiler中取消第一項的勾勾 (詳見圖九)
請記得要Rebuild (詳見圖十)
然後把data資料夾複製 (詳見圖十一)
把data資料夾複製好後放進freeglut中的bin資料夾中 (詳見圖十二)
因為在transformation.cpp中已經有main函式了請把 main.cpp裡的程式清空 (詳見圖十三)
接著開啟程式~~~完成 (詳見圖十四)
----------------------------------------------------------分隔線-------------------------------------------------------
程式碼
#include "glm.h"
GLMmodel * pmodel=NULL;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
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);
glutSwapBuffers();
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week07 It's my 3D code");
glutDisplayFunc(display);
glutMainLoop();
}
---------------------------------------------------------分隔線--------------------------------------------------------
---------------------------------------------------------分隔線--------------------------------------------------------
詳細解說
程式碼 (請見圖十五)
自己用obj檔加入程式中 (詳見圖十六)
Q: 為什麼 #include "glm.h" 是用雙引號呢?
ANS: 因為在函式庫中並沒有glm.h這個東西 這是外掛所以使用雙引號 (詳見圖十七)
2018年4月9日 星期一
Week07_+0筆記
http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ 下載data解壓縮
安裝
3DExplorer_v181.rar 開啟data
安裝 執行
jsyeh.org/3dcg10
data.zip--->桌面/data/一堆3D模型
=> 用3D Explorer 開3D模型
#include "glm.h"///(1)glm的外掛
GLMmodel *pmodel=NULL;///(2)指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_COLOR_BUFFER_BIT);///清畫面
if (!pmodel) {
pmodel = glmReadOBJ("data/porsche.obj");///(3)這段負責畫3D的模型
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel,GLM_SMOOTH|GLM_MATERIAL);
glutSwapBuffers();///畫畫面
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("WEEK07");
glutDisplayFunc(display);
glutMainLoop();
}
安裝
安裝 執行
jsyeh.org/3dcg10
data.zip--->桌面/data/一堆3D模型
=> 用3D Explorer 開3D模型
#include "glm.h"///(1)glm的外掛
GLMmodel *pmodel=NULL;///(2)指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_COLOR_BUFFER_BIT);///清畫面
if (!pmodel) {
pmodel = glmReadOBJ("data/porsche.obj");///(3)這段負責畫3D的模型
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel,GLM_SMOOTH|GLM_MATERIAL);
glutSwapBuffers();///畫畫面
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("WEEK07");
glutDisplayFunc(display);
glutMainLoop();
}
week07*小紅帽槓上大野狼
3D模型/轉OBJ檔/T-R-T
*moodle 下載3DExplorer
*下載http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ (source/data/win32/glut32.dll)
-
*開啟3DExplor
-
-尋找data
-
*打開Code Blocks
-建立GLUT Project (記得載 freeglut . 更改libglut32.a)
-抓取source.zip的程式碼 (glm.h(關鍵)/glm.c(關鍵)/transformation.c(範例)),放到上面所建立的Project中
-
-更改glm.c -> glm.cpp / transformation.c -> transformation.cpp
-
-把glm.h/glm.cpp/transformation.cpp放進專案內
-
-Add two files in Project (glm.cpp / transformation.cpp)
-
-在settings 的 compiler取消一個勾勾,然後把main.cpp清空(不能有兩個main())
-
-build -> rebuild (ctrl-F11),檔案裡會跑出bin和obj,把data丟到freeglut的bin裡面
-跑跑看
*自己寫程式
-#include "glm.h" ///要放在同一目錄下
-GLMmodel * pmodel=NULL;///指標
-從transformation中擷取得程式
-
-
-要把transformation.cpp的程式碼全部刪掉,因為同一個專案中不能有兩個main()函式
*顯示小車車
-
-#include "glm.h"///呼叫glm外掛
GLMmodel * pmodel=NULL;///指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
if (!pmodel) {
pmodel = glmReadOBJ("data/porsche.obj");///data要放在freeglut/bin的裡面
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
glutSwapBuffers();///畫出來
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("05160965");
glutDisplayFunc(display);
glutMainLoop();
}
*moodle 下載3DExplorer
*下載http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ (source/data/win32/glut32.dll)
-

*開啟3DExplor
-

-尋找data
-
*打開Code Blocks
-建立GLUT Project (記得載 freeglut . 更改libglut32.a)
-抓取source.zip的程式碼 (glm.h(關鍵)/glm.c(關鍵)/transformation.c(範例)),放到上面所建立的Project中
-

-更改glm.c -> glm.cpp / transformation.c -> transformation.cpp
-

-把glm.h/glm.cpp/transformation.cpp放進專案內
-

-Add two files in Project (glm.cpp / transformation.cpp)
-

-在settings 的 compiler取消一個勾勾,然後把main.cpp清空(不能有兩個main())
-

-build -> rebuild (ctrl-F11),檔案裡會跑出bin和obj,把data丟到freeglut的bin裡面
-跑跑看
*自己寫程式
-#include "glm.h" ///要放在同一目錄下
-GLMmodel * pmodel=NULL;///指標
-從transformation中擷取得程式
-

-

-要把transformation.cpp的程式碼全部刪掉,因為同一個專案中不能有兩個main()函式
*顯示小車車
-

-#include "glm.h"///呼叫glm外掛
GLMmodel * pmodel=NULL;///指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
if (!pmodel) {
pmodel = glmReadOBJ("data/porsche.obj");///data要放在freeglut/bin的裡面
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
glutSwapBuffers();///畫出來
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("05160965");
glutDisplayFunc(display);
glutMainLoop();
}
Week07_馬明
2018-04-09
Week07
(1)主題:3D模型
(2)轉檔,OBJ格式(v,vt,vnf)
(3)期中考題(10行OpenGL Code)
(4)小考T-R-T
(5)回家作業:骨架階層矩陣
TODO:Moodle下載3D Exploration探索/檔案總管
(1)安裝、執行
----------------------------------
TODO:下載jsyeh.org/3dcg10>>data.zip
(2)data.zip→桌面/data/一堆3D模型
=> 用 3D Exploration 開 3D模型(看)

------------------------------------
TODO:想自己讀入3D模型(EX.jsyeh.org/3dcg10的範例)
建GLUT專案week07_glm
下載jsyeh.org/3dcg10>>Source.zip
找出
(1)glm.h
(2)glm.c重新命名glm.cpp
(3)transformation.c重新命名transfarmation,cpp
上述3個程式放入桌面week07_glm資料夾
freeglut>>bin放入data/模型
lib的改libfreeglut.a複製貼上檔名改libglut32.a
-------------------------------------------
TODO:File-New-Project,GLUT
Add files放入glm.cpp,transfarmation,cpp
Setting-Compiler的勾勾清掉

main.cpp程式清空,因為另外.cpp都有main
清空後再rebuild然後build and run

--------------------------------------------------
TODO:自己打造 3D模型 程式
(1)把上節課transfarmation.cpp內容刪除
(2)main.cpp放程式
#include "glm.h"///1.外掛
GLMmodel * pmodel=NULL;//2.指標
void display()
{
glClear(.....)///3.畫模型
.
.
.
glutSwapBuffer()///畫出來
}

-----------------------------
Week07
(1)主題:3D模型
(2)轉檔,OBJ格式(v,vt,vnf)
(3)期中考題(10行OpenGL Code)
(4)小考T-R-T
(5)回家作業:骨架階層矩陣
TODO:Moodle下載3D Exploration探索/檔案總管
(1)安裝、執行
----------------------------------
TODO:下載jsyeh.org/3dcg10>>data.zip
(2)data.zip→桌面/data/一堆3D模型
=> 用 3D Exploration 開 3D模型(看)
------------------------------------
TODO:想自己讀入3D模型(EX.jsyeh.org/3dcg10的範例)
建GLUT專案week07_glm
下載jsyeh.org/3dcg10>>Source.zip
找出
(1)glm.h
(2)glm.c重新命名glm.cpp
(3)transformation.c重新命名transfarmation,cpp
上述3個程式放入桌面week07_glm資料夾
freeglut>>bin放入data/模型
lib的改libfreeglut.a複製貼上檔名改libglut32.a
-------------------------------------------
TODO:File-New-Project,GLUT
Add files放入glm.cpp,transfarmation,cpp
Setting-Compiler的勾勾清掉
main.cpp程式清空,因為另外.cpp都有main
清空後再rebuild然後build and run
--------------------------------------------------
TODO:自己打造 3D模型 程式
(1)把上節課transfarmation.cpp內容刪除
(2)main.cpp放程式
#include "glm.h"///1.外掛
GLMmodel * pmodel=NULL;//2.指標
void display()
{
glClear(.....)///3.畫模型
.
.
.
glutSwapBuffer()///畫出來
}
-----------------------------
Week07 來福的汪汪圖學週記
0409 week07
主題3D模型
轉檔 OBJ格式>>youtube上有小葉老師影片
https://www.youtube.com/watch?v=D4a7cNFF9kQ
期中考題
小考TRT
作業骨架 階層 矩陣
01>>
按照步驟做
去網站下載三個檔案
source data win32
把win32解壓縮
把data 跟 glut32.dll放到解出來的資料夾
02>>
自己寫程式出來
///新的東西
#include "glm.h" ///呼叫外掛
GLMmodel * pmodel = NULL;///做出指向指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清理畫面
///新的東西(複製)
if(!pmodel)
{
pmodel = glmReadOBJ("data/f-16.obj");///呼叫OR畫出模型(檔案名稱)
if(!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel,90.0);
}
glmDraw(pmodel,GLM_SMOOTH | GLM_MATERIAL);
glutSwapBuffers();///畫出畫面
}
int main(int argc, char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week07 3D讀取");
glutDisplayFunc(display);
glutMainLoop();
}
03>> 轉檔OBJ
主題3D模型
轉檔 OBJ格式>>youtube上有小葉老師影片
https://www.youtube.com/watch?v=D4a7cNFF9kQ
期中考題
小考TRT
作業骨架 階層 矩陣
01>>
按照步驟做
去網站下載三個檔案
source data win32
把win32解壓縮
把data 跟 glut32.dll放到解出來的資料夾
02>>
自己寫程式出來
///新的東西
#include "glm.h" ///呼叫外掛
GLMmodel * pmodel = NULL;///做出指向指標
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清理畫面
///新的東西(複製)
if(!pmodel)
{
pmodel = glmReadOBJ("data/f-16.obj");///呼叫OR畫出模型(檔案名稱)
if(!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel,90.0);
}
glmDraw(pmodel,GLM_SMOOTH | GLM_MATERIAL);
glutSwapBuffers();///畫出畫面
}
int main(int argc, char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week07 3D讀取");
glutDisplayFunc(display);
glutMainLoop();
}
03>> 轉檔OBJ
week07 記筆的我
下載3DExplorer

http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載 data.zip
glut32.dll
source.zip
windows.zip

以Exploring開啟data

開啟OpenGL



從source拉進glm和transformation並將檔名改成.cpp

將第一個勾取消掉

Rebuild


自己打


http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載 data.zip
glut32.dll
source.zip
windows.zip

以Exploring開啟data

開啟OpenGL



從source拉進glm和transformation並將檔名改成.cpp

將第一個勾取消掉

Rebuild


自己打

訂閱:
文章 (Atom)
































