2015年5月14日 星期四

02160022_翁子喻_week12

今天的上課課程:
1.作業回饋
2.作業需求
3.3D模型,glm.c(六行)
4.Maya轉OBJ檔
5.介紹資料影片資源



步驟大約如下:


  • Create project→openGL
  • Project Name:myModel
  • (c)glm,(h)glm,(c++)main,(c)transformation拉到自己設的資料夾裡面
  • 要開啟資料夾裡面的組合管理去勾選顯示副檔名

  • 剪貼六行程式碼 (使用Notepad++複製)
#include "glm.h"
GLMmodel* pmodel =NULL;

int main()
{
    pmodel=glmReadOBJ("data/porache.obj");
    glmUnitize(pmodel);
    glmFacetNormals(pmodel);
    glmVertexNormals(pmodel,90.0);
}

執行結果出現小黑視窗即算成功


可是視窗還是有錯誤訊息,所以現在的步驟是結果那個錯誤訊息,
1.開啟freeglut的bin的資料夾,把windows裡的data project裡的porsche.mtl和porsche.obj拉進去
如圖:

2.Maya轉OBJ檔
輸入程式碼:
#include "glm.h"
GLMmodel* pmodel =NULL;

void display()
{
   
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glEnable(GL_DEPTH_TEST);

    glmDraw(pmodel,GLM_SMOOTH | GLM_MATERIAL);
    glFlush();
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("GLUT");
    glutDisplayFunc(display);

    pmodel=glmReadOBJ("porsche.obj");         原本的data/porsche要改成porsche
    glmUnitize(pmodel);
    glmFacetNormals(pmodel);
    glmVertexNormals(pmodel,90.0);

    glutMainLoop();
}


3.再來是打光的步驟
加入打光程式碼:
#include "glm.h"
GLMmodel* pmodel =NULL;

void display()
{
    GLfloat pos[]={0.0,0.0,1.0,0.0};
    glLightfv(GL_LIGHT0,GL_POSITION,pos);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glmDraw(pmodel,GLM_SMOOTH | GLM_MATERIAL);
    glFlush();
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("GLUT");
    glutDisplayFunc(display);

    pmodel=glmReadOBJ("porsche.obj");
    glmUnitize(pmodel);
    glmFacetNormals(pmodel);
    glmVertexNormals(pmodel,90.0);

    glutMainLoop();
}

 是暗暗的
所以加入顏色~~~^^
#include "glm.h"
GLMmodel* pmodel =NULL;

void display()
{
    GLfloat pos[]={0.0,0.0,-1.0,0.0};
    glLightfv(GL_LIGHT0,GL_POSITION,pos);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glmDraw(pmodel,GLM_SMOOTH | GLM_MATERIAL);
    glFlush();
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("GLUT");
    glutDisplayFunc(display);

    pmodel=glmReadOBJ("porsche.obj");
    glmUnitize(pmodel);
    glmFacetNormals(pmodel);
    glmVertexNormals(pmodel,90.0);

    glutMainLoop();
}
修改一下色彩的亮度,執行結果


完成~~~~~~~ good!!

沒有留言:

張貼留言