2017年5月2日 星期二

Week11劉念慈的上課筆記

20170502電腦圖學

主題:
(1)組合出機器人
(2)可轉動的關節
(3)錄製動作
(4)回家作業:機器人
-------------------------------------------------------------------------------------------------------------

(1)
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行
Export Dialog裡 SampleAPP (才會有main函式) 

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
                           dolphins3  .obj/.mlt
(以此類推⬇)



myGLMsample範例拿來用
安裝freeglut在C:\Users\user\Desktop\freeglut


把程式改成畫兩隻海豚

程式碼:
增加
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();


沒有留言:

張貼留言