2018年4月13日 星期五

Week 07 宋侑恩

Week 07 - Part 1 - 使用Light Material來看3D模型的打光

到 http://jsyeh.org/3dcg10 下載 data.zip、windows.zip、glut32.dll




將 data.zip 和 windows.zip 解壓縮



將解完壓縮的data資料夾和glut32.dull複製並貼到剛剛解完壓縮的wondows資料夾裡



打開 Light Material.exe



在左上角按右鍵,可以更換不同的模型


在左下角按右鍵,可以更換不同的Materials



右邊紅色框框內為打光的程式碼,我們可以用滑鼠將數值調整去看
(1) GLfloat light_pos[]={左/右,上/下,前/後,平行光/點光源} ///0為平行光,1為點光源
(2) 上面幾行程式碼是物體打什麼光
(3) 下面幾行程式碼是物體本身的顏色



Week 07 - Part 2 - 作業的範例

下載在網頁上下載的source.zip並解壓縮,打開解完壓縮的資料夾複製glm.c和glm.h兩個檔案


複製到今天建立的專案資料夾


將複製到專案資料夾的glm.c重新命名



將副檔名改為cpp,檔案名稱變成glm.cpp



回到codeblocks再專案裡面新增剛剛的glm.cpp檔案


在一開始加上兩行程式碼
 #incldue "glm.h"///外掛,source.zip裡面
GLMmodel * pmodel = NULL;///宣告指標


對其中一個模型動手腳來看看,執行結果,右下圖藍色框框可以看見圖形被我們改成茶壺

 glPushMatrix();

        glTranslated(0,1.2,-6);
        glRotated(60,1,0,0);
        glRotated(a,0,0,1);
        glutSolidTeapot(1);///改畫一個大小為1的茶壺
glPopMatrix();


接著打開用NotePad++打開source資料夾裡面的Transformation


利用搜尋功能,搜尋"glm"的第三個,並將紅色框框內的程式碼複製


回到CodeBlocks,把剛剛複製的程式碼,貼上,由下圖紅色框框可見,茶壺又被我們改成一台車子

   glPushMatrix();
        glTranslated(0,1.2,-6);
        glRotated(60,1,0,0);
        glRotated(a,0,0,1);
        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);

glPopMatrix();



接著將不需要的模型刪掉,只留下我們要的車子,但卻發現,變成一台紅色平面的車子



對程式碼稍微做些修改,就可以看到一台只有正面的車子



接著我們在對程式碼稍微修改一下,
在右邊再增加一台車子(等等可以做旋轉),程式碼的部分在下圖紅色框框內可見



最後再加上motion的部分,讓右邊的車子可以向手臂一樣移動,就完成了



沒有留言:

張貼留言