• 大小: 28.14MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-28
  • 语言: 其他
  • 标签: off、obj  

资源简介

计算机图形学:读入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\link.command.1.tlog

     文件       3090  2018-06-04 21:18  readOffObj\readOffObj\Debug\readOffObj.tlog\link.read.1.tlog

     文件        608  2018-06-04 21:18  readOffObj\readOffObj\Debug\readOffObj.tlog\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论

相关资源