顯示具有 04160754_陶軒宇 標籤的文章。 顯示所有文章
顯示具有 04160754_陶軒宇 標籤的文章。 顯示所有文章

2017年5月22日 星期一

week14 陶軒宇課堂筆記


課堂作業一

上moodle把作業的機器人下載下來


課堂作業二

計時器


課堂作業三

轉手臂


程式碼

#include <string.h>
#include <stdlib.h>
#include <GL/glut.h>
#include "glm.h"

GLMmodel* pmodel1 = NULL;
GLMmodel* pmodel2 = NULL;
GLMmodel* pmodel3 = NULL;
GLMmodel* pmodel4 = NULL;
GLMmodel* pmodel5 = NULL;
GLMmodel* pmodel6 = NULL;
GLMmodel* pmodel7 = NULL;
GLMmodel* pmodel8 = NULL;
GLMmodel* pmodel9 = NULL;
GLMmodel* pmode20 = NULL;
/*此為宣告模型變數*/


float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();

    if (!pmodel1)
    {

        pmodel1 = glmReadOBJ("data/rh1.obj");
        if (!pmodel1) exit(0);
        glmUnitize(pmodel1);
        glmFacetNormals(pmodel1);
        glmVertexNormals(pmodel1, 90.0);
    }
    if (!pmodel2)
    {
        pmodel2 = glmReadOBJ("data/body.obj");
        if (!pmodel2) exit(0);
        glmUnitize(pmodel2);
        glmFacetNormals(pmodel2);
        glmVertexNormals(pmodel2, 90.0);
    }
    if (!pmodel3)
    {
        pmodel3 = glmReadOBJ("data/lh1.obj");
        if (!pmodel3) exit(0);
        glmUnitize(pmodel3);
        glmFacetNormals(pmodel3);
        glmVertexNormals(pmodel3, 90.0);
    }
    if (!pmodel4)
    {
        pmodel4 = glmReadOBJ("data/rh2.obj");
        if (!pmodel4) exit(0);
        glmUnitize(pmodel4);
        glmFacetNormals(pmodel4);
        glmVertexNormals(pmodel4, 90.0);
        }
        if (!pmodel5)
    {
        pmodel5 = glmReadOBJ("data/rh2.obj");
        if (!pmodel5) exit(0);
        glmUnitize(pmodel5);
        glmFacetNormals(pmodel5);
        glmVertexNormals(pmodel5, 90.0);
        }

         if (!pmodel6)
    {
        pmodel6 = glmReadOBJ("data/head.obj");
        if (!pmodel6) exit(0);
        glmUnitize(pmodel6);
        glmFacetNormals(pmodel6);
        glmVertexNormals(pmodel6, 90.0);
    }
    if (!pmodel7)
    {
        pmodel7 = glmReadOBJ("data/rl1.obj");
        if (!pmodel7) exit(0);
        glmUnitize(pmodel7);
        glmFacetNormals(pmodel7);
        glmVertexNormals(pmodel7, 90.0);
    }
    if (!pmodel8)
    {
        pmodel8 = glmReadOBJ("data/ll1.obj");
        if (!pmodel8) exit(0);
        glmUnitize(pmodel8);
        glmFacetNormals(pmodel8);
        glmVertexNormals(pmodel8, 90.0);
    }
    if (!pmodel9)
    {
        pmodel9 = glmReadOBJ("data/rl2.obj");
        if (!pmodel9) exit(0);
        glmUnitize(pmodel9);
        glmFacetNormals(pmodel9);
        glmVertexNormals(pmodel9, 90.0);
    }

    if (!pmode20)
    {
        pmode20 = glmReadOBJ("data/ll2.obj");
        if (!pmode20) exit(0);
        glmUnitize(pmode20);
        glmFacetNormals(pmode20);
        glmVertexNormals(pmode20, 90.0);
    }
    /*此為匯入模型檔的動作,medel變數可做修改*/


        glPushMatrix();
        glTranslatef(0.21, 0.3, 0);
            glRotatef(-angle, 0,0,1);
            glTranslatef(-0.21, -0.3, 0);
            glTranslatef(-0.3,0.1,0);
            glScalef(0.2,0.2,0.2);
            glRotatef(240,0,0,1);
            glmDraw(pmodel1, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0,0,0);
            glScalef(0.4,0.4,0.4);
            glRotatef(90,0,0,1);
            glRotatef(180,0,1,0);
            glmDraw(pmodel2, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0.21, 0.3, 0);
            glRotatef(angle, 0,0,1);
            glTranslatef(-0.21, -0.3, 0);
            glTranslatef(0.3,0.2,0);
            glScalef(0.2,0.2,0.2);
            glRotatef(-40,0,0,1);
            glmDraw(pmodel3, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
        glTranslatef(0.21, 0.3, 0);
            glRotatef(-angle, 0,0,1);
            glTranslatef(-0.21, -0.37, 0);
            glTranslatef(-0.7,0.1,0);
            glScalef(0.25,0.25,0.25);
            glRotatef(225,0,0,1);
            glmDraw(pmodel4, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();


        glPushMatrix();
        glTranslatef(0.21, 0.3, 0);
            glRotatef(angle, 0,0,1);
            glTranslatef(-0.21, -0.3, 0);
            glTranslatef(0.7,0.1,0);
            glScalef(0.25,0.25,0.25);
            glRotatef(225,0,0,1);
            glmDraw(pmodel5, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0,0.7,0);
            glScalef(0.4,0.4,0.4);
            glRotatef(0,0,0,1);
            glRotatef(180,0,1,0);
            glmDraw(pmodel6, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();



        glPushMatrix();
            glTranslatef(-0.25,-0.5,0);
            glScalef(0.25,0.25,0.25);
            glRotatef(0,0,0,1);
            glmDraw(pmodel7, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0.25,-0.5,0);
            glScalef(0.25,0.25,0.25);
            glRotatef(0,0,0,1);
            glmDraw(pmodel8, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0.25,-0.7,0);
            glScalef(0.25,0.25,0.25);
            glRotatef(0,0,0,1);
            glmDraw(pmodel9, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(-0.25,-0.7,0);
            glScalef(0.25,0.25,0.25);
            glRotatef(0,0,0,1);
            glmDraw(pmode20, GLM_SMOOTH | GLM_MATERIAL);
        glPopMatrix();
    /*此為對匯入模型檔作變形並顯示在視窗介面的動作*/
    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 };
#include <stdio.h>
void timer(int t)
{
    glutTimerFunc(100, timer, t+1);
    angle++;
    printf("哈哈哈哈哈哈哈  ");
    glutPostRedisplay();

}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGB);
    glutCreateWindow("多 拉k 夢");

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutTimerFunc(0, timer, 0);

    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();
}


2017年5月15日 星期一

week 13 陶軒宇課堂筆記


課堂作業一:

T-R-T觀念小考

glPushMatrix();

                                 glTranslatef(x,y,z);///移動到正確位置
                                                            glRotatef(angle,x,y,z);///移到中心點後開始對旋轉軸做旋轉
                                                      glTranslatef(x,y,z);///讓手臂負方向移動到中心點

drawArm();

glPopMatrix();

課堂作業二:

下載opencv注意紅框選項


開啟專案


修改下列選項




成功開啟圖檔


課堂作業三

做地球

新增glut




貼上程式碼



2017年5月8日 星期一

week12 陶軒宇課堂筆記



課堂作業01

jsyeh.org/3dcg10下載紅框三資料 


放到同一資料夾


嘗試調lookat數值


運行茶壺程式加上視角程式碼


加上perspective程式修改數值


嘗試修改perspective調整視角


注意紅框perspective修改後不會破圖


課堂作業三

作會動的機器人







2017年5月1日 星期一

week11 陶軒宇 課堂作業


課堂作業一

google搜尋:3D exploration 1.81進入下圖網頁下載


去 jsyeh.org/3dcg10 下載[data]有3d模型可用並用3d exploration開啟





之後另存cpp檔,操作如下圖



接著去codeblock開啟

先去codeblocks開啟opengl檔案


remove main.cpp



將soccer.cpp替代



執行程式跑出變大變小的足球



課堂作業2

分割做出兩隻海豚
























2017年4月24日 星期一

week10 陶軒宇 課堂筆記

課堂作業01

玩有聲音的射擊遊戲

1,google NeHe Lesson 32

2.點第二個圖,下載最下面的:Visual C++

3.解壓縮到桌面開lesson30.exe玩遊戲


課堂作業02

嘗試使用作出聲音的程式

1.開啟codeblock使用freeglut專案


2.注意加入聲音的程式


課堂作業03

撰寫加入音樂程式碼載入bin資料結中的wav音樂檔



課堂作業04

載入mp3音樂檔

1.CMP3_CMI記得放入freeglut的資料夾中





2017年4月17日 星期一

week07 陶軒宇 課堂作業

作業一:

到jsyeh.org/3dcg10下載
1.source.zip
2.windows.zip
3.data.zip
4.glut32.dll


(1)開啟soccerball.obj.mtl

(2)右鍵 notepad++




作業二:
製作,匯出3d obj檔

(1)google: obj mtl youtube可找到maya匯出obj的方法

開啟maya隨便做個圖形


File-Export All


檔案類型選擇OBJexport


作業三:

開啟老師的保時捷範例




2017年4月10日 星期一

week06 陶軒宇 課堂筆記



作業一

複習期中考和測驗




作業二:

畫出茶壺做打光測驗:

1.開啟glut專案


2.刪除不必要程式碼並畫出茶壺


3.更改打光數值可畫出不同茶壺


作業三

1.做出兩個茶壺,一個會轉,一個不會



作業四

試著做不同圖形

1.方形

glutSolidCube(大小):


2.筒狀

glutSolidCone(底r,高h,slice柳丁切,stack堆疊);


3.圓

glutSolidSphere(r,slice,stack);