2023年4月19日 星期三

Yuuta's-week10-Lighting

 電腦圖學 2023-04-19 Week10

1. 期中考-OpenGL必背10函式
2. 主題: 3D模型
3. 主題: OBJ檔
4. 主題: glm.h glm.cpp
5. 實作: Gundam 剛彈模型

glPushMatrix(); //備份矩陣 
    glTranslatef(x,y,z); //移動 
    glRotatef(angle,x,y,z); //轉動 
    glScalef(x,y,z); //縮放 
    glBegin(GL_POLYGON); //開始畫
      glColor3f(r,g,b); //色彩
      glTexCoord2f(tx,ty); //貼圖座標
      glNoraml3f(nx,ny,nz);  //打光的法向量
      glVertex2f(x,y); //頂點 
   glEnd(); //結束畫
 glPopMatrix(); //還原矩陣 
















OBJ格次的wikipedia維基百科的介紹,裡面有說明#註解,v頂點,vt貼圖座標,vn法向量,f面。
另外看到它的歷史,是從wavefront到alias(開發maya的公司),最後被Autodesk併購。


glm.h為老師資料夾中的source file的檔案
#include "glm.h" 雙引號為電腦內的程式
右鍵add flie加入glm.cpp

下載source.zip有glm.h放week10 glm目錄裡
glm.c 改檔名成glm.cpp放在week10 glm目錄裡
把glm.cpp加到專案裡
把模型檔(ex. Al. obj Al. mtl...) 複製到工作執行目錄
Bulid log最後一行會說它在哪裡(in C:\Users\...\freeglut\bin)
































#include <GL/glut.h>
#include "glm.h" 
GLMmodel * pmodel = NULL; //有一個模型的指標, 先是空的
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    if (pmodel==NULL){
        pmodel = glmReadOBJ("Al.obj");
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel, 90);
    }
    glmDraw(pmodel, GLM_MATERIAL);
    glutSwapBuffers();
}


































沒有留言:

張貼留言