资源简介
计算机图形学:读入off、obj文件,并显示。其中obj文件可显示光源。
代码片段和文件信息
// readOffObj.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include “glut.h“
#include
#include
#include
using namespace std;
//typedef OpenMesh::TriMesh_ArrayKernelT<> MyMesh;
//鼠标交互有关的
int mousetate = 0; //鼠标当前的状态
GLfloat Oldx = 0.0; // 点击之前的位置
GLfloat Oldy = 0.0;
//与实现角度大小相关的参数,只需要两个就可以完成
float xRotate = 0.0f;
float yRotate = 0.0f;
int tx = 1;
float ty = 0.0f;
float scale = 1;
//文件读取有关的
const string file_1 = “data/output.obj“;
const string file_2 = “data/output.off“;
const string file_3 = “Geometry/cube.off“;
int currentfile = 1;
int v_num; //记录点的数量
int vn_num;//记录法线(off:边数)的数量
int f_num; //记录面的数量
GLfloat **vArr; //存放点的二维数组
GLfloat **vnArr;//存放法线的二维数组
int **fvArr; //存放面顶点的二维数组
int **fnArr; //存放面法线的二维数组
string s1;
GLfloat f1 f2 f3 f4 f5;
GLuint showFaceList showWireList;
int showstate = 1;
bool showFace = true;
bool showWire = false;
bool showFlatlines = false;
//初始化顶点和面
void initGL()
{
glClearColor(0.0 0.0 0.0 0.0);
glClearDepth(2.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST); //用来开启深度缓冲区的功能,启动后OPengl就可以跟踪Z轴上的像素,那么它只有在前面没有东西的情况下才会绘制这个像素,在绘制3d时,最好启用,视觉效果会比较真实
// ------------------- Lighting
glEnable(GL_LIGHTING); // 如果enbale那么就使用当前的光照参数去推导顶点的颜色
glEnable(GL_LIGHT0); //第一个光源,而GL_LIGHT1表示第二个光源
// ------------------- Display List
showFaceList = glGenLists(1);
showWireList = glGenLists(1);
// 绘制flat
if (currentfile == 1){
glNewList(showFaceList GL_COMPILE);
for (int i = 0; i {
glPolygonMode(GL_FRONT_AND_BACK GL_FILL);
glBegin(GL_TRIANGLES);
glNormal3f(vnArr[fnArr[i][0] - 1][0] vnArr[fnArr[i][0] - 1][1] vnArr[fnArr[i][0] - 1][2]);
glVertex3f(vArr[fvArr[i][0] - 1][0] vArr[fvArr[i][0] - 1][1] vArr[fvArr[i][0] - 1][2]);
glNormal3f(vnArr[fnArr[i][1] - 1][0] vnArr[fnArr[i][1] - 1][1] vnArr[fnArr[i][1] - 1][2]);
glVertex3f(vArr[fvArr[i][1] - 1][0] vArr[fvArr[i][1] - 1][1] vArr[fvArr[i][1] - 1][2]);
glNormal3f(vnArr[fnArr[i][2] - 1][0] vnArr[fnArr[i][2] - 1][1] vnArr[fnArr[i][2] - 1][2]);
glVertex3f(vArr[fvArr[i][2] - 1][0] vArr[fvArr[i][2] - 1][1] vArr[fvArr[i][2] - 1][2]);
glEnd();
}
glEndList();
}
else if (currentfile == 2){
glNewList(showFaceList GL_COMPILE);
//glBegin(GL_LINES);
/*c = a×b = (a.y*b.z-b.y*a.z b.x*a.z-a.x*b.z a.x*b.y-b.x*a.y)*/
for (int i = 0; i {
int a;
glPolygonMode(GL_FRONT_AND_BACK GL_FILL);
glBegin(GL_QUADS);
vnArr[fvArr[i][0]][0] = (vArr[fvArr[i][1]][1] - vArr[fvArr[i][0]][1])*(vArr[fvArr[i][3]][2] - vArr[fvArr[i][0]][2])
- (vArr[fvArr[i][3]][1] - vArr[fvArr[i][0]][1])*(vArr[fvArr[i][1]][2] - vArr[fvArr[i][0]][2]);
vnArr[fvArr[i][0]][1] = (vArr[fvArr[i][3]][0] - vArr[fvArr[i][0]][0])*(vArr[fvArr[i][1]][2] - vArr[fvArr[i][0]][2])
- (vArr[fvArr[i][1]][0] - vArr[fvArr[i][0]][0])*(vArr[fvArr[i][3]][2] -
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 143872 2018-06-04 21:18 readOffObj\Debug\readOffObj.exe
文件 1150440 2018-06-04 21:18 readOffObj\Debug\readOffObj.ilk
文件 1937408 2018-06-04 21:18 readOffObj\Debug\readOffObj.pdb
文件 3080192 2018-04-19 17:43 readOffObj\ipch\readoffobj-f0ea83ff\readoffobj-4f310b5e.ipch
文件 2646136 2006-03-12 08:47 readOffObj\readOffObj\data\bunny.obj
文件 200149 2018-04-19 15:43 readOffObj\readOffObj\data\cow.obj
文件 3506958 2006-03-12 08:47 readOffObj\readOffObj\data\dinosaur.obj
文件 2971903 2016-11-06 23:45 readOffObj\readOffObj\data\elepham.obj
文件 13898803 2016-11-06 21:30 readOffObj\readOffObj\data\mba1.obj
文件 28348 2015-03-28 16:12 readOffObj\readOffObj\data\monkey.obj
文件 1930 2018-04-19 16:49 readOffObj\readOffObj\data\output.obj
文件 499870 2016-11-06 21:30 readOffObj\readOffObj\data\porsche.obj
文件 2116225 2016-11-06 21:30 readOffObj\readOffObj\data\radar.obj
文件 46125 2016-11-06 21:17 readOffObj\readOffObj\data\target.obj
文件 66323 2016-11-07 20:18 readOffObj\readOffObj\data\target2.obj
文件 91538 2016-11-06 21:30 readOffObj\readOffObj\data\teddy.obj
文件 1419 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.log
文件 385496 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.obj
文件 1638400 2018-04-19 17:43 readOffObj\readOffObj\Debug\readOffObj.pch
文件 1502 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\cl.command.1.tlog
文件 23692 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\CL.read.1.tlog
文件 1150 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\CL.write.1.tlog
文件 1344 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\li
文件 3090 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\li
文件 608 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\li
文件 168 2018-06-04 21:18 readOffObj\readOffObj\Debug\readOffObj.tlog\readOffObj.lastbuildstate
文件 11052 2018-04-19 17:43 readOffObj\readOffObj\Debug\stdafx.obj
文件 756736 2018-06-04 21:18 readOffObj\readOffObj\Debug\vc120.idb
文件 520192 2018-06-04 21:18 readOffObj\readOffObj\Debug\vc120.pdb
文件 1511141 2018-04-02 16:31 readOffObj\readOffObj\Geometry\Arma.off
............此处省略47个文件信息
评论
共有 条评论