2024年5月9日 星期四

week11(補)

0.1 下載freeglut

0.2 安裝OpenCV

1.1 開新專案week11-1_TRT_again

1.2 複製week10-1

1.3 

    float angle=0;

    void myArm(){

        glPushMatrix();

            glColor3f(0, 1, 0); ///綠色的手臂

            glScalef(1.5, 0.5, 0.5); ///寬變1.5,高度變0.5倍

            glutWireCube( 0.3 ); ///方塊

        glPopMatrix();

    }

    void display(){

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glPushMatrix();

            ///glTranslatef(-0.6, +0.3, 0);

            myBody();

        glPopMatrix();

        glPushMatrix();

            glTranslatef(0.3, 0.3, 0); ///掛到肩上

            glRotatef(angle++, 0, 0, 1); ///轉動

            glTranslatef(0.45/2, 0, 0); ///把旋轉中心,放正中心

            myArm();

        glPopMatrix();

        glutSwapBuffers();

    }


    int main(int argc, char *argv[]){

        glutInit(&argc, argv);

        glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);


        glutCreateWindow("GLUT Shapes");

        glutIdleFunc(display);

        glutDisplayFunc(display);


        glutMainLoop();

    }

2.1 開新專案weel11-2_obj_gundam_opencv_texture_lighting

2.2 專案按右鍵,add file ,加入glm.cpp

2.3 專案按右鍵,properties,build targets,execution working dir裡改成小數點

2.4 用git clone複製整個week09-1專案(整個資料夾)﹑並改檔名為week11-2_obj_gundam_opancv_texture_lighting

2.5 用codeblocks打開,project-properties改title

2.6 MAYA,File,Import,Gundam.obj

2.7 只留左右手臂匯出hand1.obj、hand2.obj

2.8 回codeblocks改模型檔名

3.1 複製整個week11-2資料夾,改week11-3_obj_gundam_hand1_hand2,裡面的.cbp檔也改成這個檔名

3.2 複製手臂們的 .obj、.mtl 模型檔到 week11-3 的目錄

3.3 codeblocks開啟week11-3的.cbp檔

3.4 修改程式

    GLMmodel * pmodel = NULL; ///加的程式,有顆指標,指到模型檔

    GLMmodel * hand1 = NULL;

    GLMmodel * hand2 = NULL;

    float angle=0;

    void drawmodel(void){

        if(!pmodel){

            pmodel = glmReadOBJ("Gundam.obj");

            if(!pmodel) exit(0);

            glmUnitize(pmodel);

            glmFacetNormals(pmodel);

            glmVertexNormals(pmodel, 90.0);

        }

        glmDraw(pmodel, GLM_SMOOTH | GLM_TEXTURE);

    }


    void drawhand1(void){

        if(!hand1){

            hand1 = glmReadOBJ("hand1.obj");

            if(!hand1) exit(0);

            glmUnitize(hand1);

            glmFacetNormals(hand1);

            glmVertexNormals(hand1, 90.0);

        }

        glmDraw(hand1, GLM_SMOOTH | GLM_TEXTURE);

    }


    void drawhand2(void){

        if(!hand2){

            hand2 = glmReadOBJ("hand2.obj");

            if(!hand2) exit(0);

            glmUnitize(hand2);

            glmFacetNormals(hand2);

            glmVertexNormals(hand2, 90.0);

        }

        glmDraw(hand2, GLM_SMOOTH | GLM_TEXTURE);

    }

    void display(){

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glutSolidSphere( 0.1, 30, 30);

        glPushMatrix();

        drawhand1(); ///glutSolidTeapot( 0.3 );

        glPopMatrix();

        glutSwapBuffers();

    }

3.5 加上TRT

    void display(){

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glutSolidSphere( 0.1, 30, 30);

        glPushMatrix();

            //glRotatef(angle++, 0, 1, 0);

            glTranslatef(-0.3, 0.3, 0); ///掛到肩上

            //glRotatef(angle++, 0, 0, 1); ///轉動

            glTranslatef(-0.45/2, 0, 0); ///把旋轉中心,放正中心

            drawhand1(); ///glutSolidTeapot( 0.3 );

        glPopMatrix();

        glPushMatrix();

            //glRotatef(angle++, 0, 1, 0);

            glTranslatef(0.3, 0.3, 0); ///掛到肩上

            //glRotatef(angle++, 0, 0, 1); ///轉動

            glTranslatef(0.45/2, 0, 0); ///把旋轉中心,放正中心

            drawhand2(); ///glutSolidTeapot( 0.3 );

        glPopMatrix();

        glutSwapBuffers();

    }

沒有留言:

張貼留言