OpenGL tutorial de combate (13) - Duodécima Estación: biblioteca de modelos OBJ es cargado usando el Assmip

1, el formato de datos del modelo Obj

obj archivo de modelo es un archivo de texto que consta de los siguientes componentes:

; Archivo de descripción del modelo con un mapa, mapa de archivos de información MTL descripción del archivo, incluyendo el nombre del archivo
xxx.mtl mtllib

; Apex datos de coordenadas
V 1,000000 -1,000000 -1,000000
V 1,000000 -1,000000 1,000000
V -1,000000 -1,000000 1,000000
...
; coordenadas de textura definidos
VT 0,748573 0,750412
VT 0,749279 0,501284
VT 0,501077 0,999110
...
; vértice vector normal
VN 0,000000 0,000000 -1,000000
VN -1.000000 -0.000000 -0.000000
VN -0.000000 -0.000000 1.000000
...

; Datos de superficie: 1/2/8 superficie usando este formato, representa la posición del índice de vector vértice / textura coordenadas / método, donde el frente con el índice v, vt, Nota vn que los datos definidos aquí es el índice Obj 1 a partir de en lugar 0
f 5/1/1 1/2/1 4/3/1
f 5/1/1 4/3/1 8/4/1
f 3/5/2 7/6/2 8/7 / 2

2, el código fuente demostrar


#include "Model.h"
Model ourModel("model/nanosuit.obj");
GLint Step12_xAngle = 0;
GLint Step12_yAngle = 0;
GLint Step12_zAngle = 0;
GLint Step12_fScale = 90;
GLint Step12_lid = 0;

GLfloat Step12_noLight[4] = { 0.0f, 0.0f, 0.0f, 1.0f };
GLfloat Step12_ambientLight[4] = { 0.3f, 0.3f, 0.3f, 1.0f };
GLfloat Step12_diffuseLight[4] = { 0.7f, 0.7f, 0.7f, 1.0f };
GLfloat Step12_brightLight[4] = { 1.0f, 0.5f, 0.5f, 1.0f };
GLfloat Step12_lightPos[] = { 5.0f, 5.0f, 5.0f, 1.0f };//光的位置在右上角

void Step12_Display()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕及深度缓存
	glClearColor(0, 0, 0, 0);

	glLoadIdentity(); // 重置模型观察矩阵

	glEnable(GL_DEPTH_TEST);
	glEnable(GL_COLOR_MATERIAL);
	glShadeModel(GL_SMOOTH);


	//开启颜色追踪
	glEnable(GL_COLOR_MATERIAL);
	glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);


	//设置光照环境
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, Step12_noLight);
	glLightfv(GL_LIGHT0, GL_AMBIENT, Step12_ambientLight);
	glLightfv(GL_LIGHT0, GL_DIFFUSE, Step12_diffuseLight);
	glLightfv(GL_LIGHT0, GL_SPECULAR, Step12_brightLight);
	glLightfv(GL_LIGHT0, GL_POSITION, Step12_lightPos);

	glRotatef(Step12_xAngle, 1.0, 0.0, 0.0);
	glRotatef(Step12_yAngle, 0.0, 1.0, 0.0);
	glRotatef(Step12_zAngle, 0.0, 0.0, 1.0);
	glScalef(0.5, 0.5, 0.5);
	glColor3f(1, 1, 0.6);

	ourModel.Draw();

	glutSwapBuffers();
}

Operando presentación de los resultados:

,Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

3, archivos de descarga del proyecto

En la depuración x86 descarga de compilación con éxito.

Descargar los archivos de origen

Publicado 33 artículos originales · ganado elogios 9 · vistas 1157

Supongo que te gusta

Origin blog.csdn.net/x879014419/article/details/105244604
Recomendado
Clasificación