2019年5月30日 星期四

06160150_蔡宗芸 W15

電腦圖學 2019-05-30 Week15

(1).主題 : 攝影機 , 運鏡

(2).主題 : 投影 , 矩陣

(3).複習 : 移動位置 v.s. 轉動

(4).複習 : 背景貼圖

(5).期末作品


(一)開啟Projection.exe

先到http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載3個並且解壓縮




把data和glut32.dll丟到windows裡面





(二) 開Code::Blocks

1.先到google搜尋freeglue windows,找Transmission Zero的網頁,Download以下畫面文件

2.解壓縮的畫面

複製libfreeglut.a改成libglut32.a


3.打開Code::Blocks
4.右上File找New在按Project出現以下畫面,找GLUT後按GO 
4.按完GO後出現以下畫面,輸入檔案名稱後按Next


   

程式碼(一)

#include <GL/glut.h>                                  ///GLUT 外掛
#include "glm.h"///glm.cpp for 3D model glmReadOBJ(), glmDraw(), glmUnitized()
GLMmodel * pmodel=NULL;                           ///指標
void drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }

    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(512,512);
    glutInitWindowPosition(50, 50);
    glutCreateWindow("week15");

//    glutReshapeFunc(reshape);
    glutDisplayFunc(display);

    glutMainLoop();

    return 0;
}



程式碼(二)

#include <GL/glut.h>                              ///GLUT 外掛
#include "glm.h"                                      ///glm.cpp for 3D model glmReadOBJ(), glmDraw(), glmUnitized()
GLMmodel * pmodel=NULL;                  ///指標
void drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }

    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(512,512);
    glutInitWindowPosition(50, 50);
    glutCreateWindow("week15");

//    glutReshapeFunc(reshape);
    glutDisplayFunc(display);

    GLfloat light_pos[] = { 0.0, 0.0, 1.0, 0.0 };
    glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_POSITION, light_pos);

    glutMainLoop();

    return 0;
}



程式碼(三)

#include <GL/glut.h>                                                ///GLUT 外掛
#include "glm.h"                                                       ///glm.cpp for 3D model glmReadOBJ(), glmDraw(), glmUnitized()
GLMmodel * pmodel=NULL;                                ///指標
void drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}
#include <math.h>///for sin() cos()                                    ///NOW3
float eyeX=0.5, eyeY=0, eyeZ=0;                                       ///NOW3
void timer(int t)                                                                   ///NOW3
{
    float angle = (t/180.0)*3.1415926;                               ///NOW3
    eyeX=0.5*cos(angle);                                                    ///NOW3
    eyeZ=0.5*sin(angle);                                                   ///NOW3

    glutTimerFunc(33, timer, t+1);                                    ///NOW3
    glMatrixMode(GL_MODELVIEW);                       ///NOW3
    glLoadIdentity();                                                           ///NOW3
    gluLookAt( eyeX, eyeY, eyeZ,                               ///eye //NOW3
           0, 0, 0                                                  ,///center ///NOW3
               0, 1, 0);                                                           ///up  ///NOW3

    glutPostRedisplay();                                                      ///NOW3
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(512,512);
    glutInitWindowPosition(50, 50);
    glutCreateWindow("week15");
//    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutTimerFunc(33, timer, 0);                                     ///NOW3

    GLfloat light_pos[] = { 0.0, 0.0, 1.0, 0.0 };
    glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_POSITION, light_pos);

    glutMainLoop();

    return 0;
}

程式碼(四)

#include <GL/glut.h>                    ///GLUT 外掛
#include "glm.h"                        ///glm.cpp for 3D model glmReadOBJ(), glmDraw(), glmUnitized()
GLMmodel * pmodel=NULL;                 ///指標
void drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}
#include <math.h>                         ///for sin() cos() ///NOW3
float eyeX=0.5, eyeY=0, eyeZ=0;           ///NOW3
void timer(int t)                         ///NOW3
{

    glMatrixMode(GL_PROJECTION);              ///NOW4
    glLoadIdentity();                         ///NOW4
glOrtho(-1, +1,  -1,+1, -10,+10);         ///NOW4 你可以看到 -10...+10範圍


    float angle = (t/180.0)*3.1415926;        ///NOW3
    eyeX=0.5*cos(angle);                     ///NOW3
    eyeZ=0.5*sin(angle);                     ///NOW3

    glutTimerFunc(33, timer, t+1);            ///NOW3
    glMatrixMode(GL_MODELVIEW);                ///NOW3
    glLoadIdentity();///NOW3
    gluLookAt( eyeX, eyeY, eyeZ,               ///eye ///NOW3
           0, 0, 0,                        ///center ///NOW3
               0, 1, 0);                      ///up    ///NOW3

    glutPostRedisplay();                      ///NOW3
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(512,512);
    glutInitWindowPosition(50, 50);
    glutCreateWindow("week15");
//    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutTimerFunc(33, timer, 0);                ///NOW3

    GLfloat light_pos[] = { 0.0, 0.0, 1.0, 0.0 };
    glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_POSITION, light_pos);

    glutMainLoop();

    return 0;
}


程式碼(五)

#include <GL/glut.h>                             ///GLUT 外掛
#include "glm.h"                                ///glm.cpp for 3D model glmReadOBJ(), glmDraw(), glmUnitized()
GLMmodel * pmodel=NULL;                        ///指標
void drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}
#include <math.h>                                    ///for sin() cos() ///NOW3
float eyeX=2, eyeY=0, eyeZ=0;                        ///NOW3
void timer(int t)                                    ///NOW3
{

    glMatrixMode(GL_PROJECTION);                        ///NOW4
    glLoadIdentity();                                  ///NOW4
///glOrtho(-1, +1,  -1,+1, -10.0,10.0); ///NOW4 你可以看到 -10...+10範圍
gluPerspective(60, 1.0, 0.001, 1000);                ///NOW5


    float angle = (t/180.0)*3.1415926;                 ///NOW3
    eyeX=2*cos(angle);                                 ///NOW3
    eyeZ=2*sin(angle);                                  ///NOW3

    glutTimerFunc(33, timer, t+1);                      ///NOW3
    glMatrixMode(GL_MODELVIEW);                         ///NOW3
    glLoadIdentity();                                   ///NOW3
    gluLookAt( eyeX, eyeY, eyeZ,                       ///eye ///NOW3
           0, 0, 0,                               ///center ///NOW3
               0, 1, 0);                              ///up///NOW3

    glutPostRedisplay();                             ///NOW3
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(512,512);
    glutInitWindowPosition(50, 50);
    glutCreateWindow("week15");
//    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutTimerFunc(33, timer, 0);                     ///NOW3

    GLfloat light_pos[] = { 0.0, 0.0, 1.0, 0.0 };
    glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_POSITION, light_pos);

    glutMainLoop();

    return 0;
}











沒有留言:

張貼留言