一。特定軸轉動
step1. 開啟Transformat.exe
到https://jsyeh.org/3dcg10/下載win32和data,解壓縮到桌面,把data拖移至剛剛下載好的windows\後開啟
💡人物旋轉方向軸可應用安培右手,右手拇指為旋轉軸方向, 四指為旋轉方向
二。轉速不同的茶壺
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. 執行出一個紅色公轉茶壺和綠色自轉茶壺
三。轉動軸心
step2. 按下ToDraw畫出頭、手、身體,按程式碼把關節移到正中央
💡space: 控制angle,myDrawObject()要放在TRT下面才會轉動,按glTranslatef()可以移動
step4. 在英文輸入法案下space就會開始轉動




沒有留言:
張貼留言