2021年5月12日 星期三

Lm's圖學筆記 Week12

 鋼彈

  1. 開OPENGL檔案
  2. 3D Explorer安裝
  3. 解壓縮Gundam檔案(3D Exploration), 開 OBJ檔 SaveAs .cpp檔(SampleAPP)
  4. 專案main.c 換成gundam_3dexp.cpp (Remove, Add)
  5. Build & Run 有錯誤 新增兩行
#define GL_BGRA_EXT 0x80E1
#define GL_BGR_EXT 0x80E0

 


把旋轉.縮放 / /  換成 glRotatef ( nAngle, 0, 1, 0);
           glScalef ( 3, 3, 3);
 

把鋼彈 Inport 到 MAYA 裡面,選Face模式,選取左手後按File-Export Selection 改成OBJ檔export


    開新的GLUT檔案貼入程式
    #include <GL/glut.h>
    void display()
    {
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glutSolidTeapot( 0.3 );
        glutSwapBuffers();
    }
    ///下面是從 GLUT專案main.cpp剪貼來的
    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 };

    int main( int argc, char** argv )
    {
        glutInit( &argc, argv );
        glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
        glutCreateWindow("week12 hw4");

        glutDisplayFunc(display);

        ///下面是從 GLUT專案main.cpp剪貼來的
        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);

        glutMainLoop();
    }



    改工作目錄



    右邊freeglut.dll要複製到專案資料夾裡才可以找到檔執行




    沒有留言:

    張貼留言

    距地表面160 Week11

     #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...