2023年5月17日 星期三

ziiiiitg-Week14

Week14

Timer

新增一個GLUT專案,名稱更為week14-1_Timer

打上程式碼

#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 0, 0, 1);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void timer(int t)
{
    glutTimerFunc(500, timer, t+1);
    angle += 90;
    glutPostRedisplay();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week14");

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

    glutMainLoop();
}

執行後發現茶壺會一直照著時間旋轉且每次增加90度






新增一個GLUT專案,名稱更為week14-2_Timer_play

用week14-1的程式碼 加上鍵盤的函式

執行後按下鍵盤空白鍵 茶壺就會開始旋轉





內插

打開Excel打上表格 ( 等等程式會用到 )


新增一個GLUT專案,名稱更為week14-3_alpha_interpolation

用week14-2的程式碼 加上滑鼠和motion函式

執行後按下滑鼠可移動茶壺角度 放開則停止 按下空白鍵可播放動畫





切換關節

打開上週的Final_project 把show陣列0改成1 ( 全部顯示 )

把上週的陣列改成ID 從按數字鍵出現變全部顯示





把底下的Display函式改成按數字鍵相對應部位設定成紅色

沒有按的設定成白色





把show陣列改成只有上手臂顯示出來





畫一個小茶壺當圓心去找到上手臂的關節點





執行後用滑鼠移動找到上手臂關節點座標

從小黑裡複製下來貼進程式碼裡面 ( TRT )




先給原來的 讓他可以旋轉 之後要讓他正負相反 ( 不然他會反過來 )




下手臂也用相同的方法 

用一個矩陣在剛剛上手臂的矩陣當中放下手臂

記得在移動尋找關節點的時候要把上手臂的旋轉註解掉 不然會很難移動

執行後後兩個手臂就都可以自由轉動了

















































































沒有留言:

張貼留言