2020年5月19日 星期二

05161022week13-筆記

1設定 File associations , 讓專案能用Code Blocks 開啟 , 更改附檔名














2. 設定執行目錄、include/lib目錄、link lib檔

加入glut.cpp檔, 修改main程式, 留下打光和外框



**外框函式**

**打光**

**讀入立體模型**

**外框函式**



設定執行目錄
























3. 讀入彩色3D立體模型

















if(pmodelA==NULL){

        pmodelA=glmReadOBJ("Al.obj");  //執行目錄裡, 有個 Al.obj 檔+ Al.mtl檔 

        glmUnitize(pmodelA);  //設成單位大小

        glmFacetNormals(pmodelA);  //重算(面)法向量

        glmVertexNormals(pmodelA, 90);  //重算(點)法向量
    }  //讀完obj, 且設好


4.設定手臂關節



//身體, Al.obj

//手臂, porsche.obj





將身體存成一個函式在display裡呼叫執行




glRotatef(180, 0 ,1 ,0);  //對Y轉180度,向正面






畫手臂的函式





glRotatef(90, 0 ,1 ,0);  //對Y轉90度
glScalef(0.5, 0.5, 0.5);  //改大小





display函式



glTranslatef(0,0,0);  //第3個T
glRotatef(angle, 0, 0,1); //第2個R
glTranslatef(0.25, 0, 0); //第1個T 設手臂移動點



 5.用滑鼠控制旋轉

**滑鼠和動作的函式**
















!!!!!!<關節控制>!!!!!!!

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ///glutSolidSphere(0.1, 30,30);  //原點、圓心
    drawBody();
    glPushMatrix();  //右手臂
        glTranslatef(0.5, 0.4, 0);  //第3個T
        glRotatef(angle, 001);  //第2個R
        glTranslatef(0.3, 0, 0);  //第1個T
        drawArm();  //右上手臂
        glPushMatrix();
            glTranslatef(0.25, 0, 0);  //第3個T
            glRotatef(angle, 0,0,1);///第2個R
            glTranslatef(0.3, 0, 0);///第1個T
            drawArm();///右下手臂
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左手臂
        glTranslatef(-0.5, 0.4, 0);///第3個T
        glRotatef(angle, 0,0,1);///第2個R
        glTranslatef(-0.3, 0, 0);///第1個T
        drawArm();///左上手臂
        glPushMatrix();
            glTranslatef(-0.25, 0, 0);///第3個T
            glRotatef(angle, 0,0,1);///第2個R
            glTranslatef(-0.3, 0, 0);///第1個T
            drawArm();///左下手臂
        glPopMatrix();
    glPopMatrix();


    glutSwapBuffers();
}






















































沒有留言:

張貼留言