顯示具有 week08 標籤的文章。 顯示所有文章
顯示具有 week08 標籤的文章。 顯示所有文章

2018年4月30日 星期一

05160461_廖柏宇 第一次上課筆記在blog Week10(貼圖)

step1:
下載檔案位置:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/moodle
下載:datawin32glut32.dllfreeglut-MinGW-3.0.0-1.mp.zip
這次開啟Texture.exe

分別改
        (1)glColor4f(....)
        (2)glVertex2f(..)
        (3)glTexCoord2f(.....)
看效果
step2:
下載檔案位置:moodle
下載OpenCV-2.1.0-win32-vs2008.exe
安裝到這一步時,要選第二個選項Add OpenCV to the system PATH for all users
(其他都按下一步和我同意就行)


PS:如果安裝時有開啟codeblockes,需要重起在他安裝完的時候
前置作業修改codeblocks設定
1.在專案上按右鍵(Build options..)

2.設定好函式庫位置Search directores→complier→Add(剛剛安裝opencv的那裏)
3.設定好lib    Search directores→Linker→Add(位置差不多)

4.連結lib  Linker settings→Add

總結要放的三個設定檔案位置




然後跟前幾周一樣開啟GLUT專案來做修改使用

分別加入這幾行程式碼


#include <opencv/highgui.h>

    IplImage * img = cvLoadImage("image.jpg");
    cvNamedWindow("week10opencv");
    cvShowImage("week10opencv", img);
    cvWaitKey(0);
程式碼解說

要匯入的圖檔一樣要放入freeglut\bin的資料夾裡面

step3:
下載老師做好的地球程式:moodle
Q1:遺失dll檔案


Ans1:將dll檔案放到檔案位置的資料夾裡
 
Q2:開起由於指標當掉



Ans2:修改myEarth.cbp程式碼內容將檔案位置改成點並放入一個名為image.jpg的圖檔


2018年4月16日 星期一

Week08_葉子的筆記

電腦圖學

(1) 主題:打光
(2)期中模擬考
(3)T-R-T模擬考
(4)回家作業
(5)Recap (最少一個關節)


參考3D模型-Step 1


TODO: 到 http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ 下載

windows.zip /  data.zip / glut32.dll

source.zip 等一下要用 glm.h / glm.c -> glm.cpp

再參考 lightMaterial.c  (詳見請見圖一、二、三)


(圖一)


(圖二)




(圖三)

認識什麼是Lighting-Step 2

可以觀察到Lighting有幾種特性
1. material compostion of object
2. light's color and position
3. global lighting parameters
       ambient light
       two sided light
4. availble in both color index and RGBA mode
(詳見請見圖四)


(圖四)

動手寫一個3D模型程式

1. 首先先開啟codeblocks新增一個glut專案
(詳見圖五)

(圖五)


(圖六)


(圖七)


(圖八)



(圖九)



(圖十)



(圖十一)



(圖十二)


(圖十三)


(圖十四)



(圖十五)



(圖十六)



(圖十七)




WEEK08 QAQ筆記

WEEK08:打光

任務一:
去老師的網頁載上課所需的東西,將需要的資料放進解壓縮好的windows資料夾

1.打開Light Material.exe


2.調整各種數值以移動光源,也可換模型
   對著上圖案右鍵可以改變圖形
   對著下圖案右鍵可以改變顏色



任務二:開專案實作

1.在transformation.cpp裡搜尋 "glm"


2.把車子的模型讀進來


3.之前教過的TRT,將三台車連接起來,並且可以轉動

Week 08 安淇的課堂筆記

1.

到http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載 source.zip   data.zip   windows.zip  glut32.dll
把windows解壓縮
把glut丟到windows

開啟Light Material.exe



2.
將data丟到freeglut的bin資料夾
把source裡的三項(如下圖)丟到week08_light資料夾



匯入車子的模型
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);




3.
打亮車子













4.
讓車子可以旋轉















5.


Week 08 陳泓丞第八周學習內容

NO.01

把前幾周的模型步驟重做一遍,讓codeblocks的專案如下



NO.02

確定可以執行3D模型之後,把main.cpp裡的程式碼刪到只剩下列程式碼

#include "glm.h"
GLMmodel * pmodel =NULL;
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    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();
    glutSwapBuffers();
}

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };
///此處數字原本是5,但會因燈光位置不對而造成圖片昏暗,改成-5
const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);

    glClearColor(1,1,1,1);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);
    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
    glutMainLoop();
    return EXIT_SUCCESS;
}



NO.03

#include "glm.h"
GLMmodel * pmodel =NULL;
float angle=0;
void motion(int x, int y)
{
    angle = x;
    glutPostRedisplay();
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(angle,0,1,0);
    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();
    glutSwapBuffers();
}

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };

const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };


int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);

    glutMotionFunc(motion);

    glClearColor(1,1,1,1);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);
    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
    glutMainLoop();
    return EXIT_SUCCESS;
}

執行結果如下






Week_08 +0筆記

打開GLUT

讓模型旋轉(改變成茶壺)
glPushMatrix();
        glTranslated(-2.4,1.2,-6);
        glRotated(60,1,0,0);
        glRotated(a,0,0,1);
        glutSolidTeapot(1);
    glPopMatrix();

打光 Light Material.exe
CodeBlock. File - New Project - GLUT
3D Model . (glm.h(glm.c改glm.cpp)
放到 :
     (A)#include "glm.h"
     (B)GLMmodel * pmodel = NULL;
     (C)畫模型


陣列 ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
                   ...[ ] = {...};
勾勾要拿掉!

main()打光設定



#include "glm.h"
GLMmodel * pmodel=NULL;
float angle=0;

void motion(int x,int y)
{
    angle = x;
    glutPostRedisplay();
}

static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glRotatef(angle,0,1,0);
    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);
        ///glutSolidCone(1,1,slices,stacks);
    glPopMatrix();
    glutSwapBuffers();
}

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };

const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glClearColor(1,1,1,1);
    ///glEnable(GL_CULL_FACE);
    ///glCullFace(GL_BACK);

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);

    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);

    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);

    glutMainLoop();

}

畫簡


#include "glm.h"
GLMmodel * pmodel=NULL;
float angle=0;
void motion(int x,int y)
{
    angle = x;
    glutPostRedisplay();
}

static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();

        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);///身體
            ///glutSolidCone(1,1,slices,stacks);
        glPushMatrix();
            glTranslatef(0.4,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.4,0,0);
            glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);///右手臂
        glPopMatrix();

        glPushMatrix();
            glTranslatef(-0.4,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(-0.4,0,0);
            glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);///左手臂
        glPopMatrix();

    glutSwapBuffers();
}

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };

const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glClearColor(1,1,1,1);
    ///glEnable(GL_CULL_FACE);
    ///glCullFace(GL_BACK);

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);

    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);

    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);

    glutMainLoop();

}