2023年3月16日 星期四

mian𓃹 Week05

一。特定軸轉動 


step1開啟Transformat.exe

https://jsyeh.org/3dcg10/下載win32和data,解壓縮到桌面,把data拖移至剛剛下載好的windows\後開啟





step2. 切換不同行程式碼差別在於是旋轉還是轉動,轉動方式也會有所不同

💡人物旋轉方向軸可應用安培右手,右手拇指為旋轉軸方向, 四指為旋轉方向

二。轉速不同的茶壺 


step1開新GLUT專案命名為 week05-1_TRT_translate

同week4-1程式碼,做出一個自轉茶壺

#include <GL/glut.h>

float angle=0;

void display()
{
     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
       
     glPushMatrix();
        glTranslatef(0.8,0,0);
        glRotatef(angle*1.5,0,1,0);
        glutSolidTeapot(0.3);

    glPopMatrix();
    glutSwapBuffers();

    angle++;
}

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

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

step2. 增加幾行程式碼作出第二個會會公轉的茶壺

加上紅色程式碼作出第二個紅色茶壺

#include <GL/glut.h>

float angle=0;

void display()
{
     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
       
    glColor3f(1,0,0);//紅色
    glPushMatrix();
        glRotatef(angle,0,0,1);
        glTranslatef(0.8,0,0);
        glutSolidTeapot(0.3);

    glPopMatrix();

     glColor3f(0,1,0);//綠色
     glPushMatrix();
        glTranslatef(0.8,0,0);
        glRotatef(angle*1.5,0,1,0);
        glutSolidTeapot(0.3);

    glPopMatrix();
    glutSwapBuffers();

    angle++;
}

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

    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week05");

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();

}



step3. 執行出一個紅色公轉茶壺和綠色自轉茶壺

三。轉動軸心 

step1. 打開小葉老師的OpenGL TRT程式

step2按下ToDraw畫出頭、手、身體,按程式碼把關節移到正中央

💡space: 控制angle,myDrawObject()要放在TRT下面才會轉動,按glTranslatef()可以移動

step3. 按一下Translate,將手臂移動肩膀上

step4. 在英文輸入法案下space就會開始轉動

沒有留言:

張貼留言