20170502電腦圖學
主題:
(1)組合出機器人
(2)可轉動的關節
(3)錄製動作
(4)回家作業:機器人
(1)組合出機器人
(2)可轉動的關節
(3)錄製動作
(4)回家作業:機器人
-------------------------------------------------------------------------------------------------------------
google:3D exploration(3D的檔案總管)
安裝1.81免費試用版(4.5MB)
jsyeh.org/3dcg10有data.zip(有3D模型)
解壓縮在桌面
用3D exploration 去看模型(soccerball)
匯出(save as)cpp(OpenGL)程式
soccerball.cpp(用Nopepad++觀察)3447行
soccerball.cpp(用Nopepad++觀察)3447行
Codeblocks,File-New-Project,OpenGL專案
偷天換日 Remove(移除)main.c
Add(新增)soccerball.cpp
F9 Build&Run 有兩行錯誤刪掉
(2) 結合兩隻海豚
用3D exploration來拆模型
save as: Wavefront OBJ檔
可調visible區域才存
Dolphins.obj⇾dolphins1 .obj/.mlt
dolphins2 .obj/.mlt

程式碼:
增加
if (!pmodel2) {
pmodel2 = glmReadOBJ("data/dolphins2.obj");
if (!pmodel2) exit(0);
glmUnitize(pmodel2);
glmFacetNormals(pmodel2);
glmVertexNormals(pmodel2, 90.0);
}
glmDraw(pmodel2, GLM_SMOOTH | GLM_MATERIAL);
小心!!!!!!!
data目錄裡要有dolphins1 .obj/.mlt
dolphins2 .obj/.mlt
dolphins3 .obj/.mlt

(3)改變3隻海豚的位置

程式碼:
glPushMatrix();///body
glTranslatef(0,0,0);
glRotatef(90,0,1,0);
glScalef(0.8,0.8,0.8);
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();
glPushMatrix();///left hand
glTranslatef(-0.5,0,0);
glScalef(0.4,0.4,0.4);
glmDraw(pmodel2, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();
glPushMatrix();///right hand
glTranslatef(0.5,0,0);
glScalef(0.4,0.4,0.4);
glmDraw(pmodel3, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();
glPopMatrix();

(3)改變3隻海豚的位置

程式碼:
glPushMatrix();///body
glTranslatef(0,0,0);
glRotatef(90,0,1,0);
glScalef(0.8,0.8,0.8);
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();
glPushMatrix();///left hand
glTranslatef(-0.5,0,0);
glScalef(0.4,0.4,0.4);
glmDraw(pmodel2, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();
glPushMatrix();///right hand
glTranslatef(0.5,0,0);
glScalef(0.4,0.4,0.4);
glmDraw(pmodel3, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();
glPopMatrix();








沒有留言:
張貼留言