電腦圖學 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併購。
另外看到它的歷史,是從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();
}
沒有留言:
張貼留言