引入模型
下載檔案(這次還要下載source的檔案)
開啟圖示相應的OBJ檔
v=頂點 , vn=法向量 , f=小面,mtllib=引用貼圖庫,usemtl=引用貼圖

開始今天的程式(OBJ檔、貼圖座標)
解壓source.zip所需檔案>glm.h與glm.c檔放到專案資料夾中>
改glm.c為glm.cpp
將glm.cpp add加入專案目錄裡>
將Al.obj(記得mlt是貼圖有些檔案要附上)檔放入freeglut/bin資料夾中
source.zip/transformation.c可以知道glm.h外掛如何使用,如下:
下面是指標下面成是用來指向模型的
寫入程式
#include <GL/glut.h>#include "glm.h"
GLMmodel * model=NULL;
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 };///打光
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(model==NULL) model = glmReadOBJ("data/Al.obj");///所以要放在bin/data
glmUnitize(model);///調整為單位大小(-1~1)
glmFacetNormals(model);///計算facet法向量s
glmVertexNormals(model,90);///計算vertex法向量s
glPushMatrix();
glRotated(180,0,1,0);///模型轉正面
glmDraw(model,GLM_SMOOTH | GLM_MATERIAL);///畫模型
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("11");
glutDisplayFunc(display);
glEnable(GL_DEPTH_TEST);///3D功能///打光函式
///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();
}








沒有留言:
張貼留言