2017年5月2日 星期二

WEEK11_劉


 (1) 組合出機器人

(2) 可轉動的關節

(3) 錄制動作

(4) 回家作業 : 機器人

----- ------ ------ ------ ------- ------ -------

課堂作業一 : 3D Exploration

搜尋3D Exploration

安裝檔案
 
 
開啟檔案
  • jsyeh.org/3dcg10  -> data.zip解壓縮3D模型

 
  • 用3D Exploration 去看模型 EX: soccerball

  • 匯出CPP (OpenGL) 程式 soccerball.cpp

 
匯出.cpp
 
 
         Export Dialog裡 SampleAPP (才會有main( )函式)

Notepad++觀察

  • CodeBlocks : File-New-Project . OpenGL專案




 
 開啟OpenGL專案
 
偷天換日Remove移除main.c

把soccerball.cpp 複製到專案中


Add新增soccerball.cpp

選擇開啟soccerball.cpp檔
 

soccerball.cpp檔

F9 Build & Run 有2行錯誤.刪掉

 會跳動如心臟的足球
 
完成圖檔
 
 
 

課堂作業二: 用3D Exploration 來拆模型

 Save As : Wavefront OBJ檔 可調visible區域才存 Dolphins.obj --  Dolphins1.obj  .mlt
                                                                                                              Dolphins2.obj  .mlt
                                                                                                              Dolphins3.obj  .mlt
 
  •  三隻海豚分別匯出檔案:
 


選擇obj檔 和Visble
三個勾勾到要勾
 

把個別海豚模型的mlt .obj 檔案複製到myGLMsample-data
 
 
 
  • myGLMsample範例拿來用

          安裝freglut在C:\user\user\Desktop\freeglut\lib\include\bin

 
把程式改成畫2隻海豚 : 
 
(黃線為有增加或變更的程式碼)
    ↓ ↓ ↓ 
GLMmodel* pmodel = NULL;
GLMmodel* pmodel2 = NULL;
GLMmodel* pmodel3 = NULL;

float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        angle++;
        glRotatef(angle, 0,1,0);
        if (!pmodel) {
        pmodel = glmReadOBJ("data/dolphins1.obj");
        if (!pmodel) exit(0);
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel, 90.0);
        }
        glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
        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);
    glPopMatrix();
    glutSwapBuffers();
}
 
 完成圖                 

 

  • 更改模型的大小 、方向、位置

    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();
             glTranslatef(-0.5,0,0);
             glScalef(0.4,0.4,0.4);
             glmDraw(pmodel2, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix(); 
 
        glPushMatrix();
             glTranslatef(0.5,0,0);
             glScalef(0.4,0.4,0.4);
             glmDraw(pmodel3, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();
 
完成圖
 
  • 可下載3D模型

          免費3D Model  ex: Turbosquid  https://www.turbosquid.com/Search/3D-Models/free

 
下載模型需要註冊帳號

















沒有留言:

張貼留言