【发布时间】:2011-12-30 17:42:09
【问题描述】:
我正在尝试使用 libobj 解析从 Blender 导出的 .obj 文件。
网站http://people.cs.kuleuven.be/~ares.lagae/libobj/index.html
是我从哪里得到libobj 和http://en.wikipedia.org/wiki/Wavefront_Object_file_format
描述了.obj 文件格式的来龙去脉。 libobj 网站
有一个关于如何解析我在
以下代码。
但是我不确定如何解析面部和渲染 它们在 OpenGL 中。我必须使用顶点列表或服务器端缓冲区对象吗? 如何扩展下面的代码以使其正确渲染人脸?
#include <GL/glut.h>
#include <obj.hpp>
#include <iostream>
void geometric_vertex_callback(obj::float_type x, obj::float_type y, obj::float_type z)
{
std::cout << "v " << x << " " << y << " " << z << "\n";
glVertex3f(x, y, z);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
obj::obj_parser obj_parser;
obj_parser.geometric_vertex_callback(geometric_vertex_callback);
std::cout << std::endl;
glLoadIdentity();
gluLookAt(1.0f, 1.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
glColor3f(1.0f, 1.0f, 1.0f);
glBegin(GL_POINTS);
obj_parser.parse("./cube.obj");
glEnd();
glFlush();
}
void reshape(int h, int w) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-8.0f, 8.0f, -8.0f, 8.0f, -10.0f, 10.0f);
glViewport(0, 0, w, h);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutCreateWindow("cube");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
编译:g++ -Wall -o main main.cpp -lGL -lGLU -lglut -lobj
【问题讨论】: