2023年3月9日 星期四

打是情 罵是23 week 04

 step01-1

到網址https://jsyeh.org/3dcg10/ 下載data 及 win32








把data資料夾移到windows資料夾,之後開啟Transformation.exe









step 01-2  打開模型學習旋轉的方向

使用右手來理解轉動的方向,大拇指是轉動軸,其他四指是轉動的方向








先把glut下載下來









先去複製week03的程式碼 執行會跑出茶壺的圖案








之後進行修改

#include <GL/glut.h>

float angle = 

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle, 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("Week03");

glutDisplayFunc(display);

glutIdleFunc(display);

glutMainLoop();

}


跑出旋轉的茶壺











step 02-1 增加茶壺光影的變化








新增:(複製貼上就好)

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };

const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };

const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };

const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };


const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };

const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };

const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };

const GLfloat high_shininess[] = { 100.0f };


void myLight()

-------------------------------------------------------------------------

  glEnable(GL_DEPTH_TEST);

    glDepthFunc(GL_LESS);

    glEnable(GL_LIGHT0);

    glEnable(GL_NORMALIZE);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);


    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);

    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);

    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);

    glLightfv(GL_LIGHT0, GL_POSITION, light_position);


    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);

    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);

    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);

    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);


STEP 03-1 交換swaptranslate和rotate的程式

打開Transformation.exe

在下方程式碼按右鍵,選擇swap translate/rotate


















STEP 03-2 藍色旋轉茶壺








STEP 03- 藍色+黃色旋轉茶壺

#include <GL/glut.h>

float angle = 0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glTranslatef(0.5,0,0);

        glRotatef(angle, 0, 1, 0);

        glColor3f(0,0,1);

        glutSolidTeapot( 0.3 );

glPopMatrix();


glPushMatrix();

        glRotatef(angle,0,1,0);

        glTranslatef(0.5,0,0);

        glColor3f(1,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("Week04");

glutDisplayFunc(display);

glutIdleFunc(display);

glutMainLoop();

}




沒有留言:

張貼留言